[fusion-commits] Compizconfig Settings Manager in Python: Changes to 'master' (c4fda19e83bbc18572c7f70f406a69bac5bdb345)

crdlb at server.opencompositing.org crdlb at server.opencompositing.org
Mon Mar 17 02:08:19 CET 2008


New commits:
commit c4fda19e83bbc18572c7f70f406a69bac5bdb345
Merge: ea6d56d0e193c37794d6309dab29aed4a65a403c a8dc3dcf5aa7b96e43b6fd2091dc8e5d041bed57
Author: Christopher Williams <christopherw at verizon.net>
Date:   Sun Mar 16 21:07:10 2008 -0400

    Merge branch 'master' of git+ssh://crdlb@git.compiz-fusion.org/git/fusion/compizconfig/ccsm

commit ea6d56d0e193c37794d6309dab29aed4a65a403c
Author: Christopher Williams <christopherw at verizon.net>
Date:   Sun Mar 16 21:03:42 2008 -0400

    Change the layout of setting widgets to use HBoxes, and minor code cleanup
    
    Long Description tooltips now work across the entire area of of the setting, including blank space between the label and the setting widget. Additionally, the background of the setting pages now correctly inherits the background color from the notebook widget (fixing a color mismatch problem with the clearlooks engine).


 ccm/Pages.py    |   18 ++--
 ccm/Settings.py |  260 +++++++++++++++++++++++++++++--------------------------
 ccm/Utils.py    |   85 ++++++++-----------
 3 files changed, 182 insertions(+), 181 deletions(-)


Modified: fusion/compizconfig/ccsm/ccm/Pages.py
===================================================================
--- fusion/compizconfig/ccsm/ccm/Pages.py
+++ fusion/compizconfig/ccsm/ccm/Pages.py
@@ -101,8 +101,7 @@ class PluginPage:
         self.RightWidget.set_scrollable(True)
         self.Pages = []
 
-        groupsSorted = sorted(plugin.Groups.items(), key=FirstItemKeyFunc)
-        for name, group in groupsSorted:
+        for name, group in sorted(plugin.Groups.items()):
             name = name or _("General")
             groupPage = GroupPage(name, group)
             if not groupPage.Empty:
@@ -308,7 +307,7 @@ class FilterPage:
 
         self.PluginBox.add_item(_("All"), self.PluginChanged, "<i>%s</i>")
 
-        sortedPlugins = map(lambda x: x[0], self.FilteredPlugins.values())
+        sortedPlugins = map(operator.itemgetter(0), self.FilteredPlugins.values())
         sortedPlugins = sorted(sortedPlugins, key=PluginKeyFunc)
         for plugin in sortedPlugins:
             image = Image(plugin.Name, ImagePlugin)
@@ -1014,7 +1013,9 @@ class Page:
         view.set_shadow_type(gtk.SHADOW_NONE)
         
         scroll.add(view)
-        view.add(self.SetContainer)
+        ebox = gtk.EventBox()
+        view.add(ebox)
+        ebox.add(self.SetContainer)
         self.Widget.pack_start(scroll, True, True)
         
         self.Empty = True
@@ -1027,18 +1028,17 @@ class GroupPage(Page):
 
         self.subGroupAreas = []
 
-        if (group.has_key('')):
+        if '' in group:
             sga = SubGroupArea('', group[''], filter)
             if not sga.Empty:
                 self.SetContainer.pack_start(sga.Widget, False, False)
                 self.Empty = False
-                self.subGroupAreas = self.subGroupAreas + [sga]
+                self.subGroupAreas.append(sga)
 
-        subGroupsSorted = sorted(group.keys(), cmp)
-        for subGroup in subGroupsSorted:
+        for subGroup in sorted(group):
             if not subGroup == '':
                 sga = SubGroupArea(subGroup, group[subGroup], filter)
                 if not sga.Empty:
                     self.SetContainer.pack_start(sga.Widget, False, False)
                     self.Empty = False
-                    self.subGroupAreas = self.subGroupAreas + [sga]
+                    self.subGroupAreas.append(sga)

