[pitivi] Preferences: Use a switch for boolean settings



commit c7e40dae7896535a99f9f3618d7edecd1c8b96eb
Author: Diego Garcia Gangl <dnicolas gmail com>
Date:   Sat May 11 20:21:26 2019 -0300

    Preferences: Use a switch for boolean settings

 pitivi/dialogs/prefs.py | 26 +++++++++++---------------
 pitivi/utils/widgets.py | 36 +++++++++++++++++-------------------
 2 files changed, 28 insertions(+), 34 deletions(-)
---
diff --git a/pitivi/dialogs/prefs.py b/pitivi/dialogs/prefs.py
index e673cc99..6c3f1e02 100644
--- a/pitivi/dialogs/prefs.py
+++ b/pitivi/dialogs/prefs.py
@@ -255,21 +255,17 @@ class PreferencesDialog(Loggable):
 
             prop_size_group.add_widget(widget)
 
-            if isinstance(widget, widgets.ToggleWidget):
-                widget.check_button.set_label(label)
-                label_widget = None
-            else:
-                label_widget = Gtk.Label(label=label)
-                label_widget.set_tooltip_text(description)
-                label_widget.set_alignment(0.0, 0.5)
-
-                label_widget.props.margin_left = PADDING * 3
-                label_widget.props.margin_right = PADDING * 3
-                label_widget.props.margin_top = PADDING * 2
-                label_widget.props.margin_bottom = PADDING * 2
-
-                label_widget.show()
-                label_size_group.add_widget(label_widget)
+            label_widget = Gtk.Label(label=label)
+            label_widget.set_tooltip_text(description)
+            label_widget.set_alignment(0.0, 0.5)
+
+            label_widget.props.margin_left = PADDING * 3
+            label_widget.props.margin_right = PADDING * 3
+            label_widget.props.margin_top = PADDING * 2
+            label_widget.props.margin_bottom = PADDING * 2
+
+            label_widget.show()
+            label_size_group.add_widget(label_widget)
 
             icon = Gtk.Image()
             icon.set_from_icon_name(
diff --git a/pitivi/utils/widgets.py b/pitivi/utils/widgets.py
index c80b62d3..28bf833c 100644
--- a/pitivi/utils/widgets.py
+++ b/pitivi/utils/widgets.py
@@ -452,25 +452,28 @@ class FractionWidget(TextWidget, DynamicWidget):
 class ToggleWidget(Gtk.Box, DynamicWidget):
     """Widget for entering an on/off value."""
 
-    def __init__(self, default=None, check_button=None):
+    def __init__(self, default=None, switch_button=None):
         Gtk.Box.__init__(self)
         DynamicWidget.__init__(self, default)
-        if check_button is None:
-            self.check_button = Gtk.CheckButton()
-            self.pack_start(self.check_button, expand=False, fill=False, padding=0)
-            self.check_button.show()
+        if switch_button is None:
+            self.switch_button = Gtk.Switch()
+            self.pack_start(self.switch_button, expand=False, fill=False, padding=0)
+            self.switch_button.show()
         else:
-            self.check_button = check_button
+            self.switch_button = switch_button
             self.setWidgetToDefault()
 
     def connectValueChanged(self, callback, *args):
-        self.check_button.connect("toggled", callback, *args)
+        def callback_wrapper(switch_button, unused_state):
+            callback(switch_button, *args)
+
+        self.switch_button.connect("state-set", callback_wrapper)
 
     def setWidgetValue(self, value):
-        self.check_button.set_active(value)
+        self.switch_button.set_active(value)
 
     def getWidgetValue(self):
-        return self.check_button.get_active()
+        return self.switch_button.get_active()
 
 
 class ChoiceWidget(Gtk.Box, DynamicWidget):
@@ -645,7 +648,7 @@ def make_widget_wrapper(prop, widget):
         widget_lower = widget_adjustment.props.lower
         widget_upper = widget_adjustment.props.upper
         return NumericWidget(upper=widget_upper, lower=widget_lower, adjustment=widget_adjustment, 
default=prop.default_value)
-    elif isinstance(widget, Gtk.CheckButton):
+    elif isinstance(widget, Gtk.Switch):
         return ToggleWidget(prop.default_value, widget)
     else:
         Loggable().fixme("%s has not been wrapped into a Dynamic Widget", widget)
@@ -899,15 +902,10 @@ class GstElementSettingsWidget(Gtk.Box, Loggable):
             except KeyError:
                 widget = prop_widget
 
-            if isinstance(prop_widget, ToggleWidget):
-                prop_widget.check_button.set_label(prop.nick)
-                grid.attach(widget, 0, y, 2, 1)
-            else:
-                text = _("%(preference_label)s:") % {"preference_label": prop.nick}
-                label = Gtk.Label(label=text)
-                label.set_alignment(0.0, 0.5)
-                grid.attach(label, 0, y, 1, 1)
-                grid.attach(widget, 1, y, 1, 1)
+            label = Gtk.Label(label=prop.nick)
+            label.set_alignment(0.0, 0.5)
+            grid.attach(label, 0, y, 1, 1)
+            grid.attach(widget, 1, y, 1, 1)
             if hasattr(prop, 'blurb'):
                 widget.set_tooltip_text(prop.blurb)
 


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