class SpinButton(Gtk.SpinButton): def __init__(self, key, min=0, max=0, step=0, backend=GConf): if backend == GConf: self.setting = GconfSetting(key=key, type=int) else: #TODO Gio pass adjust = Gtk.Adjustment(self.setting.get_value(), min, max, step) gobject.GObject.__init__(self, adjustment=adjust) self.connect('value-changed', self.on_value_changed) def on_value_changed(self, widget): self.setting.set_value(widget.get_value())
class Scale(Gtk.HScale): def __init__(self, key=None, min=None, max=None, digits=0, reversed=False, backend=GConf): gobject.GObject.__init__(self) if digits > 0: type = float else: type = int if backend == GConf: self.setting = GconfSetting(key=key, type=type) else: #TODO Gio pass if reversed: self._reversed = True else: self._reversed = False self.set_range(min, max) self.set_digits(digits) self.set_value_pos(Gtk.PositionType.RIGHT) if self._reversed: self.set_value(max - self.setting.get_value()) else: self.set_value(self.setting.get_value()) self.connect("value-changed", self.on_value_changed) def on_value_changed(self, widget, data=None): if self._reversed: self.setting.set_value(100 - widget.get_value()) else: self.setting.set_value(widget.get_value())
class ComboBox(Gtk.ComboBox): def __init__(self, key=None, texts=None, values=None, type="string", backend=GConf): gobject.GObject.__init__(self) if backend == GConf: self.setting = GconfSetting(key=key, type=str) else: #TODO Gio pass 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((text, 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("ComboBox value changed to %s" % text) self.setting.set_value(text)
def on_compositing_enabled(self, widget, prop): setting = GconfSetting("/apps/metacity/general/compositor_effects") setting.set_value(widget.get_active())