Modified: fusion/compizconfig/ccsm/ccm/Settings.py
===================================================================
--- fusion/compizconfig/ccsm/ccm/Settings.py
+++ fusion/compizconfig/ccsm/ccm/Settings.py
@@ -39,14 +39,24 @@ gettext.bindtextdomain("ccsm", DataDir + "/locale")
 gettext.textdomain("ccsm")
 _ = gettext.gettext
 
-class Setting:
-    def __init__(self, Setting):
+class Setting(object):
+    def __init__(self, Setting=None, Settings=None):
+        if not (Setting or Settings) or (Setting and Settings):
+            raise TypeError("Exactly one argument must be provided")
+
         self.Custom = False
         self.Setting = Setting
+        self.Settings = Settings # for multi-list settings
         self.Blocked = 0
-        self.MakeLabel()
+        self.EBox = gtk.EventBox()
+        self.Box = gtk.HBox()
+        self.Box.set_spacing(5)
+        self.EBox.add(self.Box)
         self.Reset = gtk.Button()
-        Tooltips.set_tip(self.Reset,_("Reset setting to the default value"))
+        if not Settings:
+            self.MakeLabel()
+            Tooltips.set_tip(self.EBox, self.Setting.LongDesc)
+            Tooltips.set_tip(self.Reset,_("Reset setting to the default value"))
         self.Reset.set_image (Image (name = gtk.STOCK_CLEAR, type = ImageStock,
                                      size = gtk.ICON_SIZE_BUTTON))
         self.Reset.connect('clicked', self.DoReset)
@@ -55,15 +65,15 @@ class Setting:
         GlobalUpdater.Append(self)
 
     def Attach(self, table, row):
-        self.Reset.set_sensitive(not self.Setting.ReadOnly)
-        self.Widget.set_sensitive(not self.Setting.ReadOnly)
+
         if self.Custom:
-            table.attach(self.Widget, 0, 100, row, row+1, TableDef, TableDef, TableX, TableX)
+            self.EBox.set_sensitive(not self.Setting.ReadOnly)
+            table.attach(self.EBox, 0, 2, row, row+1, TableDef, TableDef, TableX, TableX)
         else:
-            table.attach(self.Label, 0, 1, row, row+1, gtk.FILL, TableDef, TableX, TableX)
-            table.attach(self.Widget, 1, 99, row, row+1, TableDef, TableDef, TableX, TableX)
-            table.attach(self.Reset, 99, 100, row, row+1, 0, TableDef, TableX, TableX)
-
+            self.EBox.set_sensitive(not self.Setting.ReadOnly)
+            table.attach(self.EBox, 0, 1, row, row+1, TableDef, TableDef, TableX, TableX)
+            self.Reset.set_sensitive(not self.Setting.ReadOnly)
+            table.attach(self.Reset, 1, 2, row, row+1, 0, TableDef, TableX, TableX)
     def PureVirtual (self, func):
         message = "Missing %(function)s function for %(name)s setting (%(class)s)"
 
@@ -83,18 +93,20 @@ class Setting:
         self.Read()
 
     def MakeLabel(self):
-        self.Label = gtk.EventBox()
+
+        if not self.Setting:
+            return
+
         label = gtk.Label()
         desc = protect_pango_markup (self.Setting.ShortDesc)
         style = ""
         if self.Setting.Integrated: style = ''' foreground="blue"'''
         label.set_markup("<span%s>%s</span>" % (style, desc))
-        self.Label.add(label)
-        Tooltips.set_tip(self.Label, self.Setting.LongDesc)
         label.props.xalign = 0
         label.props.wrap_mode = gtk.WRAP_WORD
         label.set_size_request(160, -1)
         label.set_line_wrap(True)
+        self.Label = label
 
     def Block(self):
         self.Blocked = self.Blocked+1
@@ -124,15 +136,15 @@ class MatchSetting(Setting):
         self.Widget.set_spacing(5)
 
         self.Entry = gtk.Entry()
-        Tooltips.set_tip(self.Entry, self.Setting.LongDesc)
         self.Entry.connect('activate', self.Changed)
         self.Entry.connect('focus-out-event', self.Changed)
 
         self.MatchButton = MatchButton(self.Setting.Value)
         self.MatchButton.connect('changed', self.MatchChanged)
 
