Added config 'database-backend' preference; removed backend dialog
This commit is contained in:
parent
3f48a504d4
commit
af7348a987
@ -52,6 +52,7 @@ from .plug import cl_report, cl_book
|
||||
from gramps.gen.const import GRAMPS_LOCALE as glocale
|
||||
_ = glocale.translation.gettext
|
||||
from gramps.gen.constfunc import conv_to_unicode
|
||||
from gramps.gen.config import config
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -490,8 +491,8 @@ class ArgHandler(object):
|
||||
self.imp_db_path, title = self.dbman.create_new_db_cli()
|
||||
else:
|
||||
self.imp_db_path = get_empty_tempdir("import_dbdir")
|
||||
|
||||
newdb = self.dbstate.make_database("bsddb")
|
||||
dbid = config.get('behavior.database-backend')
|
||||
newdb = self.dbstate.make_database(dbid)
|
||||
newdb.write_version(self.imp_db_path)
|
||||
|
||||
try:
|
||||
|
@ -134,6 +134,7 @@ register('behavior.last-check-for-updates', "1970/01/01")
|
||||
register('behavior.previously-seen-updates', [])
|
||||
register('behavior.do-not-show-previously-seen-updates', True)
|
||||
register('behavior.database-path', os.path.join( HOME_DIR, 'grampsdb'))
|
||||
register('behavior.database-backend', 'bsddb')
|
||||
register('behavior.date-about-range', 50)
|
||||
register('behavior.date-after-range', 50)
|
||||
register('behavior.date-before-range', 50)
|
||||
|
@ -1387,25 +1387,59 @@ class GrampsPreferences(ConfigureDialog):
|
||||
|
||||
self.uistate.viewmanager.do_reg_plugins(self.dbstate, self.uistate)
|
||||
|
||||
def database_backend_changed(self, obj):
|
||||
the_list = obj.get_model()
|
||||
the_iter = obj.get_active_iter()
|
||||
db_choice = the_list.get_value(the_iter, 2)
|
||||
config.set('behavior.database-backend', db_choice)
|
||||
|
||||
def add_famtree_panel(self, configdialog):
|
||||
grid = Gtk.Grid()
|
||||
grid.set_border_width(12)
|
||||
grid.set_column_spacing(6)
|
||||
grid.set_row_spacing(6)
|
||||
|
||||
current_line = 0
|
||||
backend_plugins = self.uistate.viewmanager._pmgr.get_reg_databases()
|
||||
obox = Gtk.ComboBox()
|
||||
cell = Gtk.CellRendererText()
|
||||
obox.pack_start(cell, True)
|
||||
obox.add_attribute(cell, 'text', 1)
|
||||
# Build model:
|
||||
model = Gtk.ListStore(GObject.TYPE_INT,
|
||||
GObject.TYPE_STRING,
|
||||
GObject.TYPE_STRING)
|
||||
count = 0
|
||||
active = 0
|
||||
default = config.get('behavior.database-backend')
|
||||
for plugin in sorted(backend_plugins, key=lambda plugin: plugin.name):
|
||||
if plugin.id == default:
|
||||
active = count
|
||||
model.append(row=[count, plugin.name, plugin.id])
|
||||
count += 1
|
||||
obox.set_model(model)
|
||||
# set the default value as active in the combo
|
||||
obox.set_active(active)
|
||||
obox.connect('changed', self.database_backend_changed)
|
||||
lwidget = BasicLabel("%s: " % _('Database backend'))
|
||||
grid.attach(lwidget, 1, current_line, 1, 1)
|
||||
grid.attach(obox, 2, current_line, 1, 1)
|
||||
current_line += 1
|
||||
|
||||
self.dbpath_entry = Gtk.Entry()
|
||||
self.add_path_box(grid,
|
||||
_('Family Tree Database path'),
|
||||
0, self.dbpath_entry, config.get('behavior.database-path'),
|
||||
current_line, self.dbpath_entry, config.get('behavior.database-path'),
|
||||
self.set_dbpath, self.select_dbpath)
|
||||
current_line += 1
|
||||
|
||||
#self.add_entry(grid,
|
||||
# _('Family Tree Database path'),
|
||||
# 0, 'behavior.database-path')
|
||||
self.add_checkbox(grid,
|
||||
_('Automatically load last Family Tree'),
|
||||
1, 'behavior.autoload')
|
||||
current_line, 'behavior.autoload')
|
||||
current_line += 1
|
||||
|
||||
return _('Family Tree'), grid
|
||||
|
||||
|
@ -80,6 +80,7 @@ from .ddtargets import DdTargets
|
||||
from gramps.gen.recentfiles import rename_filename, remove_filename
|
||||
from .glade import Glade
|
||||
from gramps.gen.db.exceptions import DbException
|
||||
from gramps.gen.config import config
|
||||
|
||||
_RETURN = Gdk.keyval_from_name("Return")
|
||||
_KP_ENTER = Gdk.keyval_from_name("KP_Enter")
|
||||
@ -104,25 +105,6 @@ ICON_COL = 6
|
||||
|
||||
RCS_BUTTON = { True : _('_Extract'), False : _('_Archive') }
|
||||
|
||||
class DatabaseDialog(Gtk.MessageDialog):
|
||||
def __init__(self, parent, options):
|
||||
"""
|
||||
options = [(pdata, number), ...]
|
||||
"""
|
||||
Gtk.MessageDialog.__init__(self,
|
||||
parent,
|
||||
flags=Gtk.DialogFlags.MODAL,
|
||||
type=Gtk.MessageType.QUESTION,
|
||||
)
|
||||
self.set_icon(ICON)
|
||||
self.set_title('')
|
||||
self.set_markup('<span size="larger" weight="bold">%s</span>' %
|
||||
_('Database Backend for New Tree'))
|
||||
self.format_secondary_text(
|
||||
_("Please select a database backend type:"))
|
||||
for option, number in options:
|
||||
self.add_button(option.name, number)
|
||||
|
||||
class DbManager(CLIDbManager):
|
||||
"""
|
||||
Database Manager. Opens a database manager window that allows users to
|
||||
@ -780,23 +762,7 @@ class DbManager(CLIDbManager):
|
||||
message.
|
||||
"""
|
||||
self.new.set_sensitive(False)
|
||||
dbid = None
|
||||
pmgr = BasePluginManager.get_instance()
|
||||
pdata = pmgr.get_reg_databases()
|
||||
# If just one database backend, just use it:
|
||||
if len(pdata) == 0:
|
||||
DbManager.ERROR(_("No available database backends"),
|
||||
_("Please check your dependencies."))
|
||||
elif len(pdata) == 1:
|
||||
dbid = pdata[0].id
|
||||
elif len(pdata) > 1:
|
||||
options = sorted(list(zip(pdata, range(1, len(pdata) + 1))), key=lambda items: items[0].name)
|
||||
d = DatabaseDialog(self.top, options)
|
||||
number = d.run()
|
||||
d.destroy()
|
||||
if number >= 0:
|
||||
dbid = [option[0].id for option in options if option[1] == number][0]
|
||||
### Now, let's load it up
|
||||
dbid = config.get('behavior.database-backend')
|
||||
if dbid:
|
||||
try:
|
||||
self._create_new_db(dbid=dbid)
|
||||
|
Loading…
x
Reference in New Issue
Block a user