[gnome-tweak-tool] Convert tweak_desktop to new TweakGroup API



commit 967d7719ff2037a45fb38e07d22b87576d9d44b1
Author: John Stowers <john stowers gmail com>
Date:   Mon Aug 5 15:52:08 2013 +0200

    Convert tweak_desktop to new TweakGroup API

 gtweak/tweakmodel.py                               |   39 ++------------------
 .../{tweak_nautilus.py => tweak_group_desktop.py}  |   24 +++++++------
 gtweak/tweakview.py                                |   28 ++++----------
 gtweak/widgets.py                                  |   22 +++++++++++-
 4 files changed, 45 insertions(+), 68 deletions(-)
---
diff --git a/gtweak/tweakmodel.py b/gtweak/tweakmodel.py
index e8a52fb..d0608ee 100644
--- a/gtweak/tweakmodel.py
+++ b/gtweak/tweakmodel.py
@@ -84,24 +84,10 @@ class Tweak(object):
         if self._notify_cb:
             self._notify_cb(self, desc, error=False, btn=None, func=None, need_logout=need_logout)
 
-class TweakGroup:
+class TweakGroup(object):
     def __init__(self, name, *tweaks):
         self.name = name
-        self.tweaks = []
-
-        self._sg = Gtk.SizeGroup(mode=Gtk.SizeGroupMode.HORIZONTAL)
-        self._sg.props.ignore_hidden = True
-
-        self.set_tweaks(*tweaks)
-
-    def set_tweaks(self, *tweaks):
-        self.tweaks += [t for t in tweaks if t.loaded]
-
-        for t in tweaks:
-            if not t.loaded:
-                continue
-            if t.widget_for_size_group:
-                self._sg.add_widget(t.widget_for_size_group)
+        self.tweaks = [t for t in tweaks if t.loaded]
 
 class TweakModel(Gtk.ListStore):
     (COLUMN_NAME,
@@ -130,7 +116,7 @@ class TweakModel(Gtk.ListStore):
         if 1:
             tweak_files = [
                     os.path.splitext(os.path.split(f)[-1])[0]
-                        for f in glob.glob(os.path.join(self._tweak_dir, "tweak_*.py"))]
+                        for f in glob.glob(os.path.join(self._tweak_dir, "tweak_group_*.py"))]
         else:
             tweak_files = ["tweak_test"]
 
@@ -152,7 +138,6 @@ class TweakModel(Gtk.ListStore):
         mods = __import__("gtweak.tweaks", globals(), locals(), tweak_files, 0)
         for mod in [getattr(mods, file_name) for file_name in tweak_files]:
             groups.extend( getattr(mod, "TWEAK_GROUPS", []) )
-            tweaks.extend( getattr(mod, "TWEAKS", []) )
             
         schemas = SchemaList() 
    
@@ -164,12 +149,6 @@ class TweakModel(Gtk.ListStore):
                         schemas.insert(i.key_name, i.schema_name)
                     except:
                         pass
-        for t in tweaks:
-            self.add_tweak_auto_to_group(t)
-            try:
-                schemas.insert(t.key_name, t.schema_name)
-            except:
-                pass
 
     def add_tweak_group(self, tweakgroup):
         if tweakgroup.name in self._tweak_group_names:
@@ -180,18 +159,6 @@ class TweakModel(Gtk.ListStore):
         self._tweak_group_names[tweakgroup.name] = tweakgroup
         self._tweak_group_iters[tweakgroup.name] = _iter
 
-    def add_tweak_auto_to_group(self, tweak):
-        if not tweak.loaded:
-            return
-        name = tweak.group_name
-        try:
-            group = self._tweak_group_names[name]
-        except KeyError:
-            group = TweakGroup(name)
-            self.add_tweak_group(group)
-
-        group.set_tweaks(tweak)
-      
     def search_matches(self, txt):
         tweaks = []                                          
         groups = []                                                             
