1 #include <gtk/gtk.h>
2
3 static void
new_window(GSimpleAction * action,GVariant * parameter,gpointer user_data)4 new_window (GSimpleAction *action,
5 GVariant *parameter,
6 gpointer user_data)
7 {
8 g_print ("This does nothing. It is only a demonstration.\n");
9 }
10
11 static void
quit(GSimpleAction * action,GVariant * parameter,gpointer user_data)12 quit (GSimpleAction *action,
13 GVariant *parameter,
14 gpointer user_data)
15 {
16 GApplication *application = user_data;
17
18 g_application_quit (application);
19 }
20
21 static void
startup(GtkApplication * application,gpointer user_data)22 startup (GtkApplication *application,
23 gpointer user_data)
24 {
25 static const GActionEntry actions[] = {
26 { "new", new_window },
27 { "quit", quit }
28 };
29
30 GMenu *menu;
31
32 g_action_map_add_action_entries (G_ACTION_MAP (application), actions, G_N_ELEMENTS (actions), application);
33
34 menu = g_menu_new ();
35 g_menu_append (menu, "New", "app.new");
36 g_menu_append (menu, "Quit", "app.quit");
37 gtk_application_set_app_menu (application, G_MENU_MODEL (menu));
38 g_object_unref (menu);
39 }
40
41 static void
activate(GtkApplication * app,gpointer user_data)42 activate (GtkApplication *app,
43 gpointer user_data)
44 {
45 GtkWidget *window;
46
47 window = gtk_application_window_new (app);
48
49 gtk_window_set_application (GTK_WINDOW (window), GTK_APPLICATION (app));
50 gtk_window_set_title (GTK_WINDOW (window), "Hello GNOME");
51
52 gtk_widget_show_all (GTK_WIDGET (window));
53 }
54
55 int
main(int argc,char ** argv)56 main (int argc, char **argv)
57 {
58 GtkApplication *app;
59 int status;
60
61 app = gtk_application_new ("org.gtk.example",G_APPLICATION_FLAGS_NONE);
62 g_signal_connect (app, "startup", G_CALLBACK (startup), NULL);
63 g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
64 status = g_application_run (G_APPLICATION (app), argc, argv);
65 g_object_unref (app);
66 return status;
67 }
68