[shotwell] Make slideshow settings templated



commit 3c4c0b80836407e5d247d1970ebbfd2b1a76c671
Author: Jens Georg <mail jensge org>
Date:   Fri Apr 7 19:57:10 2017 +0200

    Make slideshow settings templated
    
    Signed-off-by: Jens Georg <mail jensge org>

 org.gnome.Shotwell.gresource.xml |    1 +
 po/POTFILES.in                   |    1 +
 src/SlideshowPage.vala           |   54 ++------
 src/config/Config.vala           |    6 -
 ui/shotwell.ui                   |  174 -------------------------
 ui/slideshow_settings.ui         |  265 ++++++++++++++++++++++++++++++++++++++
 6 files changed, 281 insertions(+), 220 deletions(-)
---
diff --git a/org.gnome.Shotwell.gresource.xml b/org.gnome.Shotwell.gresource.xml
index 3fada2b..6a8f849 100644
--- a/org.gnome.Shotwell.gresource.xml
+++ b/org.gnome.Shotwell.gresource.xml
@@ -22,6 +22,7 @@
       <file preprocess="xml-stripblanks">ui/set_background_slideshow_dialog.ui</file>
       <file compressed="true">ui/shotwell.ui</file>
       <file preprocess="xml-stripblanks">ui/sidebar_default_context.ui</file>
+      <file preprocess="xml-stripblanks">ui/slideshow_settings.ui</file>
       <file preprocess="xml-stripblanks">ui/tag_sidebar_context.ui</file>
       <file preprocess="xml-stripblanks">ui/tags.ui</file>
       <file preprocess="xml-stripblanks">ui/trash.ui</file>
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 4a3d74b..fc57c46 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -127,6 +127,7 @@ ui/set_background_dialog.ui
 ui/set_background_slideshow_dialog.ui
 ui/shotwell.ui
 ui/sidebar_default_context.ui
+ui/slideshow_settings.ui
 ui/tag_sidebar_context.ui
 ui/tags.ui
 ui/trash.ui
