summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gui/GladeFactory.cpp35
-rw-r--r--src/gui/ingen_gui.glade4
-rw-r--r--src/gui/wscript11
-rw-r--r--src/ingen/main.cpp2
-rw-r--r--wscript11
5 files changed, 44 insertions, 19 deletions
diff --git a/src/gui/GladeFactory.cpp b/src/gui/GladeFactory.cpp
index df000cd8..6036d359 100644
--- a/src/gui/GladeFactory.cpp
+++ b/src/gui/GladeFactory.cpp
@@ -30,24 +30,37 @@ namespace GUI {
Glib::ustring GladeFactory::glade_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
GladeFactory::find_glade_file()
{
- char* env_path = getenv("INGEN_GLADE_PATH");
- if (env_path)
- glade_filename = env_path;
- else
- glade_filename = Shared::data_file_path("ingen_gui.glade");
+ // Try file in bundle (directory where executable resides)
+ glade_filename = Shared::bundle_file_path("ingen_gui.glade");
+ if (is_readable(glade_filename))
+ return;
- ifstream fs(glade_filename.c_str());
- if (fs.fail()) {
- error << "[GladeFactory] Unable to find ingen_gui.glade in " << INGEN_DATA_DIR << endl;
- throw;
+ // Try ENGINE_GLADE_PATH from the environment
+ const char* const env_path = getenv("INGEN_GLADE_PATH");
+ if (env_path && is_readable(env_path)) {
+ glade_filename = env_path;
+ return;
}
- fs.close();
- info << "[GladeFactory] Loading widgets from " << glade_filename.c_str() << endl;
+ // Try the default system installed path
+ glade_filename = Shared::data_file_path("ingen_gui.glade");
+ if (is_readable(glade_filename))
+ return;
+
+ error << "[GladeFactory] Unable to find ingen_gui.glade in " << INGEN_DATA_DIR << endl;
+ throw std::runtime_error("Unable to find glade file");
}
diff --git a/src/gui/ingen_gui.glade b/src/gui/ingen_gui.glade
index 39e5f8bd..6b135a2a 100644
--- a/src/gui/ingen_gui.glade
+++ b/src/gui/ingen_gui.glade
@@ -1829,7 +1829,9 @@
<widget class="GtkAboutDialog" id="about_win">
<property name="destroy_with_parent">True</property>
<property name="type_hint">normal</property>
- <property name="copyright" translatable="yes">Copyright (C) 2005-2008 David Robillard &lt;http://drobilla.net&gt;</property>
+ <property name="program_name">Ingen</property>
+ <property name="version">@INGEN_VERSION@</property>
+ <property name="copyright" translatable="yes">Copyright (C) 2005-2010 David Robillard &lt;http://drobilla.net&gt;</property>
<property name="website">http://drobilla.net/software/ingen</property>
<property name="license" translatable="yes">Licensed under the GNU GPL, Version 2.
diff --git a/src/gui/wscript b/src/gui/wscript
index 5ae04233..40c6a270 100644
--- a/src/gui/wscript
+++ b/src/gui/wscript
@@ -66,7 +66,10 @@ def build(bld):
XML2
''')
- # GUI runtime files
- bld.install_files('${DATADIR}/ingen', 'ingen_gui.glade')
-
-
+ # Glade XML UI definition
+ bld(features = 'subst',
+ source = 'ingen_gui.glade',
+ target = '../../ingen_gui.glade',
+ install_path = '${DATADIR}/ingen',
+ chmod = 0755,
+ INGEN_VERSION = bld.env['INGEN_VERSION'])
diff --git a/src/ingen/main.cpp b/src/ingen/main.cpp
index 8069bd1a..da52e1c2 100644
--- a/src/ingen/main.cpp
+++ b/src/ingen/main.cpp
@@ -87,10 +87,8 @@ main(int argc, char** argv)
return EXIT_SUCCESS;
}
-#ifdef BUNDLE
// Set bundle path from executable location so resources/modules can be found
Shared::set_bundle_path_from_code((void*)&main);
-#endif
SharedPtr<Shared::EngineInterface> engine_interface;
diff --git a/wscript b/wscript
index e79e44db..d2855702 100644
--- a/wscript
+++ b/wscript
@@ -129,7 +129,16 @@ def build(bld):
bld.add_subdirs('src/gui')
# Program
- bld.add_subdirs('src/ingen')
+ obj = bld(features = 'c cxx cxxprogram')
+ obj.target = 'ingen'
+ obj.source = 'src/ingen/main.cpp'
+ obj.includes = ['.', 'src', 'src/common']
+ obj.defines = 'VERSION="' + bld.env['INGEN_VERSION'] + '"'
+ obj.use = 'libingen_module libingen_shared'
+ obj.install_path = '${BINDIR}'
+ autowaf.use_lib(bld, obj, 'GTHREAD GLIBMM REDLANDMM RAUL LV2CORE SLV2 INGEN LIBLO SOUP')
+
+ bld.install_files('${DATADIR}/applications', 'src/ingen/ingen.desktop')
# Documentation
autowaf.build_dox(bld, 'INGEN', INGEN_VERSION, top, out)