[gnome-photos] selection-toolbar: Port to templates



commit 5a7831dc1b641b2ee66722109f58e8069ac5cc1c
Author: Alessandro Bono <abono gnome org>
Date:   Sun Nov 29 18:10:44 2015 +0100

    selection-toolbar: Port to templates
    
    https://bugzilla.gnome.org/show_bug.cgi?id=758809

 po/POTFILES.in                  |    1 +
 src/Makefile.am                 |    1 +
 src/photos-selection-toolbar.c  |   60 +++++++++------------------------
 src/photos-selection-toolbar.ui |   71 +++++++++++++++++++++++++++++++++++++++
 src/photos.gresource.xml        |    1 +
 5 files changed, 90 insertions(+), 44 deletions(-)
---
diff --git a/po/POTFILES.in b/po/POTFILES.in
index a447d46..c809317 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -30,6 +30,7 @@ src/photos-search-match-manager.c
 src/photos-search-type-manager.c
 [type: gettext/glade]src/photos-selection-menu.ui
 src/photos-selection-toolbar.c
+[type: gettext/glade]src/photos-selection-toolbar.ui
 src/photos-source-manager.c
 src/photos-spinner-box.c
 src/photos-tool-colors.c
diff --git a/src/Makefile.am b/src/Makefile.am
index fff4154..5bd946b 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -248,6 +248,7 @@ EXTRA_DIST = \
        photos-menus.ui \
        photos-preview-menu.ui \
        photos-selection-menu.ui \
+       photos-selection-toolbar.ui \
        photos-gom-miner.xml \
        photos-tracker-extract-priority.xml \
        photos-tracker-resources.xml \
