From 41c19c7df8f13101a40e7df115efbb8cd8de3f67 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 27 Nov 2011 02:16:51 -0500 Subject: [PATCH] GApplication: Add a menu example to the docs --- gio/gapplication.c | 8 +++ gio/tests/Makefile.am | 4 ++ gio/tests/gapplication-example-menu.c | 95 +++++++++++++++++++++++++++++++++++ 3 files changed, 107 insertions(+) create mode 100644 gio/tests/gapplication-example-menu.c diff --git a/gio/gapplication.c b/gio/gapplication.c index 0abdcfc..fe94183 100644 --- a/gio/gapplication.c +++ b/gio/gapplication.c @@ -146,6 +146,14 @@ * * * + * + * A GApplication with menus + * + * + * FIXME: MISSING XINCLUDE CONTENT + * + * + * */ struct _GApplicationPrivate diff --git a/gio/tests/Makefile.am b/gio/tests/Makefile.am index 7c7bded..3d87981 100644 --- a/gio/tests/Makefile.am +++ b/gio/tests/Makefile.am @@ -111,6 +111,7 @@ SAMPLE_PROGS = \ gapplication-example-cmdline2 \ gapplication-example-cmdline3 \ gapplication-example-actions \ + gapplication-example-menu \ $(NULL) @@ -427,6 +428,9 @@ gapplication_example_cmdline3_LDADD = $(progs_ldadd) gapplication_example_actions_SOURCES = gapplication-example-actions.c gapplication_example_actions_LDADD = $(progs_ldadd) +gapplication_example_menu_SOURCES = gapplication-example-menu.c +gapplication_example_menu_LDADD = $(progs_ldadd) + gmenumodel_LDADD = $(progs_ldadd) schema_tests = \ diff --git a/gio/tests/gapplication-example-menu.c b/gio/tests/gapplication-example-menu.c new file mode 100644 index 0000000..13c7e03 --- /dev/null +++ b/gio/tests/gapplication-example-menu.c @@ -0,0 +1,95 @@ +#include +#include +#include + +static void +activate (GApplication *application) +{ + g_application_hold (application); + g_print ("activated\n"); + g_application_release (application); +} + +static void +show_help (GSimpleAction *action, + GVariant *parameter, + gpointer data) +{ + g_print ("Want help, eh ?!\n"); +} + +static void +show_about (GSimpleAction *action, + GVariant *parameter, + gpointer user_data) +{ + g_print ("Not much to say, really.\nJust a stupid example\n"); +} + +static void +quit_app (GSimpleAction *action, + GVariant *parameter, + gpointer user_data) +{ + g_print ("Quitting...\n"); + g_application_release (g_application_get_default ()); +} + +static GActionEntry entries[] = { + { "help", show_help, NULL, NULL, NULL }, + { "about", show_about, NULL, NULL, NULL }, + { "quit", quit_app, NULL, NULL, NULL } +}; + +static void +add_actions (GApplication *app) +{ + GSimpleActionGroup *actions; + + actions = g_simple_action_group_new (); + + g_simple_action_group_add_entries (actions, + entries, G_N_ELEMENTS (entries), + NULL); + + g_application_set_action_group (app, G_ACTION_GROUP (actions)); + + g_object_unref (actions); +} + +static void +add_menu (GApplication *app) +{ + GMenu *menu; + + menu = g_menu_new (); + + g_menu_append (menu, "Help", "help"); + g_menu_append (menu, "About Example", "about"); + g_menu_append (menu, "Quit", "quit"); + + g_application_set_menu (app, G_MENU_MODEL (menu)); + + g_object_unref (menu); +} + +int +main (int argc, char **argv) +{ + GApplication *app; + int status; + + app = g_application_new ("org.gtk.TestApplication", 0); + g_signal_connect (app, "activate", G_CALLBACK (activate), NULL); + + add_actions (app); + add_menu (app); + + g_application_hold (app); + + status = g_application_run (app, argc, argv); + + g_object_unref (app); + + return status; +} -- 2.7.4