5934: How to fix invalid Database Path?

svn: r20455
This commit is contained in:
Benny Malengier 2012-09-27 09:18:34 +00:00
parent af0707e74c
commit c41939e966
2 changed files with 54 additions and 19 deletions

View File

@ -195,26 +195,26 @@ class CLIDbManager(object):
# make the default directory if it does not exist # make the default directory if it does not exist
dbdir = os.path.expanduser(config.get('behavior.database-path')) dbdir = os.path.expanduser(config.get('behavior.database-path'))
dbdir = dbdir.encode(sys.getfilesystemencoding()) dbdir = dbdir.encode(sys.getfilesystemencoding())
make_dbdir(dbdir) db_ok = make_dbdir(dbdir)
self.current_names = [] self.current_names = []
if db_ok:
for dpath in os.listdir(dbdir): for dpath in os.listdir(dbdir):
dirpath = os.path.join(dbdir, dpath) dirpath = os.path.join(dbdir, dpath)
path_name = os.path.join(dirpath, NAME_FILE) path_name = os.path.join(dirpath, NAME_FILE)
if os.path.isfile(path_name): if os.path.isfile(path_name):
name = file(path_name).readline().strip() name = file(path_name).readline().strip()
(tval, last) = time_val(dirpath) (tval, last) = time_val(dirpath)
(enable, stock_id) = self.icon_values(dirpath, self.active, (enable, stock_id) = self.icon_values(dirpath, self.active,
self.dbstate.db.is_open()) self.dbstate.db.is_open())
if (stock_id == 'gramps-lock'): if (stock_id == 'gramps-lock'):
last = find_locker_name(dirpath) last = find_locker_name(dirpath)
self.current_names.append( self.current_names.append(
(name, os.path.join(dbdir, dpath), path_name, (name, os.path.join(dbdir, dpath), path_name,
last, tval, enable, stock_id)) last, tval, enable, stock_id))
self.current_names.sort() self.current_names.sort()
@ -395,7 +395,11 @@ def make_dbdir(dbdir):
os.makedirs(dbdir) os.makedirs(dbdir)
except (IOError, OSError), msg: except (IOError, OSError), msg:
msg = unicode(str(msg), sys.getfilesystemencoding()) msg = unicode(str(msg), sys.getfilesystemencoding())
LOG.error(_("Could not make database directory: ") + msg) LOG.error(_("\nERROR: Wrong database path in Edit Menu->Preferences.\n"
"Open preferences and set correct database path.\n\n"
"Details: Could not make database directory:\n %s\n\n") % msg)
return False
return True
def find_next_db_name(name_list): def find_next_db_name(name_list):
""" """

View File

@ -1116,9 +1116,16 @@ class GrampsPreferences(ConfigureDialog):
table.set_col_spacings(6) table.set_col_spacings(6)
table.set_row_spacings(6) table.set_row_spacings(6)
self.add_entry(table,
_('Family Tree Database path'), self.dbpath_entry = gtk.Entry()
0, 'behavior.database-path') self.add_path_box(table,
_('Family Tree Database path'),
0, self.dbpath_entry, config.get('behavior.database-path'),
self.set_dbpath, self.select_dbpath)
#self.add_entry(table,
# _('Family Tree Database path'),
# 0, 'behavior.database-path')
self.add_checkbox(table, self.add_checkbox(table,
_('Automatically load last family tree'), _('Automatically load last family tree'),
1, 'behavior.autoload') 1, 'behavior.autoload')
@ -1151,6 +1158,30 @@ class GrampsPreferences(ConfigureDialog):
self.path_entry.set_text(val) self.path_entry.set_text(val)
f.destroy() f.destroy()
def set_dbpath(self, *obj):
path = self.dbpath_entry.get_text().strip()
config.set('behavior.database-path', path)
def select_dbpath(self, *obj):
f = gtk.FileChooserDialog(
_("Select database directory"),
action=gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
buttons=(gtk.STOCK_CANCEL,
gtk.RESPONSE_CANCEL,
gtk.STOCK_APPLY,
gtk.RESPONSE_OK))
dbpath = config.get('behavior.database-path')
if not dbpath:
dbpath = os.path.join(os.environ['HOME'], '.gramps','grampsdb')
f.set_current_folder(os.path.dirname(dbpath))
status = f.run()
if status == gtk.RESPONSE_OK:
val = Utils.get_unicode_path_from_file_chooser(f.get_filename())
if val:
self.dbpath_entry.set_text(val)
f.destroy()
def update_idformat_entry(self, obj, constant): def update_idformat_entry(self, obj, constant):
config.set(constant, unicode(obj.get_text())) config.set(constant, unicode(obj.get_text()))
self.dbstate.db.set_prefixes( self.dbstate.db.set_prefixes(