/* * Copyright 2014 (c) Anna Schumaker. */ #include #include #include #include #include #include #include #include #include #include #include #define OCARINA_FLAGS (G_APPLICATION_FLAGS_NONE) #ifndef CONFIG_DEBUG const static gchar *OCARINA_NAME = "org.gtk.ocarina"; #else const static gchar *OCARINA_NAME = "org.gtk.ocarina-debug"; #endif struct core_init_data init_data = { &playlist_ops, &tempq_ops, &audio_ops, }; static int startup_argc; static char **startup_argv; static gchar *find_file_path(const gchar *file) { gchar *path = g_strjoin("/", "share", "ocarina", file, NULL); if (g_file_test(path, G_FILE_TEST_IS_REGULAR)) return path; g_free(path); return g_strjoin("/", "/usr", "share", "ocarina", file, NULL); } static void __ocarina_activate(GApplication *application, gpointer data) { gtk_application_add_window(GTK_APPLICATION(application), GTK_WINDOW(gui_builder_widget("o_window"))); } static void __ocarina_startup(GApplication *application, gpointer data) { gchar *ui = find_file_path("ocarina6.glade"); gchar *icon = find_file_path("ocarina.png"); gui_builder_init(ui); core_init(&startup_argc, &startup_argv, &init_data); gui_settings_init(); gui_view_init(); gui_window_init(icon); gui_sidebar_init(); gui_collection_init(); gui_playlist_init(); gui_audio_init(); gui_idle_enable(); g_free(ui); g_free(icon); } static void __ocarina_shutdown(GApplication *application, gpointer data) { gui_idle_disable(); core_deinit(); gui_window_deinit(); gui_settings_deinit(); gui_builder_deinit(); } int main(int argc, char **argv) { GtkApplication *ocarina = gtk_application_new(OCARINA_NAME, OCARINA_FLAGS); startup_argc = argc; startup_argv = argv; g_signal_connect(G_APPLICATION(ocarina), "activate", (GCallback)__ocarina_activate, NULL); g_signal_connect(G_APPLICATION(ocarina), "startup", (GCallback)__ocarina_startup, NULL); g_signal_connect(G_APPLICATION(ocarina), "shutdown", (GCallback)__ocarina_shutdown, NULL); return g_application_run(G_APPLICATION(ocarina), argc, argv); }