[tepl] test-menu: add a GtkCheckMenuItem
- From: Sébastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tepl] test-menu: add a GtkCheckMenuItem
- Date: Thu, 10 Aug 2017 16:15:14 +0000 (UTC)
commit 3fb03ec90b63a9eb3c4d298518a16ea5b2d9f48f
Author: Sébastien Wilmet <swilmet gnome org>
Date: Thu Aug 10 18:10:43 2017 +0200
test-menu: add a GtkCheckMenuItem
tests/test-menu.c | 66 +++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 52 insertions(+), 14 deletions(-)
---
diff --git a/tests/test-menu.c b/tests/test-menu.c
index 301c006..7e8afb4 100644
--- a/tests/test-menu.c
+++ b/tests/test-menu.c
@@ -33,6 +33,9 @@ add_action_info_entries (TeplApplication *tepl_app)
{ "app.about", "help-about", "_About", NULL,
"About this application" },
+
+ { "win.show-side-panel", NULL, "_Side Panel", "F12",
+ "Show or hide the side panel" },
};
store = tepl_application_get_app_action_info_store (tepl_app);
@@ -60,7 +63,7 @@ about_activate_cb (GSimpleAction *about_action,
}
static void
-add_action_entries (GApplication *app)
+add_app_action_entries (GApplication *app)
{
const GActionEntry entries[] =
{
@@ -83,7 +86,7 @@ startup_cb (GApplication *g_app,
tepl_app = tepl_application_get_from_gtk_application (GTK_APPLICATION (g_app));
add_action_info_entries (tepl_app);
- add_action_entries (g_app);
+ add_app_action_entries (g_app);
}
static GtkWidget *
@@ -102,6 +105,21 @@ create_file_submenu (void)
}
static GtkWidget *
+create_view_submenu (void)
+{
+ GtkMenuShell *view_submenu;
+ AmtkFactory *factory;
+
+ view_submenu = GTK_MENU_SHELL (gtk_menu_new ());
+
+ factory = amtk_factory_new_with_default_application ();
+ gtk_menu_shell_append (view_submenu, amtk_factory_create_check_menu_item (factory,
"win.show-side-panel"));
+ g_object_unref (factory);
+
+ return GTK_WIDGET (view_submenu);
+}
+
+static GtkWidget *
create_help_submenu (void)
{
GtkMenuShell *help_submenu;
@@ -120,6 +138,7 @@ static GtkMenuBar *
create_menu_bar (void)
{
GtkWidget *file_menu_item;
+ GtkWidget *view_menu_item;
GtkWidget *help_menu_item;
GtkMenuBar *menu_bar;
TeplApplication *app;
@@ -129,12 +148,17 @@ create_menu_bar (void)
gtk_menu_item_set_submenu (GTK_MENU_ITEM (file_menu_item),
create_file_submenu ());
+ view_menu_item = gtk_menu_item_new_with_mnemonic ("_View");
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (view_menu_item),
+ create_view_submenu ());
+
help_menu_item = gtk_menu_item_new_with_mnemonic ("_Help");
gtk_menu_item_set_submenu (GTK_MENU_ITEM (help_menu_item),
create_help_submenu ());
menu_bar = GTK_MENU_BAR (gtk_menu_bar_new ());
gtk_menu_shell_append (GTK_MENU_SHELL (menu_bar), file_menu_item);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu_bar), view_menu_item);
gtk_menu_shell_append (GTK_MENU_SHELL (menu_bar), help_menu_item);
app = tepl_application_get_default ();
@@ -144,18 +168,15 @@ create_menu_bar (void)
return menu_bar;
}
-static GtkWidget *
-create_window_content (void)
+static void
+add_win_actions (GtkApplicationWindow *window,
+ GtkWidget *side_panel)
{
- GtkWidget *vgrid;
+ GPropertyAction *side_panel_action;
- vgrid = gtk_grid_new ();
- gtk_orientable_set_orientation (GTK_ORIENTABLE (vgrid), GTK_ORIENTATION_VERTICAL);
-
- gtk_container_add (GTK_CONTAINER (vgrid), GTK_WIDGET (create_menu_bar ()));
-
- gtk_widget_show_all (vgrid);
- return vgrid;
+ side_panel_action = g_property_action_new ("show-side-panel", side_panel, "visible");
+ g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (side_panel_action));
+ g_object_unref (side_panel_action);
}
static void
@@ -163,11 +184,28 @@ activate_cb (GApplication *g_app,
gpointer user_data)
{
GtkWidget *window;
+ GtkWidget *vgrid;
+ GtkWidget *hgrid;
+ GtkWidget *side_panel;
window = gtk_application_window_new (GTK_APPLICATION (g_app));
gtk_window_set_default_size (GTK_WINDOW (window), 800, 600);
- gtk_container_add (GTK_CONTAINER (window), create_window_content ());
- gtk_widget_show (window);
+
+ vgrid = gtk_grid_new ();
+ gtk_orientable_set_orientation (GTK_ORIENTABLE (vgrid), GTK_ORIENTATION_VERTICAL);
+
+ gtk_container_add (GTK_CONTAINER (vgrid), GTK_WIDGET (create_menu_bar ()));
+
+ hgrid = gtk_grid_new ();
+ side_panel = gtk_label_new ("Side panel");
+ gtk_container_add (GTK_CONTAINER (hgrid), side_panel);
+ gtk_container_add (GTK_CONTAINER (hgrid), gtk_label_new ("Text view"));
+ gtk_container_add (GTK_CONTAINER (vgrid), hgrid);
+
+ add_win_actions (GTK_APPLICATION_WINDOW (window), side_panel);
+
+ gtk_container_add (GTK_CONTAINER (window), vgrid);
+ gtk_widget_show_all (window);
}
int
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]