From cf5ae686250bdc26467b3c6fee299c5b369ed36d Mon Sep 17 00:00:00 2001 From: Benny Malengier Date: Fri, 5 Oct 2007 09:03:59 +0000 Subject: [PATCH] 2007-10-05 James G. Sack * src/GrampsDb/_GrampsDbBase.py: * src/GrampsDb/_GrampsGEDDB.py: * src/GrampsDb/_GrampsXMLDB.py: * src/GrampsDb/_GrampsInMemDB.py: * src/Bookmarks.py: issue #1261: creating bookmark does not lead to save of xml svn: r9077 --- ChangeLog | 8 ++++++++ src/Bookmarks.py | 10 +++++++--- src/GrampsDb/_GrampsDbBase.py | 8 ++++++++ src/GrampsDb/_GrampsGEDDB.py | 3 +-- src/GrampsDb/_GrampsInMemDB.py | 6 ++++++ src/GrampsDb/_GrampsXMLDB.py | 3 +-- 6 files changed, 31 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index d68e9e2d6..be5c86baa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2007-10-05 James G. Sack + * src/GrampsDb/_GrampsDbBase.py: + * src/GrampsDb/_GrampsGEDDB.py: + * src/GrampsDb/_GrampsXMLDB.py: + * src/GrampsDb/_GrampsInMemDB.py: + * src/Bookmarks.py: + issue #1261: creating bookmark does not lead to save of xml + 2007-10-03 Benny Malengier * src/plugins/Check.py: add remove empty objects. This needs testing... diff --git a/src/Bookmarks.py b/src/Bookmarks.py index c23f44706..8987bac29 100644 --- a/src/Bookmarks.py +++ b/src/Bookmarks.py @@ -106,6 +106,10 @@ class Bookmarks : self.uistate.uimanager.remove_action_group(self.action_group) self.active = DISABLED + def redraw_and_report_change(self): + self.dbstate.db.report_bm_change() + self.redraw() + def redraw(self): """Create the pulldown menu""" f = StringIO() @@ -153,7 +157,7 @@ class Bookmarks : """appends the person to the bottom of the bookmarks""" if person_handle not in self.bookmarks.get(): self.bookmarks.append(person_handle) - self.redraw() + self.redraw_and_report_change() def remove_handles(self, handle_list): """ @@ -169,7 +173,7 @@ class Bookmarks : self.bookmarks.remove(handle) modified = True if modified: - self.redraw() + self.redraw_and_report_change() def draw_window(self): """Draws the bookmark dialog box""" @@ -233,7 +237,7 @@ class Bookmarks : if self.response == gtk.RESPONSE_HELP: self.help_clicked() if self.modified: - self.redraw() + self.redraw_and_report_change() self.top.destroy() def delete_clicked(self,obj): diff --git a/src/GrampsDb/_GrampsDbBase.py b/src/GrampsDb/_GrampsDbBase.py index bcbbd4d92..7f98aed50 100644 --- a/src/GrampsDb/_GrampsDbBase.py +++ b/src/GrampsDb/_GrampsDbBase.py @@ -303,6 +303,7 @@ class GrampsDbBase(GrampsDBCallback): self.path = "" self.name_group = {} self.surname_list = [] + self._bm_changes = 0 def rebuild_secondary(self, callback): pass @@ -2182,6 +2183,13 @@ class GrampsDbBase(GrampsDBCallback): cursor.close() return + + def report_bm_change(self): + self._bm_changes += 1; + + def db_has_bm_changes(self): + return self._bm_changes > 0 + class Transaction: """ diff --git a/src/GrampsDb/_GrampsGEDDB.py b/src/GrampsDb/_GrampsGEDDB.py index c8fc48933..71cc97a9a 100644 --- a/src/GrampsDb/_GrampsGEDDB.py +++ b/src/GrampsDb/_GrampsGEDDB.py @@ -69,8 +69,7 @@ class GrampsGEDDB(GrampsInMemDB): def close(self): if not self.db_is_open: return - if (not self.readonly) and ((len(self.undodb)>0) or - not self.abort_possible): + if self.db_is_changed(): writer = GedcomWriter(self,self.get_default_person()) writer.export_data(self.full_name) self.db_is_open = False diff --git a/src/GrampsDb/_GrampsInMemDB.py b/src/GrampsDb/_GrampsInMemDB.py index 941909f0c..257042cce 100644 --- a/src/GrampsDb/_GrampsInMemDB.py +++ b/src/GrampsDb/_GrampsInMemDB.py @@ -365,3 +365,9 @@ class GrampsInMemDB(GrampsDbBase): obj.unserialize(data) return obj return None + + def db_is_changed(self): + return not self.readonly and \ + (len(self.undodb) > 0 or + not self.abort_possible) + diff --git a/src/GrampsDb/_GrampsXMLDB.py b/src/GrampsDb/_GrampsXMLDB.py index 4ae55645b..8eeb1c7d0 100644 --- a/src/GrampsDb/_GrampsXMLDB.py +++ b/src/GrampsDb/_GrampsXMLDB.py @@ -72,8 +72,7 @@ class GrampsXMLDB(GrampsInMemDB): def close(self): if not self.db_is_open: return - if (not self.readonly) and ((len(self.undodb)>0) or - not self.abort_possible): + if self.db_is_changed() or self.db_has_bm_changes(): quick_write(self,self.full_name) self.db_is_open = False GrampsInMemDB.close(self)