Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > cd45f74464958f826608c011973ec584 > files > 2

rhythmbox-equalizer-1.4-1.fc14.src.rpm

--- rhythmbox/plugins/rbeq/equalizer.py.old	2010-05-30 13:25:30.000000000 +0100
+++ rhythmbox/plugins/rbeq/equalizer.py	2010-05-30 19:40:39.000000000 +0100
@@ -24,18 +24,26 @@ import gst
 import pygtk
 import gtk
 import gconf
+import gobject
 
 gconf_str = "/apps/rhythmbox/plugins/rbeq/last_values"
+last_preset = "/apps/rhythmbox/plugins/rbeq/last_preset"
 
 class Equalizer:
-    presetListStore = gtk.ListStore(None)
+    presetListStore = gtk.ListStore(gobject.TYPE_STRING)
     sliders = []
+    combo = gtk.ComboBoxEntry()
     def __init__(self):
         self.equ = gst.element_factory_make("equalizer-10bands")
         self.conf_client = gconf.client_get_default()
         try:
+            preset= self.conf_client.get_string(last_preset)
+        except RuntimeError:
+            self.conf_client.set_string(last_preset, "")
+        try:
             level_str = self.conf_client.get_string(gconf_str)
             self.current_levels = list(float(i) for i in level_str.split(","))
+            self.update_preset_list()
         except AttributeError:
             lst = list(str(0) for i in range(0,10))
             values = ",".join(lst)
@@ -60,8 +68,10 @@ class Equalizer:
     def preset_changed(self, preset_combo):
         model = preset_combo.get_model()
         current_sel = preset_combo.get_active_iter()
-        selected = model.get_value(current_sel,0)
-        gst.Preset.load_preset(self.get_eq(), selected)
+        if current_sel != None :
+            selected = model.get_value(current_sel,0)
+            gst.Preset.load_preset(self.get_eq(), selected)
+            self.conf_client.set_string(last_preset, selected)
     
     def set_initial_levels(self):
         self.change_levels(self.get_current_levels())
@@ -87,6 +97,7 @@ class Equalizer:
     def add_preset(self, dialog, response,rb_context,entry):
         if response == gtk.RESPONSE_ACCEPT:
             gst.Preset.save_preset(self.get_eq(),entry.get_text())
+            self.conf_client.set_string(last_preset,entry.get_text())
             self.update_preset_list()
         dialog.destroy()
 
@@ -96,6 +107,7 @@ class Equalizer:
         val = model.get_value(sel, 0)
         gst.Preset.delete_preset(self.get_eq(), val)
         self.update_preset_list()
+        preset_combo.set_active(0)
 
     def confirm_save(self, calling_btn, rb_context, parent):
         save_dialog = gtk.Dialog("Save Preset", parent, 
@@ -115,9 +127,11 @@ class Equalizer:
     def update_preset_list(self):
         self.presetListStore.clear()
         names = self.read_presets()
-        for name in names:
+        for i,name in zip(range(len(names)),names):
             iter = self.presetListStore.append()
             self.presetListStore.set(iter,0,name)
+            if name == self.conf_client.get_string(last_preset) :
+                self.combo.set_active(i)
 
     def set_dialog(self,action, rb_context):
         builder = gtk.Builder()
@@ -132,24 +146,25 @@ class Equalizer:
                 self.sliders)
             self.sliders[i].set_value(lvl[i])
         self.presetListStore = builder.get_object("presetListStore")
-        self.update_preset_list()
 
-        combo = builder.get_object("presetCombo")
+        self.combo = builder.get_object("presetCombo")
         cell = gtk.CellRendererText()
         cell.set_fixed_height_from_font(1)
-        combo.pack_start(cell,False)
-        combo.add_attribute(cell, 'text',0)
-        combo.set_active(0)
+        self.combo.pack_start(cell,False)
+        self.combo.add_attribute(cell, 'text',0)
+        if self.conf_client.get_string(last_preset) == "" :
+            self.combo.set_active(0)
 
-        combo.connect("changed", self.preset_changed)
-        combo.connect("changed", self.update_sliders)
+        self.combo.connect("changed", self.preset_changed)
+        self.combo.connect("changed", self.update_sliders)
 
         # Set Preset Button actions
         del_preset_btn = builder.get_object("deletePresetBtn")
         del_preset_btn.connect("clicked", self.delete_preset, 
-            rb_context, combo)
+            rb_context, self.combo)
         save_preset_btn = builder.get_object("savePresetBtn")    
         save_preset_btn.connect("clicked", self.confirm_save, 
             rb_context, dialog)
+        self.update_preset_list()
         dialog.show()