From 4dbaf1270112e34bd4823d04337a451e6e9f6dd6 Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Sat, 23 Jan 2016 09:30:56 -0500 Subject: [PATCH] gui/ocarina: Switch to C-style GtkApplication The right way to do this would be to respond to the "activate", "startup", and "shutdown" signals. I can't to this easily, because gstreamer needs argc and argv. Let's fake things up now and sort it out later. Signed-off-by: Anna Schumaker --- gui/Sconscript | 4 ++-- gui/ocarina.cpp | 32 ++++++++++++++++++++------------ 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/gui/Sconscript b/gui/Sconscript index e09d27f9..f0c5a171 100644 --- a/gui/Sconscript +++ b/gui/Sconscript @@ -1,8 +1,8 @@ #!/usr/bin/python Import("env") -env.UsePackage("gtkmm-3.0") -env.UsePackage("gmodule-export-2.0") +env.UsePackage("gtk+-3.0") +env.UsePackage("gmodule-export-2.0"); res = Glob("*.c") + Glob("*.cpp") Return("res") diff --git a/gui/ocarina.cpp b/gui/ocarina.cpp index 565a8173..9686cdff 100644 --- a/gui/ocarina.cpp +++ b/gui/ocarina.cpp @@ -15,12 +15,8 @@ extern "C" { #include #include } -#include -#include - - -static Glib::RefPtr ocarina_app; +#define OCARINA_FLAGS (G_APPLICATION_FLAGS_NONE) struct core_init_data init_data = { &collection_ops, @@ -41,19 +37,31 @@ static gchar *find_file_path(const gchar *file) return g_strjoin("/", "/usr", "share", "ocarina", file, NULL); } -static void on_window_removed(Gtk::Window *window) +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_shutdown(GApplication *application, gpointer data) { idle_cancel(); } int main(int argc, char **argv) { - Gtk::Window *window; gchar *ui = find_file_path("ocarina6.glade"); gchar *icon = find_file_path("ocarina.png"); + GtkApplication *ocarina; + int ret; - ocarina_app = Gtk::Application::create(argc, argv, "org.gtkmm.ocarina"); +#ifndef CONFIG_DEBUG + ocarina = gtk_application_new("org.gtk.ocarina", OCARINA_FLAGS); +#else + ocarina = gtk_application_new("org.gtk.ocarina-debug", OCARINA_FLAGS); +#endif + gtk_init(&argc, &argv); gui_builder_init(ui); core_init(&argc, &argv, &init_data); gui_settings_init(); @@ -67,14 +75,14 @@ int main(int argc, char **argv) g_free(ui); g_free(icon); - window = Glib :: wrap(GTK_WINDOW(gui_builder_widget("o_window")), false); - ocarina_app->signal_window_removed().connect(sigc::ptr_fun(on_window_removed)); - ocarina_app->run(*window, argc, argv); + g_signal_connect(G_APPLICATION(ocarina), "activate", (GCallback)__ocarina_activate, NULL); + g_signal_connect(G_APPLICATION(ocarina), "shutdown", (GCallback)__ocarina_shutdown, NULL); + ret = g_application_run(G_APPLICATION(ocarina), argc, argv); core_deinit(); gui_window_deinit(); gui_settings_deinit(); gui_builder_deinit(); - return 0; + return ret; }