4641: Interface for indicating if GrampsBar gramplets have data
svn: r17049
This commit is contained in:
		| @@ -44,6 +44,7 @@ class Gramplet(object): | |||||||
|         self.track = [] |         self.track = [] | ||||||
|         self.active = False |         self.active = False | ||||||
|         self.dirty = True |         self.dirty = True | ||||||
|  |         self.has_data = True | ||||||
|         self._pause = False |         self._pause = False | ||||||
|         self._generator = None |         self._generator = None | ||||||
|         self._need_to_update = False |         self._need_to_update = False | ||||||
| @@ -280,9 +281,11 @@ class Gramplet(object): | |||||||
|              not self.dbstate.open) and  |              not self.dbstate.open) and  | ||||||
|             not self.gui.force_update):  |             not self.gui.force_update):  | ||||||
|             self.dirty = True |             self.dirty = True | ||||||
|             #print "  %s is not active" % self.gui.title |             if self.dbstate.open: | ||||||
|  |                 #print "  %s is not active" % self.gui.gname | ||||||
|  |                 self.update_has_data() | ||||||
|             return |             return | ||||||
|         #print "     %s is UPDATING" % self.gui.title |         #print "     %s is UPDATING" % self.gui.gname | ||||||
|         self.dirty = False |         self.dirty = False | ||||||
|         self.uistate.push_message(self.dbstate, |         self.uistate.push_message(self.dbstate, | ||||||
|                 _("Gramplet %s is running") % self.gui.title) |                 _("Gramplet %s is running") % self.gui.title) | ||||||
| @@ -432,3 +435,17 @@ class Gramplet(object): | |||||||
|         show_all() in some places. |         show_all() in some places. | ||||||
|         """ |         """ | ||||||
|         return [] |         return [] | ||||||
|  |  | ||||||
|  |     def set_has_data(self, value): | ||||||
|  |         """ | ||||||
|  |         Set the status as to whether this gramplet has data. | ||||||
|  |         """ | ||||||
|  |         if value != self.has_data: | ||||||
|  |             self.has_data = value | ||||||
|  |             self.gui.set_has_data(value) | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         """ | ||||||
|  |         By default, assume that the gramplet has data. | ||||||
|  |         """ | ||||||
|  |         self.set_has_data(True) | ||||||
|   | |||||||
| @@ -320,7 +320,12 @@ class GrampsBar(gtk.Notebook): | |||||||
|         Create a tab label consisting of a label and a close button. |         Create a tab label consisting of a label and a close button. | ||||||
|         """ |         """ | ||||||
|         hbox = gtk.HBox(False, 4) |         hbox = gtk.HBox(False, 4) | ||||||
|         label = gtk.Label(gramplet.title) |         label = gtk.Label() | ||||||
|  |         if gramplet.pui.has_data: | ||||||
|  |             label.set_text("<b>%s</b>" % gramplet.title) | ||||||
|  |         else: | ||||||
|  |             label.set_text(gramplet.title) | ||||||
|  |         label.set_use_markup(True) | ||||||
|         label.set_tooltip_text(gramplet.tname) |         label.set_tooltip_text(gramplet.tname) | ||||||
|         closebtn = gtk.Button() |         closebtn = gtk.Button() | ||||||
|         image = gtk.Image() |         image = gtk.Image() | ||||||
| @@ -378,6 +383,7 @@ class GrampsBar(gtk.Notebook): | |||||||
|                     self.remove_page(0) |                     self.remove_page(0) | ||||||
|             else: |             else: | ||||||
|                 return |                 return | ||||||
|  |         gramplet.pane = self | ||||||
|         label = self.__create_tab_label(gramplet) |         label = self.__create_tab_label(gramplet) | ||||||
|         self.set_tab_label(gramplet, label) |         self.set_tab_label(gramplet, label) | ||||||
|         self.set_tab_reorderable(gramplet, True) |         self.set_tab_reorderable(gramplet, True) | ||||||
|   | |||||||
| @@ -684,6 +684,16 @@ class GuiGramplet(object): | |||||||
|                     warn( "Unknown link type " + link_type, RuntimeWarning, 2) |                     warn( "Unknown link type " + link_type, RuntimeWarning, 2) | ||||||
|         return False # did not handle event |         return False # did not handle event | ||||||
|  |  | ||||||
|  |     def set_has_data(self, value): | ||||||
|  |         if isinstance(self.pane, gtk.Notebook): | ||||||
|  |             if self.pane.get_tab_label(self): | ||||||
|  |                 label = self.pane.get_tab_label(self).get_children()[0] | ||||||
|  |                 if value: | ||||||
|  |                     label.set_text("<b>%s</b>" % self.title) | ||||||
|  |                     label.set_use_markup(True) | ||||||
|  |                 else: | ||||||
|  |                     label.set_text(self.title) | ||||||
|  |  | ||||||
| class GridGramplet(GuiGramplet): | class GridGramplet(GuiGramplet): | ||||||
|     """ |     """ | ||||||
|     Class that handles the plugin interfaces for the GrampletView. |     Class that handles the plugin interfaces for the GrampletView. | ||||||
|   | |||||||
| @@ -54,6 +54,7 @@ class Attributes(Gramplet): | |||||||
|         """ |         """ | ||||||
|         for attr in obj.get_attribute_list(): |         for attr in obj.get_attribute_list(): | ||||||
|             self.model.add((attr.get_type(), attr.get_value())) |             self.model.add((attr.get_type(), attr.get_value())) | ||||||
|  |         self.set_has_data(self.model.count > 0) | ||||||
|          |          | ||||||
|     def display_report(self, treeview): |     def display_report(self, treeview): | ||||||
|         """ |         """ | ||||||
| @@ -67,6 +68,16 @@ class Attributes(Gramplet): | |||||||
|                                      'attribute_match',  |                                      'attribute_match',  | ||||||
|                                      key) |                                      key) | ||||||
|  |  | ||||||
|  |     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_attribute_list(): | ||||||
|  |             return True | ||||||
|  |         return False | ||||||
|  |  | ||||||
| class PersonAttributes(Attributes): | class PersonAttributes(Attributes): | ||||||
|     """ |     """ | ||||||
|     Displays the attributes of a person. |     Displays the attributes of a person. | ||||||
| @@ -78,6 +89,11 @@ class PersonAttributes(Attributes): | |||||||
|     def active_changed(self, handle): |     def active_changed(self, handle): | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Person') | ||||||
|  |         active = self.dbstate.db.get_person_from_handle(active_handle) | ||||||
|  |         self.set_has_data(self.get_has_data(active)) | ||||||
|  |      | ||||||
|     def main(self): |     def main(self): | ||||||
|         active_handle = self.get_active('Person') |         active_handle = self.get_active('Person') | ||||||
|         active = self.dbstate.db.get_person_from_handle(active_handle) |         active = self.dbstate.db.get_person_from_handle(active_handle) | ||||||
| @@ -85,6 +101,8 @@ class PersonAttributes(Attributes): | |||||||
|         self.model.clear() |         self.model.clear() | ||||||
|         if active: |         if active: | ||||||
|             self.display_attributes(active) |             self.display_attributes(active) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
| class EventAttributes(Attributes): | class EventAttributes(Attributes): | ||||||
|     """ |     """ | ||||||
| @@ -95,6 +113,11 @@ class EventAttributes(Attributes): | |||||||
|         self.connect_signal('Event', self.update) |         self.connect_signal('Event', self.update) | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Event') | ||||||
|  |         active = self.dbstate.db.get_event_from_handle(active_handle) | ||||||
|  |         self.set_has_data(self.get_has_data(active)) | ||||||
|  |      | ||||||
|     def main(self): |     def main(self): | ||||||
|         active_handle = self.get_active('Event') |         active_handle = self.get_active('Event') | ||||||
|         active = self.dbstate.db.get_event_from_handle(active_handle) |         active = self.dbstate.db.get_event_from_handle(active_handle) | ||||||
| @@ -102,6 +125,8 @@ class EventAttributes(Attributes): | |||||||
|         self.model.clear() |         self.model.clear() | ||||||
|         if active: |         if active: | ||||||
|             self.display_attributes(active) |             self.display_attributes(active) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
| class FamilyAttributes(Attributes): | class FamilyAttributes(Attributes): | ||||||
|     """ |     """ | ||||||
| @@ -112,6 +137,11 @@ class FamilyAttributes(Attributes): | |||||||
|         self.connect_signal('Family', self.update) |         self.connect_signal('Family', self.update) | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Family') | ||||||
|  |         active = self.dbstate.db.get_family_from_handle(active_handle) | ||||||
|  |         self.set_has_data(self.get_has_data(active)) | ||||||
|  |      | ||||||
|     def main(self): |     def main(self): | ||||||
|         active_handle = self.get_active('Family') |         active_handle = self.get_active('Family') | ||||||
|         active = self.dbstate.db.get_family_from_handle(active_handle) |         active = self.dbstate.db.get_family_from_handle(active_handle) | ||||||
| @@ -119,6 +149,8 @@ class FamilyAttributes(Attributes): | |||||||
|         self.model.clear() |         self.model.clear() | ||||||
|         if active: |         if active: | ||||||
|             self.display_attributes(active) |             self.display_attributes(active) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
| class MediaAttributes(Attributes): | class MediaAttributes(Attributes): | ||||||
|     """ |     """ | ||||||
| @@ -129,6 +161,11 @@ class MediaAttributes(Attributes): | |||||||
|         self.connect_signal('Media', self.update) |         self.connect_signal('Media', self.update) | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Media') | ||||||
|  |         active = self.dbstate.db.get_object_from_handle(active_handle) | ||||||
|  |         self.set_has_data(self.get_has_data(active)) | ||||||
|  |      | ||||||
|     def main(self): |     def main(self): | ||||||
|         active_handle = self.get_active('Media') |         active_handle = self.get_active('Media') | ||||||
|         active = self.dbstate.db.get_object_from_handle(active_handle) |         active = self.dbstate.db.get_object_from_handle(active_handle) | ||||||
| @@ -136,4 +173,6 @@ class MediaAttributes(Attributes): | |||||||
|         self.model.clear() |         self.model.clear() | ||||||
|         if active: |         if active: | ||||||
|             self.display_attributes(active) |             self.display_attributes(active) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -50,10 +50,20 @@ class Backlinks(Gramplet): | |||||||
|         Display the back references for an object. |         Display the back references for an object. | ||||||
|         """ |         """ | ||||||
|         for classname, handle in \ |         for classname, handle in \ | ||||||
|                     self.dbstate.db.find_backlink_handles(active_handle, |                         self.dbstate.db.find_backlink_handles(active_handle): | ||||||
|                                                           include_classes=None): |  | ||||||
|             name = navigation_label(self.dbstate.db, classname, handle)[0] |             name = navigation_label(self.dbstate.db, classname, handle)[0] | ||||||
|             self.model.add((classname, name)) |             self.model.add((classname, name)) | ||||||
|  |         self.set_has_data(self.model.count > 0) | ||||||
|  |  | ||||||
|  |     def get_has_data(self, active_handle): | ||||||
|  |         """ | ||||||
|  |         Return True if the gramplet has data, else return False. | ||||||
|  |         """ | ||||||
|  |         if active_handle is None: | ||||||
|  |             return False | ||||||
|  |         for handle in self.dbstate.db.find_backlink_handles(active_handle): | ||||||
|  |             return True | ||||||
|  |         return False | ||||||
|          |          | ||||||
| class PersonBacklinks(Backlinks): | class PersonBacklinks(Backlinks): | ||||||
|     """ |     """ | ||||||
| @@ -66,11 +76,17 @@ class PersonBacklinks(Backlinks): | |||||||
|     def active_changed(self, handle): |     def active_changed(self, handle): | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Person') | ||||||
|  |         self.set_has_data(self.get_has_data(active_handle)) | ||||||
|  |      | ||||||
|     def main(self): |     def main(self): | ||||||
|         active_handle = self.get_active('Person') |         active_handle = self.get_active('Person') | ||||||
|         self.model.clear() |         self.model.clear() | ||||||
|         if active_handle: |         if active_handle: | ||||||
|             self.display_backlinks(active_handle) |             self.display_backlinks(active_handle) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
| class EventBacklinks(Backlinks): | class EventBacklinks(Backlinks): | ||||||
|     """ |     """ | ||||||
| @@ -81,11 +97,17 @@ class EventBacklinks(Backlinks): | |||||||
|         self.connect_signal('Event', self.update) |         self.connect_signal('Event', self.update) | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Event') | ||||||
|  |         self.set_has_data(self.get_has_data(active_handle)) | ||||||
|  |      | ||||||
|     def main(self): |     def main(self): | ||||||
|         active_handle = self.get_active('Event') |         active_handle = self.get_active('Event') | ||||||
|         self.model.clear() |         self.model.clear() | ||||||
|         if active_handle: |         if active_handle: | ||||||
|             self.display_backlinks(active_handle) |             self.display_backlinks(active_handle) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
| class FamilyBacklinks(Backlinks): | class FamilyBacklinks(Backlinks): | ||||||
|     """ |     """ | ||||||
| @@ -96,11 +118,17 @@ class FamilyBacklinks(Backlinks): | |||||||
|         self.connect_signal('Family', self.update) |         self.connect_signal('Family', self.update) | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Family') | ||||||
|  |         self.set_has_data(self.get_has_data(active_handle)) | ||||||
|  |      | ||||||
|     def main(self): |     def main(self): | ||||||
|         active_handle = self.get_active('Family') |         active_handle = self.get_active('Family') | ||||||
|         self.model.clear() |         self.model.clear() | ||||||
|         if active_handle: |         if active_handle: | ||||||
|             self.display_backlinks(active_handle) |             self.display_backlinks(active_handle) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
| class PlaceBacklinks(Backlinks): | class PlaceBacklinks(Backlinks): | ||||||
|     """ |     """ | ||||||
| @@ -111,11 +139,17 @@ class PlaceBacklinks(Backlinks): | |||||||
|         self.connect_signal('Place', self.update) |         self.connect_signal('Place', self.update) | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Place') | ||||||
|  |         self.set_has_data(self.get_has_data(active_handle)) | ||||||
|  |      | ||||||
|     def main(self): |     def main(self): | ||||||
|         active_handle = self.get_active('Place') |         active_handle = self.get_active('Place') | ||||||
|         self.model.clear() |         self.model.clear() | ||||||
|         if active_handle: |         if active_handle: | ||||||
|             self.display_backlinks(active_handle) |             self.display_backlinks(active_handle) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
| class SourceBacklinks(Backlinks): | class SourceBacklinks(Backlinks): | ||||||
|     """ |     """ | ||||||
| @@ -126,11 +160,17 @@ class SourceBacklinks(Backlinks): | |||||||
|         self.connect_signal('Source', self.update) |         self.connect_signal('Source', self.update) | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Source') | ||||||
|  |         self.set_has_data(self.get_has_data(active_handle)) | ||||||
|  |      | ||||||
|     def main(self): |     def main(self): | ||||||
|         active_handle = self.get_active('Source') |         active_handle = self.get_active('Source') | ||||||
|         self.model.clear() |         self.model.clear() | ||||||
|         if active_handle: |         if active_handle: | ||||||
|             self.display_backlinks(active_handle) |             self.display_backlinks(active_handle) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
| class RepositoryBacklinks(Backlinks): | class RepositoryBacklinks(Backlinks): | ||||||
|     """ |     """ | ||||||
| @@ -141,11 +181,17 @@ class RepositoryBacklinks(Backlinks): | |||||||
|         self.connect_signal('Repository', self.update) |         self.connect_signal('Repository', self.update) | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Repository') | ||||||
|  |         self.set_has_data(self.get_has_data(active_handle)) | ||||||
|  |      | ||||||
|     def main(self): |     def main(self): | ||||||
|         active_handle = self.get_active('Repository') |         active_handle = self.get_active('Repository') | ||||||
|         self.model.clear() |         self.model.clear() | ||||||
|         if active_handle: |         if active_handle: | ||||||
|             self.display_backlinks(active_handle) |             self.display_backlinks(active_handle) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
| class MediaBacklinks(Backlinks): | class MediaBacklinks(Backlinks): | ||||||
|     """ |     """ | ||||||
| @@ -156,11 +202,17 @@ class MediaBacklinks(Backlinks): | |||||||
|         self.connect_signal('Media', self.update) |         self.connect_signal('Media', self.update) | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Media') | ||||||
|  |         self.set_has_data(self.get_has_data(active_handle)) | ||||||
|  |      | ||||||
|     def main(self): |     def main(self): | ||||||
|         active_handle = self.get_active('Media') |         active_handle = self.get_active('Media') | ||||||
|         self.model.clear() |         self.model.clear() | ||||||
|         if active_handle: |         if active_handle: | ||||||
|             self.display_backlinks(active_handle) |             self.display_backlinks(active_handle) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
| class NoteBacklinks(Backlinks): | class NoteBacklinks(Backlinks): | ||||||
|     """ |     """ | ||||||
| @@ -171,9 +223,15 @@ class NoteBacklinks(Backlinks): | |||||||
|         self.connect_signal('Note', self.update) |         self.connect_signal('Note', self.update) | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Note') | ||||||
|  |         self.set_has_data(self.get_has_data(active_handle)) | ||||||
|  |      | ||||||
|     def main(self): |     def main(self): | ||||||
|         active_handle = self.get_active('Note') |         active_handle = self.get_active('Note') | ||||||
|         self.model.clear() |         self.model.clear() | ||||||
|         if active_handle: |         if active_handle: | ||||||
|             self.display_backlinks(active_handle) |             self.display_backlinks(active_handle) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -102,6 +102,25 @@ class PersonChildren(Children): | |||||||
|         self.model.clear() |         self.model.clear() | ||||||
|         if active_handle: |         if active_handle: | ||||||
|             self.display_person(active_handle) |             self.display_person(active_handle) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Person') | ||||||
|  |         active = self.dbstate.db.get_person_from_handle(active_handle) | ||||||
|  |         self.set_has_data(self.get_has_data(active)) | ||||||
|  |  | ||||||
|  |     def get_has_data(self, active_person): | ||||||
|  |         """ | ||||||
|  |         Return True if the gramplet has data, else return False. | ||||||
|  |         """ | ||||||
|  |         if active_person is None: | ||||||
|  |             return False | ||||||
|  |         for family_handle in active_person.get_family_handle_list(): | ||||||
|  |             family = self.dbstate.db.get_family_from_handle(family_handle) | ||||||
|  |             if family.get_child_ref_list(): | ||||||
|  |                 return True | ||||||
|  |         return False | ||||||
|  |  | ||||||
|     def display_person(self, active_handle): |     def display_person(self, active_handle): | ||||||
|         """ |         """ | ||||||
| @@ -111,6 +130,7 @@ class PersonChildren(Children): | |||||||
|         for family_handle in active_person.get_family_handle_list(): |         for family_handle in active_person.get_family_handle_list(): | ||||||
|             family = self.dbstate.db.get_family_from_handle(family_handle) |             family = self.dbstate.db.get_family_from_handle(family_handle) | ||||||
|             self.display_family(family, active_handle) |             self.display_family(family, active_handle) | ||||||
|  |         self.set_has_data(self.model.count > 0) | ||||||
|  |  | ||||||
|     def display_family(self, family, active_handle): |     def display_family(self, family, active_handle): | ||||||
|         """ |         """ | ||||||
| @@ -176,6 +196,23 @@ class FamilyChildren(Children): | |||||||
|         if active_handle: |         if active_handle: | ||||||
|             family = self.dbstate.db.get_family_from_handle(active_handle) |             family = self.dbstate.db.get_family_from_handle(active_handle) | ||||||
|             self.display_family(family) |             self.display_family(family) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Family') | ||||||
|  |         active = self.dbstate.db.get_family_from_handle(active_handle) | ||||||
|  |         self.set_has_data(self.get_has_data(active)) | ||||||
|  |  | ||||||
|  |     def get_has_data(self, active_family): | ||||||
|  |         """ | ||||||
|  |         Return True if the gramplet has data, else return False. | ||||||
|  |         """ | ||||||
|  |         if active_family is None: | ||||||
|  |             return False | ||||||
|  |         if active_family.get_child_ref_list(): | ||||||
|  |             return True | ||||||
|  |         return False | ||||||
|  |  | ||||||
|     def display_family(self, family): |     def display_family(self, family): | ||||||
|         """ |         """ | ||||||
| @@ -184,6 +221,7 @@ class FamilyChildren(Children): | |||||||
|         for child_ref in family.get_child_ref_list(): |         for child_ref in family.get_child_ref_list(): | ||||||
|             child = self.dbstate.db.get_person_from_handle(child_ref.ref) |             child = self.dbstate.db.get_person_from_handle(child_ref.ref) | ||||||
|             self.add_child(child) |             self.add_child(child) | ||||||
|  |         self.set_has_data(self.model.count > 0) | ||||||
|  |  | ||||||
|     def add_child(self, child): |     def add_child(self, child): | ||||||
|         """ |         """ | ||||||
|   | |||||||
| @@ -88,6 +88,42 @@ class Exif(Gramplet): | |||||||
|         self.model.clear() |         self.model.clear() | ||||||
|         if media: |         if media: | ||||||
|             self.display_exif_tags(media) |             self.display_exif_tags(media) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Media') | ||||||
|  |         active = self.dbstate.db.get_object_from_handle(active_handle) | ||||||
|  |         self.set_has_data(self.get_has_data(active)) | ||||||
|  |  | ||||||
|  |     def get_has_data(self, media): | ||||||
|  |         """ | ||||||
|  |         Return True if the gramplet has data, else return False. | ||||||
|  |         """ | ||||||
|  |         if media is None: | ||||||
|  |             return False | ||||||
|  |  | ||||||
|  |         full_path = Utils.media_path_full(self.dbstate.db, media.get_path()) | ||||||
|  |          | ||||||
|  |         if LesserVersion: # prior to v0.2.0 | ||||||
|  |             try: | ||||||
|  |                 metadata = pyexiv2.Image(full_path) | ||||||
|  |             except IOError: | ||||||
|  |                 return False | ||||||
|  |             metadata.readMetadata() | ||||||
|  |             if metadata.exifKeys(): | ||||||
|  |                 return True | ||||||
|  |  | ||||||
|  |         else: # v0.2.0 and above | ||||||
|  |             metadata = pyexiv2.ImageMetadata(full_path) | ||||||
|  |             try: | ||||||
|  |                 metadata.read() | ||||||
|  |             except IOError: | ||||||
|  |                 return False | ||||||
|  |             if metadata.exif_keys: | ||||||
|  |                 return True | ||||||
|  |  | ||||||
|  |         return False | ||||||
|  |  | ||||||
|     def display_exif_tags(self, media): |     def display_exif_tags(self, media): | ||||||
|         """ |         """ | ||||||
| @@ -115,3 +151,5 @@ class Exif(Gramplet): | |||||||
|             for key in metadata.exif_keys: |             for key in metadata.exif_keys: | ||||||
|                 tag = metadata[key] |                 tag = metadata[key] | ||||||
|                 self.model.add((tag.label, tag.human_value)) |                 self.model.add((tag.label, tag.human_value)) | ||||||
|  |                  | ||||||
|  |         self.set_has_data(self.model.count > 0) | ||||||
|   | |||||||
| @@ -54,17 +54,35 @@ class Gallery(Gramplet): | |||||||
|         Load the primary image into the main form if it exists. |         Load the primary image into the main form if it exists. | ||||||
|         """ |         """ | ||||||
|         media_list = obj.get_media_list() |         media_list = obj.get_media_list() | ||||||
|  |         count = 0 | ||||||
|         for media_ref in media_list: |         for media_ref in media_list: | ||||||
|             object_handle = media_ref.get_reference_handle() |             media_handle = media_ref.get_reference_handle() | ||||||
|             obj = self.dbstate.db.get_object_from_handle(object_handle) |             media = self.dbstate.db.get_object_from_handle(media_handle) | ||||||
|             full_path = Utils.media_path_full(self.dbstate.db, obj.get_path()) |             full_path = Utils.media_path_full(self.dbstate.db, media.get_path()) | ||||||
|             mime_type = obj.get_mime_type() |             mime_type = media.get_mime_type() | ||||||
|             if mime_type and mime_type.startswith("image"): |             if mime_type and mime_type.startswith("image"): | ||||||
|                 photo = Photo(180.0) |                 photo = Photo(180.0) | ||||||
|                 photo.set_image(full_path, media_ref.get_rectangle()) |                 photo.set_image(full_path, media_ref.get_rectangle()) | ||||||
|                 self.image_list.append(photo) |                 self.image_list.append(photo) | ||||||
|                 self.top.pack_start(photo, expand=False, fill=False) |                 self.top.pack_start(photo, expand=False, fill=False) | ||||||
|                 self.top.show_all() |                 self.top.show_all() | ||||||
|  |                 count += 1 | ||||||
|  |         self.set_has_data(count > 0) | ||||||
|  |  | ||||||
|  |     def get_has_data(self, obj): | ||||||
|  |         """ | ||||||
|  |         Return True if the gramplet has data, else return False. | ||||||
|  |         """ | ||||||
|  |         if obj is None:  | ||||||
|  |             return False | ||||||
|  |         media_list = obj.get_media_list() | ||||||
|  |         for media_ref in media_list: | ||||||
|  |             media_handle = media_ref.get_reference_handle() | ||||||
|  |             media = self.dbstate.db.get_object_from_handle(media_handle) | ||||||
|  |             mime_type = media.get_mime_type() | ||||||
|  |             if mime_type and mime_type.startswith("image"): | ||||||
|  |                 return True | ||||||
|  |         return False | ||||||
|  |  | ||||||
| class PersonGallery(Gallery): | class PersonGallery(Gallery): | ||||||
|     """ |     """ | ||||||
| @@ -77,6 +95,11 @@ class PersonGallery(Gallery): | |||||||
|     def active_changed(self, handle): |     def active_changed(self, handle): | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Person') | ||||||
|  |         active = self.dbstate.db.get_person_from_handle(active_handle) | ||||||
|  |         self.set_has_data(self.get_has_data(active)) | ||||||
|  |  | ||||||
|     def main(self): |     def main(self): | ||||||
|         active_handle = self.get_active('Person') |         active_handle = self.get_active('Person') | ||||||
|         active = self.dbstate.db.get_person_from_handle(active_handle) |         active = self.dbstate.db.get_person_from_handle(active_handle) | ||||||
| @@ -84,6 +107,8 @@ class PersonGallery(Gallery): | |||||||
|         self.clear_images() |         self.clear_images() | ||||||
|         if active: |         if active: | ||||||
|             self.load_images(active) |             self.load_images(active) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
| class EventGallery(Gallery): | class EventGallery(Gallery): | ||||||
|     """ |     """ | ||||||
| @@ -94,6 +119,11 @@ class EventGallery(Gallery): | |||||||
|         self.connect_signal('Event', self.update) |         self.connect_signal('Event', self.update) | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Event') | ||||||
|  |         active = self.dbstate.db.get_event_from_handle(active_handle) | ||||||
|  |         self.set_has_data(self.get_has_data(active)) | ||||||
|  |  | ||||||
|     def main(self): |     def main(self): | ||||||
|         active_handle = self.get_active('Event') |         active_handle = self.get_active('Event') | ||||||
|         active = self.dbstate.db.get_event_from_handle(active_handle) |         active = self.dbstate.db.get_event_from_handle(active_handle) | ||||||
| @@ -101,6 +131,8 @@ class EventGallery(Gallery): | |||||||
|         self.clear_images() |         self.clear_images() | ||||||
|         if active: |         if active: | ||||||
|             self.load_images(active) |             self.load_images(active) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
| class PlaceGallery(Gallery): | class PlaceGallery(Gallery): | ||||||
|     """ |     """ | ||||||
| @@ -111,6 +143,11 @@ class PlaceGallery(Gallery): | |||||||
|         self.connect_signal('Place', self.update) |         self.connect_signal('Place', self.update) | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Place') | ||||||
|  |         active = self.dbstate.db.get_place_from_handle(active_handle) | ||||||
|  |         self.set_has_data(self.get_has_data(active)) | ||||||
|  |  | ||||||
|     def main(self): |     def main(self): | ||||||
|         active_handle = self.get_active('Place') |         active_handle = self.get_active('Place') | ||||||
|         active = self.dbstate.db.get_place_from_handle(active_handle) |         active = self.dbstate.db.get_place_from_handle(active_handle) | ||||||
| @@ -118,6 +155,8 @@ class PlaceGallery(Gallery): | |||||||
|         self.clear_images() |         self.clear_images() | ||||||
|         if active: |         if active: | ||||||
|             self.load_images(active) |             self.load_images(active) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
| class SourceGallery(Gallery): | class SourceGallery(Gallery): | ||||||
|     """ |     """ | ||||||
| @@ -128,6 +167,11 @@ class SourceGallery(Gallery): | |||||||
|         self.connect_signal('Source', self.update) |         self.connect_signal('Source', self.update) | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Source') | ||||||
|  |         active = self.dbstate.db.get_source_from_handle(active_handle) | ||||||
|  |         self.set_has_data(self.get_has_data(active)) | ||||||
|  |  | ||||||
|     def main(self): |     def main(self): | ||||||
|         active_handle = self.get_active('Source') |         active_handle = self.get_active('Source') | ||||||
|         active = self.dbstate.db.get_source_from_handle(active_handle) |         active = self.dbstate.db.get_source_from_handle(active_handle) | ||||||
| @@ -135,4 +179,6 @@ class SourceGallery(Gallery): | |||||||
|         self.clear_images() |         self.clear_images() | ||||||
|         if active: |         if active: | ||||||
|             self.load_images(active) |             self.load_images(active) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -55,14 +55,21 @@ class MediaPreview(Gramplet): | |||||||
|         self.connect_signal('Media', self.update) |         self.connect_signal('Media', self.update) | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self):  | ||||||
|  |         active_handle = self.get_active('Media') | ||||||
|  |         active_media = self.dbstate.db.get_object_from_handle(active_handle) | ||||||
|  |         self.set_has_data(active_media is not None) | ||||||
|  |  | ||||||
|     def main(self): |     def main(self): | ||||||
|         active_handle = self.get_active('Media') |         active_handle = self.get_active('Media') | ||||||
|         media = self.dbstate.db.get_object_from_handle(active_handle) |         media = self.dbstate.db.get_object_from_handle(active_handle) | ||||||
|         self.top.hide() |         self.top.hide() | ||||||
|         if media: |         if media: | ||||||
|             self.load_image(media) |             self.load_image(media) | ||||||
|  |             self.set_has_data(True) | ||||||
|         else: |         else: | ||||||
|             self.thumbnail.clear() |             self.thumbnail.clear() | ||||||
|  |             self.set_has_data(False) | ||||||
|         self.top.show() |         self.top.show() | ||||||
|  |  | ||||||
|     def load_image(self, media): |     def load_image(self, media): | ||||||
|   | |||||||
| @@ -74,10 +74,13 @@ class Notes(Gramplet): | |||||||
|         self.note_list = obj.get_note_list() |         self.note_list = obj.get_note_list() | ||||||
|         self.page.set_text('') |         self.page.set_text('') | ||||||
|         if len(self.note_list) > 0: |         if len(self.note_list) > 0: | ||||||
|  |             self.set_has_data(True) | ||||||
|             if len(self.note_list) > 1: |             if len(self.note_list) > 1: | ||||||
|                 self.right.set_sensitive(True) |                 self.right.set_sensitive(True) | ||||||
|             self.current = 0 |             self.current = 0 | ||||||
|             self.display_note() |             self.display_note() | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
|     def display_note(self): |     def display_note(self): | ||||||
|         """ |         """ | ||||||
| @@ -111,6 +114,16 @@ class Notes(Gramplet): | |||||||
|                 self.right.set_sensitive(False) |                 self.right.set_sensitive(False) | ||||||
|             self.display_note() |             self.display_note() | ||||||
|  |  | ||||||
|  |     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_note_list(): | ||||||
|  |             return True | ||||||
|  |         return False | ||||||
|  |  | ||||||
| class PersonNotes(Notes): | class PersonNotes(Notes): | ||||||
|     """ |     """ | ||||||
|     Displays the notes for a person. |     Displays the notes for a person. | ||||||
| @@ -122,11 +135,18 @@ class PersonNotes(Notes): | |||||||
|     def active_changed(self, handle): |     def active_changed(self, handle): | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Person') | ||||||
|  |         active = self.dbstate.db.get_person_from_handle(active_handle) | ||||||
|  |         self.set_has_data(self.get_has_data(active)) | ||||||
|  |      | ||||||
|     def main(self): |     def main(self): | ||||||
|         active_handle = self.get_active('Person') |         active_handle = self.get_active('Person') | ||||||
|         active = self.dbstate.db.get_person_from_handle(active_handle) |         active = self.dbstate.db.get_person_from_handle(active_handle) | ||||||
|         if active: |         if active: | ||||||
|             self.get_notes(active) |             self.get_notes(active) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
| class EventNotes(Notes): | class EventNotes(Notes): | ||||||
|     """ |     """ | ||||||
| @@ -137,11 +157,18 @@ class EventNotes(Notes): | |||||||
|         self.connect_signal('Event', self.update) |         self.connect_signal('Event', self.update) | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Event') | ||||||
|  |         active = self.dbstate.db.get_event_from_handle(active_handle) | ||||||
|  |         self.set_has_data(self.get_has_data(active)) | ||||||
|  |      | ||||||
|     def main(self): |     def main(self): | ||||||
|         active_handle = self.get_active('Event') |         active_handle = self.get_active('Event') | ||||||
|         active = self.dbstate.db.get_event_from_handle(active_handle) |         active = self.dbstate.db.get_event_from_handle(active_handle) | ||||||
|         if active: |         if active: | ||||||
|             self.get_notes(active) |             self.get_notes(active) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
| class FamilyNotes(Notes): | class FamilyNotes(Notes): | ||||||
|     """ |     """ | ||||||
| @@ -152,11 +179,18 @@ class FamilyNotes(Notes): | |||||||
|         self.connect_signal('Family', self.update) |         self.connect_signal('Family', self.update) | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Family') | ||||||
|  |         active = self.dbstate.db.get_family_from_handle(active_handle) | ||||||
|  |         self.set_has_data(self.get_has_data(active)) | ||||||
|  |      | ||||||
|     def main(self): |     def main(self): | ||||||
|         active_handle = self.get_active('Family') |         active_handle = self.get_active('Family') | ||||||
|         active = self.dbstate.db.get_family_from_handle(active_handle) |         active = self.dbstate.db.get_family_from_handle(active_handle) | ||||||
|         if active: |         if active: | ||||||
|             self.get_notes(active) |             self.get_notes(active) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
| class PlaceNotes(Notes): | class PlaceNotes(Notes): | ||||||
|     """ |     """ | ||||||
| @@ -167,11 +201,18 @@ class PlaceNotes(Notes): | |||||||
|         self.connect_signal('Place', self.update) |         self.connect_signal('Place', self.update) | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Place') | ||||||
|  |         active = self.dbstate.db.get_place_from_handle(active_handle) | ||||||
|  |         self.set_has_data(self.get_has_data(active)) | ||||||
|  |      | ||||||
|     def main(self): |     def main(self): | ||||||
|         active_handle = self.get_active('Place') |         active_handle = self.get_active('Place') | ||||||
|         active = self.dbstate.db.get_place_from_handle(active_handle) |         active = self.dbstate.db.get_place_from_handle(active_handle) | ||||||
|         if active: |         if active: | ||||||
|             self.get_notes(active) |             self.get_notes(active) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
| class SourceNotes(Notes): | class SourceNotes(Notes): | ||||||
|     """ |     """ | ||||||
| @@ -182,11 +223,18 @@ class SourceNotes(Notes): | |||||||
|         self.connect_signal('Source', self.update) |         self.connect_signal('Source', self.update) | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Source') | ||||||
|  |         active = self.dbstate.db.get_source_from_handle(active_handle) | ||||||
|  |         self.set_has_data(self.get_has_data(active)) | ||||||
|  |      | ||||||
|     def main(self): |     def main(self): | ||||||
|         active_handle = self.get_active('Source') |         active_handle = self.get_active('Source') | ||||||
|         active = self.dbstate.db.get_source_from_handle(active_handle) |         active = self.dbstate.db.get_source_from_handle(active_handle) | ||||||
|         if active: |         if active: | ||||||
|             self.get_notes(active) |             self.get_notes(active) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
| class RepositoryNotes(Notes): | class RepositoryNotes(Notes): | ||||||
|     """ |     """ | ||||||
| @@ -197,11 +245,18 @@ class RepositoryNotes(Notes): | |||||||
|         self.connect_signal('Repository', self.update) |         self.connect_signal('Repository', self.update) | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Repository') | ||||||
|  |         active = self.dbstate.db.get_repository_from_handle(active_handle) | ||||||
|  |         self.set_has_data(self.get_has_data(active)) | ||||||
|  |      | ||||||
|     def main(self): |     def main(self): | ||||||
|         active_handle = self.get_active('Repository') |         active_handle = self.get_active('Repository') | ||||||
|         active = self.dbstate.db.get_repository_from_handle(active_handle) |         active = self.dbstate.db.get_repository_from_handle(active_handle) | ||||||
|         if active: |         if active: | ||||||
|             self.get_notes(active) |             self.get_notes(active) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
| class MediaNotes(Notes): | class MediaNotes(Notes): | ||||||
|     """ |     """ | ||||||
| @@ -212,9 +267,16 @@ class MediaNotes(Notes): | |||||||
|         self.connect_signal('Media', self.update) |         self.connect_signal('Media', self.update) | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Media') | ||||||
|  |         active = self.dbstate.db.get_object_from_handle(active_handle) | ||||||
|  |         self.set_has_data(self.get_has_data(active)) | ||||||
|  |      | ||||||
|     def main(self): |     def main(self): | ||||||
|         active_handle = self.get_active('Media') |         active_handle = self.get_active('Media') | ||||||
|         active = self.dbstate.db.get_object_from_handle(active_handle) |         active = self.dbstate.db.get_object_from_handle(active_handle) | ||||||
|         if active: |         if active: | ||||||
|             self.get_notes(active) |             self.get_notes(active) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -90,14 +90,21 @@ class PersonDetails(Gramplet): | |||||||
|     def active_changed(self, handle): |     def active_changed(self, handle): | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self):  | ||||||
|  |         active_handle = self.get_active('Person') | ||||||
|  |         active_person = self.dbstate.db.get_person_from_handle(active_handle) | ||||||
|  |         self.set_has_data(active_person is not None) | ||||||
|  |  | ||||||
|     def main(self): # return false finishes |     def main(self): # return false finishes | ||||||
|         active_handle = self.get_active('Person') |         active_handle = self.get_active('Person') | ||||||
|         active_person = self.dbstate.db.get_person_from_handle(active_handle) |         active_person = self.dbstate.db.get_person_from_handle(active_handle) | ||||||
|         self.top.hide() |         self.top.hide() | ||||||
|         if active_person: |         if active_person: | ||||||
|             self.display_person(active_person) |             self.display_person(active_person) | ||||||
|  |             self.set_has_data(True) | ||||||
|         else: |         else: | ||||||
|             self.display_empty() |             self.display_empty() | ||||||
|  |             self.set_has_data(False) | ||||||
|         self.top.show() |         self.top.show() | ||||||
|  |  | ||||||
|     def display_person(self, active_person): |     def display_person(self, active_person): | ||||||
|   | |||||||
| @@ -58,6 +58,23 @@ class PersonResidence(Gramplet): | |||||||
|     def active_changed(self, handle): |     def active_changed(self, handle): | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Person') | ||||||
|  |         active = self.dbstate.db.get_person_from_handle(active_handle) | ||||||
|  |         self.set_has_data(self.get_has_data(active)) | ||||||
|  |  | ||||||
|  |     def get_has_data(self, active_person): | ||||||
|  |         """ | ||||||
|  |         Return True if the gramplet has data, else return False. | ||||||
|  |         """ | ||||||
|  |         if active_person: | ||||||
|  |             for event_ref in active_person.get_event_ref_list(): | ||||||
|  |                 if int(event_ref.get_role()) == EventRoleType.PRIMARY: | ||||||
|  |                     event = self.dbstate.db.get_event_from_handle(event_ref.ref) | ||||||
|  |                     if int(event.get_type()) == EventType.RESIDENCE: | ||||||
|  |                         return True | ||||||
|  |         return False | ||||||
|  |  | ||||||
|     def main(self): # return false finishes |     def main(self): # return false finishes | ||||||
|         active_handle = self.get_active('Person') |         active_handle = self.get_active('Person') | ||||||
|         active_person = self.dbstate.db.get_person_from_handle(active_handle) |         active_person = self.dbstate.db.get_person_from_handle(active_handle) | ||||||
| @@ -65,16 +82,21 @@ class PersonResidence(Gramplet): | |||||||
|         self.model.clear() |         self.model.clear() | ||||||
|         if active_person: |         if active_person: | ||||||
|             self.display_person(active_person) |             self.display_person(active_person) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
|     def display_person(self, active_person): |     def display_person(self, active_person): | ||||||
|         """ |         """ | ||||||
|         Display the residence events of the active person. |         Display the residence events of the active person. | ||||||
|         """ |         """ | ||||||
|  |         count = 0 | ||||||
|         for event_ref in active_person.get_event_ref_list(): |         for event_ref in active_person.get_event_ref_list(): | ||||||
|             if int(event_ref.get_role()) == EventRoleType.PRIMARY: |             if int(event_ref.get_role()) == EventRoleType.PRIMARY: | ||||||
|                 event = self.dbstate.db.get_event_from_handle(event_ref.ref) |                 event = self.dbstate.db.get_event_from_handle(event_ref.ref) | ||||||
|                 if int(event.get_type()) == EventType.RESIDENCE: |                 if int(event.get_type()) == EventType.RESIDENCE: | ||||||
|                     self.add_residence(event) |                     self.add_residence(event) | ||||||
|  |                     count += 1 | ||||||
|  |         self.set_has_data(count > 0) | ||||||
|  |  | ||||||
|     def add_residence(self, event): |     def add_residence(self, event): | ||||||
|         """ |         """ | ||||||
|   | |||||||
| @@ -79,14 +79,21 @@ class PlaceDetails(Gramplet): | |||||||
|         self.connect_signal('Place', self.update) |         self.connect_signal('Place', self.update) | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self):  | ||||||
|  |         active_handle = self.get_active('Person') | ||||||
|  |         active_person = self.dbstate.db.get_person_from_handle(active_handle) | ||||||
|  |         self.set_has_data(active_person is not None) | ||||||
|  |  | ||||||
|     def main(self): |     def main(self): | ||||||
|         active_handle = self.get_active('Place') |         active_handle = self.get_active('Place') | ||||||
|         place = self.dbstate.db.get_place_from_handle(active_handle) |         place = self.dbstate.db.get_place_from_handle(active_handle) | ||||||
|         self.top.hide() |         self.top.hide() | ||||||
|         if place: |         if place: | ||||||
|             self.display_place(place) |             self.display_place(place) | ||||||
|  |             self.set_has_data(True) | ||||||
|         else: |         else: | ||||||
|             self.display_empty() |             self.display_empty() | ||||||
|  |             self.set_has_data(False) | ||||||
|         self.top.show() |         self.top.show() | ||||||
|  |  | ||||||
|     def display_place(self, place): |     def display_place(self, place): | ||||||
|   | |||||||
| @@ -76,14 +76,21 @@ class RepositoryDetails(Gramplet): | |||||||
|         self.connect_signal('Repository', self.update) |         self.connect_signal('Repository', self.update) | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self):  | ||||||
|  |         active_handle = self.get_active('Person') | ||||||
|  |         active_person = self.dbstate.db.get_person_from_handle(active_handle) | ||||||
|  |         self.set_has_data(active_person is not None) | ||||||
|  |  | ||||||
|     def main(self): |     def main(self): | ||||||
|         active_handle = self.get_active('Repository') |         active_handle = self.get_active('Repository') | ||||||
|         repo = self.dbstate.db.get_repository_from_handle(active_handle) |         repo = self.dbstate.db.get_repository_from_handle(active_handle) | ||||||
|         self.top.hide() |         self.top.hide() | ||||||
|         if repo: |         if repo: | ||||||
|             self.display_repo(repo) |             self.display_repo(repo) | ||||||
|  |             self.set_has_data(True) | ||||||
|         else: |         else: | ||||||
|             self.display_empty() |             self.display_empty() | ||||||
|  |             self.set_has_data(False) | ||||||
|         self.top.show() |         self.top.show() | ||||||
|  |  | ||||||
|     def display_repo(self, repo): |     def display_repo(self, repo): | ||||||
|   | |||||||
| @@ -56,6 +56,7 @@ class Sources(Gramplet): | |||||||
|         """ |         """ | ||||||
|         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_source_ref(self, source_ref): |     def add_source_ref(self, source_ref): | ||||||
|         """ |         """ | ||||||
| @@ -80,6 +81,16 @@ 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. | ||||||
| @@ -91,6 +102,11 @@ class PersonSources(Sources): | |||||||
|     def active_changed(self, handle): |     def active_changed(self, handle): | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Person') | ||||||
|  |         active = self.dbstate.db.get_person_from_handle(active_handle) | ||||||
|  |         self.set_has_data(self.get_has_data(active)) | ||||||
|  |      | ||||||
|     def main(self): |     def main(self): | ||||||
|         active_handle = self.get_active('Person') |         active_handle = self.get_active('Person') | ||||||
|         active = self.dbstate.db.get_person_from_handle(active_handle) |         active = self.dbstate.db.get_person_from_handle(active_handle) | ||||||
| @@ -98,6 +114,8 @@ class PersonSources(Sources): | |||||||
|         self.model.clear() |         self.model.clear() | ||||||
|         if active: |         if active: | ||||||
|             self.display_sources(active) |             self.display_sources(active) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
| class EventSources(Sources): | class EventSources(Sources): | ||||||
|     """ |     """ | ||||||
| @@ -108,6 +126,11 @@ class EventSources(Sources): | |||||||
|         self.connect_signal('Event', self.update) |         self.connect_signal('Event', self.update) | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Event') | ||||||
|  |         active = self.dbstate.db.get_event_from_handle(active_handle) | ||||||
|  |         self.set_has_data(self.get_has_data(active)) | ||||||
|  |      | ||||||
|     def main(self): |     def main(self): | ||||||
|         active_handle = self.get_active('Event') |         active_handle = self.get_active('Event') | ||||||
|         active = self.dbstate.db.get_event_from_handle(active_handle) |         active = self.dbstate.db.get_event_from_handle(active_handle) | ||||||
| @@ -115,6 +138,8 @@ class EventSources(Sources): | |||||||
|         self.model.clear() |         self.model.clear() | ||||||
|         if active: |         if active: | ||||||
|             self.display_sources(active) |             self.display_sources(active) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
| class FamilySources(Sources): | class FamilySources(Sources): | ||||||
|     """ |     """ | ||||||
| @@ -125,6 +150,11 @@ class FamilySources(Sources): | |||||||
|         self.connect_signal('Family', self.update) |         self.connect_signal('Family', self.update) | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Family') | ||||||
|  |         active = self.dbstate.db.get_family_from_handle(active_handle) | ||||||
|  |         self.set_has_data(self.get_has_data(active)) | ||||||
|  |      | ||||||
|     def main(self): |     def main(self): | ||||||
|         active_handle = self.get_active('Family') |         active_handle = self.get_active('Family') | ||||||
|         active = self.dbstate.db.get_family_from_handle(active_handle) |         active = self.dbstate.db.get_family_from_handle(active_handle) | ||||||
| @@ -132,6 +162,8 @@ class FamilySources(Sources): | |||||||
|         self.model.clear() |         self.model.clear() | ||||||
|         if active: |         if active: | ||||||
|             self.display_sources(active) |             self.display_sources(active) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
| class PlaceSources(Sources): | class PlaceSources(Sources): | ||||||
|     """ |     """ | ||||||
| @@ -142,6 +174,11 @@ class PlaceSources(Sources): | |||||||
|         self.connect_signal('Place', self.update) |         self.connect_signal('Place', self.update) | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Place') | ||||||
|  |         active = self.dbstate.db.get_place_from_handle(active_handle) | ||||||
|  |         self.set_has_data(self.get_has_data(active)) | ||||||
|  |      | ||||||
|     def main(self): |     def main(self): | ||||||
|         active_handle = self.get_active('Place') |         active_handle = self.get_active('Place') | ||||||
|         active = self.dbstate.db.get_place_from_handle(active_handle) |         active = self.dbstate.db.get_place_from_handle(active_handle) | ||||||
| @@ -149,6 +186,8 @@ class PlaceSources(Sources): | |||||||
|         self.model.clear() |         self.model.clear() | ||||||
|         if active: |         if active: | ||||||
|             self.display_sources(active) |             self.display_sources(active) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
| class MediaSources(Sources): | class MediaSources(Sources): | ||||||
|     """ |     """ | ||||||
| @@ -159,6 +198,11 @@ class MediaSources(Sources): | |||||||
|         self.connect_signal('Media', self.update) |         self.connect_signal('Media', self.update) | ||||||
|         self.update() |         self.update() | ||||||
|  |  | ||||||
|  |     def update_has_data(self): | ||||||
|  |         active_handle = self.get_active('Media') | ||||||
|  |         active = self.dbstate.db.get_object_from_handle(active_handle) | ||||||
|  |         self.set_has_data(self.get_has_data(active)) | ||||||
|  |      | ||||||
|     def main(self): |     def main(self): | ||||||
|         active_handle = self.get_active('Media') |         active_handle = self.get_active('Media') | ||||||
|         active = self.dbstate.db.get_object_from_handle(active_handle) |         active = self.dbstate.db.get_object_from_handle(active_handle) | ||||||
| @@ -166,4 +210,6 @@ class MediaSources(Sources): | |||||||
|         self.model.clear() |         self.model.clear() | ||||||
|         if active: |         if active: | ||||||
|             self.display_sources(active) |             self.display_sources(active) | ||||||
|  |         else: | ||||||
|  |             self.set_has_data(False) | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user