13c7e03629b9fdff76db163c37bada8a1828e551
[platform/upstream/glib.git] / gio / tests / gapplication-example-menu.c
1 #include <gio/gio.h>
2 #include <stdlib.h>
3 #include <string.h>
4
5 static void
6 activate (GApplication *application)
7 {
8   g_application_hold (application);
9   g_print ("activated\n");
10   g_application_release (application);
11 }
12
13 static void
14 show_help (GSimpleAction *action,
15            GVariant      *parameter,
16            gpointer       data)
17 {
18   g_print ("Want help, eh ?!\n");
19 }
20
21 static void
22 show_about (GSimpleAction *action,
23             GVariant      *parameter,
24             gpointer       user_data)
25 {
26   g_print ("Not much to say, really.\nJust a stupid example\n");
27 }
28
29 static void
30 quit_app (GSimpleAction *action,
31           GVariant      *parameter,
32           gpointer       user_data)
33 {
34   g_print ("Quitting...\n");
35   g_application_release (g_application_get_default ());
36 }
37
38 static GActionEntry entries[] = {
39   { "help",  show_help,  NULL, NULL, NULL },
40   { "about", show_about, NULL, NULL, NULL },
41   { "quit",  quit_app,   NULL, NULL, NULL }
42 };
43
44 static void
45 add_actions (GApplication *app)
46 {
47   GSimpleActionGroup *actions;
48
49   actions = g_simple_action_group_new ();
50
51   g_simple_action_group_add_entries (actions,
52                                      entries, G_N_ELEMENTS (entries),
53                                      NULL);
54
55   g_application_set_action_group (app, G_ACTION_GROUP (actions));
56
57   g_object_unref (actions);
58 }
59
60 static void
61 add_menu (GApplication *app)
62 {
63   GMenu *menu;
64
65   menu = g_menu_new ();
66
67   g_menu_append (menu, "Help", "help");
68   g_menu_append (menu, "About Example", "about");
69   g_menu_append (menu, "Quit", "quit");
70
71   g_application_set_menu (app, G_MENU_MODEL (menu));
72
73   g_object_unref (menu);
74 }
75
76 int
77 main (int argc, char **argv)
78 {
79   GApplication *app;
80   int status;
81
82   app = g_application_new ("org.gtk.TestApplication", 0);
83   g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
84
85   add_actions (app);
86   add_menu (app);
87
88   g_application_hold (app);
89
90   status = g_application_run (app, argc, argv);
91
92   g_object_unref (app);
93
94   return status;
95 }