X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=player%2Fmain.c;h=efecdab3134e0305a7e05f87951866568841d4cb;hb=6d5ea65196e82ca4d06f6b78c1a0979749d73604;hp=bd007b4ee128b0a7966822a37c547ca98c7b7c85;hpb=7eda771842a214ee6c9b60aee0a982253fcc29e6;p=projects%2Fchimara%2Fchimara.git diff --git a/player/main.c b/player/main.c index bd007b4..efecdab 100644 --- a/player/main.c +++ b/player/main.c @@ -50,21 +50,19 @@ #include #include "preferences.h" +#include "player.h" + -/* Static global pointers to widgets */ -static GtkUIManager *uimanager = NULL; -static GtkWidget *window = NULL; -static GtkWidget *glk = NULL; /* Global global pointers */ GtkBuilder *builder = NULL; GtkWidget *aboutwindow = NULL; GtkWidget *prefswindow = NULL; -GtkWidget *toolbar = NULL; + GSettings *prefs_settings = NULL; GSettings *state_settings = NULL; -GObject * +static GObject * load_object(const gchar *name) { GObject *retval; @@ -75,32 +73,12 @@ 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(); + builder = gtk_builder_new(); if( !gtk_builder_add_from_file(builder, PACKAGE_DATA_DIR "/chimara.ui", &error) ) { #ifdef DEBUG g_error_free(error); @@ -114,17 +92,8 @@ create_window(void) #endif /* DEBUG */ } - window = GTK_WIDGET(load_object("chimara")); aboutwindow = GTK_WIDGET(load_object("aboutwindow")); prefswindow = GTK_WIDGET(load_object("prefswindow")); - GtkActionGroup *actiongroup = GTK_ACTION_GROUP(load_object("actiongroup")); - - /* Set the default value of the "View/Toolbar" menu item upon creation of a - new window to the "show-toolbar-default" setting, but bind the setting - one-way only - we don't want toolbars to disappear suddenly */ - GtkToggleAction *toolbar_action = GTK_TOGGLE_ACTION(load_object("toolbar")); - gtk_toggle_action_set_active(toolbar_action, g_settings_get_boolean(state_settings, "show-toolbar-default")); - g_settings_bind(state_settings, "show-toolbar-default", toolbar_action, "active", G_SETTINGS_BIND_SET); const gchar **ptr; GtkRecentFilter *filter = gtk_recent_filter_new(); @@ -139,73 +108,8 @@ create_window(void) GtkRecentChooser *recent = GTK_RECENT_CHOOSER(load_object("recent")); gtk_recent_chooser_add_filter(recent, filter); - uimanager = gtk_ui_manager_new(); - 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, - /*"interpreter-number", CHIMARA_IF_ZMACHINE_TANDY_COLOR,*/ - 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 "/style.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) - { - error_dialog(NULL, NULL, "Could not find vbox"); - return; - } - - gtk_ui_manager_insert_action_group(uimanager, actiongroup, 0); - GtkWidget *menubar = gtk_ui_manager_get_widget(uimanager, "/menubar"); - toolbar = gtk_ui_manager_get_widget(uimanager, "/toolbar"); - gtk_widget_set_no_show_all(toolbar, TRUE); - if(gtk_toggle_action_get_active(toolbar_action)) - gtk_widget_show(toolbar); - else - gtk_widget_hide(toolbar); - - /* Connect the accelerators */ - GtkAccelGroup *accels = gtk_ui_manager_get_accel_group(uimanager); - gtk_window_add_accel_group(GTK_WINDOW(window), accels); - - gtk_box_pack_end(vbox, glk, TRUE, TRUE, 0); - gtk_box_pack_start(vbox, menubar, FALSE, FALSE, 0); - 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); - /* Create preferences window */ - preferences_create(CHIMARA_GLK(glk)); + preferences_create(); } int @@ -244,28 +148,23 @@ main(int argc, char *argv[]) g_free(keyfile); create_window(); - gtk_widget_show_all(window); - g_object_unref( G_OBJECT(uimanager) ); + GtkWidget *window = chimara_player_new(); + gtk_widget_show_all(window); - if(argc == 3) { - g_object_set(glk, "graphics-file", argv[2], NULL); - } - if(argc >= 2) { - if( !chimara_if_run_game(CHIMARA_IF(glk), argv[1], &error) ) { - error_dialog(GTK_WINDOW(window), error, "Error starting Glk library: "); - return 1; - } - } + //if(argc == 3) { + // g_object_set(glk, "graphics-file", argv[2], NULL); + //} + //if(argc >= 2) { + // if( !chimara_if_run_game(CHIMARA_IF(glk), argv[1], &error) ) { + // error_dialog(GTK_WINDOW(window), error, "Error starting Glk library: "); + // return 1; + // } + //} gdk_threads_enter(); gtk_main(); gdk_threads_leave(); - chimara_glk_stop(CHIMARA_GLK(glk)); - chimara_glk_wait(CHIMARA_GLK(glk)); - - g_object_unref( G_OBJECT(builder) ); - return 0; }