EditPerson fixes, list model enhancements

svn: r1189
This commit is contained in:
Don Allingham
2002-11-15 03:49:39 +00:00
parent 70256ded9c
commit aac28fa291
11 changed files with 76 additions and 274 deletions

View File

@@ -97,14 +97,8 @@ class Gramps:
self.program = gnome.program_init("gramps",const.version)
self.DataFilter = Filter.Filter("")
self.active_child = None
self.active_family = None
self.active_father = None
self.active_mother = None
self.active_parents = None
self.parents_index = 0
self.active_person = None
self.active_spouse = None
self.bookmarks = None
self.c_details = 6
self.id2col = {}
@@ -290,9 +284,6 @@ class Gramps:
"on_alpha_switch_page" : self.change_alpha_page,
"delete_event" : self.delete_event,
"destroy_passed_object" : Utils.destroy_passed_object,
"on_family_up_clicked" : self.family_up_clicked,
"on_family_down_clicked" : self.family_down_clicked,
"on_spouse_list_changed" : self.spouse_list_changed,
"on_about_activate" : self.on_about_activate,
"on_add_bookmark_activate" : self.on_add_bookmark_activate,
"on_add_place_clicked" : self.place_view.on_add_place_clicked,
@@ -324,7 +315,6 @@ class Gramps:
"on_open_activate" : self.on_open_activate,
"on_pedigree1_activate" : self.on_pedigree1_activate,
"on_person_list1_activate" : self.on_person_list1_activate,
"on_person_list_button_press" : self.alpha_event,
"on_main_key_release_event" : self.on_main_key_release_event,
"on_add_media_clicked" : self.media_view.create_add_dialog,
"on_media_activate" : self.on_media_activate,
@@ -337,7 +327,6 @@ class Gramps:
"on_places_activate" : self.on_places_activate,
"on_preferences_activate" : self.on_preferences_activate,
"on_reload_plugins_activate" : Plugins.reload_plugins,
"on_remove_child_clicked" : self.on_remove_child_clicked,
"on_reports_clicked" : self.on_reports_clicked,
"on_revert_activate" : self.on_revert_activate,
"on_save_activate" : self.on_save_activate,
@@ -345,7 +334,6 @@ class Gramps:
"on_show_plugin_status" : self.on_show_plugin_status,
"on_source_list_button_press" : self.source_view.button_press,
"on_sources_activate" : self.on_sources_activate,
"on_swap_clicked" : self.on_swap_clicked,
"on_tools_clicked" : self.on_tools_clicked,
"on_gramps_home_page_activate" : self.on_gramps_home_page_activate,
"on_gramps_report_bug_activate" : self.on_gramps_report_bug_activate,
@@ -575,31 +563,6 @@ class Gramps:
if url:
url = "gnome-help:"+url
gnome.help.goto(url)
def on_remove_child_clicked(self,obj):
if not self.active_family or not self.active_child or not self.active_person:
return
self.active_family.removeChild(self.active_child)
self.active_child.removeAltFamily(self.active_child)
if len(self.active_family.getChildList()) == 0:
if self.active_family.getFather() == None:
self.delete_family_from(self.active_family.getMother())
elif self.active_family.getMother() == None:
self.delete_family_from(self.active_family.getFather())
Utils.modified()
self.family_view.load_family()
def delete_family_from(self,person):
person.removeFamily(self.active_family)
self.db.deleteFamily(self.active_family)
flist = self.active_person.getFamilyList()
if len(flist) > 0:
self.active_family = flist[0][0]
else:
self.active_family = None
def add_new_cancel(self,obj):
Utils.destroy_passed_object(self.addornew)
@@ -641,11 +604,6 @@ class Gramps:
self.topWindow.set_title("GRAMPS")
self.active_person = None
self.active_father = None
self.active_family = None
self.active_mother = None
self.active_child = None
self.active_spouse = None
self.id2col = {}
Utils.clearModified()
@@ -939,9 +897,8 @@ class Gramps:
self.redisplay_person_list(p1)
self.update_display(0)
def alpha_event(self,obj,event):
if event.type == gtk.gdk._2BUTTON_PRESS and event.button == 1:
self.load_person(self.active_person)
def alpha_event(self,obj):
self.load_person(self.active_person)
def goto_active_person(self):
if not self.active_person:
@@ -964,23 +921,10 @@ class Gramps:
self.statusbar.set_status("")
else:
pname = GrampsCfg.nameof(self.active_person)
if GrampsCfg.status_bar == 1:
name = "[%s] %s" % (self.active_person.getId(),pname)
elif GrampsCfg.status_bar == 2:
name = pname
for attr in self.active_person.getAttributeList():
if attr.getType() == GrampsCfg.attr_name:
name = "[%s] %s" % (attr.getValue(),pname)
break
else:
name = pname
name = "[%s] %s" % (self.active_person.getId(),pname)
self.statusbar.set_status(name)
return 0
def on_child_list_select_row(self,obj,row,b,c):
id = obj.get_row_data(row)
self.active_child = id
def on_child_list_row_move(self,clist,fm,to):
"""Validate whether or not this child can be moved within the clist.
This routine is called in the middle of the clist's callbacks, so
@@ -1083,11 +1027,6 @@ class Gramps:
file = self.db.getSavePath()
self.db.new()
self.active_person = None
self.active_father = None
self.active_family = None
self.active_mother = None
self.active_child = None
self.active_spouse = None
self.id2col = {}
self.read_file(file)
Utils.clearModified()
@@ -1181,14 +1120,6 @@ class Gramps:
self.merge_button.set_sensitive(0)
self.media_view.load_media()
def on_swap_clicked(self,obj):
if not self.active_person:
return
if self.active_spouse:
self.change_active_person(self.active_spouse)
self.family_view.load_family()
def on_apply_filter_clicked(self,obj):
invert_filter = self.filter_inv.get_active()
qualifer = self.filter_text.get_text()
@@ -1244,7 +1175,7 @@ class Gramps:
self.redisplay_person_list(person)
self.update_display(0)
def redisplay_person_list(self,person):
def add_to_person_list(self,person,change):
key = person.getId()
val = self.db.getPersonDisplay(person.getId())
pg = val[0]
@@ -1257,12 +1188,19 @@ class Gramps:
iter = model.model.append()
page = self.model2page[model]
self.id2col[key] = (model,iter,page)
model.model.set(iter, 0, val[0], 1, val[1], 2, val[2],
3, val[3], 4, val[4], 5, val[5],
6, val[6], 7, val[7])
self.change_active_person(person)
self.goto_active_person()
if change:
self.change_active_person(person)
self.goto_active_person()
def redisplay_person_list(self,person):
self.add_to_person_list(person,1)
def update_person_list(self,person):
self.add_to_person_list(person,0)
def load_person(self,person):
if person:
@@ -1271,30 +1209,6 @@ class Gramps:
except:
DisplayTrace.DisplayTrace()
def build_spouse_dropdown(self):
list = []
mymap = {}
mynmap = {}
sel = None
for f in self.active_person.getFamilyList():
if self.active_person == f.getFather():
sname = self.parent_name(f.getMother())
else:
sname = self.parent_name(f.getFather())
c = self.list_item(sname,f.getId())
list.append(c)
if f == self.active_family or sel == None:
sel = c
mynmap[f.getId()] = sname
mymap[f.getId()] = c
self.spouse_combo.disable_activate()
self.spouse_combo.list.clear_items(0,-1)
self.spouse_combo.list.append_items(list)
for v in mymap.keys():
self.spouse_combo.set_item_string(mymap[v],mynmap[v])
self.spouse_combo.list.select_child(sel)
def list_item(self,label,filter):
l = gtk.Label(label)
l.set_alignment(0,0.5)
@@ -1470,48 +1384,6 @@ class Gramps:
self.db.setDefaultPerson(self.active_person)
Utils.modified()
def family_up_clicked(self,obj):
if self.active_parents == None:
return
flist = self.active_person.getParentList()
if self.parents_index == 0:
self.parents_index = len(flist)-1
else:
self.parents_index = self.parents_index - 1
self.active_parents = flist[self.parents_index][0]
self.change_parents(self.active_parents)
def family_down_clicked(self,obj):
if self.active_parents == None:
return
flist = self.active_person.getParentList()
if self.parents_index == len(flist)-1:
self.parents_index = 0
else:
self.parents_index = self.parents_index + 1
self.active_parents = flist[self.parents_index][0]
self.change_parents(self.active_parents)
def spouse_list_changed(self,obj):
if self.active_family == None:
return
select = self.spouse_combo.list.get_selection()
if len(select) == 0:
self.active_family = None
else:
self.active_family = self.db.getFamily(select[0].get_data('d'))
if self.active_family == self.active_person.getFamilyList()[0]:
self.pref_spouse.set_sensitive(0)
msg = _("Preferred Relationship")
else:
msg = _("Relationship")
self.pref_spouse.set_sensitive(1)
self.gtop.get_widget('rel_frame').set_label(msg)
self.display_marriage(self.active_family)
def export_callback(self,obj,plugin_function):
"""Call the export plugin, with the active person and database"""
if self.active_person: