[gnome-bluetooth] pairing-dialog: use a template to create the UI
- From: Ignacio Casal Quinteiro <icq src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-bluetooth] pairing-dialog: use a template to create the UI
- Date: Mon, 5 Jan 2015 10:50:52 +0000 (UTC)
commit 98b9eb89595fbb23ed534fa93edc59a00be84e46
Author: Ignacio Casal Quinteiro <icq gnome org>
Date: Fri Dec 19 14:49:13 2014 +0100
pairing-dialog: use a template to create the UI
https://bugzilla.gnome.org/show_bug.cgi?id=742359
lib/Makefile.am | 8 +-
lib/bluetooth-pairing-dialog.c | 39 ++-----
lib/bluetooth-pairing-dialog.ui | 127 ++++++++++++++++++++
...tings.gresource.xml => bluetooth.gresource.xml} | 1 +
lib/settings.ui | 102 +---------------
5 files changed, 144 insertions(+), 133 deletions(-)
---
diff --git a/lib/Makefile.am b/lib/Makefile.am
index c110c27..36e4738 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -4,13 +4,13 @@ BUILT_SOURCES =
lib_LTLIBRARIES = libgnome-bluetooth.la
-resource_files = $(shell glib-compile-resources --sourcedir=$(srcdir) --generate-dependencies
$(srcdir)/settings.gresource.xml)
-bluetooth-settings-resources.c: settings.gresource.xml $(resource_files)
+resource_files = $(shell glib-compile-resources --sourcedir=$(srcdir) --generate-dependencies
$(srcdir)/bluetooth.gresource.xml)
+bluetooth-settings-resources.c: bluetooth.gresource.xml $(resource_files)
$(AM_V_GEN) glib-compile-resources --target=$@ --sourcedir=$(srcdir) --generate-source --c-name
bluetooth_settings $<
-bluetooth-settings-resources.h: settings.gresource.xml $(resource_files)
+bluetooth-settings-resources.h: bluetooth.gresource.xml $(resource_files)
$(AM_V_GEN) glib-compile-resources --target=$@ --sourcedir=$(srcdir) --generate-header --c-name
bluetooth_settings $<
-EXTRA_DIST += settings.gresource.xml settings.ui
+EXTRA_DIST += bluetooth.gresource.xml settings.ui bluetooth-paring-dialog.ui
BUILT_SOURCES += bluetooth-settings-resources.c bluetooth-settings-resources.h
# will be scanned for introspection annotation, but won't be installed
diff --git a/lib/bluetooth-pairing-dialog.c b/lib/bluetooth-pairing-dialog.c
index 0bd57bc..accc49f 100644
--- a/lib/bluetooth-pairing-dialog.c
+++ b/lib/bluetooth-pairing-dialog.c
@@ -37,7 +37,6 @@
typedef struct _BluetoothPairingDialogPrivate BluetoothPairingDialogPrivate;
struct _BluetoothPairingDialogPrivate {
- GtkBuilder *builder;
GtkWidget *title;
GtkWidget *help_label;
GtkWidget *label_pin;
@@ -53,8 +52,6 @@ struct _BluetoothPairingDialogPrivate {
G_DEFINE_TYPE_WITH_PRIVATE(BluetoothPairingDialog, bluetooth_pairing_dialog, GTK_TYPE_DIALOG)
-#define WID(s) GTK_WIDGET (gtk_builder_get_object (priv->builder, s))
-
enum {
CONFIRMATION_PAGE,
DISPLAY_PAGE,
@@ -250,20 +247,7 @@ text_changed_cb (GObject *gobject,
static void
bluetooth_pairing_dialog_init (BluetoothPairingDialog *self)
{
- BluetoothPairingDialogPrivate *priv = BLUETOOTH_PAIRING_DIALOG_GET_PRIVATE (self);
- GError *error = NULL;
-
- g_resources_register (bluetooth_settings_get_resource ());
- priv->builder = gtk_builder_new ();
- gtk_builder_set_translation_domain (priv->builder, GETTEXT_PACKAGE);
- gtk_builder_add_from_resource (priv->builder,
- "/org/gnome/bluetooth/settings.ui",
- &error);
- if (error != NULL) {
- g_warning ("Could not load ui: %s", error->message);
- g_error_free (error);
- return;
- }
+ gtk_widget_init_template (GTK_WIDGET (self));
gtk_widget_set_size_request (GTK_WIDGET (self), 380, -1);
gtk_window_set_resizable (GTK_WINDOW (self), FALSE);
@@ -274,11 +258,9 @@ bluetooth_pairing_dialog_constructed (GObject *object)
{
BluetoothPairingDialog *self = BLUETOOTH_PAIRING_DIALOG (object);
BluetoothPairingDialogPrivate *priv = BLUETOOTH_PAIRING_DIALOG_GET_PRIVATE (self);
- GtkWidget *container, *header;
+ GtkWidget *header;
GtkStyleContext *context;
- container = gtk_dialog_get_content_area (GTK_DIALOG (self));
-
/* Header */
header = gtk_dialog_get_header_bar (GTK_DIALOG (self));
priv->title = gtk_label_new ("");
@@ -308,18 +290,10 @@ bluetooth_pairing_dialog_constructed (GObject *object)
g_signal_connect (G_OBJECT (priv->cancel), "clicked",
G_CALLBACK (response_cb), self);
gtk_header_bar_pack_start (GTK_HEADER_BAR (header), priv->cancel);
- gtk_widget_show_all (header);
- gtk_window_set_titlebar (GTK_WINDOW (self), header);
gtk_widget_grab_default (GTK_WIDGET (priv->done));
- gtk_container_add (GTK_CONTAINER (container), WID ("pairing_dialog_box"));
- priv->help_label = WID ("help_label");
- priv->label_pin = WID ("label_pin");
- priv->entry_pin = WID ("entry_pin");
g_signal_connect (G_OBJECT (priv->entry_pin), "notify::text",
G_CALLBACK (text_changed_cb), self);
- priv->pin_notebook = WID ("pin_notebook");
- gtk_widget_set_no_show_all (priv->pin_notebook, TRUE);
context = gtk_widget_get_style_context (priv->done);
gtk_style_context_add_class (context, "suggested-action");
@@ -332,7 +306,6 @@ bluetooth_pairing_dialog_finalize (GObject *object)
{
BluetoothPairingDialogPrivate *priv = BLUETOOTH_PAIRING_DIALOG_GET_PRIVATE (BLUETOOTH_PAIRING_DIALOG
(object));
- g_clear_object (&priv->builder);
g_free (priv->pin);
G_OBJECT_CLASS(bluetooth_pairing_dialog_parent_class)->finalize(object);
@@ -342,11 +315,19 @@ static void
bluetooth_pairing_dialog_class_init (BluetoothPairingDialogClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
object_class->constructed = bluetooth_pairing_dialog_constructed;
object_class->finalize = bluetooth_pairing_dialog_finalize;
+
+ /* Bind class to template */
+ gtk_widget_class_set_template_from_resource (widget_class,
"/org/gnome/bluetooth/bluetooth-pairing-dialog.ui");
+ gtk_widget_class_bind_template_child_private (widget_class, BluetoothPairingDialog, help_label);
+ gtk_widget_class_bind_template_child_private (widget_class, BluetoothPairingDialog, pin_notebook);
+ gtk_widget_class_bind_template_child_private (widget_class, BluetoothPairingDialog, entry_pin);
+ gtk_widget_class_bind_template_child_private (widget_class, BluetoothPairingDialog, label_pin);
}
/**
diff --git a/lib/bluetooth-pairing-dialog.ui b/lib/bluetooth-pairing-dialog.ui
new file mode 100644
index 0000000..74043d6
--- /dev/null
+++ b/lib/bluetooth-pairing-dialog.ui
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.18.3 -->
+<interface>
+ <requires lib="gtk+" version="3.12"/>
+ <template class="BluetoothPairingDialog" parent="GtkDialog">
+ <property name="can_focus">False</property>
+ <property name="type_hint">dialog</property>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="dialog-vbox1">
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area1">
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="pairing_dialog_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">50</property>
+ <property name="margin_end">50</property>
+ <property name="margin_top">24</property>
+ <property name="margin_bottom">30</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkLabel" id="help_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label">Please enter the following PIN on 'Foobar':</property>
+ <property name="justify">center</property>
+ <property name="wrap">True</property>
+ <property name="width_chars">40</property>
+ <property name="max_width_chars">40</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkNotebook" id="pin_notebook">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="no_show_all">True</property>
+ <property name="margin_top">24</property>
+ <property name="show_tabs">False</property>
+ <property name="show_border">False</property>
+ <child>
+ <object class="GtkAspectFrame" id="aspectframe1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkEntry" id="entry_pin">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="margin_start">25</property>
+ <property name="margin_end">25</property>
+ <property name="max_length">6</property>
+ <property name="activates_default">True</property>
+ <property name="width_chars">6</property>
+ <property name="xalign">0.5</property>
+ <property name="input_purpose">digits</property>
+ <property name="input_hints">GTK_INPUT_HINT_NO_SPELLCHECK |
GTK_INPUT_HINT_NONE</property>
+ <style>
+ <class name="pin-entry"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_pin">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label">123456</property>
+ <style>
+ <class name="pin-label"/>
+ </style>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_placeholder">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </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>
+ </object>
+ </child>
+ </template>
+</interface>
diff --git a/lib/settings.gresource.xml b/lib/bluetooth.gresource.xml
similarity index 71%
rename from lib/settings.gresource.xml
rename to lib/bluetooth.gresource.xml
index 58813cf..7d238d1 100644
--- a/lib/settings.gresource.xml
+++ b/lib/bluetooth.gresource.xml
@@ -2,5 +2,6 @@
<gresources>
<gresource prefix="/org/gnome/bluetooth">
<file preprocess="xml-stripblanks">settings.ui</file>
+ <file preprocess="xml-stripblanks">bluetooth-pairing-dialog.ui</file>
</gresource>
</gresources>
diff --git a/lib/settings.ui b/lib/settings.ui
index a4b568a..315be43 100644
--- a/lib/settings.ui
+++ b/lib/settings.ui
@@ -1,98 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.16.0 on Thu Dec 5 15:20:37 2013 -->
+<!-- Generated with glade 3.18.3 -->
<interface>
- <!-- interface-requires gtk+ 3.0 -->
- <object class="GtkBox" id="pairing_dialog_box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="margin_start">50</property>
- <property name="margin_end">50</property>
- <property name="margin_top">24</property>
- <property name="margin_bottom">30</property>
- <property name="orientation">vertical</property>
- <child>
- <object class="GtkLabel" id="help_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <!-- placeholder text: never appears in the actual UI -->
- <property name="label">Please enter the following PIN on 'Foobar':</property>
- <property name="justify">center</property>
- <property name="wrap">True</property>
- <property name="width_chars">40</property>
- <property name="max_width_chars">40</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkNotebook" id="pin_notebook">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="margin_top">24</property>
- <property name="show_tabs">False</property>
- <property name="show_border">False</property>
- <child>
- <object class="GtkAspectFrame" id="aspectframe1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label_xalign">0</property>
- <property name="shadow_type">none</property>
- <child>
- <object class="GtkEntry" id="entry_pin">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="margin_start">25</property>
- <property name="margin_end">25</property>
- <property name="max_length">6</property>
- <property name="width_chars">6</property>
- <property name="xalign">0.5</property>
- <property name="input_purpose">digits</property>
- <property name="input_hints">GTK_INPUT_HINT_NO_SPELLCHECK | GTK_INPUT_HINT_NONE</property>
- <property name="activates-default">True</property>
- <style>
- <class name="pin-entry"/>
- </style>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkLabel" id="label_pin">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label">123456</property>
- <style>
- <class name="pin-label"/>
- </style>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label_placeholder">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label"></property>
- </object>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- </object>
+ <requires lib="gtk+" version="3.0"/>
<object class="GtkBox" id="properties_vbox">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -462,11 +371,4 @@
<property name="orientation">vertical</property>
<property name="spacing">3</property>
</object>
- <object class="GtkSizeGroup" id="sizegroup1">
- <property name="mode">both</property>
- <widgets>
- <widget name="entry_pin"/>
- <widget name="label_pin"/>
- </widgets>
- </object>
</interface>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]