From eafdceff00d9535823095636c56451e5555aa3d8 Mon Sep 17 00:00:00 2001 From: Don Allingham Date: Wed, 11 May 2005 02:35:50 +0000 Subject: [PATCH] * src/DbPrompter.py: add callback for progressbar * src/GrampsXMLDB.py: pass callback task * src/ReadXML.py: handle progress callback, fix placeobj error * src/gramps_main.py: define progress bar callback svn: r4544 --- gramps2/ChangeLog | 6 ++++++ gramps2/src/DbPrompter.py | 2 +- gramps2/src/GrampsXMLDB.py | 2 +- gramps2/src/ReadXML.py | 21 +++++++++++---------- gramps2/src/gramps_main.py | 10 +++++++++- 5 files changed, 28 insertions(+), 13 deletions(-) diff --git a/gramps2/ChangeLog b/gramps2/ChangeLog index c3196acca..96c4cb8eb 100644 --- a/gramps2/ChangeLog +++ b/gramps2/ChangeLog @@ -1,3 +1,9 @@ +2005-05-10 Don Allingham + * src/DbPrompter.py: add callback for progressbar + * src/GrampsXMLDB.py: pass callback task + * src/ReadXML.py: handle progress callback, fix placeobj error + * src/gramps_main.py: define progress bar callback + 2005-05-10 Eero Tamminen * src/plugins/StatisticsChart.po: add gettext _() to three strings where it was missing diff --git a/gramps2/src/DbPrompter.py b/gramps2/src/DbPrompter.py index ddd4b1d61..c2e9c3613 100644 --- a/gramps2/src/DbPrompter.py +++ b/gramps2/src/DbPrompter.py @@ -313,7 +313,7 @@ class ImportDbPrompter: elif filetype == const.app_gramps_xml: choose.destroy() import ReadXML - ReadXML.importData(self.parent.db,filename) + ReadXML.importData(self.parent.db,filename,self.parent.update_bar) return True elif filetype == const.app_gedcom: choose.destroy() diff --git a/gramps2/src/GrampsXMLDB.py b/gramps2/src/GrampsXMLDB.py index c220df98f..247d786ae 100644 --- a/gramps2/src/GrampsXMLDB.py +++ b/gramps2/src/GrampsXMLDB.py @@ -50,7 +50,7 @@ class GrampsXMLDB(GrampsInMemDB): self.readonly = mode == "r" - ReadXML.importData(self,name,use_trans=False) + ReadXML.importData(self,name,callback,use_trans=False) self.bookmarks = self.metadata.get('bookmarks') if self.bookmarks == None: diff --git a/gramps2/src/ReadXML.py b/gramps2/src/ReadXML.py index 93c3c8ed2..fa943f624 100644 --- a/gramps2/src/ReadXML.py +++ b/gramps2/src/ReadXML.py @@ -325,9 +325,8 @@ class GrampsParser: self.media_file_map = {} self.callback = callback - self.entries = 0 self.count = 0 - self.increment = 100 + self.increment = 500 self.event = None self.name = None self.tempDefault = None @@ -362,7 +361,7 @@ class GrampsParser: "comment" : (None, self.stop_comment), "created" : (self.start_created, None), "ref" : (None, self.stop_ref), - "database" : (None, None), + "database" : (None, self.stop_database), "phone" : (None, self.stop_phone), "date" : (None, self.stop_date), "cause" : (None, self.stop_cause), @@ -618,10 +617,9 @@ class GrampsParser: title = attrs['id'] self.placeobj.set_title(title) self.locations = 0 - if self.num_places > 0: - if self.callback != None and self.count % self.increment == 0: - self.callback(float(self.count)/float(self.entries)) - self.count = self.count + 1 + if self.callback != None and self.count % self.increment == 0: + self.callback(True) + self.count += 1 def start_location(self,attrs): """Bypass the function calls for this one, since it appears to @@ -718,6 +716,8 @@ class GrampsParser: self.db.bookmarks.append(person.get_handle()) def start_person(self,attrs): + if self.callback != None and self.count % self.increment == 0: + self.callback(True) new_id = self.map_gid(attrs['id']) try: self.person = self.db.find_person_from_handle(attrs['handle'],self.trans) @@ -780,7 +780,7 @@ class GrampsParser: def start_family(self,attrs): if self.callback != None and self.count % self.increment == 0: - self.callback(float(self.count)/float(self.entries)) + self.callback(True) self.count = self.count + 1 handle = self.map_fid(attrs["id"]) try: @@ -939,6 +939,9 @@ class GrampsParser: def stop_people(self,*tag): pass + def stop_database(self,*tag): + self.callback(False) + def stop_object(self,*tag): self.db.commit_media_object(self.object,self.trans,self.change) self.object = None @@ -1110,8 +1113,6 @@ class GrampsParser: self.num_places = int(attrs['places']) else: self.num_places = 0 - self.entries = int(attrs["people"]) + int(attrs["families"]) + \ - self.num_places + self.num_srcs def start_pos(self,attrs): self.person.position = (int(attrs["x"]), int(attrs["y"])) diff --git a/gramps2/src/gramps_main.py b/gramps2/src/gramps_main.py index 3152f1aa8..e1d0a3c26 100755 --- a/gramps2/src/gramps_main.py +++ b/gramps2/src/gramps_main.py @@ -325,6 +325,8 @@ class Gramps(GrampsDBCallback.GrampsDBCallback): self.filter_btn = self.gtop.get_widget("filter1") self.toolbar_btn = self.gtop.get_widget("toolbar2") self.statusbar = self.gtop.get_widget("statusbar") + self.progress = self.statusbar.get_children()[0] + self.progress.set_pulse_step(0.01) self.filter_list = self.gtop.get_widget("filter_list") self.views = self.gtop.get_widget("views") @@ -1232,7 +1234,7 @@ class Gramps(GrampsDBCallback.GrampsDBCallback): try: import ReadXML - ReadXML.importData(self.db,dbname,None) + ReadXML.importData(self.db,dbname,self.update_bar) except: DisplayTrace.DisplayTrace() @@ -1243,6 +1245,12 @@ class Gramps(GrampsDBCallback.GrampsDBCallback): os.rmdir(tmpdir_path) self.import_tool_callback() + def update_bar(self,percent): + if percent: + self.progress.pulse() + else: + self.progress.set_fraction(0) + def read_file(self,filename,callback=None): self.topWindow.set_resizable(False) mode = "w"