[kupfer: 20/31] Rank favorites up and display a star
- From: Ulrik Sverdrup <usverdrup src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [kupfer: 20/31] Rank favorites up and display a star
- Date: Thu, 31 Dec 2009 12:56:08 +0000 (UTC)
commit d759c0bb476180d9d818b8ae547eeab0364dc1d9
Author: Ulrik Sverdrup <ulrik sverdrup gmail com>
Date: Wed Dec 30 20:18:18 2009 +0100
Rank favorites up and display a star
kupfer/browser.py | 3 +++
kupfer/learn.py | 17 ++++++++++++++---
kupfer/plugin/favorites.py | 5 +++++
3 files changed, 22 insertions(+), 3 deletions(-)
---
diff --git a/kupfer/browser.py b/kupfer/browser.py
index 7a95ab6..bede25a 100644
--- a/kupfer/browser.py
+++ b/kupfer/browser.py
@@ -16,6 +16,7 @@ from kupfer import data, icons, scheduler, relevance
from kupfer import interface
from kupfer import keybindings
from kupfer import pretty
+from kupfer import learn
_escape_table = {
@@ -192,6 +193,8 @@ class LeafModel (object):
info = u""
if hasattr(leaf, "has_content") and leaf.has_content():
info = content_mark
+ if learn.is_favorite(leaf):
+ info += u"\N{BLACK STAR}"
return info
def get_rank_str(self, rank):
# Display rank empty instead of 0 since it looks better
diff --git a/kupfer/learn.py b/kupfer/learn.py
index ce28a3d..c371615 100644
--- a/kupfer/learn.py
+++ b/kupfer/learn.py
@@ -63,6 +63,7 @@ class Learning (object):
return True
_register = {}
+_favorites = set()
def record_search_hit(obj, key=u""):
"""
@@ -80,19 +81,20 @@ def get_record_score(obj, key=u""):
bonus score is given for @key matches
"""
name = repr(obj)
+ fav = 20 * (name in _favorites)
if name not in _register:
- return 0
+ return fav
mns = _register[name]
if not key:
cnt = mns.get_count()
- return 50 * (1 - 1.0/(cnt + 1))
+ return fav + 50 * (1 - 1.0/(cnt + 1))
stats = mns.get_mnemonics()
closescr = sum(stats[m] for m in stats if m.startswith(key))
mnscore = 30 * (1 - 1.0/(closescr + 1))
exact = stats.get(key, 0)
mnscore += 50 * (1 - 1.0/(exact + 1))
- return mnscore
+ return fav + mnscore
def _prune_register():
"""
@@ -152,3 +154,12 @@ def finish():
_prune_register()
filepath = config.save_config_file(mnemonics_filename)
Learning._pickle_register(_register, filepath)
+
+def add_favorite(obj):
+ _favorites.add(repr(obj))
+
+def remove_favorite(obj):
+ _favorites.discard(repr(obj))
+
+def is_favorite(obj):
+ return repr(obj) in _favorites
diff --git a/kupfer/plugin/favorites.py b/kupfer/plugin/favorites.py
index 22616bf..f3ce588 100644
--- a/kupfer/plugin/favorites.py
+++ b/kupfer/plugin/favorites.py
@@ -4,6 +4,7 @@ import weakref
from kupfer.objects import Leaf, Source, Action, PicklingHelperMixin
from kupfer import utils, objects, pretty
from kupfer import puid
+from kupfer import learn
__kupfer_name__ = _("Favorites")
__kupfer_sources__ = ("FavoritesSource", )
@@ -85,6 +86,7 @@ class FavoritesSource (Source, PicklingHelperMixin):
cls.instance._add(itm)
def _add(self, itm):
+ learn.add_favorite(itm)
self.favorites.append(itm)
self.references.append(puid.get_unique_id(itm))
self.mark_for_update()
@@ -101,6 +103,7 @@ class FavoritesSource (Source, PicklingHelperMixin):
cls.instance._remove(itm)
def _remove(self, itm):
+ learn.remove_favorite(itm)
self.favorites.remove(itm)
id_ = puid.get_unique_id(itm)
if id_ in self.references:
@@ -115,6 +118,8 @@ class FavoritesSource (Source, PicklingHelperMixin):
def get_items(self):
self._update_items()
+ for fav in self.favorites:
+ learn.add_favorite(fav)
return reversed(self.favorites)
def get_description(self):
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]