bca0b062a9051903971a6abeb6809499577418f8
[platform/upstream/glib.git] / gio / tests / gapplication-example-actions.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 activate_action (GAction  *action,
15                  GVariant *parameter,
16                  gpointer  data)
17 {
18   GApplication *application = data;
19
20   g_application_hold (application);
21   g_print ("action %s activated\n", g_action_get_name (action));
22   g_application_release (application);
23 }
24
25 static void
26 activate_toggle_action (GAction  *action,
27                         GVariant *parameter,
28                         gpointer  data)
29 {
30   GApplication *application = data;
31   GVariant *state;
32   gboolean b;
33
34   g_application_hold (application);
35   g_print ("action %s activated\n", g_action_get_name (action));
36
37   state = g_action_get_state (action);
38   b = g_variant_get_boolean (state);
39   g_variant_unref (state);
40   g_action_set_state (action, g_variant_new_boolean (!b));
41
42   g_application_release (application);
43 }
44
45 static void
46 add_actions (GApplication *app)
47 {
48   GSimpleActionGroup *actions;
49   GSimpleAction *action;
50
51   actions = g_simple_action_group_new ();
52
53   action = g_simple_action_new ("simple-action", NULL);
54   g_signal_connect (action, "activate", G_CALLBACK (activate_action), app);
55   g_simple_action_group_insert (actions, G_ACTION (action));
56
57   action = g_simple_action_new_stateful ("toggle-action", NULL,
58                                          g_variant_new_boolean (FALSE));
59   g_signal_connect (action, "activate", G_CALLBACK (activate_toggle_action), app);
60   g_simple_action_group_insert (actions, G_ACTION (action));
61
62   g_application_set_action_group (app, G_ACTION_GROUP (actions));
63 }
64
65 int
66 main (int argc, char **argv)
67 {
68   GApplication *app;
69   int status;
70
71   app = g_application_new ("org.gtk.TestApplication", 0);
72   g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
73   g_application_set_inactivity_timeout (app, 10000);
74
75   add_actions (app);
76
77   status = g_application_run (app, argc, argv);
78
79   g_object_unref (app);
80
81   return status;
82 }