-        self.Widget.pack_start(self.Entry, True, True)
-        self.Widget.pack_start(self.MatchButton, False, False)
+        self.Box.pack_start(self.Label, False, False)
+        self.Box.pack_start(self.Entry, True, True)
+        self.Box.pack_start(self.MatchButton, False, False)
 
     def _Read(self):
         self.Entry.set_text(self.Setting.Value)
@@ -147,18 +159,19 @@ class MatchSetting(Setting):
 class StringSetting(Setting):
     def _Init(self):
         self.Entry = gtk.Entry()
-        Tooltips.set_tip(self.Entry, self.Setting.LongDesc)
         self.Entry.connect('activate', self.Changed)
         self.Entry.connect('focus-out-event', self.Changed)
         self.Widget = self.Entry
-    
+        self.Box.pack_start(self.Label, False, False)
+        self.Box.pack_start(self.Widget, True, True)
+
     def _Read(self):
         self.Entry.set_text(self.Setting.Value)
 
     def _Changed(self):
         self.Setting.Value = self.Entry.get_text()
 
-class FileSetting:
+class FileSetting(object):
     def __init__(self, setting, isDirectory=False):
         self.Setting = setting
         self.IsDirectory = isDirectory 
@@ -251,10 +264,7 @@ class FileStringSetting(StringSetting, FileSetting):
     def __init__(self, Setting, isDirectory=False):
         StringSetting.__init__(self, Setting)
         FileSetting.__init__(self, Setting, isDirectory)
-        self.Widget = gtk.HBox()
-        self.Widget.set_spacing(5)
-        self.Widget.pack_start(self.Entry, True, True)
-        self.Widget.pack_start(self.Open, False, False)
+        self.Box.pack_start(self.Open, False, False)
 
     def SetFileName(self, filename):
         self.Entry.set_text(filename)
@@ -262,15 +272,16 @@ class FileStringSetting(StringSetting, FileSetting):
 
 class EnumSetting(Setting):
     def _Init(self):
-        self.Widget = gtk.EventBox()
-        Tooltips.set_tip(self.Widget, self.Setting.LongDesc)
         self.Combo = gtk.combo_box_new_text()
-        self.Widget.add(self.Combo)
         sortedItems = sorted(self.Setting.Info[2].items(), key=EnumSettingKeyFunc)
         for name, value in sortedItems:
             self.Combo.append_text(name)
         self.Combo.connect('changed', self.Changed)
 
+        self.Widget = self.Combo
+        self.Box.pack_start(self.Label, False, False)
+        self.Box.pack_start(self.Combo, True, True)
+
     def _Read(self):
         self.Combo.set_active(self.Setting.Value)
 
@@ -281,15 +292,15 @@ class EnumSetting(Setting):
 class BoolSetting (Setting):
 
     def _Init (self):
-        self.Custom = True
+        self.Label.set_size_request(-1, -1)
+        self.Label.set_line_wrap(False)
         self.CheckButton = gtk.CheckButton ()
-        Tooltips.set_tip (self.CheckButton, self.Setting.LongDesc)
-        self.Widget = makeCustomSetting (self.Setting.ShortDesc,
-                                         self.Setting.Integrated,
-                                         self.CheckButton,
-                                         self.Reset)
+        self.Box.pack_start(self.Label, True, True)
+        self.Box.pack_start(self.CheckButton, False, False)
         self.CheckButton.connect ('toggled', self.Changed)
 
+        self.Widget = self.CheckButton
+
     def _Read (self):
         self.CheckButton.set_active (self.Setting.Value)
 
@@ -306,7 +317,6 @@ class IntFloatSetting(Setting):
 
         self.Adj = gtk.Adjustment(self.Setting.Value, self.Setting.Info[0], self.Setting.Info[1], inc, inc*10)
         self.Spin = gtk.SpinButton(self.Adj)
-        Tooltips.set_tip(self.Spin, self.Setting.LongDesc)
 
         self.Scale = gtk.HScale(self.Adj)
         
