[shotwell/wip/transparent-background: 4/4] Add transparancy settings to preferences



commit d25d5c5d021919abbe0a1a59c1fb74b1fe397909
Author: Jens Georg <mail jensge org>
Date:   Sat Apr 22 00:56:01 2017 +0200

    Add transparancy settings to preferences
    
    Signed-off-by: Jens Georg <mail jensge org>

 src/Dialogs.vala         |   53 +++++++++++++++++-
 ui/preferences_dialog.ui |  141 ++++++++++++++++++++++++++++++++++++++++------
 2 files changed, 176 insertions(+), 18 deletions(-)
---
diff --git a/src/Dialogs.vala b/src/Dialogs.vala
index c4c0224..5a89626 100644
--- a/src/Dialogs.vala
+++ b/src/Dialogs.vala
@@ -2311,6 +2311,15 @@ public class PreferencesDialog : Gtk.Dialog {
     [GtkChild]
     private Gtk.Notebook preferences_notebook;
 
+    [GtkChild]
+    private Gtk.RadioButton transparent_checker_radio;
+    [GtkChild]
+    private Gtk.RadioButton transparent_solid_radio;
+    [GtkChild]
+    private Gtk.ColorButton transparent_solid_color;
+    [GtkChild]
+    private Gtk.RadioButton transparent_none_radio;
+
     private PreferencesDialog() {
         bool use_header;
         Gtk.Settings.get_default ().get ("gtk-dialogs-use-header", out use_header);
@@ -2329,6 +2338,31 @@ public class PreferencesDialog : Gtk.Dialog {
 
         bg_color_slider.button_press_event.connect(on_bg_color_reset);
 
+        transparent_checker_radio.toggled.connect(on_radio_changed);
+        transparent_solid_radio.toggled.connect(on_radio_changed);
+        transparent_none_radio.toggled.connect(on_radio_changed);
+
+        transparent_solid_radio.bind_property("active",
+                                              transparent_solid_color,
+                                              "sensitive");
+
+        Gdk.RGBA color = Gdk.RGBA();
+        color.parse(Config.Facade.get_instance().get_transparent_background_color());
+        (transparent_solid_color as Gtk.ColorChooser).rgba = color;
+        transparent_solid_color.color_set.connect(on_color_changed);
+
+        switch (Config.Facade.get_instance().get_transparent_background_type()) {
+            case "checkered":
+                transparent_checker_radio.active = true;
+            break;
+            case "solid":
+                transparent_solid_radio.active = true;
+            break;
+            default:
+                transparent_none_radio.active = true;
+            break;
+        }
+
         // Ticket #3162 - Move dir pattern blurb into Gnome help. 
         // Because specifying a particular snippet of the help requires 
         // us to know where its located, we can't hardcode a URL anymore;
@@ -2387,7 +2421,24 @@ public class PreferencesDialog : Gtk.Dialog {
         
         lowercase.set_active(Config.Facade.get_instance().get_use_lowercase_filenames());
     }
-    
+
+    private void on_radio_changed() {
+        var config = Config.Facade.get_instance();
+
+        if (transparent_checker_radio.active) {
+            config.set_transparent_background_type("checkered");
+        } else if (transparent_solid_radio.active) {
+            config.set_transparent_background_type("solid");
+        } else {
+            config.set_transparent_background_type("none");
+        }
+    }
+
+    private void on_color_changed() {
+        var color = (transparent_solid_color as Gtk.ColorChooser).rgba.to_string();
+        Config.Facade.get_instance().set_transparent_background_color(color);
+    }
+
     // Ticket #3162, part II - if we're not yet installed, then we have to manually launch
     // the help viewer and specify the full path to the subsection we want...
     private bool on_local_pattern_help(string ignore) {
diff --git a/ui/preferences_dialog.ui b/ui/preferences_dialog.ui
index 37a51ba..abeda8e 100644
--- a/ui/preferences_dialog.ui
+++ b/ui/preferences_dialog.ui
@@ -50,7 +50,7 @@
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
-                    <property name="top_attach">3</property>
+                    <property name="top_attach">4</property>
                   </packing>
                 </child>
                 <child>
@@ -110,7 +110,7 @@
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
-                    <property name="top_attach">13</property>
+                    <property name="top_attach">14</property>
                   </packing>
                 </child>
                 <child>
@@ -146,7 +146,7 @@
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
-                    <property name="top_attach">2</property>
+                    <property name="top_attach">3</property>
                     <property name="width">2</property>
                   </packing>
                 </child>
@@ -178,7 +178,7 @@
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
-                    <property name="top_attach">3</property>
+                    <property name="top_attach">4</property>
                   </packing>
                 </child>
                 <child>
@@ -194,7 +194,7 @@
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
-                    <property name="top_attach">4</property>
+                    <property name="top_attach">5</property>
                     <property name="width">2</property>
                   </packing>
                 </child>
@@ -213,7 +213,7 @@
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
-                    <property name="top_attach">5</property>
+                    <property name="top_attach">6</property>
                     <property name="width">2</property>
                   </packing>
                 </child>
@@ -229,7 +229,7 @@
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
-                    <property name="top_attach">6</property>
+                    <property name="top_attach">7</property>
                   </packing>
                 </child>
                 <child>
@@ -242,7 +242,7 @@
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
-                    <property name="top_attach">8</property>
+                    <property name="top_attach">9</property>
                   </packing>
                 </child>
                 <child>
@@ -258,7 +258,7 @@
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
-                    <property name="top_attach">9</property>
+                    <property name="top_attach">10</property>
                     <property name="width">2</property>
                   </packing>
                 </child>
@@ -276,7 +276,7 @@
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
-                    <property name="top_attach">10</property>
+                    <property name="top_attach">11</property>
                     <property name="width">2</property>
                   </packing>
                 </child>
@@ -293,7 +293,7 @@
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
-                    <property name="top_attach">11</property>
+                    <property name="top_attach">12</property>
                     <property name="width">2</property>
                   </packing>
                 </child>
@@ -311,7 +311,7 @@
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
-                    <property name="top_attach">12</property>
+                    <property name="top_attach">13</property>
                     <property name="width">2</property>
                   </packing>
                 </child>
@@ -327,7 +327,7 @@
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
-                    <property name="top_attach">13</property>
+                    <property name="top_attach">14</property>
                   </packing>
                 </child>
                 <child>
@@ -337,7 +337,7 @@
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
-                    <property name="top_attach">6</property>
+                    <property name="top_attach">7</property>
                   </packing>
                 </child>
                 <child>
@@ -350,7 +350,7 @@
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
-                    <property name="top_attach">7</property>
+                    <property name="top_attach">8</property>
                   </packing>
                 </child>
                 <child>
@@ -362,7 +362,7 @@
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
-                    <property name="top_attach">8</property>
+                    <property name="top_attach">9</property>
                   </packing>
                 </child>
                 <child>
@@ -401,7 +401,106 @@
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
-                    <property name="top_attach">7</property>
+                    <property name="top_attach">8</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="halign">start</property>
+                    <property name="valign">start</property>
+                    <property name="margin_left">10</property>
+                    <property name="label" translatable="yes">Transparent Background:</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkBox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="orientation">vertical</property>
+                    <child>
+                      <object class="GtkRadioButton" id="transparent_checker_radio">
+                        <property name="label" translatable="yes">Checkered</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="active">True</property>
+                        <property name="draw_indicator">True</property>
+                        <property name="group">transparent_solid_radio</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkBox" id="box1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkRadioButton" id="transparent_solid_radio">
+                            <property name="label" translatable="yes">Solid color</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="active">True</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkColorButton" id="transparent_solid_color">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="pack_type">end</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 class="GtkRadioButton" id="transparent_none_radio">
+                        <property name="label" translatable="yes">None</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="active">True</property>
+                        <property name="draw_indicator">True</property>
+                        <property name="group">transparent_solid_radio</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="top_attach">2</property>
                   </packing>
                 </child>
               </object>
@@ -571,4 +670,12 @@
       </object>
     </child>
   </template>
+  <object class="GtkSizeGroup">
+    <property name="mode">vertical</property>
+    <widgets>
+      <widget name="transparent_checker_radio"/>
+      <widget name="box1"/>
+      <widget name="transparent_none_radio"/>
+    </widgets>
+  </object>
 </interface>


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