From 8f80ed453d9fba85d8b2cb2dcbbcdbc4c27b66a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20B=C4=99dkowski?= Date: Sun, 24 Jan 2010 10:04:47 +0100 Subject: [PATCH] ui.preferences: add filter entry - simple filtered plugin list by name or description --- data/preferences.ui | 17 +++++++++++++++-- kupfer/ui/preferences.py | 33 ++++++++++++++++++++++++--------- 2 files changed, 39 insertions(+), 11 deletions(-) diff --git a/data/preferences.ui b/data/preferences.ui index a53d382..6b4aee0 100644 --- a/data/preferences.ui +++ b/data/preferences.ui @@ -311,6 +311,19 @@ True vertical + + True + True + + + + + False + False + 0 + + + True True @@ -322,7 +335,7 @@ - 0 + 1 @@ -335,7 +348,7 @@ False False 5 - 1 + 2 diff --git a/kupfer/ui/preferences.py b/kupfer/ui/preferences.py index ff50932..62700be 100644 --- a/kupfer/ui/preferences.py +++ b/kupfer/ui/preferences.py @@ -41,6 +41,7 @@ class PreferencesWindowController (pretty.OutputMixin): self.buttonremovedirectory = builder.get_object("buttonremovedirectory") checkautostart = builder.get_object("checkautostart") checkstatusicon = builder.get_object("checkstatusicon") + self.entry_plugins_filter = builder.get_object('entry_plugins_filter') setctl = settings.GetSettingsController() self.entrykeybinding.set_text(setctl.get_keybinding()) @@ -90,15 +91,7 @@ class PreferencesWindowController (pretty.OutputMixin): self.plugin_info = utils.locale_sort(plugins.get_plugin_info(), key= lambda rec: rec["localized_name"]) - for info in self.plugin_info: - plugin_id = info["name"] - if setctl.get_plugin_is_hidden(plugin_id): - continue - enabled = setctl.get_plugin_enabled(plugin_id) - name = info["localized_name"] - desc = info["description"] - text = u"%s" % name - self.store.append((plugin_id, enabled, "kupfer-object", text)) + self._show_plugin_list() self.output_debug("Standard Plugins: %d" % len(self.store)) self.table.show() self.pluglist_parent.add(self.table) @@ -511,6 +504,9 @@ class PreferencesWindowController (pretty.OutputMixin): it = self.dir_store.get_iter(curpath) self.remove_directory_model(it, store=True) + def on_entry_plugins_filter_changed(self, widget): + self._show_plugin_list() + def dir_table_cursor_changed(self, table): curpath, curcol = table.get_cursor() if not curpath or not self.dir_store: @@ -537,6 +533,25 @@ class PreferencesWindowController (pretty.OutputMixin): self.hide() return True + def _show_plugin_list(self): + ''' Refresh plugin list. ''' + self.store.clear() + setctl = settings.GetSettingsController() + name_filter = self.entry_plugins_filter.get_text().lower() + + for info in self.plugin_info: + plugin_id = info["name"] + if setctl.get_plugin_is_hidden(plugin_id): + continue + enabled = setctl.get_plugin_enabled(plugin_id) + name = info["localized_name"] + desc = info["description"] + text = u"%s" % name + + if not name_filter or name_filter in name.lower() \ + or name_filter in desc.lower(): + self.store.append((plugin_id, enabled, "kupfer-object", text)) + _preferences_window = None def GetPreferencesWindowController(): -- 1.6.6