Import Upstream version 2.72.4
This commit is contained in:
commit
4ef3ff9793
2003 changed files with 1332420 additions and 0 deletions
122
gio/tests/gapplication-example-actions.c
Normal file
122
gio/tests/gapplication-example-actions.c
Normal file
|
|
@ -0,0 +1,122 @@
|
|||
#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
|
||||
activate_action (GAction *action,
|
||||
GVariant *parameter,
|
||||
gpointer data)
|
||||
{
|
||||
GApplication *application = G_APPLICATION (data);
|
||||
|
||||
g_application_hold (application);
|
||||
g_print ("action %s activated\n", g_action_get_name (action));
|
||||
g_application_release (application);
|
||||
}
|
||||
|
||||
static void
|
||||
activate_toggle_action (GSimpleAction *action,
|
||||
GVariant *parameter,
|
||||
gpointer data)
|
||||
{
|
||||
GApplication *application = G_APPLICATION (data);
|
||||
GVariant *state;
|
||||
gboolean b;
|
||||
|
||||
g_print ("action %s activated\n", g_action_get_name (G_ACTION (action)));
|
||||
|
||||
g_application_hold (application);
|
||||
state = g_action_get_state (G_ACTION (action));
|
||||
b = g_variant_get_boolean (state);
|
||||
g_variant_unref (state);
|
||||
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)
|
||||
{
|
||||
GSimpleAction *action;
|
||||
|
||||
action = g_simple_action_new ("simple-action", NULL);
|
||||
g_signal_connect (action, "activate", G_CALLBACK (activate_action), app);
|
||||
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_action_map_add_action (G_ACTION_MAP (app), G_ACTION (action));
|
||||
g_object_unref (action);
|
||||
}
|
||||
|
||||
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 : "<none>");
|
||||
g_free (tmp);
|
||||
g_print ("state type: %s\n",
|
||||
state ? g_variant_get_type_string (state) : "<none>");
|
||||
tmp = state ? g_variant_print (state, FALSE) : NULL;
|
||||
g_print ("state: %s\n", tmp ? tmp : "<none>");
|
||||
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
|
||||
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);
|
||||
g_application_set_inactivity_timeout (app, 10000);
|
||||
|
||||
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);
|
||||
|
||||
return status;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue