* src/MergePeople.py: provide more date in compare window, fix event

merging for families. Copy alternate names.
* src/plugins/Merge.py: support for new merge technique
* src/PeopleView.py: divide rebuild_data into two functions
* src/PeopleModel.py: clean up insertion functions
* src/gramps_main.py: remove unused code


svn: r4261
This commit is contained in:
Don Allingham
2005-03-31 04:30:44 +00:00
parent 3555a567a3
commit b2de2eaa67
8 changed files with 171 additions and 47 deletions

View File

@ -271,9 +271,16 @@ class PeopleView:
self.person_model.rebuild_data(self.DataFilter)
self.add_person(person)
def person_added(self,handle):
person = self.parent.db.get_person_from_handle(handle)
self.add_person(person)
def add_person(self,person):
node = person.get_handle()
top = person.get_primary_name().get_group_name()
self.person_model.rebuild_data(self.DataFilter)
if not self.person_model.is_visable(node):
return
if (not self.person_model.sname_sub.has_key(top) or
len(self.person_model.sname_sub[top]) == 1):
path = self.person_model.on_get_path(top)
@ -283,22 +290,78 @@ class PeopleView:
pnode = self.person_model.get_iter(path)
self.person_model.row_inserted(path,pnode)
def delete_person(self,person):
def person_removed(self,handle):
person = self.parent.db.get_person_from_handle(handle)
self.delete_person(person)
def delete_person(self,person,rebuild=False):
node = person.get_handle()
if not self.person_model.is_visable(node):
return
top = person.get_primary_name().get_group_name()
try:
if len(self.person_model.sname_sub[top]) == 1:
path = self.person_model.on_get_path(top)
mylist = self.person_model.sname_sub.get(top,[])
if mylist:
try:
path = self.person_model.on_get_path(node)
self.person_model.row_deleted(path)
except:
pass
path = self.person_model.on_get_path(node)
self.person_model.row_deleted(path)
if len(mylist) == 1:
path = self.person_model.on_get_path(top)
self.person_model.row_deleted(path)
except KeyError:
pass
self.person_model.rebuild_data(self.DataFilter,skip=node)
def person_updated(self,handle):
person = self.parent.db.get_person_from_handle(handle)
self.update_person_list(person)
def update_person_list(self,person):
self.delete_person(person)
self.person_model.rebuild_data(self.DataFilter)
self.add_person(person)
# find original path,node of person
node = person.get_handle()
try:
oldpath = self.person_model.iter2path[node]
except:
return
pathval = self.person_model.on_get_path(node)
pnode = self.person_model.get_iter(pathval)
# calculate the new data
self.person_model.calculate_data(self.DataFilter)
# find the path of the person in the new data build
newpath = self.person_model.temp_iter2path[node]
# if paths same, just issue row changed signal
if oldpath == newpath:
self.person_model.row_changed(pathval,pnode)
else:
# paths different, get the new surname list
mylist = self.person_model.temp_sname_sub.get(oldpath[0],[])
path = self.person_model.on_get_path(node)
# delete original
self.person_model.row_deleted(pathval)
# delete top node of original if necessar
if len(mylist)==0:
self.person_model.row_deleted(pathval[0])
# determine if we need to insert a new top node',
insert = not self.person_model.sname_sub.has_key(newpath[0])
# assign new data
self.person_model.assign_data()
# insert new row if needed
if insert:
path = self.person_model.on_get_path(newpath[0])
pnode = self.person_model.get_iter(path)
self.person_model.row_inserted(path,pnode)
# insert new person
path = self.person_model.on_get_path(node)
pnode = self.person_model.get_iter(path)
self.person_model.row_inserted(path,pnode)
self.parent.change_active_person(person)
self.goto_active_person()