diff --git a/src/photos-selection-toolbar.c b/src/photos-selection-toolbar.c
index bc73e87..bb7c686 100644
--- a/src/photos-selection-toolbar.c
+++ b/src/photos-selection-toolbar.c
@@ -1,5 +1,6 @@
 /*
  * Photos - access, organize and share your photos on GNOME
+ * Copyright © 2015 Alessandro Bono
  * Copyright © 2014 Pranav Kant
  * Copyright © 2012, 2013, 2014, 2015 Red Hat, Inc.
  *
@@ -443,50 +444,7 @@ photos_selection_toolbar_init (PhotosSelectionToolbar *self)
 
   priv->item_listeners = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, g_object_unref);
 
-  priv->toolbar_favorite = gtk_button_new ();
-  gtk_widget_show (GTK_WIDGET (priv->toolbar_favorite));
-  gtk_action_bar_pack_start (GTK_ACTION_BAR (self), priv->toolbar_favorite);
-  g_signal_connect (priv->toolbar_favorite,
-                    "clicked",
-                    G_CALLBACK (photos_selection_toolbar_favorite_clicked),
-                    self);
-
-  priv->toolbar_open = gtk_button_new_with_label (_("Open"));
-  gtk_widget_show (GTK_WIDGET (priv->toolbar_open));
-  gtk_action_bar_pack_start (GTK_ACTION_BAR (self), priv->toolbar_open);
-  g_signal_connect (priv->toolbar_open,
-                    "clicked",
-                    G_CALLBACK (photos_selection_toolbar_open_clicked),
-                    self);
-
-  priv->toolbar_print = gtk_button_new_with_label (_("Print"));
-  gtk_widget_show (GTK_WIDGET (priv->toolbar_print));
-  gtk_action_bar_pack_start (GTK_ACTION_BAR (self), priv->toolbar_print);
-  g_signal_connect (priv->toolbar_print,
-                    "clicked",
-                    G_CALLBACK (photos_selection_toolbar_print_clicked),
-                    self);
-
-  priv->toolbar_trash = gtk_button_new_with_label (_("Delete"));
-  gtk_widget_show (GTK_WIDGET (priv->toolbar_trash));
-  gtk_actionable_set_action_name (GTK_ACTIONABLE (priv->toolbar_trash), "app.delete");
-  gtk_action_bar_pack_start (GTK_ACTION_BAR (self), priv->toolbar_trash);
-
-  priv->toolbar_properties = gtk_button_new_with_label (_("Properties"));
-  gtk_widget_show (GTK_WIDGET (priv->toolbar_properties));
-  gtk_action_bar_pack_end (GTK_ACTION_BAR (self), priv->toolbar_properties);
-  g_signal_connect (priv->toolbar_properties,
-                    "clicked",
-                    G_CALLBACK (photos_selection_toolbar_properties_clicked),
-                    self);
-
-  priv->toolbar_collection = gtk_button_new_with_label (_("Add to Album"));
-  gtk_widget_show (GTK_WIDGET (priv->toolbar_collection));
-  gtk_action_bar_pack_end (GTK_ACTION_BAR (self), priv->toolbar_collection);
-  g_signal_connect (priv->toolbar_collection,
-                    "clicked",
-                    G_CALLBACK (photos_selection_toolbar_collection_clicked),
-                    self);
+  gtk_widget_init_template (GTK_WIDGET (self));
 
   priv->item_mngr = g_object_ref (state->item_mngr);
 
@@ -515,8 +473,22 @@ static void
 photos_selection_toolbar_class_init (PhotosSelectionToolbarClass *class)
 {
   GObjectClass *object_class = G_OBJECT_CLASS (class);
+  GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class);
 
   object_class->dispose = photos_selection_toolbar_dispose;
+
+  gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/Photos/selection-toolbar.ui");
+  gtk_widget_class_bind_template_child_private (widget_class, PhotosSelectionToolbar, toolbar_favorite);
+  gtk_widget_class_bind_template_child_private (widget_class, PhotosSelectionToolbar, toolbar_open);
+  gtk_widget_class_bind_template_child_private (widget_class, PhotosSelectionToolbar, toolbar_print);
+  gtk_widget_class_bind_template_child_private (widget_class, PhotosSelectionToolbar, toolbar_trash);
+  gtk_widget_class_bind_template_child_private (widget_class, PhotosSelectionToolbar, toolbar_properties);
+  gtk_widget_class_bind_template_child_private (widget_class, PhotosSelectionToolbar, toolbar_collection);
+  gtk_widget_class_bind_template_callback (widget_class, photos_selection_toolbar_favorite_clicked);
+  gtk_widget_class_bind_template_callback (widget_class, photos_selection_toolbar_open_clicked);
+  gtk_widget_class_bind_template_callback (widget_class, photos_selection_toolbar_print_clicked);
+  gtk_widget_class_bind_template_callback (widget_class, photos_selection_toolbar_properties_clicked);
+  gtk_widget_class_bind_template_callback (widget_class, photos_selection_toolbar_collection_clicked);
 }
 
 
diff --git a/src/photos-selection-toolbar.ui b/src/photos-selection-toolbar.ui
new file mode 100644
index 0000000..093e784
--- /dev/null
+++ b/src/photos-selection-toolbar.ui
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface domain="gnome-photos">
+  <!-- interface-requires gtk+ 3.11 -->
+  <template class="PhotosSelectionToolbar" parent="GtkActionBar">
+    <property name="visible">0</property>
+      <child>
+        <object class="GtkButton" id="toolbar_favorite">
+          <property name="visible">1</property>
+          <signal name="clicked" object="PhotosSelectionToolbar" swapped="no"
+                  handler="photos_selection_toolbar_favorite_clicked" />
+        </object>
+        <packing>
+          <property name="pack_type">start</property>
+        </packing>
+      </child>
+      <child>
+        <object class="GtkButton" id="toolbar_open">
+          <property name="visible">1</property>
+          <property name="label" translatable="yes">Open</property>
+          <signal name="clicked" object="PhotosSelectionToolbar" swapped="no"
+                  handler="photos_selection_toolbar_open_clicked" />
+        </object>
+        <packing>
+          <property name="pack_type">start</property>
+        </packing>
+      </child>
+      <child>
+        <object class="GtkButton" id="toolbar_print">
+          <property name="visible">1</property>
+          <property name="label" translatable="yes">Print</property>
+          <signal name="clicked" object="PhotosSelectionToolbar" swapped="no"
+                  handler="photos_selection_toolbar_print_clicked" />
+        </object>
+        <packing>
+          <property name="pack_type">start</property>
+        </packing>
+      </child>
+      <child>
+        <object class="GtkButton" id="toolbar_trash">
+          <property name="visible">1</property>
+          <property name="label" translatable="yes">Delete</property>
+          <property name="action_name">app.delete</property>
+        </object>
+        <packing>
+          <property name="pack_type">start</property>
+        </packing>
+      </child>
+      <child>
+        <object class="GtkButton" id="toolbar_properties">
+          <property name="visible">1</property>
+          <property name="label" translatable="yes">Properties</property>
+          <signal name="clicked" object="PhotosSelectionToolbar" swapped="no"
+                  handler="photos_selection_toolbar_properties_clicked" />
+        </object>
+        <packing>
+          <property name="pack_type">end</property>
+        </packing>
+      </child>
+      <child>
+        <object class="GtkButton" id="toolbar_collection">
+          <property name="visible">1</property>
+          <property name="label" translatable="yes">Add to Album</property>
+          <signal name="clicked" object="PhotosSelectionToolbar" swapped="no"
+                  handler="photos_selection_toolbar_collection_clicked" />
+        </object>
+        <packing>
+          <property name="pack_type">end</property>
+        </packing>
+      </child>
+  </template>
+</interface>
diff --git a/src/photos.gresource.xml b/src/photos.gresource.xml
index b422ab1..7fa7693 100644
--- a/src/photos.gresource.xml
+++ b/src/photos.gresource.xml
@@ -6,6 +6,7 @@
     <file alias="dnd-counter.svg" preprocess="to-pixdata">../data/dnd-counter.svg</file>
     <file alias="preview-menu.ui" preprocess="xml-stripblanks" 
compressed="true">photos-preview-menu.ui</file>
     <file alias="selection-menu.ui" preprocess="xml-stripblanks" 
compressed="true">photos-selection-menu.ui</file>
+    <file alias="selection-toolbar.ui" preprocess="xml-stripblanks" 
compressed="true">photos-selection-toolbar.ui</file>
     <file alias="sidebar-radio-checked.svg" preprocess="to-pixdata">../data/sidebar-radio-checked.svg</file>
     <file alias="sidebar-radio-prelight.svg" 
preprocess="to-pixdata">../data/sidebar-radio-prelight.svg</file>
     <file alias="sidebar-radio-selected.svg" 
preprocess="to-pixdata">../data/sidebar-radio-selected.svg</file>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]