* src/GenericFilter.py: implement short-circuit if only rule is

Everyone
* src/NameDisplay.py: optimization
* src/PeopleModel.py: optimization of data building


svn: r5810
This commit is contained in:
Don Allingham
2006-01-20 21:43:40 +00:00
parent 997be85261
commit 77a4023f9e
4 changed files with 139 additions and 124 deletions

View File

@@ -28,11 +28,15 @@
from gettext import gettext as _
import time
import cgi
import sets
import sys
import traceback
import locale
try:
set()
except:
from sets import Set as set
#-------------------------------------------------------------------------
#
# GTK modules
@@ -132,7 +136,7 @@ class PeopleModel(gtk.GenericTreeModel):
if not self.db.is_open():
return
if data_filter:
if data_filter and not data_filter.is_empty():
keys = data_filter.apply(self.db)
if self.invert_result:
handle_list = self.db.get_person_handles(sort_handles=False)
@@ -142,7 +146,7 @@ class PeopleModel(gtk.GenericTreeModel):
else:
keys = self.db.get_person_handles(sort_handles=False)
flist = sets.Set(keys)
flist = set(keys)
if skip and skip in flist:
flist.remove(skip)
@@ -152,15 +156,17 @@ class PeopleModel(gtk.GenericTreeModel):
ngn = NameDisplay.displayer.name_grouping_name
nsn = NameDisplay.displayer.sorted_name
while node:
if node[0] in flist:
primary_name = node[1][_NAME_COL]
surname = unicode(ngn(self.db,primary_name))
self.sortnames[node[0]] = unicode(nsn(primary_name))
if self.temp_sname_sub.has_key(surname):
self.temp_sname_sub[surname].append(node[0])
else:
self.temp_sname_sub[surname] = [node[0]]
n,d = node
if n in flist:
primary_name = d[_NAME_COL]
surname = ngn(self.db,primary_name)
self.sortnames[n] = nsn(primary_name)
try:
self.temp_sname_sub[surname].append(n)
except:
self.temp_sname_sub[surname] = [n]
node = cursor.next()
cursor.close()
@@ -169,11 +175,9 @@ class PeopleModel(gtk.GenericTreeModel):
self.build_sub_entry(name)
def build_sub_entry(self,name):
slist = map(lambda x: (self.sortnames[x],x),self.temp_sname_sub[name])
slist.sort(self.byname)
entries = map(lambda x: x[1], slist)
self.temp_sname_sub[name].sort(locale.strcoll)
val = 0
for person_handle in entries:
for person_handle in self.temp_sname_sub[name]:
tpl = (name,val)
self.temp_iter2path[person_handle] = tpl
self.temp_path2iter[tpl] = person_handle
@@ -185,9 +189,6 @@ class PeopleModel(gtk.GenericTreeModel):
self.path2iter = self.temp_path2iter
self.sname_sub = self.temp_sname_sub
def byname(self,f,s):
return locale.strcoll(f[0],s[0])
def on_get_flags(self):
'''returns the GtkTreeModelFlags for this particular type of model'''
return gtk.TREE_MODEL_ITERS_PERSIST