@@ -318,19 +328,13 @@ class IntFloatSetting(Setting):
             self.Scale.set_digits(4)
 
         self.Scale.set_update_policy(gtk.UPDATE_DISCONTINUOUS)
-        Tooltips.set_tip(self.Scale, self.Setting.LongDesc)
         self.Scale.connect("value-changed", self.Changed)
         self.Spin.connect("value-changed", self.Changed)
         self.Widget = self.Scale
 
-    def Attach(self, Table, row):
-        self.Reset.set_sensitive(not self.Setting.ReadOnly)
-        self.Scale.set_sensitive(not self.Setting.ReadOnly)
-        self.Spin.set_sensitive(not self.Setting.ReadOnly)
-        Table.attach(self.Label, 0, 1, row, row+1, gtk.FILL, TableDef, TableX, TableX)
-        Table.attach(self.Scale, 1, 2, row, row+1, TableDef, TableDef, TableX, TableX)
-        Table.attach(self.Spin, 2, 3, row, row+1, gtk.FILL, TableDef, TableX, TableX)
-        Table.attach(self.Reset, 99, 100, row, row+1, 0, TableDef, TableX, TableX)
+        self.Box.pack_start(self.Label, False, False)
+        self.Box.pack_start(self.Scale, True, True)
+        self.Box.pack_start(self.Spin, False, False)
 
     def _Read(self):
         self.Adj.set_value(self.Setting.Value)
@@ -342,12 +346,13 @@ class ColorSetting(Setting):
     def _Init(self):
         self.Button = gtk.ColorButton()
         self.Button.set_size_request (100, -1)
-        Tooltips.set_tip(self.Button, self.Setting.LongDesc)
         self.Button.set_use_alpha(True)
         self.Button.connect('color-set', self.Changed)
 
         self.Widget = gtk.Alignment (1, 0.5)
         self.Widget.add (self.Button)
+        self.Box.pack_start(self.Label, False, False)
+        self.Box.pack_start(self.Widget, True, True)
 
     def _Read(self):
         col = gtk.gdk.Color()
@@ -366,7 +371,7 @@ class MultiListSetting(Setting):
     def _Init(self):
         self.Widget = gtk.VBox()
         self.Custom = True
-        self.Settings = self.Setting # self.Setting is a list in this case
+        self.Setting = None
         
         types, cols = self.ListInfo()
         self.Types = types
@@ -406,6 +411,8 @@ class MultiListSetting(Setting):
             b.connect('clicked', type[1])
         buttonBox.pack_end(self.Reset, False, False)
 
+        self.Box.pack_start(self.Widget)
+
     def ColChanged(self, *args, **kwargs):
         if self.Blocked <= 0:
             self._ColChanged(*args, **kwargs)
@@ -419,7 +426,7 @@ class MultiListSetting(Setting):
     def DoReset(self, widget):
         for setting in self.Settings:
             setting.Reset()
-        self.Setting[0].Plugin.Context.Write()
+        self.Settings[0].Plugin.Context.Write()
         self.Read()
 
     def MakeLabel(self):
@@ -708,7 +715,7 @@ class MultiListSetting(Setting):
             col += 1
 
     def Attach(self, table, row):
-        table.attach(self.Widget, 0, 100, row, row+1, xpadding=5)
+        table.attach(self.EBox, 0, 2, row, row+1, xpadding=5)
 
 class ListSetting(Setting):
     def _Init(self):
@@ -722,7 +729,6 @@ class ListSetting(Setting):
         info = self._ListInfo()
         self.Store = gtk.ListStore(*info[0])
         self.View = gtk.TreeView(self.Store)
-        Tooltips.set_tip(self.View, self.Setting.LongDesc)
         if len(info[0]) == 1:
             self.View.set_headers_visible(False)
         for i in info[1]:
@@ -760,6 +766,8 @@ class ListSetting(Setting):
             b.connect('clicked', type[1])
         buttonBox.pack_end(self.Reset, False, False)
 
+        self.Box.add(self.Widget)
+
     def Add(self, b):
         value = self._Edit()
         if value is not None:
