X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gio%2Ftests%2Fgapplication-example-actions.c;h=7aaa41ef34e8458403e1f44e5f107834b6baf014;hb=25990eb2b6da94e1d03631eab8a952ef84cb9986;hp=4bb7fc6209bd38d2467f481ccc90c9ae66511d90;hpb=cb8d29a55897b65c5d60077db19f39d1c01b2f86;p=platform%2Fupstream%2Fglib.git diff --git a/gio/tests/gapplication-example-actions.c b/gio/tests/gapplication-example-actions.c index 4bb7fc6..7aaa41e 100644 --- a/gio/tests/gapplication-example-actions.c +++ b/gio/tests/gapplication-example-actions.c @@ -15,7 +15,7 @@ activate_action (GAction *action, GVariant *parameter, gpointer data) { - GApplication *application = data; + GApplication *application = G_APPLICATION (data); g_application_hold (application); g_print ("action %s activated\n", g_action_get_name (action)); @@ -23,46 +23,70 @@ activate_action (GAction *action, } static void -activate_toggle_action (GAction *action, - GVariant *parameter, - gpointer data) +activate_toggle_action (GSimpleAction *action, + GVariant *parameter, + gpointer data) { - GApplication *application = data; + GApplication *application = G_APPLICATION (data); GVariant *state; gboolean b; - g_application_hold (application); - g_print ("action %s activated\n", g_action_get_name (action)); + g_print ("action %s activated\n", g_action_get_name (G_ACTION (action))); - state = g_action_get_state (action); + g_application_hold (application); + state = g_action_get_state (G_ACTION (action)); b = g_variant_get_boolean (state); g_variant_unref (state); - g_action_set_state (action, g_variant_new_boolean (!b)); - + g_simple_action_set_state (action, g_variant_new_boolean (!b)); + g_print ("state change %d -> %d\n", b, !b); g_application_release (application); } static void add_actions (GApplication *app) { - GSimpleActionGroup *actions; GSimpleAction *action; - actions = g_simple_action_group_new (); - action = g_simple_action_new ("simple-action", NULL); g_signal_connect (action, "activate", G_CALLBACK (activate_action), app); - g_simple_action_group_insert (actions, G_ACTION (action)); + g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (action)); g_object_unref (action); action = g_simple_action_new_stateful ("toggle-action", NULL, g_variant_new_boolean (FALSE)); g_signal_connect (action, "activate", G_CALLBACK (activate_toggle_action), app); - g_simple_action_group_insert (actions, G_ACTION (action)); + g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (action)); g_object_unref (action); +} - g_application_set_action_group (app, G_ACTION_GROUP (actions)); - g_object_unref (actions); +static void +describe_and_activate_action (GActionGroup *group, + const gchar *name) +{ + const GVariantType *param_type; + GVariant *state; + gboolean enabled; + gchar *tmp; + + param_type = g_action_group_get_action_parameter_type (group, name); + state = g_action_group_get_action_state (group, name); + enabled = g_action_group_get_action_enabled (group, name); + + g_print ("action name: %s\n", name); + tmp = param_type ? g_variant_type_dup_string (param_type) : NULL; + g_print ("parameter type: %s\n", tmp ? tmp : ""); + g_free (tmp); + g_print ("state type: %s\n", + state ? g_variant_get_type_string (state) : ""); + tmp = state ? g_variant_print (state, FALSE) : NULL; + g_print ("state: %s\n", tmp ? tmp : ""); + g_free (tmp); + g_print ("enabled: %s\n", enabled ? "true" : "false"); + + if (state != NULL) + g_variant_unref (state); + + g_action_group_activate_action (group, name, NULL); } int @@ -77,6 +101,19 @@ main (int argc, char **argv) add_actions (app); + if (argc > 1 && strcmp (argv[1], "--simple-action") == 0) + { + g_application_register (app, NULL, NULL); + describe_and_activate_action (G_ACTION_GROUP (app), "simple-action"); + exit (0); + } + else if (argc > 1 && strcmp (argv[1], "--toggle-action") == 0) + { + g_application_register (app, NULL, NULL); + describe_and_activate_action (G_ACTION_GROUP (app), "toggle-action"); + exit (0); + } + status = g_application_run (app, argc, argv); g_object_unref (app);