GTK3: errors in callbacks when changing family trees.
This was very hard to debug, the signalling at the moment seems inconsistent. Committing this patch now to avoid problems testing further svn: r20296
This commit is contained in:
parent
8c092746f0
commit
2527c24014
@ -145,15 +145,14 @@ class CLIDbLoader(object):
|
||||
mode = 'w'
|
||||
|
||||
dbclass = DbBsddb
|
||||
|
||||
self.dbstate.change_database(dbclass())
|
||||
self.dbstate.db.disable_signals()
|
||||
dbclass.disable_signals()
|
||||
|
||||
self._begin_progress()
|
||||
|
||||
try:
|
||||
self.dbstate.db.load(filename, self._pulse_progress, mode)
|
||||
self.dbstate.db.set_save_path(filename)
|
||||
dbclass.load(filename, self._pulse_progress, mode)
|
||||
dbclass.set_save_path(filename)
|
||||
self.dbstate.change_database(dbclass())
|
||||
except gen.db.exceptions.DbUpgradeRequiredError, msg:
|
||||
self.dbstate.no_database()
|
||||
self._errordialog( _("Cannot open database"), str(msg))
|
||||
|
@ -55,6 +55,7 @@ class DbState(Callback):
|
||||
Closes the existing db, and opens a new one.
|
||||
Retained for backward compatibility.
|
||||
"""
|
||||
self.emit('no-database', ())
|
||||
self.db.close()
|
||||
self.change_database_noclose(database)
|
||||
|
||||
@ -74,6 +75,7 @@ class DbState(Callback):
|
||||
config.get('preferences.rprefix'),
|
||||
config.get('preferences.nprefix') )
|
||||
self.open = True
|
||||
self.signal_change()
|
||||
|
||||
def signal_change(self):
|
||||
"""
|
||||
@ -85,6 +87,7 @@ class DbState(Callback):
|
||||
"""
|
||||
Closes the database without a new database
|
||||
"""
|
||||
self.emit('no-database', ())
|
||||
self.db.close()
|
||||
self.db = DbBsddbRead()
|
||||
self.db.db_is_open = False
|
||||
|
@ -291,23 +291,28 @@ class DbLoader(CLIDbLoader):
|
||||
else:
|
||||
mode = 'w'
|
||||
|
||||
self.dbstate.change_database(gen.db.DbBsddb())
|
||||
self.dbstate.db.disable_signals()
|
||||
db = gen.db.DbBsddb()
|
||||
db.disable_signals()
|
||||
self.dbstate.no_database()
|
||||
|
||||
self._begin_progress()
|
||||
|
||||
try:
|
||||
try:
|
||||
self.dbstate.db.load(filename, self._pulse_progress,
|
||||
db.load(filename, self._pulse_progress,
|
||||
mode, upgrade=False)
|
||||
self.dbstate.change_database(db)
|
||||
except gen.db.exceptions.DbUpgradeRequiredError, msg:
|
||||
if QuestionDialog2(_("Need to upgrade database!"),
|
||||
str(msg),
|
||||
_("Upgrade now"),
|
||||
_("Cancel")).run():
|
||||
self.dbstate.db.load(filename, self._pulse_progress,
|
||||
db = gen.db.DbBsddb()
|
||||
db.disable_signals()
|
||||
db.load(filename, self._pulse_progress,
|
||||
mode, upgrade=True)
|
||||
self.dbstate.db.set_save_path(filename)
|
||||
db.set_save_path(filename)
|
||||
self.dbstate.change_database(db)
|
||||
else:
|
||||
self.dbstate.no_database()
|
||||
except gen.db.exceptions.BsddbDowngradeError, msg:
|
||||
|
@ -122,6 +122,11 @@ class ListView(NavigationView):
|
||||
dbstate.connect('database-changed', self.change_db)
|
||||
self.connect_signals()
|
||||
|
||||
def no_database(self):
|
||||
self.list.set_model(None)
|
||||
self.model = None
|
||||
self.build_tree()
|
||||
|
||||
def type_list(self):
|
||||
"""
|
||||
set the listtype, this governs eg keybinding
|
||||
|
@ -128,7 +128,8 @@ class BasePersonView(ListView):
|
||||
'person-delete' : self.row_delete,
|
||||
'person-rebuild' : self.object_build,
|
||||
'person-groupname-rebuild' : self.object_build,
|
||||
'tag-update' : self.tag_updated
|
||||
'tag-update' : self.tag_updated,
|
||||
'no-database': self.no_database,
|
||||
}
|
||||
|
||||
ListView.__init__(
|
||||
|
Loading…
Reference in New Issue
Block a user