@@ -834,7 +842,7 @@ class ListSetting(Setting):
     def Attach(self, table, row):
         self.Widget.set_sensitive(not self.Setting.ReadOnly)
         self.Reset.set_sensitive(not self.Setting.ReadOnly)
-        table.attach(self.Widget, 0, 100, row, row+1, xpadding=5)
+        table.attach(self.EBox, 0, 2, row, row+1, xpadding=5)
 
 class StringMatchListSetting(ListSetting):
     def _ListInfo(self):
@@ -941,7 +949,7 @@ class FileListSetting(StringMatchListSetting, FileSetting):
 
 class IntDescListSetting(Setting):
     def _Init(self):
-        self.Widget = gtk.Frame(self.Setting.ShortDesc)
+        self.Frame = gtk.Frame(self.Setting.ShortDesc)
         self.Table = gtk.Table()
         self.Custom = True
         
@@ -956,10 +964,10 @@ class IntDescListSetting(Setting):
             self.Checks.append((key, box))
             self.Table.attach(box, col, col+1, row, row+1, TableDef, TableDef, TableX, TableX)
             box.connect('toggled', self.Changed)
-            col = col+1
-            if (col >=  3):
+            col += 1
+            if (col >= 3):
                 col = 0
-                row = row+1
+                row += 1
         
         self.HBox = gtk.HBox()
         self.VBox = gtk.VBox()
@@ -967,6 +975,7 @@ class IntDescListSetting(Setting):
         self.HBox.pack_start(self.Table, True, True)
         self.VBox.pack_start(self.Reset, False, False)
         self.Widget.add(self.HBox)
+        self.Box.pack_start(self.Frame)
 
     def _Read(self):
         for key, box in self.Checks:
@@ -984,7 +993,7 @@ class IntDescListSetting(Setting):
     def Attach(self, table, row):
         self.Widget.set_sensitive(not self.Setting.ReadOnly)
         self.Reset.set_sensitive(not self.Setting.ReadOnly)
-        table.attach(self.Widget, 0, 100, row, row+1, xpadding = 5)
+        table.attach(self.EBox, 0, 2, row, row+1, xpadding = 5)
 
 class IntFloatListSetting(ListSetting):
     def _ListInfo(self):
@@ -1052,30 +1061,27 @@ class IntFloatListSetting(ListSetting):
 class EditableActionSetting (Setting):
 
     def _Init (self, widget, action):
-        self.Custom = True
 
-        alignment = gtk.Alignment (1.0)
+        alignment = gtk.Alignment (0, 0.5)
         alignment.add (widget)
 
-        self.Widget = makeCustomSetting (self.Setting.ShortDesc,
-                                         self.Setting.Integrated,
-                                         alignment,
-                                         self.Reset)
+        self.Label.set_size_request(-1, -1)
+        self.Label.set_line_wrap(False)
 
         editButton = gtk.Button ()
         editButton.add (Image (name = gtk.STOCK_EDIT, type = ImageStock,
                                size = gtk.ICON_SIZE_BUTTON))
         editButton.connect ("clicked", self.RunEditDialog)
-        editAlign = gtk.Alignment (0, 0.5)
-        editAlign.set_padding (0, 0, 0, 10)
-        editAlign.add (editButton)
-        self.Widget.pack_start (editAlign, False, False)
-        pos = len (self.Widget.get_children ()) - 2
-        self.Widget.reorder_child (editAlign, pos)
 
         action = ActionImage (action)
-        self.Widget.pack_start (action, False, False)
-        self.Widget.reorder_child (action, 0)
+        self.Box.pack_start (action, False, False)
+        self.Box.pack_start(self.Label, True, True)
+        self.Box.pack_end (editButton, False, False)
+        self.Box.pack_end(alignment, False, False)
+
+
+        self.Widget = widget
+
 
     def RunEditDialog (self, widget):
         dlg = gtk.Dialog (_("Edit %s") % self.Setting.ShortDesc)
@@ -1118,7 +1124,6 @@ class KeySetting (EditableActionSetting):
 
         self.Button = SizedButton (minWidth = 100)
         self.Button.connect ("clicked", self.RunKeySelector)
