summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorRyan Lortie <desrt@desrt.ca>2011-12-01 22:43:54 -0500
committerRyan Lortie <desrt@desrt.ca>2011-12-19 12:51:10 -0500
commit9cc98f9d9b899ee1e1be02f32593363b456d6046 (patch)
tree8c7499189068b5895dc99ac325d2465e534f3711 /examples
parentf83530ae3a517cc2758317b8f59025269e8efe50 (diff)
downloadgtk+-9cc98f9d9b899ee1e1be02f32593363b456d6046.tar.gz
bloatpad: use GtkBuilder for constructing menus
This is closer to what a real application would want to do.
Diffstat (limited to 'examples')
-rw-r--r--examples/bloatpad.c63
1 files changed, 21 insertions, 42 deletions
diff --git a/examples/bloatpad.c b/examples/bloatpad.c
index 279e99399a..f107a07c79 100644
--- a/examples/bloatpad.c
+++ b/examples/bloatpad.c
@@ -190,57 +190,36 @@ create_app_actions (void)
return G_ACTION_GROUP (actions);
}
-static GMenuModel *
-create_app_menu (void)
-{
- GMenu *menu = g_menu_new ();
- g_menu_append (menu, "_About Bloatpad", "app.about");
- g_menu_append (menu, "_Quit", "app.quit");
-
- return G_MENU_MODEL (menu);
-}
-
-static GMenuModel *
-create_window_menu (void)
-{
- GMenu *menu;
- GMenu *submenu;
-
- submenu = g_menu_new ();
- g_menu_append (submenu, "_Copy", "win.copy");
- g_menu_append (submenu, "_Paste", "win.paste");
-
- menu = g_menu_new ();
- g_menu_append_submenu (menu, "_Edit", (GMenuModel*)submenu);
- g_object_unref (submenu);
-
- submenu = g_menu_new ();
- g_menu_append (submenu, "_Fullscreen", "win.fullscreen");
-
- g_menu_append_submenu (menu, "_View", (GMenuModel*)submenu);
- g_object_unref (submenu);
-
- return G_MENU_MODEL (menu);
-}
-
static void
bloat_pad_init (BloatPad *app)
{
GActionGroup *actions;
- GMenuModel *app_menu;
- GMenuModel *window_menu;
+ GtkBuilder *builder;
actions = create_app_actions ();
g_application_set_action_group (G_APPLICATION (app), actions);
g_object_unref (actions);
- app_menu = create_app_menu ();
- g_application_set_app_menu (G_APPLICATION (app), app_menu);
- g_object_unref (app_menu);
-
- window_menu = create_window_menu ();
- g_application_set_menubar (G_APPLICATION (app), window_menu);
- g_object_unref (window_menu);
+ builder = gtk_builder_new ();
+ gtk_builder_add_from_string (builder,
+ "<interface>"
+ " <menu id='app-menu'>"
+ " <item label='_About Bloatpad' action='app.about'/>"
+ " <item label='_Quit' action='app.quit'/>"
+ " </menu>"
+ " <menu id='menubar'>"
+ " <submenu label='_Edit'>"
+ " <item label='_Copy' action='win.copy'/>"
+ " <item label='_Paste' action='win.paste'/>"
+ " </submenu>"
+ " <submenu label='_View'>"
+ " <item label='_Fullscreen' action='win.fullscreen'/>"
+ " </submenu>"
+ " </menu>"
+ "</interface>", -1, NULL);
+ g_application_set_app_menu (G_APPLICATION (app), G_MENU_MODEL (gtk_builder_get_object (builder, "app-menu")));
+ g_application_set_menubar (G_APPLICATION (app), G_MENU_MODEL (gtk_builder_get_object (builder, "menubar")));
+ g_object_unref (builder);
}
static void