diff --git a/include/ocarina/ocarina.h b/include/ocarina/ocarina.h index 143515f8..ec9be55b 100644 --- a/include/ocarina/ocarina.h +++ b/include/ocarina/ocarina.h @@ -6,6 +6,7 @@ namespace ocarina void quit(); void idle_add(); + string full_path(string); }; diff --git a/ocarina/buttons/toggle.cpp b/ocarina/buttons/toggle.cpp index 368ff776..a5713f13 100644 --- a/ocarina/buttons/toggle.cpp +++ b/ocarina/buttons/toggle.cpp @@ -1,6 +1,7 @@ #include #include +#include #include static GtkWidget *get_toggle_button(void (* func)(GtkWidget *, GdkEvent *, gpointer), @@ -41,7 +42,7 @@ static void toggle_random(GtkWidget *b, GdkEvent *e, gpointer d) GtkWidget *make_random_button() { - return make_toggle_button("images/random.png", + return make_toggle_button(ocarina::full_path("images/random.png"), toggle_random, libsaria::prefs::get_bool("random"), true); diff --git a/ocarina/ocarina.cpp b/ocarina/ocarina.cpp index 06bce000..c4f8676a 100644 --- a/ocarina/ocarina.cpp +++ b/ocarina/ocarina.cpp @@ -12,6 +12,22 @@ #include #include +static string path_prefix; + +void set_path_prefix(string prefix) +{ + unsigned int stop = 0; + + for (stop = prefix.size() - 1; stop > 0; stop--) { + if (prefix[stop] == '/') + break; + } + + for (unsigned int i = 0; i < stop; i++) + path_prefix += prefix[i]; + println("Path prefix: " + path_prefix); +} + namespace ocarina { @@ -27,9 +43,16 @@ namespace ocarina g_idle_add(idle, NULL); } + string full_path(string path) + { + string res = path_prefix + "/" + path; + println("Expanding to path: " + res); + return res; + } + void init(int argc, char **argv) { - window_init("Ocarina " + vers_str(), "images/ocarina.png"); + window_init("Ocarina " + vers_str(), full_path("images/ocarina.png")); window_add(get_tabs()); ocarina::library::init(); settings_init(); @@ -45,6 +68,7 @@ namespace ocarina int main(int argc, char **argv) { println("Ocarina " + vers_str()); + set_path_prefix(argv[0]); libsaria::init(argc, argv); setup_callbacks();