-        Tooltips.set_tip (self.Button, self.Setting.LongDesc)
         self.SetButtonLabel ()
         
         EditableActionSetting._Init (self, self.Button, "keyboard")
@@ -1474,7 +1479,6 @@ class EdgeSetting (EditableActionSetting):
     current = ""
 
     def _Init (self):
-        self.Custom = True
 
         self.Button = SizedButton (minWidth = 100)
         self.Button.connect ("clicked", self.RunEdgeSelector)
@@ -1567,66 +1571,78 @@ class BellSetting (BoolSetting):
     def _Init (self):
         BoolSetting._Init (self)
         bell = ActionImage ("bell")
-        self.Widget.pack_start (bell, False, False)
-        self.Widget.reorder_child (bell, 0)
-
-def MakeSetting (setting):
-    if setting.Type == "Match":
-        return MatchSetting (setting)
-    if setting.Type == "String":
-        if len (setting.Hints) > 0:
-            if "file" in setting.Hints:
-                return FileStringSetting (setting)
-            elif "directory" in setting.Hints:
-                return FileStringSetting (setting, isDirectory=True)
-            else:
-                return StringSetting (setting)
+        self.Box.pack_start (bell, False, False)
+        self.Box.reorder_child (bell, 0)
+
+def MakeStringSetting (setting):
+
+    if setting.Hints:
+        if "file" in setting.Hints:
+            return FileStringSetting (setting)
+        elif "directory" in setting.Hints:
+            return FileStringSetting (setting, isDirectory=True)
         else:
             return StringSetting (setting)
-    elif setting.Type == "Bool":
-        return BoolSetting (setting)
-    elif setting.Type == "Int" and len (setting.Info[2].keys ()) > 0:
+    else:
+        return StringSetting (setting)
+
+def MakeIntFloatSetting (setting):
+
+    if setting.Type == "Int" and setting.Info[2]:
         return EnumSetting (setting)
-    elif setting.Type in ("Float", "Int"):
+    else:
         return IntFloatSetting (setting)
-    elif setting.Type == "Color":
-        return ColorSetting (setting)
-    elif setting.Type == "List":
-        if setting.Info[0] == "String" or setting.Info[0] == "Match":
-            if len (setting.Hints) > 0:
-                if "file" in setting.Hints:
-                    return FileListSetting (setting)
-                elif "directory" in setting.Hints:
-                    return FileListSetting (setting, isDirectory=True)
-                else:
-                    return StringMatchListSetting (setting)
+      
+def MakeListSetting (setting):
+
+    if setting.Info[0] == "String" or setting.Info[0] == "Match":
+        if setting.Hints:
+            if "file" in setting.Hints:
+                return FileListSetting (setting)
+            elif "directory" in setting.Hints:
+                return FileListSetting (setting, isDirectory=True)
             else:
                 return StringMatchListSetting (setting)
-        elif setting.Info[0] == "Int":
-            if len(setting.Info[1][2]) > 0:
-                return IntDescListSetting (setting)
-            else:
-                return IntFloatListSetting (setting)
-        elif setting.Info[0] == "Float":
-            return IntFloatListSetting (setting)
         else:
-            raise TypeError, _("Unhandled list type %s for %s") % \
-                              (setting.Info[0], setting.Name)
-    elif setting.Type == "Key":
-        return KeySetting (setting)
-    elif setting.Type == "Button":
-        return ButtonSetting (setting)
-    elif setting.Type == "Edge":
-        return EdgeSetting (setting)
-    elif setting.Type == "Bell":
-        return BellSetting (setting)
-    return None
+            return StringMatchListSetting (setting)
+    elif setting.Info[0] == "Int":
+        if setting.Info[1][2]:
+            return IntDescListSetting (setting)
+        else:
+            return IntFloatListSetting (setting)
+    elif setting.Info[0] == "Float":
+        return IntFloatListSetting (setting)
+    else:
+        raise TypeError, _("Unhandled list type %s for %s") % \
+                          (setting.Info[0], setting.Name)
+  
+SettingTypeDict = {
+    "Match": MatchSetting,
+    "String": MakeStringSetting,
+    "Bool": BoolSetting,
+    "Float": MakeIntFloatSetting,
+    "Int": MakeIntFloatSetting,
+    "Color": ColorSetting,
+    "List": MakeListSetting,
+    "Key": KeySetting,
+    "Button": ButtonSetting,
+    "Edge": EdgeSetting,
+    "Bell": BellSetting,
+}
+
+def MakeSetting(setting):
+
+    stype = SettingTypeDict.get(setting.Type, None)
+    if not stype:
+        return
+
+    return stype(setting)
 
 class SubGroupArea:
     def __init__(self, name, subGroup, filter=None):
         self.MySettings = []
         settings = FilterSettings(sorted(sum((v.values() for v in [subGroup.Display]+[subGroup.Screens[CurrentScreenNum]]), []), key=SettingKeyFunc), filter)
