[meld] preferences: Update syntax scheme preference to use combo helper



commit 255a8da307b9d68415e71744ff178ba1ff82b69b
Author: Kai Willadsen <kai willadsen gmail com>
Date:   Wed Oct 8 05:50:58 2014 +1000

    preferences: Update syntax scheme preference to use combo helper

 data/ui/preferences.ui |   18 +++++++++++++++++-
 meld/preferences.py    |   30 ++++++++++--------------------
 2 files changed, 27 insertions(+), 21 deletions(-)
---
diff --git a/data/ui/preferences.ui b/data/ui/preferences.ui
index 8452ab0..b246af7 100644
--- a/data/ui/preferences.ui
+++ b/data/ui/preferences.ui
@@ -15,6 +15,14 @@
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
   </object>
+  <object class="GtkListStore" id="syntaxschemestore">
+    <columns>
+      <!-- column-name id -->
+      <column type="gchararray"/>
+      <!-- column-name name -->
+      <column type="gchararray"/>
+    </columns>
+  </object>
   <object class="GtkListStore" id="fileorderstore">
     <columns>
       <!-- column-name id -->
@@ -494,9 +502,17 @@
                                   </packing>
                                 </child>
                                 <child>
-                                  <object class="GtkComboBox" id="combobox_style_scheme">
+                                  <object class="GSettingsStringComboBox" id="combobox_style_scheme">
                                     <property name="visible">True</property>
                                     <property name="can_focus">False</property>
+                                    <property name="model">syntaxschemestore</property>
+                                    <property name="gsettings-column">0</property>
+                                    <child>
+                                      <object class="GtkCellRendererText" id="syntax_scheme_renderer"/>
+                                      <attributes>
+                                        <attribute name="text">1</attribute>
+                                      </attributes>
+                                    </child>
                                   </object>
                                   <packing>
                                     <property name="expand">True</property>
diff --git a/meld/preferences.py b/meld/preferences.py
index 16c7f42..1c0cd1a 100644
--- a/meld/preferences.py
+++ b/meld/preferences.py
@@ -145,8 +145,11 @@ class GSettingsComboBox(Gtk.ComboBox):
             self.set_property('active', idx)
 
     def _active_changed(self, obj, val):
+        active_iter = self.get_active_iter()
+        if active_iter is None:
+            return
         column = self.get_property('gsettings-column')
-        value = self.get_model()[self.get_active_iter()][column]
+        value = self.get_model()[active_iter][column]
         self.set_property('gsettings-value', value)
 
 
@@ -181,7 +184,8 @@ class PreferencesDialog(Component):
                            ["adjustment1", "adjustment2", "fileorderstore",
                             "sizegroup_editor", "timestampstore",
                             "mergeorderstore", "sizegroup_file_order_labels",
-                            "sizegroup_file_order_combos"])
+                            "sizegroup_file_order_combos",
+                            'syntaxschemestore'])
         self.widget.set_transient_for(parent)
 
         bindings = [
@@ -241,28 +245,14 @@ class PreferencesDialog(Component):
         self.combo_merge_order.bind_to('vc-merge-file-order')
 
         # Fill color schemes
-        liststore = Gtk.ListStore(str)
         manager = GtkSource.StyleSchemeManager.get_default()
-        scheme_ids = GtkSource.StyleSchemeManager.get_scheme_ids(manager)
-        for scheme in scheme_ids:
-            liststore.append([scheme])
-        self.combobox_style_scheme.set_model(liststore)
-        cell = Gtk.CellRendererText()
-        self.combobox_style_scheme.pack_start(cell, True)
-        self.combobox_style_scheme.add_attribute(cell, 'text',0)
-
-        style_scheme = settings.get_string('style-scheme')
-        for idx,scheme in enumerate(scheme_ids):
-            if scheme == style_scheme:
-                self.combobox_style_scheme.set_active(idx)
-
-        self.combobox_style_scheme.connect("changed", self.on_combobox_style_scheme_changed)
+        for scheme_id in manager.get_scheme_ids():
+            scheme = manager.get_scheme(scheme_id)
+            self.syntaxschemestore.append([scheme_id, scheme.get_name()])
+        self.combobox_style_scheme.bind_to('style-scheme')
 
         self.widget.show()
 
-    def on_combobox_style_scheme_changed(self, combobox):
-        settings.set_string('style-scheme', combobox.get_model()[combobox.get_active()][0])
-
     def on_checkbutton_wrap_text_toggled(self, button):
         if not self.checkbutton_wrap_text.get_active():
             wrap_mode = Gtk.WrapMode.NONE


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