* 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:
@ -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()
|
||||
|
||||
|
Reference in New Issue
Block a user