[gnome-tweak-tool] the search works
- From: John Stowers <jstowers src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-tweak-tool] the search works
- Date: Sun, 18 Aug 2013 19:47:43 +0000 (UTC)
commit db0605f9e3d8004706888b539cf5db24c9bf7e80
Author: Alex Muñoz <alexmudoz gmail com>
Date: Mon Jul 29 05:08:56 2013 -0400
the search works
gtweak/tweakmodel.py | 17 ++++++++++++-----
gtweak/tweakview.py | 41 ++++++++++++++++++++++++++++-------------
2 files changed, 40 insertions(+), 18 deletions(-)
---
diff --git a/gtweak/tweakmodel.py b/gtweak/tweakmodel.py
index a803d77..1bd044b 100644
--- a/gtweak/tweakmodel.py
+++ b/gtweak/tweakmodel.py
@@ -71,10 +71,8 @@ class Tweak:
def search_matches(self, txt):
if self._search_cache == None:
- self._search_cache = set([i.strip(" .,\n'\"").lower() for j in (
- self.name.split(' '),self.description.split(' ')) for i in j])
-
- return txt.strip().lower() in self._search_cache
+ self._search_cache = self.name.lower() + " " + self.description.lower()
+ return txt in self._search_cache
def set_notify_cb(self, func):
self._notify_cb = func
@@ -200,7 +198,16 @@ class TweakModel(Gtk.ListStore):
group.set_tweaks(tweak)
def search_matches(self, txt):
- return (t for t in self.tweaks if t.search_matches(txt))
+ tweaks = []
+ groups = []
+
+ for g in self.tweak_groups:
+ for t in g.tweaks:
+ if t.search_matches(txt):
+ tweaks.append(t)
+ if not g.name in groups:
+ groups.append(g.name)
+ return tweaks, groups
def get_tweakgroup_iter(self, name):
return self._tweak_group_iters[name]
diff --git a/gtweak/tweakview.py b/gtweak/tweakview.py
index dbaa3af..e5033cd 100644
--- a/gtweak/tweakview.py
+++ b/gtweak/tweakview.py
@@ -68,8 +68,8 @@ class TweakView:
self._model.load_tweaks()
groups = self._model._tweak_group_names.keys()
groups = sorted(groups)
- listbox = self.init_listbox(groups)
- leftbox.pack_start(listbox, True, True, 0)
+ self.listbox = self.init_listbox(groups)
+ leftbox.pack_start(self.listbox, True, True, 0)
#make sure the tweak background is the correct color
ctx = builder.get_object('tweak_viewport').get_style_context ()
@@ -106,8 +106,18 @@ class TweakView:
else:
t.widget.hide()
- def select_none(self):
- print "filter"
+ def on_list_changed(self, groups):
+ self.listbox.set_filter_func(self.on_list_filtered,groups)
+ selected = self.listbox.get_selected_row().get_child().get_text()
+ if groups and not selected in groups:
+ index = sorted(self._model._tweak_group_names.keys()).index(groups[0])
+ row = self.listbox.get_row_at_index(index)
+ self.listbox.select_row(row)
+
+ def on_list_filtered(self, row, groups):
+ lbl = row.get_child()
+ if lbl.get_text() in groups:
+ return row
def _on_tweak_notify_response(self, info, response, func):
self._detail_vbox.remove(info)
@@ -147,13 +157,16 @@ class TweakView:
info.show_all()
def _on_search(self, txt):
- tweaks = self._model.search_matches(txt)
+ tweaks, group = self._model.search_matches(txt)
self.show_only_tweaks(tweaks)
- self.select_none()
+ self.on_list_changed(group)
self._notebook.set_current_page(1)
def _on_search_cancel(self):
- self._notebook.set_current_page(0)
+ self.stack.show_all()
+ groups = self._model._tweak_group_names.keys()
+ groups = sorted(groups)
+ self.on_list_changed(groups)
def _on_pre_selection_change(self):
self._notebook.set_current_page(0)
@@ -183,7 +196,8 @@ class TweakView:
if revealer.get_reveal_child():
revealer.set_reveal_child(False)
entry.set_text("")
- btn.grab_focus()
+ btn.grab_focus()
+ self._on_search_cancel()
else:
revealer.set_reveal_child(True)
entry.grab_focus()
@@ -197,13 +211,14 @@ class EntryManager:
self._entry = search_entry
self._search_cb = search_cb
self._search_cancel_cb = search_cancel_cb
- self._entry.connect("changed", self._on_changed)
+ self._entry.connect("changed", self._search)
self._entry.connect("key-press-event", self._on_key_press)
self._entry.connect("icon-release", self._on_clear_icon_release)
- self._on_changed(self._entry)
+ self._on_changed()
- def _search(self):
- txt = self._entry.get_text()
+ def _search(self, entry):
+ txt = entry.get_text()
+ self._on_changed()
if txt:
self._search_cb(txt)
@@ -211,7 +226,7 @@ class EntryManager:
self._search_cancel_cb()
self._entry.set_text("")
- def _on_changed(self, entry):
+ def _on_changed(self):
if not self._entry.get_text():
self._entry.set_properties(
secondary_icon_name="edit-find" + EntryManager.SYMBOLIC,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]