From f9a4a36b341b1d866269f568e86cbf63b90b5f63 Mon Sep 17 00:00:00 2001 From: Necoro <> Date: Mon, 14 Jan 2008 16:45:06 +0000 Subject: r609@Devoty: necoro | 2008-01-14 17:04:38 +0100 Allowed '-' and '_' in key names. Also use group names instead of their number. r610@Devoty: necoro | 2008-01-14 17:05:42 +0100 Disabled saving of the queues r611@Devoty: necoro | 2008-01-14 17:08:53 +0100 Added the possibility to permanently en-/disable plugins r612@Devoty: necoro | 2008-01-14 17:14:09 +0100 adjust changelog and translations r613@Devoty: necoro | 2008-01-14 17:40:53 +0100 Dropdown should be localized too --- portato/gui/gtk/windows.py | 65 +++++++++++++++++++++++++++++++++++++++------- 1 file changed, 55 insertions(+), 10 deletions(-) (limited to 'portato/gui/gtk/windows.py') diff --git a/portato/gui/gtk/windows.py b/portato/gui/gtk/windows.py index 485f123..7ec6157 100644 --- a/portato/gui/gtk/windows.py +++ b/portato/gui/gtk/windows.py @@ -23,7 +23,7 @@ from gettext import lgettext as _ # our backend stuff from ... import get_listener, plugin -from ...helper import debug, warning, error, unique_array +from ...helper import debug, warning, error, unique_array, N_ from ...session import Session from ...constants import CONFIG_LOCATION, VERSION, APP_ICON from ...backend import flags, system @@ -56,6 +56,11 @@ class AboutWindow (AbstractDialog): class PluginWindow (AbstractDialog): + statsStore = gtk.ListStore(str) + + for s in (_("Disabled"), _("Temporarily enabled"), _("Enabled"), _("Temporarily disabled")): + statsStore.append([s]) + def __init__ (self, parent, plugins): """Constructor. @@ -67,7 +72,7 @@ class PluginWindow (AbstractDialog): self.changedPlugins = {} view = self.tree.get_widget("pluginList") - self.store = gtk.ListStore(str,str,bool) + self.store = gtk.ListStore(str,str,str) view.set_model(self.store) @@ -78,25 +83,40 @@ class PluginWindow (AbstractDialog): col = gtk.TreeViewColumn(_("Authors"), cell, text = 1) view.append_column(col) - bcell = gtk.CellRendererToggle() - bcell.connect("toggled", self.cb_plugin_toggled) - col = gtk.TreeViewColumn(_("Enabled"), bcell, active = 2) + ccell = gtk.CellRendererCombo() + ccell.set_property("model", self.statsStore) + ccell.set_property("text-column", 0) + ccell.set_property("has-entry", False) + ccell.set_property("editable", True) + ccell.connect("edited", self.cb_status_changed) + col = gtk.TreeViewColumn(_("Status"), ccell, markup = 2) view.append_column(col) - for p in ((""+p.name+"", p.author, p.is_enabled()) for p in plugins): + for p in ((""+p.name+"", p.author, _(self.statsStore[p.status][0])) for p in plugins): self.store.append(p) self.window.show_all() - def cb_plugin_toggled (self, cell, path): + def cb_status_changed (self, cell, path, new_text): path = int(path) - self.store[path][2] = not self.store[path][2] + + self.store[path][2] = "%s" % new_text + + # convert string to constant + const = None + for num, val in enumerate(self.statsStore): + if val[0] == new_text: + const = num + break - self.changedPlugins.update({self.plugins[path] : self.store[path][2]}) + assert (const is not None) + + self.changedPlugins.update({self.plugins[path] : const}) + debug("new changed plugins: %s => %d", self.plugins[path].name, const) def cb_ok_clicked (self, btn): for plugin, val in self.changedPlugins.iteritems(): - plugin.set_option("disabled", not val) + plugin.status = val self.close() return True @@ -1053,6 +1073,31 @@ class MainWindow (Window): ([("merge", "queue"), ("unmerge", "queue"), ("oneshot", "queue")], load_queue, save_queue) ]) + def save_plugin (p): + def _save (): + stat_on = p.status >= p.STAT_ENABLED + hard_on = not p.get_option("disabled") + + if stat_on != hard_on: + return int(stat_on) + else: + return "" + return _save + + def load_plugin (p): + def _load(val): + if val: + p.status = int(val)*2 + + return _load + + queue = plugin.get_plugin_queue().get_plugins() + if queue is None: + queue = [] + + for p in queue: + self.session.add_handler(([(p.name.replace(" ","_"), "plugins")], load_plugin(p), save_plugin(p))) + self.session.load() def jump_to (self, cp, version = None): -- cgit v1.2.3-54-g00ecf