[gnome-control-center] search: Use GtkTemplate
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] search: Use GtkTemplate
- Date: Wed, 30 May 2018 23:51:47 +0000 (UTC)
commit 233111b264c0f1bfa58ddb013ac14f71bb81c5c5
Author: Robert Ancell <robert ancell canonical com>
Date: Tue May 29 12:32:46 2018 +1200
search: Use GtkTemplate
panels/search/cc-search-panel.c | 66 +++++-------
panels/search/search.ui | 217 +++++++++++++++++++++-------------------
2 files changed, 136 insertions(+), 147 deletions(-)
---
diff --git a/panels/search/cc-search-panel.c b/panels/search/cc-search-panel.c
index 8cc26ef1b..77a6e2637 100644
--- a/panels/search/cc-search-panel.c
+++ b/panels/search/cc-search-panel.c
@@ -26,16 +26,16 @@
#include <gio/gdesktopappinfo.h>
#include <glib/gi18n.h>
-#define WID(s) GTK_WIDGET (gtk_builder_get_object (self->builder, s))
-
struct _CcSearchPanel
{
CcPanel parent_instance;
- GtkBuilder *builder;
GtkWidget *list_box;
GtkWidget *up_button;
GtkWidget *down_button;
+ GtkWidget *search_vbox;
+ GtkWidget *search_frame;
+ GtkWidget *settings_button;
GCancellable *load_cancellable;
GSettings *search_settings;
@@ -675,7 +675,6 @@ cc_search_panel_finalize (GObject *object)
{
CcSearchPanel *self = CC_SEARCH_PANEL (object);
- g_clear_object (&self->builder);
g_clear_object (&self->search_settings);
g_hash_table_destroy (self->sort_order);
@@ -689,12 +688,11 @@ static void
cc_search_panel_constructed (GObject *object)
{
CcSearchPanel *self = CC_SEARCH_PANEL (object);
- GtkWidget *box, *widget, *search_box;
+ GtkWidget *box, *widget;
G_OBJECT_CLASS (cc_search_panel_parent_class)->constructed (object);
/* add the disable all switch */
- search_box = WID ("search_vbox");
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
widget = gtk_switch_new ();
@@ -707,7 +705,7 @@ cc_search_panel_constructed (GObject *object)
G_SETTINGS_BIND_INVERT_BOOLEAN);
g_object_bind_property (widget, "active",
- search_box, "sensitive",
+ self->search_vbox, "sensitive",
G_BINDING_DEFAULT |
G_BINDING_SYNC_CREATE);
@@ -718,54 +716,31 @@ cc_search_panel_constructed (GObject *object)
static void
cc_search_panel_init (CcSearchPanel *self)
{
- GError *error;
- GtkWidget *widget;
- GtkWidget *frame;
- guint res;
-
g_resources_register (cc_search_get_resource ());
- self->builder = gtk_builder_new ();
-
- error = NULL;
- res = gtk_builder_add_from_resource (self->builder,
- "/org/gnome/control-center/search/search.ui",
- &error);
-
- if (res == 0)
- {
- g_warning ("Could not load interface file: %s",
- (error != NULL) ? error->message : "unknown error");
- g_clear_error (&error);
- return;
- }
+ gtk_widget_init_template (GTK_WIDGET (self));
- frame = WID ("search_frame");
- widget = GTK_WIDGET (gtk_list_box_new ());
- gtk_list_box_set_sort_func (GTK_LIST_BOX (widget),
+ self->list_box = GTK_WIDGET (gtk_list_box_new ());
+ gtk_list_box_set_sort_func (GTK_LIST_BOX (self->list_box),
(GtkListBoxSortFunc)list_sort_func, self, NULL);
- gtk_list_box_set_header_func (GTK_LIST_BOX (widget), cc_list_box_update_header_func, NULL, NULL);
- gtk_container_add (GTK_CONTAINER (frame), widget);
- self->list_box = widget;
- gtk_widget_show (widget);
+ gtk_list_box_set_header_func (GTK_LIST_BOX (self->list_box), cc_list_box_update_header_func, NULL, NULL);
+ gtk_container_add (GTK_CONTAINER (self->search_frame), self->list_box);
+ gtk_widget_show (self->list_box);
- g_signal_connect_swapped (widget, "row-selected",
+ g_signal_connect_swapped (self->list_box, "row-selected",
G_CALLBACK (search_panel_invalidate_button_state), self);
- self->up_button = WID ("up_button");
g_signal_connect (self->up_button, "clicked",
G_CALLBACK (up_button_clicked), self);
gtk_widget_set_sensitive (self->up_button, FALSE);
- self->down_button = WID ("down_button");
g_signal_connect (self->down_button, "clicked",
G_CALLBACK (down_button_clicked), self);
gtk_widget_set_sensitive (self->down_button, FALSE);
- widget = WID ("settings_button");
- g_signal_connect (widget, "clicked",
+ g_signal_connect (self->settings_button, "clicked",
G_CALLBACK (settings_button_clicked), self);
- gtk_widget_set_sensitive (widget, cc_search_locations_dialog_is_available ());
+ gtk_widget_set_sensitive (self->settings_button, cc_search_locations_dialog_is_available ());
self->search_settings = g_settings_new ("org.gnome.desktop.search-providers");
self->sort_order = g_hash_table_new_full (g_str_hash, g_str_equal,
@@ -775,17 +750,24 @@ cc_search_panel_init (CcSearchPanel *self)
search_panel_invalidate_sort_order (self);
populate_search_providers (self);
-
- widget = WID ("search_vbox");
- gtk_container_add (GTK_CONTAINER (self), widget);
}
static void
cc_search_panel_class_init (CcSearchPanelClass *klass)
{
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
GObjectClass *oclass = G_OBJECT_CLASS (klass);
oclass->constructed = cc_search_panel_constructed;
oclass->dispose = cc_search_panel_dispose;
oclass->finalize = cc_search_panel_finalize;
+
+ gtk_widget_class_set_template_from_resource (widget_class,
+ "/org/gnome/control-center/search/search.ui");
+
+ gtk_widget_class_bind_template_child (widget_class, CcSearchPanel, up_button);
+ gtk_widget_class_bind_template_child (widget_class, CcSearchPanel, down_button);
+ gtk_widget_class_bind_template_child (widget_class, CcSearchPanel, search_vbox);
+ gtk_widget_class_bind_template_child (widget_class, CcSearchPanel, search_frame);
+ gtk_widget_class_bind_template_child (widget_class, CcSearchPanel, settings_button);
}
diff --git a/panels/search/search.ui b/panels/search/search.ui
index dea20f895..8965e8d29 100644
--- a/panels/search/search.ui
+++ b/panels/search/search.ui
@@ -1,147 +1,154 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.0 -->
- <object class="GtkScrolledWindow" id="search_vbox">
+ <template class="CcSearchPanel" parent="CcPanel">
<property name="visible">True</property>
- <property name="hscrollbar_policy">never</property>
- <property name="min_content_height">450</property>
+ <property name="can_focus">True</property>
+
<child>
- <object class="GtkBox">
+ <object class="GtkScrolledWindow" id="search_vbox">
<property name="visible">True</property>
- <property name="can_focus">False</property>
-
- <!-- Stub boxes to make the content cover 1/3 of the screen -->
+ <property name="hscrollbar_policy">never</property>
+ <property name="min_content_height">450</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="hexpand">True</property>
- </object>
- </child>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="hexpand">True</property>
- </object>
- <packing>
- <property name="pack_type">end</property>
- </packing>
- </child>
-
- <!-- Content -->
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="orientation">vertical</property>
- <property name="margin">32</property>
- <property name="hexpand">True</property>
+ <!-- Stub boxes to make the content cover 1/3 of the screen -->
<child>
- <object class="GtkFrame" id="search_frame">
+ <object class="GtkBox">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
</object>
</child>
+
<child>
- <object class="GtkToolbar" id="search_toolbar">
+ <object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="toolbar_style">icons</property>
- <property name="show_arrow">False</property>
- <property name="icon_size">1</property>
- <style>
- <class name="inline-toolbar"/>
- </style>
+ <property name="hexpand">True</property>
+ </object>
+ <packing>
+ <property name="pack_type">end</property>
+ </packing>
+ </child>
+
+ <!-- Content -->
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <property name="margin">32</property>
+ <property name="hexpand">True</property>
<child>
- <object class="GtkToolItem" id="up_down_item">
+ <object class="GtkFrame" id="search_frame">
<property name="visible">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToolbar" id="search_toolbar">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="toolbar_style">icons</property>
+ <property name="show_arrow">False</property>
+ <property name="icon_size">1</property>
+ <style>
+ <class name="inline-toolbar"/>
+ </style>
<child>
- <object class="GtkBox" id="up_down_box">
+ <object class="GtkToolItem" id="up_down_item">
<property name="visible">True</property>
<child>
- <object class="GtkButton" id="up_button">
- <property name="visible">True</property>
- <child internal-child="accessible">
- <object class="AtkObject" id="up_button_a11y">
- <property name="accessible-name" translatable="yes">Move Up</property>
+ <object class="GtkBox" id="up_down_box">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkButton" id="up_button">
+ <property name="visible">True</property>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="up_button_a11y">
+ <property name="accessible-name" translatable="yes">Move Up</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImage" id="up_image">
+ <property name="visible">True</property>
+ <property name="icon-name">go-up-symbolic</property>
+ <property name="icon-size">1</property>
+ </object>
+ </child>
</object>
- </child>
- <child>
- <object class="GtkImage" id="up_image">
- <property name="visible">True</property>
- <property name="icon-name">go-up-symbolic</property>
- <property name="icon-size">1</property>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="down_button">
- <property name="visible">True</property>
- <child internal-child="accessible">
- <object class="AtkObject" id="down_button_a11y">
- <property name="accessible-name" translatable="yes">Move Down</property>
+ </child>
+ <child>
+ <object class="GtkButton" id="down_button">
+ <property name="visible">True</property>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="down_button_a11y">
+ <property name="accessible-name" translatable="yes">Move Down</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImage" id="down_image">
+ <property name="visible">True</property>
+ <property name="icon-name">go-down-symbolic</property>
+ <property name="icon-size">1</property>
+ </object>
+ </child>
</object>
- </child>
- <child>
- <object class="GtkImage" id="down_image">
- <property name="visible">True</property>
- <property name="icon-name">go-down-symbolic</property>
- <property name="icon-size">1</property>
- </object>
- </child>
- </object>
+ </child>
+ </object>
</child>
</object>
</child>
- </object>
- </child>
- <child>
- <object class="GtkSeparatorToolItem" id="sep1">
- <property name="visible">True</property>
- <property name="draw">False</property>
- </object>
- <packing>
- <property name="expand">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkToolItem" id="settings_item">
- <property name="visible">True</property>
<child>
- <object class="GtkBox" id="i_s_ud_box">
+ <object class="GtkSeparatorToolItem" id="sep1">
+ <property name="visible">True</property>
+ <property name="draw">False</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolItem" id="settings_item">
<property name="visible">True</property>
<child>
- <object class="GtkButton" id="settings_button">
- <property name="visible">True</property>
- <child internal-child="accessible">
- <object class="AtkObject" id="settings_button_a11y">
- <property name="accessible-name" translatable="yes">Preferences</property>
+ <object class="GtkBox" id="i_s_ud_box">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkButton" id="settings_button">
+ <property name="visible">True</property>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="settings_button_a11y">
+ <property name="accessible-name"
translatable="yes">Preferences</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImage" id="settings_image">
+ <property name="visible">True</property>
+ <property name="icon-name">emblem-system-symbolic</property>
+ <property name="icon-size">1</property>
+ </object>
+ </child>
</object>
- </child>
- <child>
- <object class="GtkImage" id="settings_image">
- <property name="visible">True</property>
- <property name="icon-name">emblem-system-symbolic</property>
- <property name="icon-size">1</property>
- </object>
- </child>
- </object>
+ </child>
+ </object>
</child>
</object>
</child>
</object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
</child>
</object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
+ </child>
</object>
- </child>
+ </child>
</object>
</child>
- </object>
+ </template>
</interface>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]