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) elif backend == 'compiz': self._setting = CompizSetting(key=key) 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 __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) elif backend == 'gsettings': self._setting = GSetting(key=key, type=str) elif backend == 'config': self._setting = ConfigSetting(key=key, type=str) elif backend == 'compiz': self._setting = CompizSetting(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 zip(texts, values): iter = model.append((text, value)) if current_value == value: self.set_active_iter(iter) self.connect("changed", self.value_changed_cb)
def on_edge_changed(self, widget, plugin): edges = ['TopLeft', 'TopRight', 'BottomLeft', 'BottomRight'] edges.remove(widget.edge) if plugin: for edge in edges: edge_combobox = getattr(self, edge) if edge_combobox.get_current_plugin() == plugin: edge_combobox.set_to_none() break setting = CompizSetting("%s.%s" % (widget.get_current_plugin(), widget.get_current_key())) setting.set_value(widget.edge)
def on_changed(self, widget): plugin = self.get_current_plugin() key = self.get_current_key() log.debug("ComboBox changed: from %s to %s" % (self.old_plugin, plugin)) if self.old_plugin: for name, key, text in self.edge_settings: if name == self.old_plugin: log.debug('%s has to unset (%s)' % (name, key)) setting = CompizSetting("%s.%s" % (name, key)) setting.set_value('') break self.old_plugin = plugin self.old_key = key log.debug('%s changed to "%s"' % (widget.edge, plugin)) self.emit('edge_changed', plugin)
def __init__(self, edge): ''' edge will be: TopLeft, BottomLeft ''' GObject.GObject.__init__(self) model = Gtk.ListStore(GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING) renderer = Gtk.CellRendererText() self.pack_start(renderer, False) self.add_attribute(renderer, 'text', self.COLUMN_TEXT) self.set_model(model) self.edge = edge enable = False count = 0 for name, key, text in self.edge_settings: if CompizPlugin.is_available(name, key): model.append((name, key, text)) setting = CompizSetting("%s.%s" % (name, key)) log.debug("CompizSetting: %s, value: %s, key: %s" % \ (name, setting.get_value(), edge)) if setting.get_value() == edge: enable = True self.old_plugin = name self.old_key = key self.set_active(count) log.info("The %s is holding %s" % (edge, name)) count = count + 1 model.append(('', '', '-')) if not enable: self.set_active(count) self.max_index = count self.connect("changed", self.on_changed)
class ComboBox(Gtk.ComboBox): def __init__(self, key=None, texts=None, values=None, type=str, backend='gconf'): GObject.GObject.__init__(self) if backend == 'gconf': self._setting = GconfSetting(key=key, type=str) elif backend == 'gsettings': self._setting = GSetting(key=key, type=type) elif backend == 'config': self._setting = ConfigSetting(key=key, type=str) elif backend == 'compiz': self._setting = CompizSetting(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 zip(texts, values): 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 __init__(self, **kwargs): key = kwargs['key'] backend = kwargs['backend'] default = kwargs['default'] type = kwargs['type'] if backend == 'gconf': self._setting = GconfSetting(key=key, default=default, type=type) elif backend == 'gsettings': self._setting = GSetting(key=key, default=default, type=type) elif backend == 'config': self._setting = ConfigSetting(key=key, type=type) elif backend == 'compiz': self._setting = CompizSetting(key=key) elif backend == 'systemconfig': self._setting = SystemConfigSetting(key=key, default=default, type=type) if hasattr(self._setting, 'connect_notify') and \ hasattr(self, 'on_value_changed'): log.debug("Connect the setting notify to on_value_changed: %s" % key) self.get_setting().connect_notify(self.on_value_changed)