From 46452c287cdc4b12c30589a8f877f3ab7359265b Mon Sep 17 00:00:00 2001 From: David Robillard Date: Thu, 20 Dec 2007 00:52:10 +0000 Subject: Use fancy GladeFile class. Remove silly Patchage-as-window-manager crap. Less LOC. git-svn-id: http://svn.drobilla.net/lad/patchage@988 a436a847-0d15-0410-975c-d299462d15a1 --- src/GladeFile.hpp | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/GladeFile.hpp (limited to 'src/GladeFile.hpp') diff --git a/src/GladeFile.hpp b/src/GladeFile.hpp new file mode 100644 index 0000000..fb4c474 --- /dev/null +++ b/src/GladeFile.hpp @@ -0,0 +1,55 @@ +/* This file is part of Patchage. + * Copyright (C) 2007 Dave Robillard + * + * Patchage is free software; you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any later + * version. + * + * Patchage is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef GLADEFILE_HPP +#define GLADEFILE_HPP + +#include +#include +#include +#include +#include + + +class GladeFile +{ +public: + static Glib::RefPtr open(const std::string& base_name) { + Glib::RefPtr xml; + + // Check for the .glade file in current directory + std::string glade_filename = std::string("./").append(base_name).append(".glade"); + std::ifstream fs(glade_filename.c_str()); + if (fs.fail()) { // didn't find it, check DATA_PATH + fs.clear(); + glade_filename = std::string(DATA_DIR).append("/").append(base_name).append(".glade"); + + fs.open(glade_filename.c_str()); + if (fs.fail()) { + std::ostringstream ss; + ss << "Unable to find " << base_name << "glade in current directory or " + << DATA_DIR << std::endl; + throw std::runtime_error(ss.str()); + } + fs.close(); + } + + return Gnome::Glade::Xml::create(glade_filename); + } +}; + +#endif //GLADEFILE_HPP -- cgit v1.2.1