summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--c-gnome-app.c44
1 files changed, 42 insertions, 2 deletions
diff --git a/c-gnome-app.c b/c-gnome-app.c
index fabfece..6d20243 100644
--- a/c-gnome-app.c
+++ b/c-gnome-app.c
@@ -1,14 +1,53 @@
/* Build with "gcc `pkg-config --cflags --libs gtk+-3.0` c-gnome-app.c */
#include <gtk/gtk.h>
+static GtkWidget *window;
+
+static void
+on_hello_world (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ g_print ("%s\n", "Hello world!");
+}
+
+static void
+on_quit (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ g_application_quit (G_APPLICATION (user_data));
+}
+
+static const GActionEntry actions[] =
+{
+ { "hello-world", on_hello_world },
+ { "quit", on_quit }
+};
+
static void
on_activate (GApplication *app,
gpointer user_data)
{
- GtkWidget *window;
+ gtk_widget_show_all (window);
+}
+
+static void
+on_startup (GApplication *app,
+ gpointer user_data)
+{
+ const gchar * const hello_world_accel[] = { "<Primary>h", NULL };
+ const gchar * const quit_accel[] = { "<Primary>q", NULL };
+ g_action_map_add_action_entries (G_ACTION_MAP (app), actions,
+ G_N_ELEMENTS (actions), app);
window = gtk_application_window_new (GTK_APPLICATION (app));
- gtk_widget_show_all (window);
+ gtk_application_set_accels_for_action (GTK_APPLICATION (app),
+ "app.hello-world",
+ hello_world_accel);
+ gtk_application_set_accels_for_action (GTK_APPLICATION (app),
+ "app.quit",
+ quit_accel);
}
int
@@ -20,6 +59,7 @@ main (int argc,
app = gtk_application_new ("org.example.CGnome", G_APPLICATION_FLAGS_NONE);
g_signal_connect (app, "activate", G_CALLBACK (on_activate), NULL);
+ g_signal_connect (app, "startup", G_CALLBACK (on_startup), NULL);
status = g_application_run (G_APPLICATION (app), argc, argv);
g_object_unref (app);