[devhelp] amtk: create window menus with Amtk
- From: Sébastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [devhelp] amtk: create window menus with Amtk
- Date: Fri, 13 Apr 2018 09:34:22 +0000 (UTC)
commit 4de843d32fd119d8622216d2f1ea51f112df3da7
Author: Sébastien Wilmet <swilmet gnome org>
Date: Fri Apr 13 10:07:23 2018 +0200
amtk: create window menus with Amtk
This permits to avoid information duplication (the labels in this case).
src/dh-window.c | 105 +++++++++++++++++++++++++++++++++++++++++++++++++-----
src/dh-window.ui | 95 ------------------------------------------------
2 files changed, 96 insertions(+), 104 deletions(-)
---
diff --git a/src/dh-window.c b/src/dh-window.c
index 103f257..3f801d6 100644
--- a/src/dh-window.c
+++ b/src/dh-window.c
@@ -25,6 +25,7 @@
#include <glib/gi18n.h>
#include <webkit2/webkit2.h>
#include <devhelp/devhelp.h>
+#include <amtk/amtk.h>
#include "dh-settings-app.h"
#include "dh-tab.h"
#include "dh-tab-label.h"
@@ -34,7 +35,6 @@
typedef struct {
GtkHeaderBar *header_bar;
GtkMenuButton *window_menu_button;
- GMenuModel *window_menu_plus_app_menu;
GtkPaned *hpaned;
@@ -98,7 +98,6 @@ dh_window_class_init (DhWindowClass *klass)
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/devhelp/dh-window.ui");
gtk_widget_class_bind_template_child_private (widget_class, DhWindow, header_bar);
gtk_widget_class_bind_template_child_private (widget_class, DhWindow, window_menu_button);
- gtk_widget_class_bind_template_child_private (widget_class, DhWindow, window_menu_plus_app_menu);
gtk_widget_class_bind_template_child_private (widget_class, DhWindow, hpaned);
gtk_widget_class_bind_template_child_private (widget_class, DhWindow, grid_sidebar);
gtk_widget_class_bind_template_child_private (widget_class, DhWindow, search_bar);
@@ -458,6 +457,100 @@ add_actions (DhWindow *window)
g_object_unref (property_action);
}
+static GMenuModel *
+create_window_menu_simple (void)
+{
+ GMenu *menu;
+ GMenu *section;
+ AmtkFactory *factory;
+
+ menu = g_menu_new ();
+ factory = amtk_factory_new_with_default_application ();
+
+ section = g_menu_new ();
+ amtk_gmenu_append_item (section, amtk_factory_create_gmenu_item (factory, "win.show-sidebar"));
+ amtk_gmenu_append_section (menu, NULL, section);
+
+ section = g_menu_new ();
+ amtk_gmenu_append_item (section, amtk_factory_create_gmenu_item (factory, "win.print"));
+ amtk_gmenu_append_item (section, amtk_factory_create_gmenu_item (factory, "win.find"));
+ amtk_gmenu_append_section (menu, NULL, section);
+
+ section = g_menu_new ();
+ amtk_gmenu_append_item (section, amtk_factory_create_gmenu_item (factory, "win.zoom-in"));
+ amtk_gmenu_append_item (section, amtk_factory_create_gmenu_item (factory, "win.zoom-out"));
+ amtk_gmenu_append_item (section, amtk_factory_create_gmenu_item (factory, "win.zoom-default"));
+ amtk_gmenu_append_section (menu, NULL, section);
+
+ g_object_unref (factory);
+ g_menu_freeze (menu);
+
+ return G_MENU_MODEL (menu);
+}
+
+static GMenuModel *
+create_window_menu_plus_app_menu (void)
+{
+ GMenu *menu;
+ GMenu *section;
+ AmtkFactory *factory;
+
+ menu = g_menu_new ();
+ factory = amtk_factory_new_with_default_application ();
+
+ section = g_menu_new ();
+ amtk_gmenu_append_item (section, amtk_factory_create_gmenu_item (factory, "app.new-window"));
+ amtk_gmenu_append_section (menu, NULL, section);
+
+ section = g_menu_new ();
+ amtk_gmenu_append_item (section, amtk_factory_create_gmenu_item (factory, "win.show-sidebar"));
+ amtk_gmenu_append_section (menu, NULL, section);
+
+ section = g_menu_new ();
+ amtk_gmenu_append_item (section, amtk_factory_create_gmenu_item (factory, "win.print"));
+ amtk_gmenu_append_item (section, amtk_factory_create_gmenu_item (factory, "win.find"));
+ amtk_gmenu_append_section (menu, NULL, section);
+
+ section = g_menu_new ();
+ amtk_gmenu_append_item (section, amtk_factory_create_gmenu_item (factory, "win.zoom-in"));
+ amtk_gmenu_append_item (section, amtk_factory_create_gmenu_item (factory, "win.zoom-out"));
+ amtk_gmenu_append_item (section, amtk_factory_create_gmenu_item (factory, "win.zoom-default"));
+ amtk_gmenu_append_section (menu, NULL, section);
+
+ section = g_menu_new ();
+ amtk_gmenu_append_item (section, amtk_factory_create_gmenu_item (factory, "app.preferences"));
+ amtk_gmenu_append_section (menu, NULL, section);
+
+ section = g_menu_new ();
+ amtk_gmenu_append_item (section, amtk_factory_create_gmenu_item (factory, "win.show-help-overlay"));
+ amtk_gmenu_append_item (section, amtk_factory_create_gmenu_item (factory, "app.help"));
+ amtk_gmenu_append_item (section, amtk_factory_create_gmenu_item (factory, "app.about"));
+ amtk_gmenu_append_item (section, amtk_factory_create_gmenu_item (factory, "app.quit"));
+ amtk_gmenu_append_section (menu, NULL, section);
+
+ g_object_unref (factory);
+ g_menu_freeze (menu);
+
+ return G_MENU_MODEL (menu);
+}
+
+static void
+set_window_menu (DhWindow *window)
+{
+ DhWindowPrivate *priv = dh_window_get_instance_private (window);
+ GtkApplication *app;
+ GMenuModel *window_menu;
+
+ app = GTK_APPLICATION (g_application_get_default ());
+ if (gtk_application_prefers_app_menu (app))
+ window_menu = create_window_menu_simple ();
+ else
+ window_menu = create_window_menu_plus_app_menu ();
+
+ gtk_menu_button_set_menu_model (priv->window_menu_button, window_menu);
+ g_object_unref (window_menu);
+}
+
static void
settings_fonts_changed_cb (DhSettingsApp *settings,
const gchar *font_name_fixed,
@@ -681,19 +774,13 @@ static void
dh_window_init (DhWindow *window)
{
DhWindowPrivate *priv = dh_window_get_instance_private (window);
- GtkApplication *app;
DhSettingsApp *settings;
GSettings *paned_settings;
gtk_widget_init_template (GTK_WIDGET (window));
add_actions (window);
-
- app = GTK_APPLICATION (g_application_get_default ());
- if (!gtk_application_prefers_app_menu (app)) {
- gtk_menu_button_set_menu_model (priv->window_menu_button,
- priv->window_menu_plus_app_menu);
- }
+ set_window_menu (window);
settings = dh_settings_app_get_singleton ();
g_signal_connect_object (settings,
diff --git a/src/dh-window.ui b/src/dh-window.ui
index 4c8f2e8..bf2edc6 100644
--- a/src/dh-window.ui
+++ b/src/dh-window.ui
@@ -1,100 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.8 -->
- <menu id="window_menu_simple">
- <section>
- <item>
- <attribute name="label" translatable="yes">_Side Panel</attribute>
- <attribute name="action">win.show-sidebar</attribute>
- </item>
- </section>
- <section>
- <item>
- <attribute name="label" translatable="yes">_Print</attribute>
- <attribute name="action">win.print</attribute>
- </item>
- <item>
- <attribute name="label" translatable="yes">_Find</attribute>
- <attribute name="action">win.find</attribute>
- </item>
- </section>
- <section>
- <item>
- <attribute name="label" translatable="yes">_Larger Text</attribute>
- <attribute name="action">win.zoom-in</attribute>
- </item>
- <item>
- <attribute name="label" translatable="yes">S_maller Text</attribute>
- <attribute name="action">win.zoom-out</attribute>
- </item>
- <item>
- <attribute name="label" translatable="yes">_Normal Size</attribute>
- <attribute name="action">win.zoom-default</attribute>
- </item>
- </section>
- </menu>
- <menu id="window_menu_plus_app_menu">
- <section>
- <item>
- <attribute name="label" translatable="yes">New _Window</attribute>
- <attribute name="action">app.new-window</attribute>
- </item>
- </section>
- <section>
- <item>
- <attribute name="label" translatable="yes">_Side Panel</attribute>
- <attribute name="action">win.show-sidebar</attribute>
- </item>
- </section>
- <section>
- <item>
- <attribute name="label" translatable="yes">_Print</attribute>
- <attribute name="action">win.print</attribute>
- </item>
- <item>
- <attribute name="label" translatable="yes">_Find</attribute>
- <attribute name="action">win.find</attribute>
- </item>
- </section>
- <section>
- <item>
- <attribute name="label" translatable="yes">_Larger Text</attribute>
- <attribute name="action">win.zoom-in</attribute>
- </item>
- <item>
- <attribute name="label" translatable="yes">S_maller Text</attribute>
- <attribute name="action">win.zoom-out</attribute>
- </item>
- <item>
- <attribute name="label" translatable="yes">_Normal Size</attribute>
- <attribute name="action">win.zoom-default</attribute>
- </item>
- </section>
- <section>
- <item>
- <attribute name="label" translatable="yes">_Preferences</attribute>
- <attribute name="action">app.preferences</attribute>
- </item>
- </section>
- <section>
- <item>
- <attribute name="label" translatable="yes">_Keyboard Shortcuts</attribute>
- <attribute name="action">win.show-help-overlay</attribute>
- </item>
- <item>
- <attribute name="label" translatable="yes">_Help</attribute>
- <attribute name="action">app.help</attribute>
- </item>
- <item>
- <attribute name="label" translatable="yes">_About Devhelp</attribute>
- <attribute name="action">app.about</attribute>
- </item>
- <item>
- <attribute name="label" translatable="yes">_Quit</attribute>
- <attribute name="action">app.quit</attribute>
- </item>
- </section>
- </menu>
<template class="DhWindow" parent="GtkApplicationWindow">
<property name="can_focus">False</property>
<property name="has_focus">False</property>
@@ -162,7 +68,6 @@
<property name="visible">True</property>
<property name="valign">center</property>
<property name="can_focus">False</property>
- <property name="menu_model">window_menu_simple</property>
<property name="use_popover">True</property>
<style>
<class name="image-button"/>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]