[gnome-tweak-tool] Factor out a GSettingsComboTweak



commit 153dcb72283c6ee24368db4ab1b387d4c638115d
Author: John Stowers <john stowers gmail com>
Date:   Fri Mar 18 15:04:20 2011 +1300

    Factor out a GSettingsComboTweak

 gtweak/tweaks/tweak_interface.py |   32 ++++++++------------------------
 gtweak/widgets.py                |   20 ++++++++++++++++++++
 2 files changed, 28 insertions(+), 24 deletions(-)
---
diff --git a/gtweak/tweaks/tweak_interface.py b/gtweak/tweaks/tweak_interface.py
index 6062c7f..4165309 100644
--- a/gtweak/tweaks/tweak_interface.py
+++ b/gtweak/tweaks/tweak_interface.py
@@ -3,40 +3,24 @@ import os.path
 from gi.repository import Gtk
 
 import gtweak
-from gtweak.tweakmodel import Tweak, TweakGroup
-from gtweak.widgets import GSettingsSwitchTweak, build_label_beside_widget, build_combo_box_text
-from gtweak.gsettings import GSettingsSetting
+from gtweak.tweakmodel import TweakGroup
+from gtweak.widgets import GSettingsSwitchTweak, GSettingsComboTweak
 
-
-
-class ThemeSwitcher(Tweak):
+class ThemeSwitcher(GSettingsComboTweak):
     """ Only shows themes that have variations for gtk+-3 and gtk+-2 """
     def __init__(self, **options):
-        self.key_name = "gtk-theme"
-        self.settings = GSettingsSetting("org.gnome.desktop.interface")
-        Tweak.__init__(self,
-            self.settings.schema_get_summary(self.key_name),
-            self.settings.schema_get_description(self.key_name),
-            **options)
-        
         valid_themes = []
         themedir = os.path.join(gtweak.DATA_DIR, "themes")
         for t in os.listdir(themedir):
             if os.path.exists(os.path.join(themedir, t, "gtk-2.0")) and \
                os.path.exists(os.path.join(themedir, t, "gtk-3.0")):
                 valid_themes.append(t)
-        
-        combo = build_combo_box_text(
-                    self.settings.get_value(self.key_name),
-                    *[(t, t) for t in valid_themes])
-        combo.connect('changed', self._on_combo_changed)
-        self.widget = build_label_beside_widget(self.name, combo)
 
-    def _on_combo_changed(self, combo):
-        _iter = combo.get_active_iter()
-        if _iter:
-            value = combo.get_model().get_value(_iter, 0)
-            self.settings.set_value(self.key_name, value)
+        GSettingsComboTweak.__init__(self,
+            "org.gnome.desktop.interface",
+            "gtk-theme",
+            [(t, t) for t in valid_themes],
+            **options)
 
 TWEAK_GROUPS = (
         TweakGroup(
diff --git a/gtweak/widgets.py b/gtweak/widgets.py
index 67d0e2d..29646f5 100644
--- a/gtweak/widgets.py
+++ b/gtweak/widgets.py
@@ -112,6 +112,26 @@ class GSettingsComboEnumTweak(_GSettingsTweak):
         if self._values_are_different():
             self.settings.set_value(self.key_name, val)
 
+class GSettingsComboTweak(_GSettingsTweak):
+    def __init__(self, schema_name, key_name, key_options, **options):
+        _GSettingsTweak.__init__(self, schema_name, key_name, **options)
+
+        assert len(key_options) > 0
+        assert len(key_options[0]) == 2
+
+        combo = build_combo_box_text(
+                    self.settings.get_value(self.key_name),
+                    *key_options)
+        combo.connect('changed', self._on_combo_changed)
+        self.widget = build_label_beside_widget(self.name, combo)
+        self.widget_for_size_group = combo
+
+    def _on_combo_changed(self, combo):
+        _iter = combo.get_active_iter()
+        if _iter:
+            value = combo.get_model().get_value(_iter, 0)
+            self.settings.set_value(self.key_name, value)
+
 class _GConfTweak(Tweak):
     def __init__(self, key_name, key_type, **options):
         self.gconf = GConfSetting(key_name, key_type)



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