* src/GrampsDb/_GrampsDbBase.py: error message on disk space full

* src/Bookmarks.py: removed deleted items


svn: r7375
This commit is contained in:
Don Allingham 2006-10-09 03:57:41 +00:00
parent 872e88bdde
commit 68db1c3efa
3 changed files with 67 additions and 22 deletions

View File

@ -3,6 +3,8 @@
* src/plugins/DetDescendantReport.py: fix DDR-Endnotes indent * src/plugins/DetDescendantReport.py: fix DDR-Endnotes indent
2006-10-08 Don Allingham <don@gramps-project.org> 2006-10-08 Don Allingham <don@gramps-project.org>
* src/GrampsDb/_GrampsDbBase.py: error message on disk space full
* src/Bookmarks.py: removed deleted items
* src/Editors/_EditReference.py: call cancel_and_close on window * src/Editors/_EditReference.py: call cancel_and_close on window
cancel cancel
* src/DisplayTabs/_SourceRefModel.py: remove debug * src/DisplayTabs/_SourceRefModel.py: remove debug

View File

@ -85,6 +85,14 @@ class Bookmarks :
self.bookmarks = bookmarks self.bookmarks = bookmarks
self.active = DISABLED self.active = DISABLED
self.action_group = gtk.ActionGroup('Bookmarks') self.action_group = gtk.ActionGroup('Bookmarks')
self.connect_signals()
self.dbstate.connect('database-changed', self.db_changed)
def db_changed(self, data):
self.connect_signals()
def connect_signals(self):
self.dbstate.db.connect('person-delete', self.remove_handles)
def update_bookmarks(self, bookmarks): def update_bookmarks(self, bookmarks):
self.bookmarks = bookmarks self.bookmarks = bookmarks
@ -110,14 +118,22 @@ class Bookmarks :
if len(self.bookmarks) > 0: if len(self.bookmarks) > 0:
f.write('<placeholder name="GoToBook">') f.write('<placeholder name="GoToBook">')
new_list = []
for item in self.bookmarks: for item in self.bookmarks:
label, obj = self.make_label(item) try:
func = self.callback(item) label, obj = self.make_label(item)
action_id = "BM:%s" % item func = self.callback(item)
actions.append((action_id,None,label,None,None,func)) action_id = "BM:%s" % item
f.write('<menuitem action="%s"/>' % action_id) actions.append((action_id,None,label,None,None,func))
count +=1 f.write('<menuitem action="%s"/>' % action_id)
count +=1
new_list.append(item)
except AttributeError:
pass
f.write('</placeholder>') f.write('</placeholder>')
self.bookmarks = new_list
f.write(_btm) f.write(_btm)
self.action_group.add_actions(actions) self.action_group.add_actions(actions)
self.uistate.uimanager.insert_action_group(self.action_group,1) self.uistate.uimanager.insert_action_group(self.action_group,1)
@ -133,23 +149,24 @@ class Bookmarks :
def callback(self, handle): def callback(self, handle):
return make_callback(handle, self.dbstate.change_active_handle) return make_callback(handle, self.dbstate.change_active_handle)
def add(self,person_handle): def add(self, person_handle):
"""appends the person to the bottom of the bookmarks""" """appends the person to the bottom of the bookmarks"""
if person_handle not in self.bookmarks: if person_handle not in self.bookmarks:
self.bookmarks.append(person_handle) self.bookmarks.append(person_handle)
self.redraw() self.redraw()
def remove_people(self,person_handle_list): def remove_handles(self, handle_list):
""" """
Removes people from the list of bookmarked people. Removes people from the list of bookmarked people.
This function is for use *outside* the bookmark editor This function is for use *outside* the bookmark editor
(removal when person is deleted or merged away). (removal when person is deleted or merged away).
""" """
modified = False modified = False
for person_handle in person_handle_list: for handle in handle_list:
if person_handle in self.bookmarks: if handle in self.bookmarks:
self.bookmarks.remove(person_handle) self.bookmarks.remove(handle)
modified = True modified = True
if modified: if modified:
self.redraw() self.redraw()
@ -285,6 +302,9 @@ class FamilyBookmarks(ListBookmarks) :
name = Utils.family_name(obj, self.dbstate.db) name = Utils.family_name(obj, self.dbstate.db)
return ("%s [%s]" % (name, obj.gramps_id), obj) return ("%s [%s]" % (name, obj.gramps_id), obj)
def connect_signals(self):
self.dbstate.db.connect('family-delete', self.remove_handles)
class EventBookmarks(ListBookmarks) : class EventBookmarks(ListBookmarks) :
"Handle the bookmarks interface for Gramps" "Handle the bookmarks interface for Gramps"
@ -300,6 +320,9 @@ class EventBookmarks(ListBookmarks) :
name = obj.get_description() name = obj.get_description()
return ("%s [%s]" % (name, obj.gramps_id), obj) return ("%s [%s]" % (name, obj.gramps_id), obj)
def connect_signals(self):
self.dbstate.db.connect('event-delete', self.remove_handles)
class SourceBookmarks(ListBookmarks) : class SourceBookmarks(ListBookmarks) :
"Handle the bookmarks interface for Gramps" "Handle the bookmarks interface for Gramps"
def __init__(self,dbstate,uistate,bookmarks, goto_handle): def __init__(self,dbstate,uistate,bookmarks, goto_handle):
@ -311,6 +334,9 @@ class SourceBookmarks(ListBookmarks) :
name = obj.get_title() name = obj.get_title()
return ("%s [%s]" % (name, obj.gramps_id), obj) return ("%s [%s]" % (name, obj.gramps_id), obj)
def connect_signals(self):
self.dbstate.db.connect('source-delete', self.remove_handles)
class MediaBookmarks(ListBookmarks) : class MediaBookmarks(ListBookmarks) :
"Handle the bookmarks interface for Gramps" "Handle the bookmarks interface for Gramps"
@ -323,6 +349,9 @@ class MediaBookmarks(ListBookmarks) :
name = obj.get_description() name = obj.get_description()
return ("%s [%s]" % (name, obj.gramps_id), obj) return ("%s [%s]" % (name, obj.gramps_id), obj)
def connect_signals(self):
self.dbstate.db.connect('media-delete', self.remove_handles)
class RepoBookmarks(ListBookmarks) : class RepoBookmarks(ListBookmarks) :
"Handle the bookmarks interface for Gramps" "Handle the bookmarks interface for Gramps"
@ -335,6 +364,9 @@ class RepoBookmarks(ListBookmarks) :
name = obj.get_name() name = obj.get_name()
return ("%s [%s]" % (name, obj.gramps_id), obj) return ("%s [%s]" % (name, obj.gramps_id), obj)
def connect_signals(self):
self.dbstate.db.connect('repository-delete', self.remove_handles)
class PlaceBookmarks(ListBookmarks) : class PlaceBookmarks(ListBookmarks) :
"Handle the bookmarks interface for Gramps" "Handle the bookmarks interface for Gramps"
@ -347,5 +379,8 @@ class PlaceBookmarks(ListBookmarks) :
name = obj.get_title() name = obj.get_title()
return ("%s [%s]" % (name, obj.gramps_id), obj) return ("%s [%s]" % (name, obj.gramps_id), obj)
def connect_signals(self):
self.dbstate.db.connect('place-delete', self.remove_handles)
def make_callback(n,f): def make_callback(n,f):
return lambda x: f(n) return lambda x: f(n)

View File

@ -413,18 +413,26 @@ class GrampsDbBase(GrampsDBCallback):
handle = str(obj.handle) handle = str(obj.handle)
self._update_reference_map(obj, transaction) self._update_reference_map(obj, transaction)
if transaction.batch: try:
data_map[handle] = obj.serialize() if transaction.batch:
old_data = None data_map[handle] = obj.serialize()
else: old_data = None
old_data = data_map.get(handle)
new_data = obj.serialize()
transaction.add(key, handle, old_data, new_data)
if old_data:
update_list.append((handle, new_data))
else: else:
add_list.append((handle, new_data)) old_data = data_map.get(handle)
new_data = obj.serialize()
transaction.add(key, handle, old_data, new_data)
if old_data:
update_list.append((handle, new_data))
else:
add_list.append((handle, new_data))
except db.DBNoSpaceError, msg:
from QuestionDialog import ErrorDialog
ErrorDialog(_("Out of disk space"),
_("Your data cannot be saved because you are out "
"of disk space. Please free up some disk space "
"and try again.\n\n%s") % msg[1])
return old_data return old_data
def commit_person(self, person, transaction, change_time=None): def commit_person(self, person, transaction, change_time=None):