2007-05-12 Don Allingham <don@gramps-project.org>

* src/DataViews/_PedigreeView.py: additional error checking
	* src/DataViews/_RelationView.py: check for empty person
	* src/GrampsDb/_ReadGedcom.py: additional error checking
	* src/GrampsDb/_DbUtils.py: additional error checking
	* src/ReportBase/_ReportDialog.py: additional error checking
	* src/Editors/_EditFamily.py: additional error checking
	* src/DisplayTabs/_EmbeddedList.py: additional error checking
	* src/plugins/FindDupes.py: additional error checking
	* src/plugins/Verify.py: additional error checking
	* src/ImgManip.py: additional error checking
	* src/BasicUtils.py: additional error checking



svn: r8464
This commit is contained in:
Don Allingham 2007-05-13 03:28:50 +00:00
parent 668e2c0604
commit 0bf1622625
12 changed files with 80 additions and 18 deletions

View File

@ -1,3 +1,16 @@
2007-05-12 Don Allingham <don@gramps-project.org>
* src/DataViews/_PedigreeView.py: additional error checking
* src/DataViews/_RelationView.py: check for empty person
* src/GrampsDb/_ReadGedcom.py: additional error checking
* src/GrampsDb/_DbUtils.py: additional error checking
* src/ReportBase/_ReportDialog.py: additional error checking
* src/Editors/_EditFamily.py: additional error checking
* src/DisplayTabs/_EmbeddedList.py: additional error checking
* src/plugins/FindDupes.py: additional error checking
* src/plugins/Verify.py: additional error checking
* src/ImgManip.py: additional error checking
* src/BasicUtils.py: additional error checking
2007-05-11 Benny Malengier <bm@cage.ugent.be>
* src/GrampsDb/_ReadXML.py: clean meld issues, add privacy read lds_ord even if not set yet

View File

@ -76,7 +76,10 @@ class UpdateCallback:
self.count += 1
if not count:
count = self.count
newval = int(100*count/self.total)
if self.total:
newval = int(100*count/self.total)
else:
newval = 0
newtime = time.time()
time_has_come = self.interval and (newtime-self.oldtime>self.interval)
value_changed = newval!=self.oldval

View File

@ -61,6 +61,7 @@ from Editors import EditPerson, EditFamily
from DdTargets import DdTargets
import cPickle as pickle
from QuestionDialog import RunDatabaseRepair
#-------------------------------------------------------------------------
#
@ -610,11 +611,14 @@ class PedigreeView(PageView.PersonNavView):
all handling of visibility is now in rebuild_trees, see that for more
information.
"""
active = self.dbstate.get_active_person()
if active:
self.rebuild_trees(active.handle)
else:
self.rebuild_trees(None)
try:
active = self.dbstate.get_active_person()
if active:
self.rebuild_trees(active.handle)
else:
self.rebuild_trees(None)
except AttributeError, msg:
RunDatabaseRepair(str(msg))
def change_db(self,db):
"""

View File

@ -1029,6 +1029,9 @@ class RelationshipView(PageView.PersonNavView):
family = RelLib.Family()
person = self.dbstate.active
if not person:
return
if person.gender == RelLib.Person.MALE:
family.set_father_handle(person.handle)
else:
@ -1089,6 +1092,9 @@ class RelationshipView(PageView.PersonNavView):
family = RelLib.Family()
person = self.dbstate.active
if not person:
return
ref = RelLib.ChildRef()
ref.ref = person.handle
family.add_child_ref(ref)

View File

