* 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:
		| @@ -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> | 2005-12-28  Don Allingham  <don@gramps-project.org> | ||||||
| 	* src/Makefile.am: add PythonMime and GnomeMime | 	* src/Makefile.am: add PythonMime and GnomeMime | ||||||
| 	* src/GnomeMime.py: GNOME based mime handling | 	* src/GnomeMime.py: GNOME based mime handling | ||||||
|   | |||||||
| @@ -621,6 +621,9 @@ class PedView(PageView.PersonNavView): | |||||||
|         edit_item.show() |         edit_item.show() | ||||||
|         menu.append(edit_item) |         menu.append(edit_item) | ||||||
|  |  | ||||||
|  |         # collect all spouses, parents and children | ||||||
|  |         linked_persons = [] | ||||||
|  |          | ||||||
|         # Go over spouses and build their menu |         # Go over spouses and build their menu | ||||||
|         item = gtk.MenuItem(_("Spouses")) |         item = gtk.MenuItem(_("Spouses")) | ||||||
|         fam_list = person.get_family_handle_list() |         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 = gtk.ImageMenuItem(NameDisplay.displayer.display(spouse)) | ||||||
|             sp_item.set_image(go_image) |             sp_item.set_image(go_image) | ||||||
|             sp_item.set_data(_PERSON,sp_id) |             sp_item.set_data(_PERSON,sp_id) | ||||||
|  |             linked_persons.append(sp_id) | ||||||
|             sp_item.connect("activate",self.on_childmenu_changed) |             sp_item.connect("activate",self.on_childmenu_changed) | ||||||
|             sp_item.show() |             sp_item.show() | ||||||
|             sp_menu.append(sp_item) |             sp_menu.append(sp_item) | ||||||
| @@ -679,6 +683,7 @@ class PedView(PageView.PersonNavView): | |||||||
|                 sib_item = gtk.ImageMenuItem(NameDisplay.displayer.display(sib)) |                 sib_item = gtk.ImageMenuItem(NameDisplay.displayer.display(sib)) | ||||||
|                 sib_item.set_image(go_image) |                 sib_item.set_image(go_image) | ||||||
|                 sib_item.set_data(_PERSON,sib_id) |                 sib_item.set_data(_PERSON,sib_id) | ||||||
|  |                 linked_persons.append(sib_id) | ||||||
|                 sib_item.connect("activate",self.on_childmenu_changed) |                 sib_item.connect("activate",self.on_childmenu_changed) | ||||||
|                 sib_item.show() |                 sib_item.show() | ||||||
|                 sib_menu.append(sib_item) |                 sib_menu.append(sib_item) | ||||||
| @@ -716,6 +721,7 @@ class PedView(PageView.PersonNavView): | |||||||
|             label.set_alignment(0,0) |             label.set_alignment(0,0) | ||||||
|             child_item.add(label) |             child_item.add(label) | ||||||
|             child_item.set_data(_PERSON,child_handle) |             child_item.set_data(_PERSON,child_handle) | ||||||
|  |             linked_persons.append(child_handle) | ||||||
|             child_item.connect("activate",self.on_childmenu_changed) |             child_item.connect("activate",self.on_childmenu_changed) | ||||||
|             child_item.show() |             child_item.show() | ||||||
|             child_menu.append(child_item) |             child_menu.append(child_item) | ||||||
| @@ -753,6 +759,7 @@ class PedView(PageView.PersonNavView): | |||||||
|             label.set_alignment(0,0) |             label.set_alignment(0,0) | ||||||
|             par_item.add(label) |             par_item.add(label) | ||||||
|             par_item.set_data(_PERSON,par_id) |             par_item.set_data(_PERSON,par_id) | ||||||
|  |             linked_persons.append(par_id) | ||||||
|             par_item.connect("activate",self.on_childmenu_changed) |             par_item.connect("activate",self.on_childmenu_changed) | ||||||
|             par_item.show() |             par_item.show() | ||||||
|             par_menu.append(par_item) |             par_menu.append(par_item) | ||||||
| @@ -762,6 +769,43 @@ class PedView(PageView.PersonNavView): | |||||||
|         item.show() |         item.show() | ||||||
|         menu.append(item) |         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 |         # Add separator | ||||||
|         item = gtk.MenuItem(None) |         item = gtk.MenuItem(None) | ||||||
|         item.show() |         item.show() | ||||||
| @@ -867,6 +911,35 @@ def find_parents(db,p): | |||||||
|             parentlist.append(mother_handle) |             parentlist.append(mother_handle) | ||||||
|     return parentlist |     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 | # Functions to build the text displayed in the details view of a DispBox | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user