summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2015-01-10 02:53:31 +0000
committerDavid Robillard <d@drobilla.net>2015-01-10 02:53:31 +0000
commitea59b3a8d2887e963b806c5f595f5d4e6460fc55 (patch)
tree94fcd7b385db257b216854e865e39ed41139295e /src
parentb608165e9162d2d429de47bbc430ecae136d3455 (diff)
downloadpatchage-ea59b3a8d2887e963b806c5f595f5d4e6460fc55.tar.gz
patchage-ea59b3a8d2887e963b806c5f595f5d4e6460fc55.tar.bz2
patchage-ea59b3a8d2887e963b806c5f595f5d4e6460fc55.zip
More Mac integration work.
git-svn-id: http://svn.drobilla.net/lad/trunk/patchage@5511 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src')
-rw-r--r--src/Patchage.cpp6
-rw-r--r--src/UIFile.hpp3
-rw-r--r--src/binary_location.h11
-rw-r--r--src/main.cpp3
4 files changed, 19 insertions, 4 deletions
diff --git a/src/Patchage.cpp b/src/Patchage.cpp
index d561feb..1944ef3 100644
--- a/src/Patchage.cpp
+++ b/src/Patchage.cpp
@@ -160,6 +160,12 @@ Patchage::Patchage(int argc, char** argv)
_about_win->property_program_name() = "Patchage";
_about_win->property_logo_icon_name() = "patchage";
gtk_window_set_default_icon_name("patchage");
+#ifdef __APPLE__
+ // This doesn't seem to work after bundleification for some reason...
+ _about_win->set_logo(
+ Gdk::Pixbuf::create_from_file(
+ bundle_location() + "/Resources/Patchage.icns"));
+#endif
_main_scrolledwin->add(_canvas->widget());
diff --git a/src/UIFile.hpp b/src/UIFile.hpp
index 561cb0f..f1ab5f8 100644
--- a/src/UIFile.hpp
+++ b/src/UIFile.hpp
@@ -41,9 +41,8 @@ public:
static Glib::RefPtr<Gtk::Builder> open(const std::string& base_name) {
std::string ui_filename;
#ifdef PATCHAGE_BINLOC
- std::string bundle = binary_location();
+ const std::string bundle = bundle_location();
if (!bundle.empty()) {
- bundle = bundle.substr(0, bundle.find_last_of("/"));
ui_filename = bundle + "/" + base_name + ".ui";
if (is_readable(ui_filename)) {
std::cout << "Loading UI file " << ui_filename << std::endl;
diff --git a/src/binary_location.h b/src/binary_location.h
index 91e8b29..303a3bd 100644
--- a/src/binary_location.h
+++ b/src/binary_location.h
@@ -41,3 +41,14 @@ binary_location()
}
return loc;
}
+
+/** Return the absolute path of the bundle (binary parent directory). */
+static std::string
+bundle_location()
+{
+ const std::string binary = binary_location();
+ if (binary.empty()) {
+ return "";
+ }
+ return binary.substr(0, binary.find_last_of('/'));
+}
diff --git a/src/main.cpp b/src/main.cpp
index 81f7ba5..a83c8ad 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -32,8 +32,7 @@
void
set_bundle_environment()
{
- const std::string binary = binary_location();
- const std::string bundle = binary.substr(0, binary.find_last_of('/'));
+ const std::string bundle = bundle_location();
const std::string lib_path = bundle + "/lib";
if (!Glib::file_test(lib_path, Glib::FILE_TEST_EXISTS)) {
// If lib does not exist, we have not been bundleified, do nothing