X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=player%2Fmain.c;h=962ca30e0ba3f05198a9f55d163f56a2e8646769;hb=77d5b31de1338fd87f67ab5896287519c8efe8ff;hp=c032849cb63446e3bda8bc9878acfc40d0996ea0;hpb=4b1516b78e364cd664271d0ada1d2de4777499ef;p=rodin%2Fchimara.git diff --git a/player/main.c b/player/main.c index c032849..962ca30 100644 --- a/player/main.c +++ b/player/main.c @@ -65,15 +65,43 @@ load_object(const gchar *name) return retval; } +static void +change_window_title(ChimaraGlk *glk, GParamSpec *pspec, GtkWindow *window) +{ + gchar *program_name, *story_name, *title; + g_object_get(glk, "program-name", &program_name, "story-name", &story_name, NULL); + if(!program_name) { + gtk_window_set_title(window, "Chimara"); + return; + } + else if(!story_name) + title = g_strdup_printf("%s - Chimara", program_name); + else + title = g_strdup_printf("%s - %s - Chimara", program_name, story_name); + + g_free(program_name); + g_free(story_name); + gtk_window_set_title(window, title); + g_free(title); +} + static void create_window(void) { GError *error = NULL; builder = gtk_builder_new(); - if( !gtk_builder_add_from_file(builder, PACKAGE_SRC_DIR "/chimara.ui", &error) ) { - error_dialog(NULL, error, "Error while building interface: "); - return; + if( !gtk_builder_add_from_file(builder, PACKAGE_DATA_DIR "/chimara.ui", &error) ) { +#ifdef DEBUG + g_error_free(error); + error = NULL; + if( !gtk_builder_add_from_file(builder, PACKAGE_SRC_DIR "/chimara.ui", &error) ) { +#endif /* DEBUG */ + error_dialog(NULL, error, "Error while building interface: "); + return; +#ifdef DEBUG + } +#endif /* DEBUG */ } window = GTK_WIDGET(load_object("chimara")); @@ -119,13 +147,38 @@ create_window(void) gtk_recent_chooser_add_filter(recent, filter); uimanager = gtk_ui_manager_new(); - if( !gtk_ui_manager_add_ui_from_file(uimanager, PACKAGE_SRC_DIR "/chimara.menus", &error) ) { - error_dialog(NULL, error, "Error while building interface: "); - return; + if( !gtk_ui_manager_add_ui_from_file(uimanager, PACKAGE_DATA_DIR "/chimara.menus", &error) ) { +#ifdef DEBUG + g_error_free(error); + error = NULL; + if( !gtk_ui_manager_add_ui_from_file(uimanager, PACKAGE_SRC_DIR "/chimara.menus", &error) ) { +#endif /* DEBUG */ + error_dialog(NULL, error, "Error while building interface: "); + return; +#ifdef DEBUG + } +#endif /* DEBUG */ } glk = chimara_if_new(); g_object_set(glk, "ignore-errors", TRUE, NULL); + if( !chimara_glk_set_css_from_file(CHIMARA_GLK(glk), PACKAGE_DATA_DIR "/style.css", &error) ) { +#ifdef DEBUG + g_error_free(error); + error = NULL; + if( !chimara_glk_set_css_from_file(CHIMARA_GLK(glk), PACKAGE_SRC_DIR "/macstyle.css", &error) ) { +#endif /* DEBUG */ + error_dialog(NULL, error, "Couldn't open CSS file: "); + return; +#ifdef DEBUG + } +#endif /* DEBUG */ + } + + /* DON'T UNCOMMENT THIS your eyes will burn + but it is a good test of programmatically altering just one style + chimara_glk_set_css_from_string(CHIMARA_GLK(glk), + "buffer.normal { font-family: 'Comic Sans MS'; }");*/ GtkBox *vbox = GTK_BOX( gtk_builder_get_object(builder, "vbox") ); if(vbox == NULL) @@ -143,6 +196,8 @@ create_window(void) gtk_box_pack_start(vbox, toolbar, FALSE, FALSE, 0); gtk_builder_connect_signals(builder, glk); + g_signal_connect(glk, "notify::program-name", G_CALLBACK(change_window_title), window); + g_signal_connect(glk, "notify::story-name", G_CALLBACK(change_window_title), window); } int