-        if name == '':
+        if not name:
             self.Widget = gtk.Table()
             self.Child = self.Widget
         else:
@@ -1639,7 +1655,7 @@ class SubGroupArea:
 
             # create a special widget for list subGroups
             if len(settings) > 1 and HasOnlyType(settings, 'List'):
-                multiList = MultiListSetting(settings)
+                multiList = MultiListSetting(Settings=settings)
                 multiList.Read()
                 multiList.Attach(self.Child, 0)
                 self.Empty = False
@@ -1650,14 +1666,14 @@ class SubGroupArea:
         self.Empty = True
         row = 0
         for setting in settings:
-            if not setting.Name == 'active_plugins':
+            if not (setting.Plugin.Name == 'core' and setting.Name == 'active_plugins'):
                 set = MakeSetting(setting)
                 if set is not None:
                     set.Read()
                     set.Attach(self.Child, row)
-                    self.MySettings = self.MySettings + [set]
+                    self.MySettings.append(set)
                     row = row+1
                     self.Empty = False
 
-        if name != '' and row < 4: # ahi hay magic numbers!
+        if name and row < 4: # ahi hay magic numbers!
             self.Expander.set_expanded(True)

Modified: fusion/compizconfig/ccsm/ccm/Utils.py
===================================================================
--- fusion/compizconfig/ccsm/ccm/Utils.py
+++ fusion/compizconfig/ccsm/ccm/Utils.py
@@ -46,21 +46,6 @@ def gtk_process_events ():
     while gtk.events_pending ():
         gtk.main_iteration ()
 
-def makeCustomSetting (desc, integrated, widget, reset):
-    box = gtk.HBox ()
-    label = gtk.Label (desc)
-    if integrated:
-        label.set_markup ("<span foreground=\"blue\">%s</span>" % desc)
-    align = gtk.Alignment (0, 0.5)
-    align.add (label)
-    widgetAlign = gtk.Alignment (0, 0.5)
-    widgetAlign.set_padding (0, 0, 0, 10)
-    widgetAlign.add (widget)
-    box.pack_start (align, True, True)
-    box.pack_start (widgetAlign, False, False)
-    box.pack_start (reset, False, False)
-    return box
-
 def getScreens():
     screens = []
     display = gtk.gdk.display_get_default()
@@ -225,13 +210,12 @@ class IdleSettingsParser:
             return not p.Initialized and p.Enabled
 
         self.Context = context
-        self.PluginList = filter (lambda p: FilterPlugin (p[1]),
-                                  self.Context.Plugins.items ())
+        self.PluginList = [p for p in self.Context.Plugins.items() if FilterPlugin(p[1])]
         
         gobject.timeout_add (200, self.Wait)
 
     def Wait(self):
-        if len (self.PluginList) == 0:
+        if not self.PluginList:
             return False
         
         gobject.idle_add (self.ParseSettings)
@@ -276,36 +260,37 @@ class Updater:
                 break
 
     def Update(self):
