class GconfComboBox(gtk.ComboBox): def __init__(self, key=None, texts=None, values=None): super(GconfComboBox, self).__init__() self.__setting = GconfSetting(key=key) model = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING) self.set_model(model) cell = gtk.CellRendererText() self.pack_start(cell, True) self.add_attribute(cell, 'text', 0) current_value = self.__setting.get_value() for text, value in dict(zip(texts, values)).items(): iter = model.append(None) model.set(iter, 0, text, 1, value) if current_value == value: self.set_active_iter(iter) self.connect("changed", self.value_changed_cb) def value_changed_cb(self, widget): iter = widget.get_active_iter() text = self.get_model().get_value(iter, 1) log.debug("GconfComboBox value changed to %s" % text) self.__setting.get_client().set_value(self.__setting.get_key(), text)
class GconfComboBox(gtk.ComboBox): def __init__(self, key=None, texts=None, values=None, type="string"): super(GconfComboBox, self).__init__() self.__setting = GconfSetting(key=key) if type == 'int': model = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_INT) else: model = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING) self.set_model(model) cell = gtk.CellRendererText() self.pack_start(cell, True) self.add_attribute(cell, 'text', 0) current_value = self.__setting.get_value() for text, value in dict(zip(texts, values)).items(): iter = model.append(None) model.set(iter, 0, text, 1, value) if current_value == value: self.set_active_iter(iter) self.connect("changed", self.value_changed_cb) def value_changed_cb(self, widget): iter = widget.get_active_iter() text = self.get_model().get_value(iter, 1) log.debug("GconfComboBox value changed to %s" % text) self.__setting.get_client().set_value(self.__setting.get_key(), text)
class GconfEntry(gtk.Entry): def __init__(self, key=None, default=None): gtk.Entry.__init__(self) self.__setting = GconfSetting(key=key, default=default, type=str) string = self.__setting.get_value() if string: self.set_text(string) else: self.set_text(_("Unset")) def is_changed(self): return self.get_string_value() != self.get_text() def get_string_value(self): return self.__setting.get_value() def connect_activate_signal(self): self.connect('activate', self.on_edit_finished_cb) def get_gsetting(self): return self.__setting def reset(self): self.set_text(self.get_string_value()) def on_edit_finished_cb(self, widget): string = self.get_text() client = self.__setting.get_client() key = self.__setting.get_key() if string: client.set_string(key, self.get_text()) else: client.unset(key) self.set_text(_("Unset"))
class GconfCheckButton(gtk.CheckButton): def __init__(self, label=None, key=None, default=None, tooltip=None): super(GconfCheckButton, self).__init__() self.__setting = GconfSetting(key=key, default=default, type=bool) self.set_label(label) self.set_active(self.__setting.get_value()) if tooltip: self.set_tooltip_text(tooltip) self.__setting.get_client().notify_add(key, self.value_changed) self.connect('toggled', self.button_toggled) def value_changed(self, client, id, entry, data=None): self.set_active(self.__setting.get_value()) def button_toggled(self, widget, data=None): self.__setting.set_value(self.get_active())