[gnome-tweak-tool] Generalise a getter/setter tweak



commit b948854d46a8a3026e0431e55c958c0a6ff15077
Author: John Stowers <john stowers gmail com>
Date:   Wed Aug 21 14:28:14 2013 +0200

    Generalise a getter/setter tweak

 gtweak/tweaks/tweak_group_keymouse.py |   29 ++++++++---------------------
 gtweak/tweaks/tweak_group_shell.py    |   26 +++++++-------------------
 gtweak/widgets.py                     |   20 ++++++++++++++++++++
 3 files changed, 35 insertions(+), 40 deletions(-)
---
diff --git a/gtweak/tweaks/tweak_group_keymouse.py b/gtweak/tweaks/tweak_group_keymouse.py
index 0aeba81..08cadcc 100644
--- a/gtweak/tweaks/tweak_group_keymouse.py
+++ b/gtweak/tweaks/tweak_group_keymouse.py
@@ -17,35 +17,22 @@
 
 import os.path
 
-from gi.repository import GLib, Gtk
+from gi.repository import GLib
 
 import gtweak
-from gtweak.tweakmodel import Tweak
 from gtweak.utils import XSettingsOverrides, walk_directories, make_combo_list_with_default
-from gtweak.widgets import ListBoxTweakGroup, GSettingsComboTweak, GSettingsSwitchTweak, Title, 
build_label_beside_widget
+from gtweak.widgets import ListBoxTweakGroup, GSettingsComboTweak, GSettingsSwitchTweak, 
GetterSetterSwitchTweak, Title
 
-class PrimaryPasteTweak(Gtk.Box, Tweak):
+class PrimaryPasteTweak(GetterSetterSwitchTweak):
     def __init__(self, **options):
-        Gtk.Box.__init__(self, orientation=Gtk.Orientation.HORIZONTAL)
-
-        name = _("Middle-click Paste")
-        description = ""
-        Tweak.__init__(self, name, description, **options)
-
         self._xsettings = XSettingsOverrides()
+        GetterSetterSwitchTweak.__init__(self, _("Middle-click Paste"), **options)
 
-        sw = Gtk.Switch()
-        sw.set_active(self._xsettings.get_enable_primary_paste())
-        sw.connect("notify::active", self._on_toggled)
-
-        build_label_beside_widget(
-                name,
-                sw,
-                hbox=self)
-
+    def get_active(self):
+        return self._xsettings.get_enable_primary_paste()
 
-    def _on_toggled(self, sw, pspec):
-        self._xsettings.set_enable_primary_paste(sw.get_active())
+    def set_active(self, v):
+        self._xsettings.set_enable_primary_paste(v)
 
 class KeyThemeSwitcher(GSettingsComboTweak):
     def __init__(self, **options):
diff --git a/gtweak/tweaks/tweak_group_shell.py b/gtweak/tweaks/tweak_group_shell.py
index e91d29c..603d4fb 100644
--- a/gtweak/tweaks/tweak_group_shell.py
+++ b/gtweak/tweaks/tweak_group_shell.py
@@ -20,34 +20,22 @@ from gi.repository import Gtk, Gio
 from gtweak.gsettings import GSettingsSetting, GSettingsMissingError, GSettingsFakeSetting
 from gtweak.gshellwrapper import GnomeShellFactory
 from gtweak.tweakmodel import Tweak, TWEAK_GROUP_TOPBAR, TWEAK_GROUP_WORKSPACES, TWEAK_GROUP_POWER
-from gtweak.widgets import ListBoxTweakGroup, GSettingsComboEnumTweak, GSettingsSwitchTweak, 
GSettingsCheckTweak, adjust_schema_for_overrides, build_label_beside_widget, build_horizontal_sizegroup, 
UI_BOX_SPACING, Title
+from gtweak.widgets import ListBoxTweakGroup, GSettingsComboEnumTweak, GSettingsSwitchTweak, 
GSettingsCheckTweak, GetterSetterSwitchTweak, adjust_schema_for_overrides, build_label_beside_widget, 
build_horizontal_sizegroup, UI_BOX_SPACING, Title
 from gtweak.utils import XSettingsOverrides
 
 _shell = GnomeShellFactory().get_shell()
 _shell_loaded = _shell is not None
 
-class ApplicationMenuTweak(Gtk.Box, Tweak):
+class ApplicationMenuTweak(GetterSetterSwitchTweak):
     def __init__(self, **options):
-        Gtk.Box.__init__(self, orientation=Gtk.Orientation.HORIZONTAL)
-
-        name = _("Show Application Menu")
-        description = ""
-        Tweak.__init__(self, name, description, **options)
-
         self._xsettings = XSettingsOverrides()
+        GetterSetterSwitchTweak.__init__(self, _("Show Application Menu"), **options)
 
-        sw = Gtk.Switch()
-        sw.set_active(self._xsettings.get_shell_shows_app_menu())
-        sw.connect("notify::active", self._on_toggled)
-
-        build_label_beside_widget(
-                name,
-                sw,
-                hbox=self)
-
+    def get_active(self):
+        return self._xsettings.get_shell_shows_app_menu()
 
-    def _on_toggled(self, sw, pspec):
-        self._xsettings.set_shell_shows_app_menu(sw.get_active())
+    def set_active(self, v):
+        self._xsettings.set_shell_shows_app_menu(v)
 
 class StaticWorkspaceTweak(Gtk.Box, Tweak):
 
diff --git a/gtweak/widgets.py b/gtweak/widgets.py
index 3aba7d1..09e5de7 100644
--- a/gtweak/widgets.py
+++ b/gtweak/widgets.py
@@ -415,6 +415,26 @@ class GSettingsFileChooserButtonTweak(Gtk.Box, _GSettingsTweak, _DependableMixin
         if uri and self._values_are_different():
             self.settings.set_string(self.key_name, uri)
 
+class GetterSetterSwitchTweak(Gtk.Box, Tweak):
+    def __init__(self, name, **options):
+        Gtk.Box.__init__(self, orientation=Gtk.Orientation.HORIZONTAL)
+        Tweak.__init__(self, name, options.get("description",""), **options)
+
+        sw = Gtk.Switch()
+        sw.set_active(self.get_active())
+        sw.connect("notify::active", self._on_toggled)
+
+        build_label_beside_widget(name, sw, hbox=self)
+
+    def _on_toggled(self, sw, pspec):
+        self.set_active(sw.get_active())
+
+    def get_active(self):
+        raise NotImplementedError()
+
+    def set_active(self, v):
+        raise NotImplementedError()
+
 class DarkThemeSwitcher(Gtk.Box, Tweak):
     def __init__(self, **options):
         Gtk.Box.__init__(self, orientation=Gtk.Orientation.VERTICAL)


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