@ -353,7 +353,13 @@ class EmbeddedList(ButtonTab):
Rebuilds the data in the database by creating a new model,
using the build_model function passed at creation time.
"""
self.model = self.build_model(self.get_data(), self.dbstate.db)
try:
self.model = self.build_model(self.get_data(), self.dbstate.db)
except AttributeError, msg:
from QuestionDialog import RunDatabaseRepair
RunDatabaseRepair(str(msg))
return
self.tree.set_model(self.model)
self._set_label()
self._selection_changed()

View File

@ -1,4 +1,4 @@
#
o#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2000-2007 Donald N. Allingham
@ -27,6 +27,7 @@
#-------------------------------------------------------------------------
from gettext import gettext as _
import cPickle as pickle
from bsddb import db
#-------------------------------------------------------------------------
#
@ -253,8 +254,11 @@ class ChildEmbedList(EmbeddedList):
if ref.ref == handle:
p = self.dbstate.db.get_person_from_handle(handle)
n = NameDisplay.displayer.display(p)
EditChildRef(n, self.dbstate, self.uistate, self.track,
ref, self.child_ref_edited)
try:
EditChildRef(n, self.dbstate, self.uistate, self.track,
ref, self.child_ref_edited)
except Errors.WindowActiveError, msg:
pass
break
def edit_child_button_clicked(self, obj):
@ -773,7 +777,12 @@ class EditFamily(EditPrimary):
len(self.obj.get_child_ref_list()) == 0
def save(self,*obj):
try:
self.__do_save()
except db.DBRunRecoveryError, msg:
QuestionDialog.RunDatabaseRepair(msg[1])
def __do_save(self):
self.ok_button.set_sensitive(False)
if not self.added:
original = self.db.get_family_from_handle(self.obj.handle)

View File

@ -116,6 +116,8 @@ def remove_parent_from_family(db, person_handle, family_handle, trans=None):
elif family.get_mother_handle() == person_handle:
msg = _("Remove mother from family")
family.set_mother_handle(None)
else:
msg = _("Family unchanged")
child_list = family.get_child_ref_list()
if (not family.get_father_handle() and not family.get_mother_handle() and
@ -130,7 +132,7 @@ def remove_parent_from_family(db, person_handle, family_handle, trans=None):
db.commit_person(person, trans)
if need_commit:
db.transaction_commit(trans,msg)
db.transaction_commit(trans, msg)
def remove_child_from_family(db, person_handle, family_handle, trans=None):
"""

View File

@ -3165,8 +3165,14 @@ class GedcomParser(UpdateCallback):
state.person.add_attribute(attr)
else:
name = RelLib.Name()
name.set_surname(lname[-1].strip())
name.set_first_name(' '.join(lname[0:l-1]))
try:
name.set_surname(lname[-1].strip())
except IndexError:
pass
try:
name.set_first_name(' '.join(lname[0:l-1]))
except IndexError:
pass
state.person.add_alternate_name(name)
def func_name_sour(self, matches, state):

View File

@ -84,7 +84,7 @@ class ImgManip:
def fmt_scale_data(self, x, y, cnv):
fd, dest = tempfile.mkstemp()
scaled = self.img.scale_simple(x, y, gtk.gdk.INTERP_BILINEAR)
scaled = self.img.scale_simple(int(x), int(y), gtk.gdk.INTERP_BILINEAR)
scaled.save(dest,cnv)
fh = open(dest,mode='rb')
data = fh.read()

View File

@ -49,7 +49,7 @@ import Errors
import Utils
import const
from QuestionDialog import ErrorDialog, OptionDialog
from QuestionDialog import ErrorDialog, OptionDialog, RunDatabaseRepair
from _Constants import CATEGORY_TEXT, CATEGORY_DRAW, CATEGORY_BOOK, \
CATEGORY_VIEW, CATEGORY_CODE, CATEGORY_WEB, standalone_categories
@ -694,6 +694,8 @@ def report(dbstate,uistate,person,report_class,options_class,
ErrorDialog(m1,m2)
except Errors.DatabaseError,msg:
ErrorDialog(_("Report could not be created"),str(msg))
except AttributeError,msg:
RunDatabaseRepair(str(msg))
except:
log.error("Failed to run report.", exc_info=True)
break

View File

@ -161,7 +161,12 @@ class Merge(Tool.Tool,ManagedWindow.ManagedWindow):
def on_merge_ok_clicked(self,obj):
threshold = self.menu.get_menu().get_active().get_data("v")
self.use_soundex = int(self.soundex_obj.get_active())
self.find_potentials(threshold)
try:
self.find_potentials(threshold)
except AttributeError, msg:
import QuestionDialog
QuestionDialog.RunDatabaseRepair(str(msg))
return
self.options.handler.options_dict['threshold'] = threshold
self.options.handler.options_dict['soundex'] = self.use_soundex

View File

@ -323,14 +323,20 @@ class Verify(Tool.Tool, ManagedWindow, UpdateCallback):
self.uistate.window.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH))
self.uistate.progress.show()
self.window.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH))
vr.window.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH))
try:
vr.window.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH))
except AttributeError:
pass
self.run_tool(cli=False)
self.uistate.progress.hide()
self.uistate.window.window.set_cursor(None)
self.window.window.set_cursor(None)
vr.window.window.set_cursor(None)
try:
vr.window.window.set_cursor(None)
except AttributeError:
pass
self.reset()
# Save options