diff --git a/gtweak/tweaks/tweak_nautilus.py b/gtweak/tweaks/tweak_group_desktop.py
similarity index 60%
rename from gtweak/tweaks/tweak_nautilus.py
rename to gtweak/tweaks/tweak_group_desktop.py
index 38152f8..6462a2e 100644
--- a/gtweak/tweaks/tweak_nautilus.py
+++ b/gtweak/tweaks/tweak_group_desktop.py
@@ -19,8 +19,7 @@ from gi.repository import Gtk
 
 import gtweak
 from gtweak.utils import AutostartManager
-from gtweak.tweakmodel import TWEAK_GROUP_DESKTOP
-from gtweak.widgets import GSettingsSwitchTweak, GSettingsComboEnumTweak, GSettingsFileChooserButtonTweak, 
GSettingsCheckTweak
+from gtweak.widgets import ListBoxTweakGroup, GSettingsSwitchTweak, GSettingsComboEnumTweak, 
GSettingsFileChooserButtonTweak, GSettingsCheckTweak
 
 class DesktopIconTweak(GSettingsSwitchTweak):
     def __init__(self, **options):
@@ -44,13 +43,16 @@ class DesktopIconTweak(GSettingsSwitchTweak):
         self.nautilus.update_start_at_login(
                 self.settings.get_boolean(key))
 
-dicons = DesktopIconTweak(group_name=TWEAK_GROUP_DESKTOP)
 
-TWEAKS = (
-    dicons,
-    GSettingsCheckTweak("Computer","org.gnome.nautilus.desktop", "computer-icon-visible", depends_on=dicons, 
schema_filename="org.gnome.nautilus.gschema.xml",group_name=TWEAK_GROUP_DESKTOP),
-    GSettingsCheckTweak("Home","org.gnome.nautilus.desktop", "home-icon-visible", depends_on=dicons, 
schema_filename="org.gnome.nautilus.gschema.xml",group_name=TWEAK_GROUP_DESKTOP),
-    GSettingsCheckTweak("Network Servers","org.gnome.nautilus.desktop", "network-icon-visible", 
depends_on=dicons, schema_filename="org.gnome.nautilus.gschema.xml",group_name=TWEAK_GROUP_DESKTOP),
-    GSettingsCheckTweak("Trash","org.gnome.nautilus.desktop", "trash-icon-visible", depends_on=dicons, 
schema_filename="org.gnome.nautilus.gschema.xml",group_name=TWEAK_GROUP_DESKTOP),
-    GSettingsCheckTweak("Mounted Volumes","org.gnome.nautilus.desktop", "volumes-visible", 
depends_on=dicons, schema_filename="org.gnome.nautilus.gschema.xml",group_name=TWEAK_GROUP_DESKTOP),
-)
+dicons = DesktopIconTweak()
+
+TWEAK_GROUPS = [
+    ListBoxTweakGroup("Desktop",
+        dicons,
+        GSettingsCheckTweak("Computer","org.gnome.nautilus.desktop", "computer-icon-visible", 
depends_on=dicons, schema_filename="org.gnome.nautilus.gschema.xml"),
+        GSettingsCheckTweak("Home","org.gnome.nautilus.desktop", "home-icon-visible", depends_on=dicons, 
schema_filename="org.gnome.nautilus.gschema.xml"),
+        GSettingsCheckTweak("Network Servers","org.gnome.nautilus.desktop", "network-icon-visible", 
depends_on=dicons, schema_filename="org.gnome.nautilus.gschema.xml"),
+        GSettingsCheckTweak("Trash","org.gnome.nautilus.desktop", "trash-icon-visible", depends_on=dicons, 
schema_filename="org.gnome.nautilus.gschema.xml"),
+        GSettingsCheckTweak("Mounted Volumes","org.gnome.nautilus.desktop", "volumes-visible", 
depends_on=dicons, schema_filename="org.gnome.nautilus.gschema.xml"),
+    )
+]
diff --git a/gtweak/tweakview.py b/gtweak/tweakview.py
index cc2c334..bee5603 100644
--- a/gtweak/tweakview.py
+++ b/gtweak/tweakview.py
@@ -132,37 +132,25 @@ class Window(Gtk.ApplicationWindow):
 
     def load_model_data(self):
 
