--- 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()