-        changed = self.Context.ProcessEvents()
-        if changed:
-            changedSettings = self.Context.ChangedSettings
-            if len (filter (lambda s :  s.Plugin.Name == "core" and \
-                                        s.Name == "active_plugins",
-                            changedSettings)):
-                map (lambda plugin: plugin.Read (), self.Plugins)
+        if self.Context.ProcessEvents():
+            changed = self.Context.ChangedSettings
+            if [s for s in changed if s.Plugin.Name == "core" and s.Name == "active_plugins"]:
+                for plugin in self.Plugins:
+                    plugin.Read ()
+
             for settingWidget in self.VisibleSettings:
                 # Remove already destroyed widgets
-                if not settingWidget.Widget.get_parent():
+                if not settingWidget.EBox.get_parent():
                     self.VisibleSettings.remove(settingWidget)
                 
-                # Exception for multi settings widgets (multi list widget, action page, etc.)
-                if settingWidget.Setting.__class__ != list:
-                    if settingWidget.Setting in changedSettings:
+                if settingWidget.Setting:
+                    if settingWidget.Setting in changed:
                         settingWidget.Read()
-                        changedSettings.remove(settingWidget.Setting)
-                else:
+                        changed.remove(settingWidget.Setting)
+                # Exception for multi settings widgets (multi list widget, action page, etc.)
+                elif settingWidget.Settings:
                     read = False
-                    for setting in settingWidget.Setting:
-                        if setting in changedSettings:
+                    for setting in settingWidget.Settings:
+                        if setting in changed:
                             read = True
-                            changedSettings.remove(setting)
+                            changed.remove(setting)
                     if read:
                         settingWidget.Read()
             # For removing non-visible settings
-            map (lambda s: changedSettings.remove (s),
-                 filter (lambda s: s in changedSettings, self.NotRemoved))
-            self.NotRemoved = changedSettings
-            self.Context.ChangedSettings = changedSettings
+            for setting in list(changed):
+                if setting in self.NotRemoved:
+                    changed.remove (setting)
+
+            self.NotRemoved = changed
+            self.Context.ChangedSettings = changed
 
         return True
 
@@ -345,26 +330,26 @@ def FilterSettings(settings, filter, run=0, singleRun=False):
 
     for setting in settings:
         # First run, only search in shortDesc and name
-        if run == 0 or (singleRun and run.count(0) != 0):
+        if run == 0 or (singleRun and 0 in run):
             shortDesc = setting.ShortDesc.lower()
             name = setting.Name.lower()
-            if shortDesc.find(filter) != -1:
+            if filter in shortDesc:
                 filteredSettings.append(setting)
                 continue
-            elif name.find(filter) != -1:
+            elif filter in name:
                 filteredSettings.append(setting)
                 continue
         # Then in longDesc
-        if run == 1 or (singleRun and run.count(1) != 0):
+        if run == 1 or (singleRun and 1 in run):
             longDesc = setting.LongDesc.lower()
-            if longDesc.find(filter) != -1:
+            if filter in longDesc:
                 filteredSettings.append(setting)
                 continue
         # Finally search in the option value
-        if run == 2 or (singleRun and run.count(2) != 0):
+        if run == 2 or (singleRun and 2 in run):
             value = ""
             # make sure enum settings work too
-            if setting.Type == 'Int' and len(setting.Info[2].keys()) > 0:
+            if setting.Type == 'Int' and setting.Info[2]:
                     value = sorted(setting.Info[2].items(), key=EnumSettingKeyFunc)[setting.Value][0]
                     value = value.lower()
             # also make sure intDesc settings work right
@@ -376,15 +361,15 @@ def FilterSettings(settings, filter, run=0, singleRun=False):
                 value = value.lower()
             else:
                 value = str(setting.Value).lower()
-            if value.find(filter) != -1:
+            if filter in value:
                 filteredSettings.append(setting)
 
     # Nothing was found, search also in the longDesc/value
-    if len(filteredSettings) == 0 and run < 2 and not singleRun:
+    if not filteredSettings and run < 2 and not singleRun:
         return FilterSettings(settings, filter, run+1, False)
 
     return filteredSettings
 
-def HasOnlyType (settings, type):
-    f = filter (lambda s: s.Type != type, settings)
-    return len (settings) > 0 and len (f) == 0
+def HasOnlyType (settings, stype):
+    return settings and not [s for s in settings if s.Type != stype]
+


More information about the commits mailing list