-        def _items_listbox(text):
+        def _make_items_listbox(text):
             lbl = Gtk.Label(text, xalign=0.0)
             lbl.set_name('row')
             row = Gtk.ListBoxRow(name="tweak-category")
             row.add(lbl)
             return row
 
-        def _load_tweaks(group):
-            itere = self._model.get_tweakgroup_iter(group)  
-            tweakgroup = self._model.get_value(itere, self._model.COLUMN_TWEAK)
-            box = Gtk.ListBox(name="tweak-group",
-                              selection_mode=Gtk.SelectionMode.NONE)
-            for t in sorted(tweakgroup.tweaks, key=_sort_tweak_widgets_by_widget_type):
-                cssname = "tweak"
-                if isinstance(t, Title):
-                    cssname = "tweak-title"
-                row = Gtk.ListBoxRow(name=cssname)
-                row.add(t)
-                box.add(row)
-                t.set_notify_cb(self._on_tweak_notify)
-            scroll = Gtk.ScrolledWindow()
-            scroll.add(box)
-            self.stack.add_named(scroll, group)
-
         groups = self._model._tweak_group_names.keys()
         groups = sorted(groups)
 
         for g in groups:
-            row = _items_listbox(g)
+            row = _make_items_listbox(g)
             self.listbox.add(row)
-            _load_tweaks(g)
+            tweakgroup = self._model.get_value(
+                                self._model.get_tweakgroup_iter(g), 
+                                self._model.COLUMN_TWEAK)
+            scroll = Gtk.ScrolledWindow()
+            scroll.add(tweakgroup)
+            self.stack.add_named(scroll, g)
 
         widget = self.listbox.get_row_at_index(0)
         self.listbox.select_row (widget)
diff --git a/gtweak/widgets.py b/gtweak/widgets.py
index deffb62..5f981f4 100644
--- a/gtweak/widgets.py
+++ b/gtweak/widgets.py
@@ -20,7 +20,7 @@ import os.path
 
 from gi.repository import GLib, Gtk, Gdk, Gio, Pango
 
-from gtweak.tweakmodel import Tweak
+from gtweak.tweakmodel import Tweak, TweakGroup
 from gtweak.gsettings import GSettingsSetting, GSettingsFakeSetting, GSettingsMissingError
 from gtweak.gtksettings import GtkSettingsManager
 from gtweak.gshellwrapper import GnomeShellFactory
@@ -211,6 +211,26 @@ class _DependableMixin(object):
         sensitive = self._depends_how(settings,key_name)
         self.set_sensitive(sensitive)
 
+class ListBoxTweakGroup(Gtk.ListBox, TweakGroup):
+    def __init__(self, name, *tweaks):
+        Gtk.ListBox.__init__(self,
+                        name="tweak-group",
+                        selection_mode=Gtk.SelectionMode.NONE)         
+        TweakGroup.__init__(self, name, *tweaks)
+        self._sg = Gtk.SizeGroup(
+                        mode=Gtk.SizeGroupMode.HORIZONTAL)
+        self._sg.props.ignore_hidden = True
+
+        for t in self.tweaks:
+            cssname = "tweak"
+            if isinstance(t, Title):
+                cssname = "tweak-title"
+            row = Gtk.ListBoxRow(name=cssname)
+            row.add(t)
+            self.add(row)
+            if t.widget_for_size_group:
+                self._sg.add_widget(t.widget_for_size_group)
+
 class GSettingsCheckTweak(Gtk.Box, _GSettingsTweak, _DependableMixin):
     def __init__(self, name, schema_name, key_name, **options):
         Gtk.Box.__init__(self, orientation=Gtk.Orientation.HORIZONTAL)


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