diff --git a/gramps/gen/filters/rules/person/_deeprelationshippathbetween.py b/gramps/gen/filters/rules/person/_deeprelationshippathbetween.py index d64ce4aee..5ee885433 100644 --- a/gramps/gen/filters/rules/person/_deeprelationshippathbetween.py +++ b/gramps/gen/filters/rules/person/_deeprelationshippathbetween.py @@ -106,6 +106,8 @@ def find_deep_relations(db, user, person, path, seen, target_people): if handle in seen: return [] seen.append(handle) + if user: + user.step_progress() return_paths = [] person_path = path + [handle] @@ -118,8 +120,6 @@ def find_deep_relations(db, user, person, path, seen, target_people): for family_person in family_people: pers = db.get_person_from_handle(family_person) return_paths += find_deep_relations(db, user, pers, person_path, seen, target_people) - if user: - user.step_progress() return return_paths diff --git a/gramps/gen/filters/rules/person/_hascommonancestorwithfiltermatch.py b/gramps/gen/filters/rules/person/_hascommonancestorwithfiltermatch.py index 76c640303..5b988c8cf 100644 --- a/gramps/gen/filters/rules/person/_hascommonancestorwithfiltermatch.py +++ b/gramps/gen/filters/rules/person/_hascommonancestorwithfiltermatch.py @@ -64,12 +64,20 @@ class HasCommonAncestorWithFilterMatch(HasCommonAncestorWith): self.with_people = [] filt = MatchesFilter(self.list) filt.requestprepare(db, user) + if user: + user.begin_progress(self.category, + _('Retrieving all sub-filter matches'), + db.get_number_of_people()) for handle in db.iter_person_handles(): person = db.get_person_from_handle(handle) + if user: + user.step_progress() if person and filt.apply(db, person): #store all people in the filter so as to compare later self.with_people.append(person.handle) #fill list of ancestor of person if not present yet if handle not in self.ancestor_cache: self.add_ancs(db, person) + if user: + user.end_progress() filt.requestreset() diff --git a/gramps/gen/filters/rules/person/_isancestoroffiltermatch.py b/gramps/gen/filters/rules/person/_isancestoroffiltermatch.py index 01a5c00b9..2f2b9b19e 100644 --- a/gramps/gen/filters/rules/person/_isancestoroffiltermatch.py +++ b/gramps/gen/filters/rules/person/_isancestoroffiltermatch.py @@ -62,9 +62,17 @@ class IsAncestorOfFilterMatch(IsAncestorOf): filt = MatchesFilter(self.list[0:1]) filt.requestprepare(db, user) + if user: + user.begin_progress(self.category, + _('Retrieving all sub-filter matches'), + db.get_number_of_people()) for person in db.iter_people(): + if user: + user.step_progress() if filt.apply(db, person): self.init_ancestor_list(db, person, first) + if user: + user.end_progress() filt.requestreset() def reset(self): diff --git a/gramps/gen/filters/rules/person/_ischildoffiltermatch.py b/gramps/gen/filters/rules/person/_ischildoffiltermatch.py index ca25664d0..fd34c9afb 100644 --- a/gramps/gen/filters/rules/person/_ischildoffiltermatch.py +++ b/gramps/gen/filters/rules/person/_ischildoffiltermatch.py @@ -53,9 +53,17 @@ class IsChildOfFilterMatch(Rule): self.map = set() filt = MatchesFilter(self.list) filt.requestprepare(db, user) + if user: + user.begin_progress(self.category, + _('Retrieving all sub-filter matches'), + db.get_number_of_people()) for person in db.iter_people(): + if user: + user.step_progress() if filt.apply(db, person): self.init_list(person) + if user: + user.end_progress() filt.requestreset() def reset(self): diff --git a/gramps/gen/filters/rules/person/_isdescendantfamilyoffiltermatch.py b/gramps/gen/filters/rules/person/_isdescendantfamilyoffiltermatch.py index 1e42c7756..da5a929c8 100644 --- a/gramps/gen/filters/rules/person/_isdescendantfamilyoffiltermatch.py +++ b/gramps/gen/filters/rules/person/_isdescendantfamilyoffiltermatch.py @@ -55,8 +55,16 @@ class IsDescendantFamilyOfFilterMatch(IsDescendantFamilyOf): filt = MatchesFilter(self.list[0:1]) filt.requestprepare(db, user) + if user: + user.begin_progress(self.category, + _('Retrieving all sub-filter matches'), + db.get_number_of_people()) for person in db.iter_people(): + if user: + user.step_progress() if filt.apply(db, person): self.add_matches(person) + if user: + user.end_progress() filt.requestreset() diff --git a/gramps/gen/filters/rules/person/_isdescendantoffiltermatch.py b/gramps/gen/filters/rules/person/_isdescendantoffiltermatch.py index 1bd660af0..9d63f1f04 100644 --- a/gramps/gen/filters/rules/person/_isdescendantoffiltermatch.py +++ b/gramps/gen/filters/rules/person/_isdescendantoffiltermatch.py @@ -62,9 +62,17 @@ class IsDescendantOfFilterMatch(IsDescendantOf): filt = MatchesFilter(self.list[0:1]) filt.requestprepare(db, user) + if user: + user.begin_progress(self.category, + _('Retrieving all sub-filter matches'), + db.get_number_of_people()) for person in db.iter_people(): + if user: + user.step_progress() if filt.apply(db, person): self.init_list(person, first) + if user: + user.end_progress() filt.requestreset() def reset(self): diff --git a/gramps/gen/filters/rules/person/_isparentoffiltermatch.py b/gramps/gen/filters/rules/person/_isparentoffiltermatch.py index 27126a655..ab611c91a 100644 --- a/gramps/gen/filters/rules/person/_isparentoffiltermatch.py +++ b/gramps/gen/filters/rules/person/_isparentoffiltermatch.py @@ -53,9 +53,17 @@ class IsParentOfFilterMatch(Rule): self.map = set() filt = MatchesFilter(self.list) filt.requestprepare(db, user) + if user: + user.begin_progress(self.category, + _('Retrieving all sub-filter matches'), + db.get_number_of_people()) for person in db.iter_people(): + if user: + user.step_progress() if filt.apply(db, person): self.init_list(person) + if user: + user.end_progress() filt.requestreset() def reset(self): diff --git a/gramps/gen/filters/rules/person/_issiblingoffiltermatch.py b/gramps/gen/filters/rules/person/_issiblingoffiltermatch.py index 05b240223..514c8137b 100644 --- a/gramps/gen/filters/rules/person/_issiblingoffiltermatch.py +++ b/gramps/gen/filters/rules/person/_issiblingoffiltermatch.py @@ -52,9 +52,17 @@ class IsSiblingOfFilterMatch(Rule): self.map = set() filt = MatchesFilter(self.list) filt.requestprepare(db, user) + if user: + user.begin_progress(self.category, + _('Retrieving all sub-filter matches'), + db.get_number_of_people()) for person in db.iter_people(): + if user: + user.step_progress() if filt.apply (db, person): self.init_list (person) + if user: + user.end_progress() filt.requestreset() def reset(self): @@ -67,8 +75,9 @@ class IsSiblingOfFilterMatch(Rule): if not person: return fam_id = person.get_main_parents_family_handle() - fam = self.db.get_family_from_handle(fam_id) - if fam: - self.map.update(child_ref.ref - for child_ref in fam.get_child_ref_list() + if fam_id: + fam = self.db.get_family_from_handle(fam_id) + if fam: + self.map.update( + child_ref.ref for child_ref in fam.get_child_ref_list() if child_ref and child_ref.ref != person.handle)