X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=player%2Fmain.c;h=85ed57cbbeab7bd57f2674b20ff0301ae2a0d048;hb=25a7dce7786ce3c8514bd67313048e4f6d19816a;hp=efecdab3134e0305a7e05f87951866568841d4cb;hpb=6d5ea65196e82ca4d06f6b78c1a0979749d73604;p=projects%2Fchimara%2Fchimara.git diff --git a/player/main.c b/player/main.c index efecdab..85ed57c 100644 --- a/player/main.c +++ b/player/main.c @@ -30,93 +30,25 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include -#include + #include #include #include #include -#include -#include #include -/* Use a custom GSettings backend for our preferences file */ -#define G_SETTINGS_ENABLE_BACKEND -#include - #include "error.h" #include #include #include "preferences.h" #include "player.h" - - - -/* Global global pointers */ -GtkBuilder *builder = NULL; -GtkWidget *aboutwindow = NULL; -GtkWidget *prefswindow = NULL; - -GSettings *prefs_settings = NULL; -GSettings *state_settings = NULL; - -static GObject * -load_object(const gchar *name) -{ - GObject *retval; - if( (retval = gtk_builder_get_object(builder, name)) == NULL) { - error_dialog(NULL, NULL, "Error while getting object '%s'", name); - g_error("Error while getting object '%s'", name); - } - return retval; -} - -static void -create_window(void) -{ - GError *error = NULL; - - builder = gtk_builder_new(); - 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 */ - } - - aboutwindow = GTK_WIDGET(load_object("aboutwindow")); - prefswindow = GTK_WIDGET(load_object("prefswindow")); - - const gchar **ptr; - GtkRecentFilter *filter = gtk_recent_filter_new(); - /* TODO: Use mimetypes and construct the filter dynamically depending on - what plugins are installed */ - const gchar *patterns[] = { - "*.z[1-8]", "*.[zg]lb", "*.[zg]blorb", "*.ulx", "*.blb", "*.blorb", NULL - }; - - for(ptr = patterns; *ptr; ptr++) - gtk_recent_filter_add_pattern(filter, *ptr); - GtkRecentChooser *recent = GTK_RECENT_CHOOSER(load_object("recent")); - gtk_recent_chooser_add_filter(recent, filter); - - /* Create preferences window */ - preferences_create(); -} +#include "app.h" int main(int argc, char *argv[]) { - GError *error = NULL; - #ifdef ENABLE_NLS bindtextdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR); bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); @@ -128,26 +60,7 @@ main(int argc, char *argv[]) gdk_threads_init(); gtk_init(&argc, &argv); - /* Create configuration dir ~/.chimara */ - gchar *configdir = g_build_filename(g_get_home_dir(), ".chimara", NULL); - if(!g_file_test(configdir, G_FILE_TEST_IS_DIR) - && g_mkdir(configdir, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0) - g_error(_("Cannot create configuration directory ~/.chimara")); - g_free(configdir); - - /* Initialize settings file; it can be overridden by a "chimara-config" file - in the current directory */ - gchar *keyfile; - if(g_file_test("chimara-config", G_FILE_TEST_IS_REGULAR)) - keyfile = g_strdup("chimara-config"); - else - keyfile = g_build_filename(g_get_home_dir(), ".chimara", "config", NULL); - GSettingsBackend *backend = g_keyfile_settings_backend_new(keyfile, "/org/chimara-if/player/", NULL); - prefs_settings = g_settings_new_with_backend("org.chimara-if.player.preferences", backend); - state_settings = g_settings_new_with_backend("org.chimara-if.player.state", backend); - g_free(keyfile); - - create_window(); + ChimaraApp *theapp = chimara_app_get(); GtkWidget *window = chimara_player_new(); gtk_widget_show_all(window); @@ -166,5 +79,7 @@ main(int argc, char *argv[]) gtk_main(); gdk_threads_leave(); + g_object_unref(theapp); + return 0; }