diff --git a/ChangeLog b/ChangeLog index 79cdae7f6..712b542e7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-12-14 Benny Malengier + * src/RelLib/_Repository.py: Repo has address which can have source, so + backref of source to repo must be allowed and added! + * src/DisplayTabs/_BackRefModel.py: Repo can be backref, add + * src/DisplayTabs/_BackRefList.py: Repo can be backref, add + 2007-12-11 Benny Malengier * src/plugins/IndivComplete.py: bug on buglist, wrong parameter diff --git a/src/DisplayTabs/_BackRefList.py b/src/DisplayTabs/_BackRefList.py index f4cb46f87..0d1a899b9 100644 --- a/src/DisplayTabs/_BackRefList.py +++ b/src/DisplayTabs/_BackRefList.py @@ -160,3 +160,11 @@ class BackRefList(EmbeddedList): EditEvent(self.dbstate, self.uistate, [], event) except Errors.WindowActiveError: pass + elif reftype == 'Repository': + try: + from Editors import EditRepository + + repo = self.dbstate.db.get_repository_from_handle(ref) + EditRepository(self.dbstate, self.uistate, [], repo) + except Errors.WindowActiveError: + pass diff --git a/src/DisplayTabs/_BackRefModel.py b/src/DisplayTabs/_BackRefModel.py index 9aed86bc4..8c79ee9c4 100644 --- a/src/DisplayTabs/_BackRefModel.py +++ b/src/DisplayTabs/_BackRefModel.py @@ -87,6 +87,11 @@ class BackRefModel(gtk.ListStore): name = p.get_title() gid = p.gramps_id handle = p.handle + elif dtype == 'Repository': + p = self.db.get_repository_from_handle(ref[1]) + name = p.get_name() + gid = p.gramps_id + handle = p.handle else: p = self.db.get_object_from_handle(ref[1]) name = p.get_description() diff --git a/src/RelLib/_Repository.py b/src/RelLib/_Repository.py index 2f0ded2bd..005acc48f 100644 --- a/src/RelLib/_Repository.py +++ b/src/RelLib/_Repository.py @@ -100,6 +100,25 @@ class Repository(NoteBase, AddressBase, UrlBase, PrimaryObject): check_list.append(self.note) return check_list + def get_sourcref_child_list(self): + """ + Returns the list of child secondary objects that may refer sources. + + @return: Returns the list of child secondary child objects that may refer sources. + @rtype: list + """ + return self.address_list + + def get_handle_referents(self): + """ + Returns the list of child objects which may, directly or through + their children, reference primary objects. + + @return: Returns the list of objects refereincing primary objects. + @rtype: list + """ + return self.address_list + def has_source_reference(self, src_handle) : """ Returns True if any of the child objects has reference @@ -110,6 +129,10 @@ class Repository(NoteBase, AddressBase, UrlBase, PrimaryObject): @return: Returns whether any of it's child objects has reference to this source handle. @rtype: bool """ + for item in self.get_sourcref_child_list(): + if item.has_source_reference(src_handle): + return True + return False def remove_source_references(self, src_handle_list): @@ -120,7 +143,8 @@ class Repository(NoteBase, AddressBase, UrlBase, PrimaryObject): @param src_handle_list: The list of source handles to be removed. @type src_handle_list: list """ - pass + for item in self.get_sourcref_child_list(): + item.remove_source_references(src_handle_list) def replace_source_references(self, old_handle, new_handle): """ @@ -132,7 +156,8 @@ class Repository(NoteBase, AddressBase, UrlBase, PrimaryObject): @param new_handle: The source handle to replace the old one with. @type new_handle: str """ - pass + for item in self.get_sourcref_child_list(): + item.replace_source_references(old_handle, new_handle) def set_type(self, the_type): """