Faster updates

svn: r326
This commit is contained in:
Don Allingham 2001-08-11 23:54:52 +00:00
parent 6f77576fd1
commit a382c66838
3 changed files with 140 additions and 63 deletions

View File

@ -3455,30 +3455,6 @@
</child> </child>
</widget> </widget>
<widget>
<class>GtkEntry</class>
<name>alt_last</name>
<can_focus>True</can_focus>
<editable>True</editable>
<text_visible>True</text_visible>
<text_max_length>0</text_max_length>
<text></text>
<child>
<left_attach>1</left_attach>
<right_attach>2</right_attach>
<top_attach>1</top_attach>
<bottom_attach>2</bottom_attach>
<xpad>3</xpad>
<ypad>3</ypad>
<xexpand>True</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
<widget> <widget>
<class>GtkScrolledWindow</class> <class>GtkScrolledWindow</class>
<name>scrolledwindow23</name> <name>scrolledwindow23</name>
@ -3736,8 +3712,8 @@ Very High
<child> <child>
<left_attach>1</left_attach> <left_attach>1</left_attach>
<right_attach>2</right_attach> <right_attach>2</right_attach>
<top_attach>0</top_attach> <top_attach>1</top_attach>
<bottom_attach>1</bottom_attach> <bottom_attach>2</bottom_attach>
<xpad>3</xpad> <xpad>3</xpad>
<ypad>3</ypad> <ypad>3</ypad>
<xexpand>True</xexpand> <xexpand>True</xexpand>
@ -3751,7 +3727,7 @@ Very High
<widget> <widget>
<class>GtkEntry</class> <class>GtkEntry</class>
<child_name>GtkCombo:entry</child_name> <child_name>GtkCombo:entry</child_name>
<name>alt_given</name> <name>alt_last</name>
<can_focus>True</can_focus> <can_focus>True</can_focus>
<editable>True</editable> <editable>True</editable>
<text_visible>True</text_visible> <text_visible>True</text_visible>
@ -3759,6 +3735,30 @@ Very High
<text></text> <text></text>
</widget> </widget>
</widget> </widget>
<widget>
<class>GtkEntry</class>
<name>alt_given</name>
<can_focus>True</can_focus>
<editable>True</editable>
<text_visible>True</text_visible>
<text_max_length>0</text_max_length>
<text></text>
<child>
<left_attach>1</left_attach>
<right_attach>2</right_attach>
<top_attach>0</top_attach>
<bottom_attach>1</bottom_attach>
<xpad>3</xpad>
<ypad>3</ypad>
<xexpand>True</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
</widget> </widget>
</widget> </widget>
</widget> </widget>

View File

@ -19,10 +19,8 @@
# #
import os import os
import tempfile
import string import string
import const
from TextDoc import * from TextDoc import *
from DrawDoc import * from DrawDoc import *

View File