diff --git a/src/SlideshowPage.vala b/src/SlideshowPage.vala
index ebf7962..fcb6430 100644
--- a/src/SlideshowPage.vala
+++ b/src/SlideshowPage.vala
@@ -23,46 +23,33 @@ class SlideshowPage : SinglePhotoPage {
 
     public signal void hide_toolbar();
     
+    [GtkTemplate (ui = "/org/gnome/Shotwell/ui/slideshow_settings.ui")]
     private class SettingsDialog : Gtk.Dialog {
-        private Gtk.Builder builder = null;
+        [GtkChild]
+        Gtk.Adjustment delay_adjustment;
+        [GtkChild]
         Gtk.SpinButton delay_entry;
-        Gtk.Scale delay_hscale;
+        [GtkChild]
         Gtk.ComboBoxText transition_effect_selector;
+        [GtkChild]
         Gtk.Scale transition_effect_hscale;
+        [GtkChild]
         Gtk.SpinButton transition_effect_entry;
+        [GtkChild]
         Gtk.Adjustment transition_effect_adjustment;
+        [GtkChild]
         Gtk.CheckButton show_title_button;
-        Gtk.Box pane;
         
         public SettingsDialog() {
-            builder = AppWindow.create_builder();
-            pane = builder.get_object("slideshow_settings_pane") as Gtk.Box;
-            get_content_area().add(pane);
-            
             double delay = Config.Facade.get_instance().get_slideshow_delay();
-            
-            set_modal(true);
+
             set_transient_for(AppWindow.get_fullscreen());
-            
-            add_buttons(Resources.CANCEL_LABEL, Gtk.ResponseType.CANCEL, 
-                Resources.OK_LABEL, Gtk.ResponseType.OK);
-            set_title(_("Settings"));
-            
-            Gtk.Adjustment adjustment = new Gtk.Adjustment(delay, Config.Facade.SLIDESHOW_DELAY_MIN, 
Config.Facade.SLIDESHOW_DELAY_MAX, 0.1, 1, 0);
-            delay_hscale = builder.get_object("delay_hscale") as Gtk.Scale;
-            delay_hscale.adjustment = adjustment;
-            
-            delay_entry = builder.get_object("delay_entry") as Gtk.SpinButton;
-            delay_entry.adjustment = adjustment;
-            delay_entry.set_value(delay);
-            delay_entry.set_numeric(true);
-            delay_entry.set_activates_default(true);
 
-            transition_effect_selector = builder.get_object("transition_effect_selector") as 
Gtk.ComboBoxText;
-            
+            delay_adjustment.value = delay;
+
             // get last effect id
             string effect_id = Config.Facade.get_instance().get_slideshow_transition_effect_id();
-            
+
             // null effect first, always, and set active in case no other one is found
             string null_display_name = TransitionEffectsManager.get_instance().get_effect_name(
                 TransitionEffectsManager.NULL_EFFECT_ID);
@@ -84,24 +71,11 @@ class SlideshowPage : SinglePhotoPage {
             transition_effect_selector.changed.connect(on_transition_changed);
             
             double transition_delay = Config.Facade.get_instance().get_slideshow_transition_delay();
-            transition_effect_adjustment = new Gtk.Adjustment(transition_delay,
-                Config.Facade.SLIDESHOW_TRANSITION_DELAY_MIN, Config.Facade.SLIDESHOW_TRANSITION_DELAY_MAX,
-                0.1, 1, 0);
-            transition_effect_hscale = builder.get_object("transition_effect_hscale") as Gtk.Scale;
-            transition_effect_hscale.adjustment = transition_effect_adjustment;
-            
-            transition_effect_entry = builder.get_object("transition_effect_entry") as Gtk.SpinButton;
-            transition_effect_entry.adjustment = transition_effect_adjustment;
-            transition_effect_entry.set_value(transition_delay);
-            transition_effect_entry.set_numeric(true);
-            transition_effect_entry.set_activates_default(true);
+            transition_effect_adjustment.value = transition_delay;
             
             bool show_title = Config.Facade.get_instance().get_slideshow_show_title();
-            show_title_button = builder.get_object("show_title_button") as  Gtk.CheckButton;
             show_title_button.active = show_title;
             
-            set_default_response(Gtk.ResponseType.OK);
-            
             on_transition_changed();
         }
         
diff --git a/src/config/Config.vala b/src/config/Config.vala
index c86abd1..64530fd 100644
--- a/src/config/Config.vala
+++ b/src/config/Config.vala
@@ -16,12 +16,6 @@
 namespace Config {
 
 public class Facade : ConfigurationFacade {
-    public const double SLIDESHOW_DELAY_MAX = 30.0;
-    public const double SLIDESHOW_DELAY_MIN = 1.0;
-    public const double SLIDESHOW_DELAY_DEFAULT = 3.0;
-    public const double SLIDESHOW_TRANSITION_DELAY_MAX = 1.0;
-    public const double SLIDESHOW_TRANSITION_DELAY_MIN = 0.1;
-    public const double SLIDESHOW_TRANSITION_DELAY_DEFAULT = 0.3;
     public const int WIDTH_DEFAULT = 1024;
     public const int HEIGHT_DEFAULT = 768;
     public const int SIDEBAR_MIN_POSITION = 180;
diff --git a/ui/shotwell.ui b/ui/shotwell.ui
index 40b9cf1..58fc234 100644
--- a/ui/shotwell.ui
+++ b/ui/shotwell.ui
@@ -879,180 +879,6 @@
       </packing>
     </child>
   </object>
-  <object class="GtkBox" id="slideshow_settings_pane">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="orientation">vertical</property>
-    <child>
-      <object class="GtkBox" id="dialog-vbox7">
-        <property name="can_focus">False</property>
-        <property name="margin_left">8</property>
-        <property name="margin_right">8</property>
-        <property name="spacing">2</property>
-        <child>
-          <object class="GtkGrid" id="grid3">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="row_spacing">4</property>
-            <property name="column_spacing">4</property>
-            <child>
-              <object class="GtkLabel" id="delay_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="halign">end</property>
-                <property name="label" translatable="yes">_Delay:</property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">delay_hscale</property>
-              </object>
-              <packing>
-                <property name="left_attach">0</property>
-                <property name="top_attach">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkLabel" id="transition_effect_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="halign">end</property>
-                <property name="label" translatable="yes">_Transition effect:</property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">transition_effect_selector</property>
-              </object>
-              <packing>
-                <property name="left_attach">0</property>
-                <property name="top_attach">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkLabel" id="transition_delay_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="halign">end</property>
-                <property name="label" translatable="yes">Transition d_elay:</property>
-                <property name="use_underline">True</property>
-              </object>
-              <packing>
-                <property name="left_attach">0</property>
-                <property name="top_attach">2</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkCheckButton" id="show_title_button">
-                <property name="label" translatable="yes">Show t_itle</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">False</property>
-                <property name="halign">start</property>
-                <property name="use_underline">True</property>
-                <property name="draw_indicator">True</property>
-              </object>
-              <packing>
-                <property name="left_attach">0</property>
-                <property name="top_attach">3</property>
-                <property name="width">4</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkComboBoxText" id="transition_effect_selector">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-              </object>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="top_attach">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkScale" id="delay_hscale">
-                <property name="width_request">150</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="fill_level">300</property>
-                <property name="draw_value">False</property>
-              </object>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="top_attach">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkScale" id="transition_effect_hscale">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="draw_value">False</property>
-              </object>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="top_attach">2</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkSpinButton" id="delay_entry">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="invisible_char">●</property>
-              </object>
-              <packing>
-                <property name="left_attach">2</property>
-                <property name="top_attach">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkSpinButton" id="transition_effect_entry">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="invisible_char">●</property>
-                <property name="digits">1</property>
-              </object>
-              <packing>
-                <property name="left_attach">2</property>
-                <property name="top_attach">2</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkLabel" id="seconds_label_3">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">seconds</property>
-              </object>
-              <packing>
-                <property name="left_attach">3</property>
-                <property name="top_attach">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkLabel" id="seconds_label_4">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">seconds</property>
-              </object>
-              <packing>
-                <property name="left_attach">3</property>
-                <property name="top_attach">2</property>
-              </packing>
-            </child>
-            <child>
-              <placeholder/>
-            </child>
-            <child>
-              <placeholder/>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-      </object>
-      <packing>
-        <property name="expand">False</property>
-        <property name="fill">True</property>
-        <property name="padding">4</property>
-        <property name="position">0</property>
-      </packing>
-    </child>
-  </object>
   <object class="GtkBox" id="static_msg_pane_widget">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
diff --git a/ui/slideshow_settings.ui b/ui/slideshow_settings.ui
new file mode 100644
index 0000000..6f597b1
--- /dev/null
+++ b/ui/slideshow_settings.ui
@@ -0,0 +1,265 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.20.0 -->
+<interface>
+  <requires lib="gtk+" version="3.20"/>
+  <object class="GtkAdjustment" id="delay_adjustment">
+    <property name="lower">1</property>
+    <property name="upper">30</property>
+    <property name="value">3</property>
+    <property name="step_increment">0.10000000000000001</property>
+    <property name="page_increment">1</property>
+  </object>
+  <object class="GtkAdjustment" id="transition_effect_adjustment">
+    <property name="lower">0.10000000000000001</property>
+    <property name="upper">1</property>
+    <property name="value">0.29999999999999999</property>
+    <property name="step_increment">0.10000000000000001</property>
+    <property name="page_increment">1</property>
+  </object>
+  <template class="SettingsDialog" parent="GtkDialog">
+    <property name="can_focus">False</property>
+    <property name="title" translatable="yes">Settings</property>
+    <property name="modal">True</property>
+    <property name="type_hint">dialog</property>
+    <child internal-child="vbox">
+      <object class="GtkBox">
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkButtonBox">
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="button1">
+                <property name="label" translatable="yes">_Cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="button2">
+                <property name="label" translatable="yes">_OK</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </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="slideshow_settings_pane">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="orientation">vertical</property>
+            <child>
+              <object class="GtkBox" id="dialog-vbox7">
+                <property name="can_focus">False</property>
+                <property name="margin_left">8</property>
+                <property name="margin_right">8</property>
+                <property name="spacing">2</property>
+                <child>
+                  <object class="GtkGrid" id="grid3">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="row_spacing">4</property>
+                    <property name="column_spacing">4</property>
+                    <child>
+                      <object class="GtkLabel" id="delay_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="halign">end</property>
+                        <property name="label" translatable="yes">_Delay:</property>
+                        <property name="use_underline">True</property>
+                        <property name="mnemonic_widget">delay_hscale</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="transition_effect_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="halign">end</property>
+                        <property name="label" translatable="yes">_Transition effect:</property>
+                        <property name="use_underline">True</property>
+                        <property name="mnemonic_widget">transition_effect_selector</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="transition_delay_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="halign">end</property>
+                        <property name="label" translatable="yes">Transition d_elay:</property>
+                        <property name="use_underline">True</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCheckButton" id="show_title_button">
+                        <property name="label" translatable="yes">Show t_itle</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="halign">start</property>
+                        <property name="use_underline">True</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">3</property>
+                        <property name="width">4</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBoxText" id="transition_effect_selector">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkScale" id="delay_hscale">
+                        <property name="width_request">150</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="adjustment">delay_adjustment</property>
+                        <property name="fill_level">300</property>
+                        <property name="draw_value">False</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkScale" id="transition_effect_hscale">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="adjustment">transition_effect_adjustment</property>
+                        <property name="fill_level">3</property>
+                        <property name="draw_value">False</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkSpinButton" id="delay_entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="invisible_char">●</property>
+                        <property name="adjustment">delay_adjustment</property>
+                        <property name="numeric">True</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">2</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkSpinButton" id="transition_effect_entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="invisible_char">●</property>
+                        <property name="activates_default">True</property>
+                        <property name="adjustment">transition_effect_adjustment</property>
+                        <property name="digits">1</property>
+                        <property name="numeric">True</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">2</property>
+                        <property name="top_attach">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="seconds_label_3">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">seconds</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">3</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="seconds_label_4">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">seconds</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">3</property>
+                        <property name="top_attach">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="padding">4</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="0">button1</action-widget>
+      <action-widget response="0">button2</action-widget>
+    </action-widgets>
+  </template>
+</interface>


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