Enhance sources gramplets to show sources of child objects
svn: r17875
This commit is contained in:
parent
f34d60ad9d
commit
29e5f4a326
@ -50,13 +50,64 @@ class Sources(Gramplet):
|
|||||||
self.model = ListModel(top, titles, event_func=self.edit_source)
|
self.model = ListModel(top, titles, event_func=self.edit_source)
|
||||||
return top
|
return top
|
||||||
|
|
||||||
def display_sources(self, obj):
|
def add_sources(self, obj):
|
||||||
"""
|
|
||||||
Display the sources for the active object.
|
|
||||||
"""
|
|
||||||
for source_ref in obj.get_source_references():
|
for source_ref in obj.get_source_references():
|
||||||
self.add_source_ref(source_ref)
|
self.add_source_ref(source_ref)
|
||||||
self.set_has_data(self.model.count > 0)
|
|
||||||
|
def add_name_sources(self, obj):
|
||||||
|
names = [obj.get_primary_name()] + obj.get_alternate_names()
|
||||||
|
for name in names:
|
||||||
|
self.add_sources(name)
|
||||||
|
|
||||||
|
def add_attribute_sources(self, obj):
|
||||||
|
for attr in obj.get_attribute_list():
|
||||||
|
self.add_sources(attr)
|
||||||
|
|
||||||
|
def add_mediaref_sources(self, obj):
|
||||||
|
for media_ref in obj.get_media_list():
|
||||||
|
self.add_sources(media_ref)
|
||||||
|
self.add_attribute_sources(media_ref)
|
||||||
|
media = self.dbstate.db.get_object_from_handle(media_ref.ref)
|
||||||
|
self.add_media_sources(media)
|
||||||
|
|
||||||
|
def add_media_sources(self, media):
|
||||||
|
self.add_sources(media)
|
||||||
|
self.add_attribute_sources(media)
|
||||||
|
|
||||||
|
def add_eventref_sources(self, obj):
|
||||||
|
for event_ref in obj.get_event_ref_list():
|
||||||
|
self.add_attribute_sources(event_ref)
|
||||||
|
event = self.dbstate.db.get_event_from_handle(event_ref.ref)
|
||||||
|
self.add_event_sources(event)
|
||||||
|
|
||||||
|
def add_event_sources(self, event):
|
||||||
|
self.add_sources(event)
|
||||||
|
self.add_attribute_sources(event)
|
||||||
|
self.add_mediaref_sources(event)
|
||||||
|
place_handle = event.get_place_handle()
|
||||||
|
place = self.dbstate.db.get_place_from_handle(place_handle)
|
||||||
|
if place:
|
||||||
|
self.add_place_sources(place)
|
||||||
|
|
||||||
|
def add_place_sources(self, place):
|
||||||
|
self.add_sources(place)
|
||||||
|
self.add_mediaref_sources(place)
|
||||||
|
|
||||||
|
def add_address_sources(self, obj):
|
||||||
|
for address in obj.get_address_list():
|
||||||
|
self.add_sources(address)
|
||||||
|
|
||||||
|
def add_lds_sources(self, obj):
|
||||||
|
for lds in obj.get_lds_ord_list():
|
||||||
|
self.add_sources(lds)
|
||||||
|
place_handle = lds.get_place_handle()
|
||||||
|
place = self.dbstate.db.get_place_from_handle(place_handle)
|
||||||
|
if place:
|
||||||
|
self.add_place_sources(place)
|
||||||
|
|
||||||
|
def add_association_sources(self, obj):
|
||||||
|
for assoc in obj.get_person_ref_list():
|
||||||
|
self.add_sources(assoc)
|
||||||
|
|
||||||
def add_source_ref(self, source_ref):
|
def add_source_ref(self, source_ref):
|
||||||
"""
|
"""
|
||||||
@ -68,6 +119,91 @@ class Sources(Gramplet):
|
|||||||
author = source.get_author()
|
author = source.get_author()
|
||||||
self.model.add((source_ref.ref, title, page, author))
|
self.model.add((source_ref.ref, title, page, author))
|
||||||
|
|
||||||
|
def check_sources(self, obj):
|
||||||
|
return True if obj.get_source_references() else False
|
||||||
|
|
||||||
|
def check_name_sources(self, obj):
|
||||||
|
names = [obj.get_primary_name()] + obj.get_alternate_names()
|
||||||
|
for name in names:
|
||||||
|
if self.check_sources(name):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def check_attribute_sources(self, obj):
|
||||||
|
for attr in obj.get_attribute_list():
|
||||||
|
if self.check_sources(attr):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def check_mediaref_sources(self, obj):
|
||||||
|
for media_ref in obj.get_media_list():
|
||||||
|
if self.check_sources(media_ref):
|
||||||
|
return True
|
||||||
|
if self.check_attribute_sources(media_ref):
|
||||||
|
return True
|
||||||
|
media = self.dbstate.db.get_object_from_handle(media_ref.ref)
|
||||||
|
if self.check_media_sources(media):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def check_media_sources(self, media):
|
||||||
|
if self.check_sources(media):
|
||||||
|
return True
|
||||||
|
if self.check_attribute_sources(media):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def check_eventref_sources(self, obj):
|
||||||
|
for event_ref in obj.get_event_ref_list():
|
||||||
|
if self.check_attribute_sources(event_ref):
|
||||||
|
return True
|
||||||
|
event = self.dbstate.db.get_event_from_handle(event_ref.ref)
|
||||||
|
if self.check_event_sources(event):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def check_event_sources(self, event):
|
||||||
|
if self.check_sources(event):
|
||||||
|
return True
|
||||||
|
if self.check_attribute_sources(event):
|
||||||
|
return True
|
||||||
|
if self.check_mediaref_sources(event):
|
||||||
|
return True
|
||||||
|
place_handle = event.get_place_handle()
|
||||||
|
place = self.dbstate.db.get_place_from_handle(place_handle)
|
||||||
|
if place and self.check_place_sources(place):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def check_place_sources(self, place):
|
||||||
|
if self.check_sources(place):
|
||||||
|
return True
|
||||||
|
if self.check_mediaref_sources(place):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def check_address_sources(self, obj):
|
||||||
|
for address in obj.get_address_list():
|
||||||
|
if self.check_sources(address):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def check_lds_sources(self, obj):
|
||||||
|
for lds in obj.get_lds_ord_list():
|
||||||
|
if self.check_sources(lds):
|
||||||
|
return True
|
||||||
|
place_handle = lds.get_place_handle()
|
||||||
|
place = self.dbstate.db.get_place_from_handle(place_handle)
|
||||||
|
if place and self.check_place_sources(place):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def check_association_sources(self, obj):
|
||||||
|
for assoc in obj.get_person_ref_list():
|
||||||
|
if self.check_sources(assoc):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
def edit_source(self, treeview):
|
def edit_source(self, treeview):
|
||||||
"""
|
"""
|
||||||
Edit the selected source.
|
Edit the selected source.
|
||||||
@ -81,16 +217,6 @@ class Sources(Gramplet):
|
|||||||
except Errors.WindowActiveError:
|
except Errors.WindowActiveError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def get_has_data(self, obj):
|
|
||||||
"""
|
|
||||||
Return True if the gramplet has data, else return False.
|
|
||||||
"""
|
|
||||||
if obj is None:
|
|
||||||
return False
|
|
||||||
if obj.get_source_references():
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
|
|
||||||
class PersonSources(Sources):
|
class PersonSources(Sources):
|
||||||
"""
|
"""
|
||||||
Displays the sources for a person.
|
Displays the sources for a person.
|
||||||
@ -117,6 +243,52 @@ class PersonSources(Sources):
|
|||||||
else:
|
else:
|
||||||
self.set_has_data(False)
|
self.set_has_data(False)
|
||||||
|
|
||||||
|
def display_sources(self, person):
|
||||||
|
"""
|
||||||
|
Display the sources for the active person.
|
||||||
|
"""
|
||||||
|
self.add_sources(person)
|
||||||
|
self.add_eventref_sources(person)
|
||||||
|
for handle in person.get_family_handle_list():
|
||||||
|
family = self.dbstate.db.get_family_from_handle(handle)
|
||||||
|
self.add_eventref_sources(family)
|
||||||
|
self.add_name_sources(person)
|
||||||
|
self.add_attribute_sources(person)
|
||||||
|
self.add_address_sources(person)
|
||||||
|
self.add_mediaref_sources(person)
|
||||||
|
self.add_association_sources(person)
|
||||||
|
self.add_lds_sources(person)
|
||||||
|
|
||||||
|
self.set_has_data(self.model.count > 0)
|
||||||
|
|
||||||
|
def get_has_data(self, person):
|
||||||
|
"""
|
||||||
|
Return True if the gramplet has data, else return False.
|
||||||
|
"""
|
||||||
|
if person is None:
|
||||||
|
return False
|
||||||
|
if self.check_sources(person):
|
||||||
|
return True
|
||||||
|
if self.check_eventref_sources(person):
|
||||||
|
return True
|
||||||
|
for handle in person.get_family_handle_list():
|
||||||
|
family = self.dbstate.db.get_family_from_handle(handle)
|
||||||
|
if self.check_eventref_sources(family):
|
||||||
|
return True
|
||||||
|
if self.check_name_sources(person):
|
||||||
|
return True
|
||||||
|
if self.check_attribute_sources(person):
|
||||||
|
return True
|
||||||
|
if self.check_address_sources(person):
|
||||||
|
return True
|
||||||
|
if self.check_mediaref_sources(person):
|
||||||
|
return True
|
||||||
|
if self.check_association_sources(person):
|
||||||
|
return True
|
||||||
|
if self.check_lds_sources(person):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
class EventSources(Sources):
|
class EventSources(Sources):
|
||||||
"""
|
"""
|
||||||
Displays the sources for an event.
|
Displays the sources for an event.
|
||||||
@ -141,6 +313,23 @@ class EventSources(Sources):
|
|||||||
else:
|
else:
|
||||||
self.set_has_data(False)
|
self.set_has_data(False)
|
||||||
|
|
||||||
|
def display_sources(self, event):
|
||||||
|
"""
|
||||||
|
Display the sources for the active event.
|
||||||
|
"""
|
||||||
|
self.add_event_sources(event)
|
||||||
|
self.set_has_data(self.model.count > 0)
|
||||||
|
|
||||||
|
def get_has_data(self, event):
|
||||||
|
"""
|
||||||
|
Return True if the gramplet has data, else return False.
|
||||||
|
"""
|
||||||
|
if event is None:
|
||||||
|
return False
|
||||||
|
if self.check_event_sources(event):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
class FamilySources(Sources):
|
class FamilySources(Sources):
|
||||||
"""
|
"""
|
||||||
Displays the sources for a family.
|
Displays the sources for a family.
|
||||||
@ -165,6 +354,36 @@ class FamilySources(Sources):
|
|||||||
else:
|
else:
|
||||||
self.set_has_data(False)
|
self.set_has_data(False)
|
||||||
|
|
||||||
|
def display_sources(self, family):
|
||||||
|
"""
|
||||||
|
Display the sources for the active family.
|
||||||
|
"""
|
||||||
|
self.add_sources(family)
|
||||||
|
self.add_eventref_sources(family)
|
||||||
|
self.add_attribute_sources(family)
|
||||||
|
self.add_mediaref_sources(family)
|
||||||
|
self.add_lds_sources(family)
|
||||||
|
|
||||||
|
self.set_has_data(self.model.count > 0)
|
||||||
|
|
||||||
|
def get_has_data(self, family):
|
||||||
|
"""
|
||||||
|
Return True if the gramplet has data, else return False.
|
||||||
|
"""
|
||||||
|
if family is None:
|
||||||
|
return False
|
||||||
|
if self.check_sources(family):
|
||||||
|
return True
|
||||||
|
if self.check_eventref_sources(family):
|
||||||
|
return True
|
||||||
|
if self.check_attribute_sources(family):
|
||||||
|
return True
|
||||||
|
if self.check_mediaref_sources(family):
|
||||||
|
return True
|
||||||
|
if self.check_lds_sources(family):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
class PlaceSources(Sources):
|
class PlaceSources(Sources):
|
||||||
"""
|
"""
|
||||||
Displays the sources for a place.
|
Displays the sources for a place.
|
||||||
@ -189,6 +408,23 @@ class PlaceSources(Sources):
|
|||||||
else:
|
else:
|
||||||
self.set_has_data(False)
|
self.set_has_data(False)
|
||||||
|
|
||||||
|
def display_sources(self, place):
|
||||||
|
"""
|
||||||
|
Display the sources for the active place.
|
||||||
|
"""
|
||||||
|
self.add_place_sources(place)
|
||||||
|
self.set_has_data(self.model.count > 0)
|
||||||
|
|
||||||
|
def get_has_data(self, place):
|
||||||
|
"""
|
||||||
|
Return True if the gramplet has data, else return False.
|
||||||
|
"""
|
||||||
|
if place is None:
|
||||||
|
return False
|
||||||
|
if self.check_place_sources(place):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
class MediaSources(Sources):
|
class MediaSources(Sources):
|
||||||
"""
|
"""
|
||||||
Displays the sources for a media object.
|
Displays the sources for a media object.
|
||||||
@ -213,3 +449,19 @@ class MediaSources(Sources):
|
|||||||
else:
|
else:
|
||||||
self.set_has_data(False)
|
self.set_has_data(False)
|
||||||
|
|
||||||
|
def display_sources(self, media):
|
||||||
|
"""
|
||||||
|
Display the sources for the active media object.
|
||||||
|
"""
|
||||||
|
self.add_media_sources(media)
|
||||||
|
self.set_has_data(self.model.count > 0)
|
||||||
|
|
||||||
|
def get_has_data(self, media):
|
||||||
|
"""
|
||||||
|
Return True if the gramplet has data, else return False.
|
||||||
|
"""
|
||||||
|
if media is None:
|
||||||
|
return False
|
||||||
|
if self.check_media_sources(media):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
Loading…
Reference in New Issue
Block a user