* src/PedView.py: Add new submenu showing people that share the same event. This for example lists witnesses.
svn: r5638
This commit is contained in:
parent
e8cc3b5c0d
commit
f21a0c8fcb
@ -1,3 +1,7 @@
|
||||
2005-12-29 Martin Hawlisch <Martin.Hawlisch@gmx.de>
|
||||
* src/PedView.py: Add new submenu showing people that share
|
||||
the same event. This for example lists witnesses.
|
||||
|
||||
2005-12-28 Don Allingham <don@gramps-project.org>
|
||||
* src/Makefile.am: add PythonMime and GnomeMime
|
||||
* src/GnomeMime.py: GNOME based mime handling
|
||||
|
@ -621,6 +621,9 @@ class PedView(PageView.PersonNavView):
|
||||
edit_item.show()
|
||||
menu.append(edit_item)
|
||||
|
||||
# collect all spouses, parents and children
|
||||
linked_persons = []
|
||||
|
||||
# Go over spouses and build their menu
|
||||
item = gtk.MenuItem(_("Spouses"))
|
||||
fam_list = person.get_family_handle_list()
|
||||
@ -645,6 +648,7 @@ class PedView(PageView.PersonNavView):
|
||||
sp_item = gtk.ImageMenuItem(NameDisplay.displayer.display(spouse))
|
||||
sp_item.set_image(go_image)
|
||||
sp_item.set_data(_PERSON,sp_id)
|
||||
linked_persons.append(sp_id)
|
||||
sp_item.connect("activate",self.on_childmenu_changed)
|
||||
sp_item.show()
|
||||
sp_menu.append(sp_item)
|
||||
@ -679,6 +683,7 @@ class PedView(PageView.PersonNavView):
|
||||
sib_item = gtk.ImageMenuItem(NameDisplay.displayer.display(sib))
|
||||
sib_item.set_image(go_image)
|
||||
sib_item.set_data(_PERSON,sib_id)
|
||||
linked_persons.append(sib_id)
|
||||
sib_item.connect("activate",self.on_childmenu_changed)
|
||||
sib_item.show()
|
||||
sib_menu.append(sib_item)
|
||||
@ -716,6 +721,7 @@ class PedView(PageView.PersonNavView):
|
||||
label.set_alignment(0,0)
|
||||
child_item.add(label)
|
||||
child_item.set_data(_PERSON,child_handle)
|
||||
linked_persons.append(child_handle)
|
||||
child_item.connect("activate",self.on_childmenu_changed)
|
||||
child_item.show()
|
||||
child_menu.append(child_item)
|
||||
@ -753,6 +759,7 @@ class PedView(PageView.PersonNavView):
|
||||
label.set_alignment(0,0)
|
||||
par_item.add(label)
|
||||
par_item.set_data(_PERSON,par_id)
|
||||
linked_persons.append(par_id)
|
||||
par_item.connect("activate",self.on_childmenu_changed)
|
||||
par_item.show()
|
||||
par_menu.append(par_item)
|
||||
@ -762,6 +769,43 @@ class PedView(PageView.PersonNavView):
|
||||
item.show()
|
||||
menu.append(item)
|
||||
|
||||
# Go over parents and build their menu
|
||||
item = gtk.MenuItem(_("Related"))
|
||||
no_related = 1
|
||||
for p_id in find_witnessed_people(self.db,person):
|
||||
#if p_id in linked_persons:
|
||||
# continue # skip already listed family members
|
||||
|
||||
per = self.db.get_person_from_handle(p_id)
|
||||
if not per:
|
||||
continue
|
||||
|
||||
if no_related:
|
||||
no_related = 0
|
||||
item.set_submenu(gtk.Menu())
|
||||
per_menu = item.get_submenu()
|
||||
|
||||
label = gtk.Label(escape(NameDisplay.displayer.display(per)))
|
||||
|
||||
go_image = gtk.image_new_from_stock(gtk.STOCK_JUMP_TO,gtk.ICON_SIZE_MENU)
|
||||
go_image.show()
|
||||
per_item = gtk.ImageMenuItem(None)
|
||||
per_item.set_image(go_image)
|
||||
label.set_use_markup(True)
|
||||
label.show()
|
||||
label.set_alignment(0,0)
|
||||
per_item.add(label)
|
||||
per_item.set_data(_PERSON,p_id)
|
||||
per_item.connect("activate",self.on_childmenu_changed)
|
||||
per_item.show()
|
||||
per_menu.append(per_item)
|
||||
|
||||
if no_related:
|
||||
item.set_sensitive(0)
|
||||
item.show()
|
||||
menu.append(item)
|
||||
|
||||
|
||||
# Add separator
|
||||
item = gtk.MenuItem(None)
|
||||
item.show()
|
||||
@ -867,6 +911,35 @@ def find_parents(db,p):
|
||||
parentlist.append(mother_handle)
|
||||
return parentlist
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Function to return persons, that share the same event.
|
||||
# This for example links witnesses to the tree
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
def find_witnessed_people(db,p):
|
||||
people = []
|
||||
for event_ref in p.get_event_ref_list():
|
||||
for l in db.find_backlink_handles( event_ref.ref):
|
||||
if l[0] == 'Person' and l[1] != p.get_handle():
|
||||
people.append(l[1])
|
||||
if l[0] == 'Family':
|
||||
fam = db.get_family_from_handle(l[1])
|
||||
if fam:
|
||||
father_handle = fam.get_father_handle()
|
||||
if father_handle and father_handle != p.get_handle():
|
||||
people.append(father_handle)
|
||||
mother_handle = fam.get_mother_handle()
|
||||
if mother_handle and mother_handle != p.get_handle():
|
||||
people.append(mother_handle)
|
||||
for f in p.get_family_handle_list():
|
||||
family = db.get_family_from_handle(f)
|
||||
for event_ref in family.get_event_ref_list():
|
||||
for l in db.find_backlink_handles( event_ref.ref):
|
||||
if l[0] == 'Person' and l[1] != p.get_handle():
|
||||
people.append(l[1])
|
||||
return people
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Functions to build the text displayed in the details view of a DispBox
|
||||
|
Loading…
Reference in New Issue
Block a user