From c0a61c2da3c358e71f0d29ceda2e761f5b6878af Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 14 Feb 2016 09:39:15 -0500 Subject: [PATCH] gtk-demo: Streamline application Avoid the odd #ifdef STANDALONE construction; we can show multiple source files nowadays. --- demos/gtk-demo/Makefile.am | 4 +- demos/gtk-demo/application-standalone.c | 3 - demos/gtk-demo/application.c | 101 +----------------------- demos/gtk-demo/application_demo.c | 95 ++++++++++++++++++++++ demos/gtk-demo/demo.gresource.xml | 5 +- 5 files changed, 102 insertions(+), 106 deletions(-) delete mode 100644 demos/gtk-demo/application-standalone.c create mode 100644 demos/gtk-demo/application_demo.c diff --git a/demos/gtk-demo/Makefile.am b/demos/gtk-demo/Makefile.am index efd06b22cf..80927d0cbe 100644 --- a/demos/gtk-demo/Makefile.am +++ b/demos/gtk-demo/Makefile.am @@ -4,7 +4,7 @@ include $(top_srcdir)/Makefile.decl ## These should be in the order you want them to appear in the ## demo app, which means alphabetized by demo title, not filename demos_base = \ - application.c \ + application_demo.c \ assistant.c \ builder.c \ button_box.c \ @@ -143,7 +143,7 @@ gtk3_demo_LDADD = $(LDADDS) gtk3_demo_LDFLAGS = -export-dynamic gtk3_demo_application_SOURCES = \ - application-standalone.c \ + application.c \ demo_resources.c gtk3_demo_application_LDADD = $(LDADDS) diff --git a/demos/gtk-demo/application-standalone.c b/demos/gtk-demo/application-standalone.c deleted file mode 100644 index 6793b3811a..0000000000 --- a/demos/gtk-demo/application-standalone.c +++ /dev/null @@ -1,3 +0,0 @@ -#define STANDALONE - -#include "application.c" diff --git a/demos/gtk-demo/application.c b/demos/gtk-demo/application.c index c85102d46c..289f73a493 100644 --- a/demos/gtk-demo/application.c +++ b/demos/gtk-demo/application.c @@ -1,18 +1,8 @@ -/* Application Class - * - * Demonstrates a simple application. - * - * This examples uses GtkApplication, GtkApplicationWindow, GtkBuilder - * as well as GMenu and GResource. Due to the way GtkApplication is structured, - * it is run as a separate process. - */ #include "config.h" #include -#ifdef STANDALONE - typedef GtkApplication DemoApplication; typedef GtkApplicationClass DemoApplicationClass; @@ -356,7 +346,7 @@ startup (GApplication *app) G_APPLICATION_CLASS (demo_application_parent_class)->startup (app); builder = gtk_builder_new (); - gtk_builder_add_from_resource (builder, "/application/menus.ui", NULL); + gtk_builder_add_from_resource (builder, "/application_demo/menus.ui", NULL); appmenu = (GMenuModel *)gtk_builder_get_object (builder, "appmenu"); menubar = (GMenuModel *)gtk_builder_get_object (builder, "menubar"); @@ -528,7 +518,7 @@ demo_application_window_class_init (DemoApplicationWindowClass *class) widget_class->window_state_event = demo_application_window_state_event; widget_class->destroy = demo_application_window_destroy; - gtk_widget_class_set_template_from_resource (widget_class, "/application/application.ui"); + gtk_widget_class_set_template_from_resource (widget_class, "/application_demo/application.ui"); gtk_widget_class_bind_template_child (widget_class, DemoApplicationWindow, message); gtk_widget_class_bind_template_child (widget_class, DemoApplicationWindow, infobar); gtk_widget_class_bind_template_child (widget_class, DemoApplicationWindow, status); @@ -552,90 +542,3 @@ main (int argc, char *argv[]) return g_application_run (G_APPLICATION (app), 0, NULL); } - -#else /* !STANDALONE */ - -static gboolean name_seen; -static GtkWidget *placeholder; - -static void -on_name_appeared (GDBusConnection *connection, - const gchar *name, - const gchar *name_owner, - gpointer user_data) -{ - name_seen = TRUE; -} - -static void -on_name_vanished (GDBusConnection *connection, - const gchar *name, - gpointer user_data) -{ - if (!name_seen) - return; - - if (placeholder) - { - gtk_widget_destroy (placeholder); - g_object_unref (placeholder); - placeholder = NULL; - } -} - -#ifdef G_OS_WIN32 -#define APP_EXTENSION ".exe" -#else -#define APP_EXTENSION -#endif - -GtkWidget * -do_application (GtkWidget *toplevel) -{ - static guint watch = 0; - - if (watch == 0) - watch = g_bus_watch_name (G_BUS_TYPE_SESSION, - "org.gtk.Demo2", - 0, - on_name_appeared, - on_name_vanished, - NULL, NULL); - - if (placeholder == NULL) - { - const gchar *command; - GError *error = NULL; - - if (g_file_test ("./gtk3-demo-application" APP_EXTENSION, G_FILE_TEST_IS_EXECUTABLE)) - command = "./gtk3-demo-application" APP_EXTENSION; - else - command = "gtk3-demo-application"; - - if (!g_spawn_command_line_async (command, &error)) - { - g_warning ("%s", error->message); - g_error_free (error); - } - - placeholder = gtk_label_new (""); - g_object_ref_sink (placeholder); - } - else - { - g_dbus_connection_call_sync (g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL), - "org.gtk.Demo2", - "/org/gtk/Demo2", - "org.gtk.Actions", - "Activate", - g_variant_new ("(sava{sv})", "quit", NULL, NULL), - NULL, - 0, - G_MAXINT, - NULL, NULL); - } - - return placeholder; -} - -#endif diff --git a/demos/gtk-demo/application_demo.c b/demos/gtk-demo/application_demo.c new file mode 100644 index 0000000000..798fcada49 --- /dev/null +++ b/demos/gtk-demo/application_demo.c @@ -0,0 +1,95 @@ +/* Application Class + * + * Demonstrates a simple application. + * + * This examples uses GtkApplication, GtkApplicationWindow, GtkBuilder + * as well as GMenu and GResource. Due to the way GtkApplication is structured, + * it is run as a separate process. + */ + +#include "config.h" + +#include + +static gboolean name_seen; +static GtkWidget *placeholder; + +static void +on_name_appeared (GDBusConnection *connection, + const gchar *name, + const gchar *name_owner, + gpointer user_data) +{ + name_seen = TRUE; +} + +static void +on_name_vanished (GDBusConnection *connection, + const gchar *name, + gpointer user_data) +{ + if (!name_seen) + return; + + if (placeholder) + { + gtk_widget_destroy (placeholder); + g_object_unref (placeholder); + placeholder = NULL; + } +} + +#ifdef G_OS_WIN32 +#define APP_EXTENSION ".exe" +#else +#define APP_EXTENSION +#endif + +GtkWidget * +do_application_demo (GtkWidget *toplevel) +{ + static guint watch = 0; + + if (watch == 0) + watch = g_bus_watch_name (G_BUS_TYPE_SESSION, + "org.gtk.Demo2", + 0, + on_name_appeared, + on_name_vanished, + NULL, NULL); + + if (placeholder == NULL) + { + const gchar *command; + GError *error = NULL; + + if (g_file_test ("./gtk3-demo-application" APP_EXTENSION, G_FILE_TEST_IS_EXECUTABLE)) + command = "./gtk3-demo-application" APP_EXTENSION; + else + command = "gtk3-demo-application"; + + if (!g_spawn_command_line_async (command, &error)) + { + g_warning ("%s", error->message); + g_error_free (error); + } + + placeholder = gtk_label_new (""); + g_object_ref_sink (placeholder); + } + else + { + g_dbus_connection_call_sync (g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL), + "org.gtk.Demo2", + "/org/gtk/Demo2", + "org.gtk.Actions", + "Activate", + g_variant_new ("(sava{sv})", "quit", NULL, NULL), + NULL, + 0, + G_MAXINT, + NULL, NULL); + } + + return placeholder; +} diff --git a/demos/gtk-demo/demo.gresource.xml b/demos/gtk-demo/demo.gresource.xml index 9ca8dad7cd..b1026498e5 100644 --- a/demos/gtk-demo/demo.gresource.xml +++ b/demos/gtk-demo/demo.gresource.xml @@ -3,7 +3,8 @@ main.ui - + + application.c application.ui menus.ui @@ -117,7 +118,7 @@ gnu-keys.png - application.c + application_demo.c assistant.c builder.c button_box.c