[gnome-tweak-tool] Refactor tweakgroup datamodel to allow later loading



commit 6a6e76a215ebcce4e99720bb94a8538a98640fe3
Author: John Stowers <john stowers gmail com>
Date:   Thu Aug 22 00:04:38 2013 +0200

    Refactor tweakgroup datamodel to allow later loading

 gtweak/tweakmodel.py |    5 +++++
 gtweak/widgets.py    |   19 +++++++++++++++----
 2 files changed, 20 insertions(+), 4 deletions(-)
---
diff --git a/gtweak/tweakmodel.py b/gtweak/tweakmodel.py
index 1e6f344..230e5e3 100644
--- a/gtweak/tweakmodel.py
+++ b/gtweak/tweakmodel.py
@@ -74,6 +74,11 @@ class TweakGroup(object):
         self.tweaks = [t for t in tweaks if t.loaded]
         self.uid = options.get('uid', self.__class__.__name__)
 
+    def add_tweak(self, tweak):
+        if tweak.loaded:
+            self.tweaks.append(tweak)
+            return True
+
 class TweakModel(Gtk.ListStore):
     (COLUMN_NAME,
      COLUMN_TWEAK) = range(2)
diff --git a/gtweak/widgets.py b/gtweak/widgets.py
index 09e5de7..8221421 100644
--- a/gtweak/widgets.py
+++ b/gtweak/widgets.py
@@ -209,12 +209,19 @@ class ListBoxTweakGroup(Gtk.ListBox, TweakGroup):
         self.props.vexpand = False
         self.props.valign = Gtk.Align.START
 
-        TweakGroup.__init__(self, name, *tweaks, **options)
-
         self._sg = Gtk.SizeGroup(mode=Gtk.SizeGroupMode.HORIZONTAL)
         self._sg.props.ignore_hidden = True
 
-        for t in self.tweaks:
+        TweakGroup.__init__(self, name, **options)
+
+        for t in tweaks:
+            self.add_tweak_row(t)
+
+    #FIXME: need to add remove_tweak_row and remove_tweak (which clears
+    #the search cache etc)
+
+    def add_tweak_row(self, t, position=None):
+        if self.add_tweak(t):
             if isinstance(t, Gtk.ListBoxRow):
                 row = t
             else:
@@ -223,9 +230,13 @@ class ListBoxTweakGroup(Gtk.ListBox, TweakGroup):
                 if isinstance(t, Title):
                     row.get_style_context().add_class("title")
                 row.add(t)
-            self.add(row)
+            if position is None:
+                self.add(row)
+            else:
+                self.insert(row, position)
             if t.widget_for_size_group:
                 self._sg.add_widget(t.widget_for_size_group)
+            return row
 
 class GSettingsCheckTweak(Gtk.Box, _GSettingsTweak, _DependableMixin):
     def __init__(self, name, schema_name, key_name, **options):


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