diff options
Diffstat (limited to 'src/gui/WidgetFactory.cpp')
-rw-r--r-- | src/gui/WidgetFactory.cpp | 80 |
1 files changed, 0 insertions, 80 deletions
diff --git a/src/gui/WidgetFactory.cpp b/src/gui/WidgetFactory.cpp deleted file mode 100644 index afb6a07f..00000000 --- a/src/gui/WidgetFactory.cpp +++ /dev/null @@ -1,80 +0,0 @@ -/* - This file is part of Ingen. - Copyright 2007-2015 David Robillard <http://drobilla.net/> - - Ingen is free software: you can redistribute it and/or modify it under the - terms of the GNU Affero General Public License as published by the Free - Software Foundation, either version 3 of the License, or any later version. - - Ingen 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 Affero General Public License for details. - - You should have received a copy of the GNU Affero General Public License - along with Ingen. If not, see <http://www.gnu.org/licenses/>. -*/ - -#include <fstream> -#include <string> - -#include "ingen/Log.hpp" -#include "ingen/runtime_paths.hpp" - -#include "WidgetFactory.hpp" - -namespace Ingen { -namespace GUI { - -Glib::ustring WidgetFactory::ui_filename = ""; - -inline static bool -is_readable(const std::string& filename) -{ - std::ifstream fs(filename.c_str()); - const bool fail = fs.fail(); - fs.close(); - return !fail; -} - -void -WidgetFactory::find_ui_file() -{ - // Try file in bundle (directory where executable resides) - ui_filename = Ingen::bundle_file_path("ingen_gui.ui"); - if (is_readable(ui_filename)) { - return; - } - - // Try ENGINE_UI_PATH from the environment - const char* const env_path = getenv("INGEN_UI_PATH"); - if (env_path && is_readable(env_path)) { - ui_filename = env_path; - return; - } - - // Try the default system installed path - ui_filename = Ingen::data_file_path("ingen_gui.ui"); - if (is_readable(ui_filename)) { - return; - } - - throw std::runtime_error((fmt("Unable to find ingen_gui.ui in %1%\n") - % INGEN_DATA_DIR).str()); -} - -Glib::RefPtr<Gtk::Builder> -WidgetFactory::create(const std::string& toplevel_widget) -{ - if (ui_filename.empty()) { - find_ui_file(); - } - - if (toplevel_widget.empty()) { - return Gtk::Builder::create_from_file(ui_filename); - } else { - return Gtk::Builder::create_from_file(ui_filename, toplevel_widget.c_str()); - } -} - -} // namespace GUI -} // namespace Ingen |