@ -94,6 +94,7 @@ addChildList = None
bookmarks = None bookmarks = None
id2col = {} id2col = {}
alt2col = {}
topWindow = None topWindow = None
statusbar = None statusbar = None
@ -698,7 +699,7 @@ def new_database_response(val):
global active_person, active_father global active_person, active_father
global active_family, active_mother global active_family, active_mother
global active_child, select_father, select_mother global active_child, select_father, select_mother
global id2col,person_list global id2col,alt2col,person_list
if val == 1: if val == 1:
return return
@ -720,6 +721,7 @@ def new_database_response(val):
select_father = None select_father = None
select_mother = None select_mother = None
id2col = {} id2col = {}
alt2col = {}
utils.clearModified() utils.clearModified()
change_active_person(None) change_active_person(None)
@ -1264,9 +1266,30 @@ def delete_person_response(val):
if family: if family:
family.removeChild(active_person) family.removeChild(active_person)
remove_from_person_list(active_person)
person_list.sort()
update_display(0)
del personmap[active_person.getId()] del personmap[active_person.getId()]
apply_filter()
utils.modified() utils.modified()
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
def remove_from_person_list(person):
person_list.freeze()
if id2col.has_key(person):
row = person_list.find_row_from_data(id2col[person])
if row != -1:
person_list.remove(row)
if alt2col.has_key(person):
for id in alt2col[person]:
row = person_list.find_row_from_data(id)
if row != -1:
person_list.remove(row)
person_list.thaw()
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -1881,32 +1904,60 @@ def on_spouselist_changed(obj):
# #
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
def new_after_edit(person): def new_after_edit(epo):
database.addPerson(person.person) database.addPerson(epo.person)
pos = (person.person,0) redisplay_person_list(epo.person)
id2col[person] = pos
gname = utils.phonebook_from_name
if DataFilter.compare(person.person):
if person.person.getGender():
gender = const.male
else:
gender = const.female
bday = person.person.getBirth().getDateObj()
dday = person.person.getDeath().getDateObj()
name = person.person.getPrimaryName()
person_list.insert(0,[gname(name,0),person.person.getId(), gender,bday.getQuoteDate(),
dday.getQuoteDate(), sort.build_sort_name(name),
sort.build_sort_birth(bday), sort.build_sort_death(dday)])
person_list.set_row_data(0,pos)
sort_person_list()
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
# #
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
def update_after_edit(person): def update_after_edit(epo):
update_display(1) remove_from_person_list(epo.person)
redisplay_person_list(epo.person)
update_display(0)
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
def redisplay_person_list(person):
pos = (person,0)
id2col[person] = pos
alt2col[person] = []
gname = utils.phonebook_from_name
if DataFilter.compare(person):
if person.getGender():
gender = const.male
else:
gender = const.female
bday = person.getBirth().getDateObj()
dday = person.getDeath().getDateObj()
name = person.getPrimaryName()
person_list.insert(0,[gname(name,0),person.getId(),
gender,bday.getQuoteDate(),
dday.getQuoteDate(),
sort.build_sort_name(name),
sort.build_sort_birth(bday),
sort.build_sort_death(dday)])
person_list.set_row_data(0,pos)
for name in person.getAlternateNames():
pos2 = (person,1)
alt2col[person].append(pos2)
person_list.insert(0,[gname(name,1),person.getId(),
gender,bday.getQuoteDate(),
dday.getQuoteDate(),
sort.build_sort_name(name),
sort.build_sort_birth(bday),
sort.build_sort_death(dday)])
person_list.set_row_data(0,pos2)
sort_person_list()
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -2321,7 +2372,9 @@ def displayError(msg):
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
def apply_filter(): def apply_filter():
global id2col
global alt2col
people = database.getPersonMap().values() people = database.getPersonMap().values()
names = [] names = []
@ -2335,34 +2388,60 @@ def apply_filter():
names = names + altnames names = names + altnames
person_list.freeze() person_list.freeze()
person_list.clear()
color_clist = ListColors.ColorList(person_list,1)
datacomp = DataFilter.compare datacomp = DataFilter.compare
clistadd = color_clist.add_with_data
gname = utils.phonebook_from_name gname = utils.phonebook_from_name
person_list.set_column_visibility(1,Config.id_visible) person_list.set_column_visibility(1,Config.id_visible)
new_alt2col = {}
for name_tuple in names: for name_tuple in names:
person = name_tuple[1] name,person,alt = name_tuple
alt = name_tuple[2]
name = name_tuple[0]
if datacomp(person): if datacomp(person):
pos = (person,alt) pos = (person,alt)
if not alt: if alt:
if id2col.has_key(person):
continue
if new_alt2col.has_key(person):
new_alt2col[person].append(pos)
else:
new_alt2col[person] = [pos]
else:
if id2col.has_key(person):
continue
id2col[person] = pos id2col[person] = pos
if person.getGender(): if person.getGender():
gender = const.male gender = const.male
else: else:
gender = const.female gender = const.female
bday = person.getBirth().getDateObj() bday = person.getBirth().getDateObj()
dday = person.getDeath().getDateObj() dday = person.getDeath().getDateObj()
clistadd([gname(name,alt),person.getId(), gender,bday.getQuoteDate(), person_list.insert(0,[gname(name,0),person.getId(),
dday.getQuoteDate(), sort.build_sort_name(name), gender,bday.getQuoteDate(),
sort.build_sort_birth(bday), sort.build_sort_death(dday)], pos) dday.getQuoteDate(),
sort.build_sort_name(name),
sort.build_sort_birth(bday),
sort.build_sort_death(dday)])
person_list.set_row_data(0,pos)
else:
if alt:
if alt2col.has_key(person):
ids = alt2col[person]
del alt2col[person]
for id in ids:
row = person_list.find_row_from_data(id)
if row != -1:
person_list.remove(row)
else:
if id2col.has_key(person):
id = id2col[person]
del id2col[person]
row = person_list.find_row_from_data(id)
if row != -1:
person_list.remove(row)
person_list.thaw() person_list.thaw()
sort_person_list() sort_person_list()