2007-06-16 Don Allingham <don@gramps-project.org>
* src/GrampsCfg.py: additional database path * src/Config/_GrampsConfigKeys.py: additional database path * src/DbManager.py: additional database path * src/GrampsDbUtils/Makefile.am: additional database path * src/Makefile.am: additional database path * data/gramps.schemas.in: additional database path svn: r8563
This commit is contained in:
parent
7bc7631d25
commit
9059ddedec
@ -1,3 +1,11 @@
|
|||||||
|
2007-06-16 Don Allingham <don@gramps-project.org>
|
||||||
|
* src/GrampsCfg.py: additional database path
|
||||||
|
* src/Config/_GrampsConfigKeys.py: additional database path
|
||||||
|
* src/DbManager.py: additional database path
|
||||||
|
* src/GrampsDbUtils/Makefile.am: additional database path
|
||||||
|
* src/Makefile.am: additional database path
|
||||||
|
* data/gramps.schemas.in: additional database path
|
||||||
|
|
||||||
2007-06-16 Brian Pepple <bpepple@fedoraproject.org>
|
2007-06-16 Brian Pepple <bpepple@fedoraproject.org>
|
||||||
* data/gramps.desktop.in: Fix desktop file to conform to desktop
|
* data/gramps.desktop.in: Fix desktop file to conform to desktop
|
||||||
file specs.
|
file specs.
|
||||||
|
@ -598,6 +598,18 @@
|
|||||||
</locale>
|
</locale>
|
||||||
</schema>
|
</schema>
|
||||||
|
|
||||||
|
<schema>
|
||||||
|
<key>/schemas/apps/gramps/behavior/database-path</key>
|
||||||
|
<applyto>/apps/gramps/behavior/database-path</applyto>
|
||||||
|
<owner>gramps</owner>
|
||||||
|
<type>string</type>
|
||||||
|
<default></default>
|
||||||
|
<locale name="C">
|
||||||
|
<short>Additional path where the databases may reside</short>
|
||||||
|
<long>Additional path where the databases may reside</long>
|
||||||
|
</locale>
|
||||||
|
</schema>
|
||||||
|
|
||||||
<schema>
|
<schema>
|
||||||
<key>/schemas/apps/gramps/preferences/fprefix</key>
|
<key>/schemas/apps/gramps/preferences/fprefix</key>
|
||||||
<applyto>/apps/gramps/preferences/fprefix</applyto>
|
<applyto>/apps/gramps/preferences/fprefix</applyto>
|
||||||
|
@ -39,6 +39,7 @@ USE_LAST_VIEW = ('preferences','use-last-view', 0)
|
|||||||
FAMILY_SIBLINGS = ('preferences','family-siblings', 0)
|
FAMILY_SIBLINGS = ('preferences','family-siblings', 0)
|
||||||
AUTOLOAD = ('behavior','autoload', 0)
|
AUTOLOAD = ('behavior','autoload', 0)
|
||||||
ENABLE_AUTOBACKUP = ('behavior','enable-autobackup', 0)
|
ENABLE_AUTOBACKUP = ('behavior','enable-autobackup', 0)
|
||||||
|
DATABASE_PATH = ('behavior','database-path', 2)
|
||||||
SPELLCHECK = ('behavior','spellcheck', 0)
|
SPELLCHECK = ('behavior','spellcheck', 0)
|
||||||
BETAWARN = ('behavior','betawarn', 0)
|
BETAWARN = ('behavior','betawarn', 0)
|
||||||
WELCOME = ('behavior','welcome', 1)
|
WELCOME = ('behavior','welcome', 1)
|
||||||
|
@ -117,22 +117,22 @@ class DbManager:
|
|||||||
|
|
||||||
self.current_names = []
|
self.current_names = []
|
||||||
|
|
||||||
self.connect_signals()
|
self.__connect_signals()
|
||||||
self.build_interface()
|
self.__build_interface()
|
||||||
self.populate()
|
self.__populate()
|
||||||
|
|
||||||
def connect_signals(self):
|
def __connect_signals(self):
|
||||||
"""
|
"""
|
||||||
Connects the signals to the buttons on the interface.
|
Connects the signals to the buttons on the interface.
|
||||||
"""
|
"""
|
||||||
self.remove.connect('clicked', self.remove_db)
|
self.remove.connect('clicked', self.__remove_db)
|
||||||
self.new.connect('clicked', self.new_db)
|
self.new.connect('clicked', self.__new_db)
|
||||||
self.rename.connect('clicked', self.rename_db)
|
self.rename.connect('clicked', self.__rename_db)
|
||||||
self.repair.connect('clicked', self.repair_db)
|
self.repair.connect('clicked', self.__repair_db)
|
||||||
self.selection.connect('changed', self.selection_changed)
|
self.selection.connect('changed', self.__selection_changed)
|
||||||
self.dblist.connect('button-press-event', self.button_press)
|
self.dblist.connect('button-press-event', self.__button_press)
|
||||||
|
|
||||||
def button_press(self, obj, event):
|
def __button_press(self, obj, event):
|
||||||
"""
|
"""
|
||||||
Checks for a double click event. In the tree view, we want to
|
Checks for a double click event. In the tree view, we want to
|
||||||
treat a double click as if it was OK button press. However, we have
|
treat a double click as if it was OK button press. However, we have
|
||||||
@ -145,7 +145,7 @@ class DbManager:
|
|||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def selection_changed(self, selection):
|
def __selection_changed(self, selection):
|
||||||
"""
|
"""
|
||||||
Called with the selection is changed in the TreeView. What we
|
Called with the selection is changed in the TreeView. What we
|
||||||
are trying to detect is the selection or unselection of a row.
|
are trying to detect is the selection or unselection of a row.
|
||||||
@ -180,7 +180,7 @@ class DbManager:
|
|||||||
|
|
||||||
self.remove.set_sensitive(True)
|
self.remove.set_sensitive(True)
|
||||||
|
|
||||||
def build_interface(self):
|
def __build_interface(self):
|
||||||
"""
|
"""
|
||||||
Builds the columns for the TreeView. The columns are:
|
Builds the columns for the TreeView. The columns are:
|
||||||
|
|
||||||
@ -204,7 +204,7 @@ class DbManager:
|
|||||||
# build the database name column
|
# build the database name column
|
||||||
render = gtk.CellRendererText()
|
render = gtk.CellRendererText()
|
||||||
render.set_property('editable', True)
|
render.set_property('editable', True)
|
||||||
render.connect('edited', self.change_name)
|
render.connect('edited', self.__change_name)
|
||||||
self.column = gtk.TreeViewColumn(_('Family tree name'), render,
|
self.column = gtk.TreeViewColumn(_('Family tree name'), render,
|
||||||
text=NAME_COL)
|
text=NAME_COL)
|
||||||
self.dblist.append_column(self.column)
|
self.dblist.append_column(self.column)
|
||||||
@ -217,7 +217,7 @@ class DbManager:
|
|||||||
# set the rules hit
|
# set the rules hit
|
||||||
self.dblist.set_rules_hint(True)
|
self.dblist.set_rules_hint(True)
|
||||||
|
|
||||||
def populate(self):
|
def __populate(self):
|
||||||
"""
|
"""
|
||||||
Builds the display model.
|
Builds the display model.
|
||||||
"""
|
"""
|
||||||
@ -231,20 +231,29 @@ class DbManager:
|
|||||||
except (IOError, OSError), msg:
|
except (IOError, OSError), msg:
|
||||||
LOG.error(_("Could not make database directory: ") + str(msg))
|
LOG.error(_("Could not make database directory: ") + str(msg))
|
||||||
|
|
||||||
|
additional = Config.get(Config.DATABASE_PATH).strip()
|
||||||
|
|
||||||
|
pathlist = [ DEFAULT_DIR ]
|
||||||
|
|
||||||
|
if os.path.isdir(additional):
|
||||||
|
pathlist.append(additional)
|
||||||
|
|
||||||
self.current_names = []
|
self.current_names = []
|
||||||
for dpath in os.listdir(DEFAULT_DIR):
|
|
||||||
dirpath = os.path.join(DEFAULT_DIR, dpath)
|
for path in pathlist:
|
||||||
path_name = os.path.join(dirpath, NAME_FILE)
|
for dpath in os.listdir(path):
|
||||||
if os.path.isfile(path_name):
|
dirpath = os.path.join(path, dpath)
|
||||||
name = file(path_name).readline().strip()
|
path_name = os.path.join(dirpath, NAME_FILE)
|
||||||
|
if os.path.isfile(path_name):
|
||||||
|
name = file(path_name).readline().strip()
|
||||||
|
|
||||||
(tval, last) = time_val(dirpath)
|
(tval, last) = time_val(dirpath)
|
||||||
(enable, stock_id) = icon_values(dirpath, self.active,
|
(enable, stock_id) = icon_values(dirpath, self.active,
|
||||||
self.dbstate.db.is_open())
|
self.dbstate.db.is_open())
|
||||||
|
|
||||||
self.current_names.append(
|
self.current_names.append(
|
||||||
(name, os.path.join(DEFAULT_DIR, dpath), path_name,
|
(name, os.path.join(DEFAULT_DIR, dpath), path_name,
|
||||||
last, tval, enable, stock_id))
|
last, tval, enable, stock_id))
|
||||||
|
|
||||||
self.current_names.sort()
|
self.current_names.sort()
|
||||||
for items in self.current_names:
|
for items in self.current_names:
|
||||||
@ -268,7 +277,7 @@ class DbManager:
|
|||||||
self.top.destroy()
|
self.top.destroy()
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def change_name(self, text, path, new_text):
|
def __change_name(self, text, path, new_text):
|
||||||
"""
|
"""
|
||||||
Changes the name of the database. This is a callback from the
|
Changes the name of the database. This is a callback from the
|
||||||
column, which has been marked as editable.
|
column, which has been marked as editable.
|
||||||
@ -289,7 +298,7 @@ class DbManager:
|
|||||||
_("Could not rename family tree"),
|
_("Could not rename family tree"),
|
||||||
str(msg))
|
str(msg))
|
||||||
|
|
||||||
def remove_db(self, obj):
|
def __remove_db(self, obj):
|
||||||
"""
|
"""
|
||||||
Callback associated with the Remove button. Get the selected
|
Callback associated with the Remove button. Get the selected
|
||||||
row and data, then call the verification dialog.
|
row and data, then call the verification dialog.
|
||||||
@ -301,12 +310,12 @@ class DbManager:
|
|||||||
_("Remove the '%s' database?") % self.data_to_delete[0],
|
_("Remove the '%s' database?") % self.data_to_delete[0],
|
||||||
_("Removing this database will permanently destroy the data."),
|
_("Removing this database will permanently destroy the data."),
|
||||||
_("Remove database"),
|
_("Remove database"),
|
||||||
self.really_delete_db)
|
self.__really_delete_db)
|
||||||
|
|
||||||
# rebuild the display
|
# rebuild the display
|
||||||
self.populate()
|
self.__populate()
|
||||||
|
|
||||||
def really_delete_db(self):
|
def __really_delete_db(self):
|
||||||
"""
|
"""
|
||||||
Delete the selected database. If the databse is open, close it first.
|
Delete the selected database. If the databse is open, close it first.
|
||||||
Then scan the database directory, deleting the files, and finally
|
Then scan the database directory, deleting the files, and finally
|
||||||
@ -327,7 +336,7 @@ class DbManager:
|
|||||||
QuestionDialog.ErrorDialog(_("Could not delete family tree"),
|
QuestionDialog.ErrorDialog(_("Could not delete family tree"),
|
||||||
str(msg))
|
str(msg))
|
||||||
|
|
||||||
def rename_db(self, obj):
|
def __rename_db(self, obj):
|
||||||
"""
|
"""
|
||||||
Start the rename process by calling the start_editing option on
|
Start the rename process by calling the start_editing option on
|
||||||
the line with the cursor.
|
the line with the cursor.
|
||||||
@ -337,7 +346,7 @@ class DbManager:
|
|||||||
self.dblist.set_cursor(path, focus_column=self.column,
|
self.dblist.set_cursor(path, focus_column=self.column,
|
||||||
start_editing=True)
|
start_editing=True)
|
||||||
|
|
||||||
def repair_db(self, obj):
|
def __repair_db(self, obj):
|
||||||
"""
|
"""
|
||||||
Start the rename process by calling the start_editing option on
|
Start the rename process by calling the start_editing option on
|
||||||
the line with the cursor.
|
the line with the cursor.
|
||||||
@ -369,21 +378,21 @@ class DbManager:
|
|||||||
self.msg.set_label("")
|
self.msg.set_label("")
|
||||||
db.close()
|
db.close()
|
||||||
self.dbstate.no_database()
|
self.dbstate.no_database()
|
||||||
self.populate()
|
self.__populate()
|
||||||
|
|
||||||
def new_db(self, obj):
|
def __new_db(self, obj):
|
||||||
"""
|
"""
|
||||||
Callback wrapper around the actual routine that creates the
|
Callback wrapper around the actual routine that creates the
|
||||||
new database. Catch OSError and IOError and display a warning
|
new database. Catch OSError and IOError and display a warning
|
||||||
message.
|
message.
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
self.mk_db()
|
self.__create_new_db()
|
||||||
except (OSError, IOError), msg:
|
except (OSError, IOError), msg:
|
||||||
QuestionDialog.ErrorDialog(_("Could not create family tree"),
|
QuestionDialog.ErrorDialog(_("Could not create family tree"),
|
||||||
str(msg))
|
str(msg))
|
||||||
|
|
||||||
def mk_db(self):
|
def __create_new_db(self):
|
||||||
"""
|
"""
|
||||||
Create a new database.
|
Create a new database.
|
||||||
"""
|
"""
|
||||||
|
@ -112,6 +112,8 @@ class GrampsPreferences(ManagedWindow.ManagedWindow):
|
|||||||
self.window.connect('response',self.done)
|
self.window.connect('response',self.done)
|
||||||
panel.append_page(self.add_behavior_panel(),
|
panel.append_page(self.add_behavior_panel(),
|
||||||
MarkupLabel(_('General')))
|
MarkupLabel(_('General')))
|
||||||
|
panel.append_page(self.add_database_panel(),
|
||||||
|
MarkupLabel(_('Database')))
|
||||||
panel.append_page(self.add_formats_panel(),
|
panel.append_page(self.add_formats_panel(),
|
||||||
MarkupLabel(_('Display')))
|
MarkupLabel(_('Display')))
|
||||||
panel.append_page(self.add_name_panel(),
|
panel.append_page(self.add_name_panel(),
|
||||||
@ -495,27 +497,36 @@ class GrampsPreferences(ManagedWindow.ManagedWindow):
|
|||||||
table.set_col_spacings(6)
|
table.set_col_spacings(6)
|
||||||
table.set_row_spacings(6)
|
table.set_row_spacings(6)
|
||||||
|
|
||||||
self.add_checkbox(table, _('Automatically backup database on exit'),
|
|
||||||
0, Config.ENABLE_AUTOBACKUP)
|
|
||||||
self.add_checkbox(table, _('Automatically load last database'),
|
|
||||||
1, Config.AUTOLOAD)
|
|
||||||
self.add_checkbox(table, _('Enable database transactions'),
|
|
||||||
2, Config.TRANSACTIONS)
|
|
||||||
self.add_checkbox(table, _('Add default source on import'),
|
self.add_checkbox(table, _('Add default source on import'),
|
||||||
3, Config.DEFAULT_SOURCE)
|
0, Config.DEFAULT_SOURCE)
|
||||||
self.add_checkbox(table, _('Enable spelling checker'),
|
self.add_checkbox(table, _('Enable spelling checker'),
|
||||||
4, Config.SPELLCHECK)
|
1, Config.SPELLCHECK)
|
||||||
self.add_checkbox(table, _('Display Tip of the Day'),
|
self.add_checkbox(table, _('Display Tip of the Day'),
|
||||||
5, Config.USE_TIPS)
|
2, Config.USE_TIPS)
|
||||||
self.add_checkbox(table, _('Use shading in Relationship View'),
|
self.add_checkbox(table, _('Use shading in Relationship View'),
|
||||||
6, Config.RELATION_SHADE)
|
3, Config.RELATION_SHADE)
|
||||||
self.add_checkbox(table, _('Display edit buttons on Relationship View'),
|
self.add_checkbox(table, _('Display edit buttons on Relationship View'),
|
||||||
7, Config.RELEDITBTN)
|
4, Config.RELEDITBTN)
|
||||||
self.add_checkbox(table, _('Remember last view displayed'),
|
self.add_checkbox(table, _('Remember last view displayed'),
|
||||||
8, Config.USE_LAST_VIEW)
|
5, Config.USE_LAST_VIEW)
|
||||||
|
|
||||||
return table
|
return table
|
||||||
|
|
||||||
|
def add_database_panel(self):
|
||||||
|
table = gtk.Table(3,8)
|
||||||
|
table.set_border_width(12)
|
||||||
|
table.set_col_spacings(6)
|
||||||
|
table.set_row_spacings(6)
|
||||||
|
|
||||||
|
self.add_entry(table, _('Database path'), 0, Config.DATABASE_PATH)
|
||||||
|
self.add_checkbox(table, _('Automatically backup database on exit'),
|
||||||
|
1, Config.ENABLE_AUTOBACKUP)
|
||||||
|
self.add_checkbox(table, _('Automatically load last database'),
|
||||||
|
2, Config.AUTOLOAD)
|
||||||
|
self.add_checkbox(table, _('Enable database transactions'),
|
||||||
|
3, Config.TRANSACTIONS)
|
||||||
|
return table
|
||||||
|
|
||||||
def add_checkbox(self, table, label, index, constant):
|
def add_checkbox(self, table, label, index, constant):
|
||||||
checkbox = gtk.CheckButton(label)
|
checkbox = gtk.CheckButton(label)
|
||||||
checkbox.set_active(Config.get(constant))
|
checkbox.set_active(Config.get(constant))
|
||||||
|
@ -6,20 +6,20 @@
|
|||||||
pkgdatadir = $(datadir)/@PACKAGE@/GrampsDbUtils
|
pkgdatadir = $(datadir)/@PACKAGE@/GrampsDbUtils
|
||||||
|
|
||||||
pkgdata_PYTHON = \
|
pkgdata_PYTHON = \
|
||||||
_GedcomInfo.py\
|
_Backup.py\
|
||||||
_GedcomTokens.py\
|
|
||||||
_GedcomParse.py\
|
|
||||||
_GedcomChar.py\
|
_GedcomChar.py\
|
||||||
_GedcomUtils.py\
|
_GedcomInfo.py\
|
||||||
_GedcomLex.py\
|
_GedcomLex.py\
|
||||||
|
_GedcomParse.py\
|
||||||
|
_GedcomTokens.py\
|
||||||
|
_GedcomUtils.py\
|
||||||
|
_GrampsDbWRFactories.py\
|
||||||
__init__.py\
|
__init__.py\
|
||||||
_ReadGedcom.py\
|
_ReadGedcom.py\
|
||||||
_ReadGrdb.py\
|
|
||||||
_ReadXML.py\
|
_ReadXML.py\
|
||||||
_WriteGedcom.py\
|
_WriteGedcom.py\
|
||||||
_WriteGrdb.py\
|
_WriteGrdb.py\
|
||||||
_WriteXML.py\
|
_WriteXML.py
|
||||||
_GrampsDbWRFactories.py
|
|
||||||
|
|
||||||
pkgpyexecdir = @pkgpyexecdir@/GrampsDbUtils
|
pkgpyexecdir = @pkgpyexecdir@/GrampsDbUtils
|
||||||
pkgpythondir = @pkgpythondir@/GrampsDbUtils
|
pkgpythondir = @pkgpythondir@/GrampsDbUtils
|
||||||
|
@ -94,6 +94,7 @@ pycheck:
|
|||||||
|
|
||||||
docs:
|
docs:
|
||||||
epydoc -v -o html --html --exclude gtk --no-private --show-imports --url=http://gramps-project.org --graph=umlclasstree $(docmodules)
|
epydoc -v -o html --html --exclude gtk --no-private --show-imports --url=http://gramps-project.org --graph=umlclasstree $(docmodules)
|
||||||
|
epydoc -v -o pdf --pdf --exclude gtk --no-private --show-imports --url=http://gramps-project.org --graph=umlclasstree $(docmodules)
|
||||||
|
|
||||||
cmdplug:
|
cmdplug:
|
||||||
./build_cmdplug
|
./build_cmdplug
|
||||||
|
@ -25,7 +25,7 @@ import BaseDoc
|
|||||||
|
|
||||||
class SimpleDoc:
|
class SimpleDoc:
|
||||||
"""
|
"""
|
||||||
Provides a simplified database access interface to the GRAMPS database.
|
Provides a simplified database access interface to the GRAMPS database.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, doc):
|
def __init__(self, doc):
|
||||||
|
Loading…
Reference in New Issue
Block a user