[glib/wip/gmenu: 22/59] GApplication: Add a menu example to the docs



commit ff5c1ddbd752ddf815d5cfa1ea2d55a23f87c913
Author: Matthias Clasen <mclasen redhat com>
Date:   Sun Nov 27 02:16:51 2011 -0500

    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(+), 0 deletions(-)
---
diff --git a/gio/gapplication.c b/gio/gapplication.c
index 48a07b7..31e0c7b 100644
--- a/gio/gapplication.c
+++ b/gio/gapplication.c
@@ -146,6 +146,14 @@
  * </xi:include>
  * </programlisting>
  * </example>
+ *
+ * <example id="gapplication-example-menu"><title>A GApplication with menus</title>
+ * <programlisting>
+ * <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"; parse="text" href="../../../../gio/tests/gapplication-example-menu.c">
+ *   <xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback>
+ * </xi:include>
+ * </programlisting>
+ * </example>
  */
 
 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 <gio/gio.h>
+#include <stdlib.h>
+#include <string.h>
+
+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;
+}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]