From 076d75eba41350ca6e241fe4c9e2a218b9429c39 Mon Sep 17 00:00:00 2001 From: prculley Date: Fri, 3 Feb 2017 18:05:08 -0600 Subject: [PATCH] Add progress indication to long running reports --- gramps/gen/plug/report/_reportbase.py | 1 + gramps/plugins/graph/gvrelgraph.py | 10 ++++++++++ gramps/plugins/textreport/indivcomplete.py | 9 +++++++++ gramps/plugins/textreport/notelinkreport.py | 8 ++++++++ 4 files changed, 28 insertions(+) diff --git a/gramps/gen/plug/report/_reportbase.py b/gramps/gen/plug/report/_reportbase.py index c6bb68930..760eaabb4 100644 --- a/gramps/gen/plug/report/_reportbase.py +++ b/gramps/gen/plug/report/_reportbase.py @@ -45,6 +45,7 @@ class Report: def __init__(self, database, options_class, user): self.database = database self.options_class = options_class + self._user = user self.doc = options_class.get_document() diff --git a/gramps/plugins/graph/gvrelgraph.py b/gramps/plugins/graph/gvrelgraph.py index 18662572f..9d216ccd1 100644 --- a/gramps/plugins/graph/gvrelgraph.py +++ b/gramps/plugins/graph/gvrelgraph.py @@ -193,8 +193,14 @@ class RelGraphReport(Report): self._db.iter_person_handles()) if len(person_handles) > 1: + if self._user: + self._user.begin_progress(_("Relationship Graph"), + _("Generating report"), + len(person_handles) * 2) self.add_persons_and_families(person_handles) self.add_child_links_to_families(person_handles) + if self._user: + self._user.end_progress() def add_child_links_to_families(self, person_handles): """ @@ -205,6 +211,8 @@ class RelGraphReport(Report): person_dict = dict([handle, 1] for handle in person_handles) for person_handle in person_handles: + if self._user: + self._user.step_progress() person = self._db.get_person_from_handle(person_handle) p_id = person.get_gramps_id() for fam_handle in person.get_parent_family_handle_list(): @@ -261,6 +269,8 @@ class RelGraphReport(Report): # so we don't do it twice families_done = {} for person_handle in person_handles: + if self._user: + self._user.step_progress() # determine per person if we use HTML style label if self.includeimg: self.use_html_output = True diff --git a/gramps/plugins/textreport/indivcomplete.py b/gramps/plugins/textreport/indivcomplete.py index a8f9f2b58..ab1d680ab 100644 --- a/gramps/plugins/textreport/indivcomplete.py +++ b/gramps/plugins/textreport/indivcomplete.py @@ -812,12 +812,21 @@ class IndivCompleteReport(Report): raise ReportError(_('Empty report'), _('You did not specify anybody')) + if self._user: + self._user.begin_progress(_("Complete Individual Report"), + _("Generating report"), + len(ind_list)) for count, person_handle in enumerate(ind_list): + if self._user: + self._user.step_progress() self.person = self._db.get_person_from_handle(person_handle) if self.person is None: continue self.family_notes_list = [] self.write_person(count) + if self._user: + self._user.end_progress() + def write_person(self, count): """ write a person """ diff --git a/gramps/plugins/textreport/notelinkreport.py b/gramps/plugins/textreport/notelinkreport.py index d0f34bc30..49c2f1fe9 100644 --- a/gramps/plugins/textreport/notelinkreport.py +++ b/gramps/plugins/textreport/notelinkreport.py @@ -98,7 +98,13 @@ class NoteLinkReport(Report): self.doc.end_row() + if self._user: + self._user.begin_progress(_("Note Link Check Report"), + _("Generating report"), + self.database.get_number_of_notes()) for note in self.database.iter_notes(): + if self._user: + self._user.step_progress() for (ldomain, ltype, lprop, lvalue) in note.get_links(): if ldomain == "gramps": tagtype = _(ltype) @@ -141,6 +147,8 @@ class NoteLinkReport(Report): self.doc.end_cell() self.doc.end_row() + if self._user: + self._user.end_progress() self.doc.end_table()