[gnome-control-center] mouse: Make a GtkTemplate for the panel
- From: Robert Ancell <rancell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] mouse: Make a GtkTemplate for the panel
- Date: Mon, 9 Sep 2019 23:47:30 +0000 (UTC)
commit 37e7fd6ada261c3f07e254f234b881f25e65094a
Author: Robert Ancell <robert ancell canonical com>
Date: Fri Nov 9 12:02:08 2018 +1300
mouse: Make a GtkTemplate for the panel
panels/mouse/cc-mouse-panel.c | 63 +++++++++++++++++-----------------------
panels/mouse/cc-mouse-panel.ui | 32 ++++++++++++++++++++
panels/mouse/meson.build | 1 +
panels/mouse/mouse.gresource.xml | 1 +
po/POTFILES.in | 3 +-
5 files changed, 62 insertions(+), 38 deletions(-)
---
diff --git a/panels/mouse/cc-mouse-panel.c b/panels/mouse/cc-mouse-panel.c
index 5b44e270c..e28008d93 100644
--- a/panels/mouse/cc-mouse-panel.c
+++ b/panels/mouse/cc-mouse-panel.c
@@ -21,20 +21,21 @@
*
*/
+#include <gtk/gtk.h>
+
#include "cc-mouse-panel.h"
#include "cc-mouse-resources.h"
-
#include "gnome-mouse-properties.h"
#include "gnome-mouse-test.h"
-#include <gtk/gtk.h>
-
-#include <glib/gi18n.h>
struct _CcMousePanel
{
- CcPanel parent_instance;
+ CcPanel parent_instance;
- GtkWidget *stack;
+ CcMouseProperties *mouse_properties;
+ CcMouseTest *mouse_test;
+ GtkStack *stack;
+ GtkButton *test_button;
};
CC_PANEL_REGISTER (CcMousePanel, cc_mouse_panel)
@@ -52,67 +53,55 @@ cc_mouse_panel_get_help_uri (CcPanel *panel)
}
static void
-shell_test_button_toggled (GtkToggleButton *button, CcMousePanel *panel)
+test_button_toggled_cb (CcMousePanel *self)
{
- gboolean active;
-
- active = gtk_toggle_button_get_active (button);
- gtk_stack_set_visible_child_name (GTK_STACK (panel->stack), active ? "test_widget" : "prefs_widget");
+ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->test_button)))
+ gtk_stack_set_visible_child (self->stack, GTK_WIDGET (self->mouse_test));
+ else
+ gtk_stack_set_visible_child (self->stack, GTK_WIDGET (self->mouse_properties));
}
static void
cc_mouse_panel_constructed (GObject *object)
{
CcMousePanel *self = CC_MOUSE_PANEL (object);
- GtkWidget *button;
CcShell *shell;
G_OBJECT_CLASS (cc_mouse_panel_parent_class)->constructed (object);
/* Add test area button to shell header. */
shell = cc_panel_get_shell (CC_PANEL (self));
-
- button = gtk_toggle_button_new_with_mnemonic (_("Test Your _Settings"));
- gtk_style_context_add_class (gtk_widget_get_style_context (button),
- "text-button");
- gtk_widget_set_valign (button, GTK_ALIGN_CENTER);
- gtk_widget_set_visible (button, TRUE);
-
- cc_shell_embed_widget_in_header (shell, button, GTK_POS_RIGHT);
-
- g_signal_connect (GTK_BUTTON (button), "toggled",
- G_CALLBACK (shell_test_button_toggled),
- self);
+ cc_shell_embed_widget_in_header (shell, GTK_WIDGET (self->test_button), GTK_POS_RIGHT);
}
static void
cc_mouse_panel_init (CcMousePanel *self)
{
- GtkWidget *prefs_widget, *test_widget;
-
g_resources_register (cc_mouse_get_resource ());
- prefs_widget = cc_mouse_properties_new ();
- gtk_widget_show (prefs_widget);
- test_widget = cc_mouse_test_new ();
- gtk_widget_show (test_widget);
-
- self->stack = gtk_stack_new ();
- gtk_widget_show (self->stack);
- gtk_stack_add_named (GTK_STACK (self->stack), prefs_widget, "prefs_widget");
- gtk_stack_add_named (GTK_STACK (self->stack), test_widget, "test_widget");
-
- gtk_container_add (GTK_CONTAINER (self), self->stack);
+ cc_mouse_properties_get_type ();
+ cc_mouse_test_get_type ();
+ gtk_widget_init_template (GTK_WIDGET (self));
}
static void
cc_mouse_panel_class_init (CcMousePanelClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
CcPanelClass *panel_class = CC_PANEL_CLASS (klass);
panel_class->get_help_uri = cc_mouse_panel_get_help_uri;
object_class->dispose = cc_mouse_panel_dispose;
object_class->constructed = cc_mouse_panel_constructed;
+
+ gtk_widget_class_set_template_from_resource (widget_class,
"/org/gnome/control-center/mouse/cc-mouse-panel.ui");
+
+ gtk_widget_class_bind_template_child (widget_class, CcMousePanel, mouse_properties);
+ gtk_widget_class_bind_template_child (widget_class, CcMousePanel, mouse_test);
+ gtk_widget_class_bind_template_child (widget_class, CcMousePanel, stack);
+ gtk_widget_class_bind_template_child (widget_class, CcMousePanel, test_button);
+
+ gtk_widget_class_bind_template_callback (widget_class, test_button_toggled_cb);
}
diff --git a/panels/mouse/cc-mouse-panel.ui b/panels/mouse/cc-mouse-panel.ui
new file mode 100644
index 000000000..be72e0ba0
--- /dev/null
+++ b/panels/mouse/cc-mouse-panel.ui
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <!-- interface-requires gtk+ 3.0 -->
+ <template class="CcMousePanel" parent="CcPanel">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkStack" id="stack">
+ <property name="visible">True</property>
+ <child>
+ <object class="CcMouseProperties" id="mouse_properties">
+ <property name="visible">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="CcMouseTest" id="mouse_test">
+ <property name="visible">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </template>
+ <object class="GtkToggleButton" id="test_button">
+ <property name="visible">True</property>
+ <property name="use_underline">True</property>
+ <property name="valign">center</property>
+ <property name="label" translatable="yes">Test Your _Settings</property>
+ <signal name="toggled" handler="test_button_toggled_cb" object="CcMousePanel" swapped="yes"/>
+ <style>
+ <class name="text-button"/>
+ </style>
+ </object>
+</interface>
diff --git a/panels/mouse/meson.build b/panels/mouse/meson.build
index cf79fc784..8fa65b924 100644
--- a/panels/mouse/meson.build
+++ b/panels/mouse/meson.build
@@ -18,6 +18,7 @@ i18n.merge_file(
)
resource_data = files(
+ 'cc-mouse-panel.ui',
'gnome-mouse-properties.ui',
'gnome-mouse-test.ui',
'scroll-test-gegl.svg',
diff --git a/panels/mouse/mouse.gresource.xml b/panels/mouse/mouse.gresource.xml
index 2b3e6f772..c65783596 100644
--- a/panels/mouse/mouse.gresource.xml
+++ b/panels/mouse/mouse.gresource.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/gnome/control-center/mouse">
+ <file preprocess="xml-stripblanks">cc-mouse-panel.ui</file>
<file preprocess="xml-stripblanks">gnome-mouse-properties.ui</file>
<file preprocess="xml-stripblanks">gnome-mouse-test.ui</file>
<file>scroll-test.svg</file>
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 4a75e2d0d..a87e72c6e 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -60,7 +60,8 @@ panels/keyboard/cc-keyboard-shortcut-editor.c
panels/keyboard/cc-keyboard-shortcut-editor.ui
panels/keyboard/gnome-keyboard-panel.desktop.in.in
panels/keyboard/keyboard-shortcuts.c
-panels/mouse/cc-mouse-panel.c
+panels/keyboard/shortcut-editor.ui
+panels/mouse/cc-mouse-panel.ui
panels/mouse/gnome-mouse-panel.desktop.in.in
panels/mouse/gnome-mouse-properties.c
panels/mouse/gnome-mouse-properties.ui
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]