* src/Plugins.py: Add native_format flag to import plugin registration.
* src/ReadXML.py, src/ReadGedcom.py: Register as native formats to prevent loading twice on File->Open. * src/data/gramps.schemas: Add keys for last import and export dirs. * src/GrampsCfg.py (get_last_import_dir, save_last_import_dir, get_last_export_dir, save_last_export_dir): Add functions. * src/Exportder.py (suggest_filename): Try last export and last import folders before falling back to Home; (save): Save export folder. * src/Utils.py (get_new_filename): Add optional folder argument. * src/DbPrompter.py (ExistingDbPrompter.chooser): Only add importers for non-native formats, the rest is already taken care of; Try last file, last import, last export, then home folders; (ImportDbPrompter.chooser): Save import folder; Try last import, last file, last export, then home folders. (NewNativeDbPrompter): Try last file, last import, last export folders, then fall back to home. svn: r3493
This commit is contained in:
parent
0153cf36bc
commit
fb8b2ff943
17
ChangeLog
17
ChangeLog
@ -19,6 +19,23 @@
|
|||||||
* src/plugins/WebPage.py: Use gramps ID for naming the files
|
* src/plugins/WebPage.py: Use gramps ID for naming the files
|
||||||
and creating links.
|
and creating links.
|
||||||
|
|
||||||
|
* src/Plugins.py: Add native_format flag to import plugin registration.
|
||||||
|
* src/ReadXML.py, src/ReadGedcom.py: Register as native formats
|
||||||
|
to prevent loading twice on File->Open.
|
||||||
|
* src/data/gramps.schemas: Add keys for last import and export dirs.
|
||||||
|
* src/GrampsCfg.py (get_last_import_dir, save_last_import_dir,
|
||||||
|
get_last_export_dir, save_last_export_dir): Add functions.
|
||||||
|
* src/Exportder.py (suggest_filename): Try last export and last
|
||||||
|
import folders before falling back to Home; (save): Save export folder.
|
||||||
|
* src/Utils.py (get_new_filename): Add optional folder argument.
|
||||||
|
* src/DbPrompter.py (ExistingDbPrompter.chooser): Only add
|
||||||
|
importers for non-native formats, the rest is already taken care of;
|
||||||
|
Try last file, last import, last export, then home folders;
|
||||||
|
(ImportDbPrompter.chooser): Save import folder; Try last import,
|
||||||
|
last file, last export, then home folders.
|
||||||
|
(NewNativeDbPrompter): Try last file, last import, last export folders,
|
||||||
|
then fall back to home.
|
||||||
|
|
||||||
2004-08-23 Tim Waugh <twaugh@redhat.com>
|
2004-08-23 Tim Waugh <twaugh@redhat.com>
|
||||||
* install-sh: Removed this generated file.
|
* install-sh: Removed this generated file.
|
||||||
|
|
||||||
|
@ -51,6 +51,7 @@ import Plugins
|
|||||||
import GrampsBSDDB
|
import GrampsBSDDB
|
||||||
import GrampsXMLDB
|
import GrampsXMLDB
|
||||||
import GrampsGEDDB
|
import GrampsGEDDB
|
||||||
|
import GrampsCfg
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
@ -147,36 +148,54 @@ class ExistingDbPrompter:
|
|||||||
|
|
||||||
# Always add native format filter
|
# Always add native format filter
|
||||||
mime_filter = gtk.FileFilter()
|
mime_filter = gtk.FileFilter()
|
||||||
mime_filter.set_name(_('GEDCOM'))
|
mime_filter.set_name(_('GEDCOM files'))
|
||||||
mime_filter.add_mime_type(const.app_gedcom)
|
mime_filter.add_mime_type(const.app_gedcom)
|
||||||
choose.add_filter(mime_filter)
|
choose.add_filter(mime_filter)
|
||||||
|
|
||||||
# Add more data type selections if opening existing db
|
# Add more data type selections if opening existing db
|
||||||
for (importData,mime_filter,mime_type) in Plugins._imports:
|
for (importData,mime_filter,mime_type,native_format) in Plugins._imports:
|
||||||
choose.add_filter(mime_filter)
|
if not native_format:
|
||||||
|
choose.add_filter(mime_filter)
|
||||||
|
|
||||||
|
# Suggested folder: try last open file, last import, last export,
|
||||||
|
# then home.
|
||||||
|
default_dir = os.path.split(GrampsCfg.get_lastfile())[0] + os.path.sep
|
||||||
|
if len(default_dir)<=1:
|
||||||
|
default_dir = GrampsCfg.get_last_import_dir()
|
||||||
|
if len(default_dir)<=1:
|
||||||
|
default_dir = GrampsCfg.get_last_export_dir()
|
||||||
|
if len(default_dir)<=1:
|
||||||
|
default_dir = '~/'
|
||||||
|
|
||||||
|
choose.set_current_folder(default_dir)
|
||||||
response = choose.run()
|
response = choose.run()
|
||||||
if response == gtk.RESPONSE_OK:
|
if response == gtk.RESPONSE_OK:
|
||||||
filename = choose.get_filename()
|
filename = choose.get_filename()
|
||||||
filetype = gnome.vfs.get_mime_type(filename)
|
filetype = gnome.vfs.get_mime_type(filename)
|
||||||
|
|
||||||
|
(the_path,the_file) = os.path.split(filename)
|
||||||
|
GrampsCfg.save_last_import_dir(the_path)
|
||||||
|
|
||||||
if filetype == const.app_gramps:
|
if filetype == const.app_gramps:
|
||||||
choose.destroy()
|
choose.destroy()
|
||||||
self.parent.db = GrampsBSDDB.GrampsBSDDB()
|
self.parent.db = GrampsBSDDB.GrampsBSDDB()
|
||||||
self.parent.read_file(filename)
|
self.parent.read_file(filename)
|
||||||
return 1
|
return 1
|
||||||
if filetype == const.app_gramps_xml:
|
elif filetype == const.app_gramps_xml:
|
||||||
choose.destroy()
|
choose.destroy()
|
||||||
self.parent.db = GrampsXMLDB.GrampsXMLDB()
|
self.parent.db = GrampsXMLDB.GrampsXMLDB()
|
||||||
self.parent.read_file(filename)
|
self.parent.read_file(filename)
|
||||||
return 1
|
return 1
|
||||||
if filetype == const.app_gedcom:
|
elif filetype == const.app_gedcom:
|
||||||
choose.destroy()
|
choose.destroy()
|
||||||
self.parent.db = GrampsGEDDB.GrampsGEDDB()
|
self.parent.db = GrampsGEDDB.GrampsGEDDB()
|
||||||
self.parent.read_file(filename)
|
self.parent.read_file(filename)
|
||||||
return 1
|
return 1
|
||||||
(junk,the_file) = os.path.split(filename)
|
|
||||||
for (importData,mime_filter,mime_type) in Plugins._imports:
|
# The above native formats did not work, so we need to
|
||||||
|
# look up the importer for this format
|
||||||
|
# and create an empty native database to import data in
|
||||||
|
for (importData,mime_filter,mime_type,native_format) in Plugins._imports:
|
||||||
if filetype == mime_type or the_file == mime_type:
|
if filetype == mime_type or the_file == mime_type:
|
||||||
choose.destroy()
|
choose.destroy()
|
||||||
QuestionDialog.OkDialog( _("Opening non-native format"),
|
QuestionDialog.OkDialog( _("Opening non-native format"),
|
||||||
@ -240,17 +259,27 @@ class ImportDbPrompter:
|
|||||||
choose.add_filter(mime_filter)
|
choose.add_filter(mime_filter)
|
||||||
|
|
||||||
# FIXME: Uncomment when we have grdb importer
|
# FIXME: Uncomment when we have grdb importer
|
||||||
#
|
|
||||||
# # Always add native format filter
|
# # Always add native format filter
|
||||||
# filter = gtk.FileFilter()
|
# mime_filter = gtk.FileFilter()
|
||||||
# filter.set_name(_('GRAMPS databases'))
|
# mime_filter.set_name(_('GRAMPS databases'))
|
||||||
# filter.add_mime_type('application/x-gramps')
|
# mime_filter.add_mime_type(const.app_gramps)
|
||||||
# choose.add_filter(filter)
|
# choose.add_filter(mime_filter)
|
||||||
|
|
||||||
# Add more data type selections if opening existing db
|
# Add more data type selections if opening existing db
|
||||||
for (importData,mime_filter,mime_type) in Plugins._imports:
|
for (importData,mime_filter,mime_type,native_format) in Plugins._imports:
|
||||||
choose.add_filter(mime_filter)
|
choose.add_filter(mime_filter)
|
||||||
|
|
||||||
|
# Suggested folder: try last open file, import, then last export,
|
||||||
|
# then home.
|
||||||
|
default_dir = GrampsCfg.get_last_import_dir()
|
||||||
|
if len(default_dir)<=1:
|
||||||
|
default_dir = os.path.split(GrampsCfg.get_lastfile())[0] + os.path.sep
|
||||||
|
if len(default_dir)<=1:
|
||||||
|
default_dir = GrampsCfg.get_last_export_dir()
|
||||||
|
if len(default_dir)<=1:
|
||||||
|
default_dir = '~/'
|
||||||
|
|
||||||
|
choose.set_current_folder(default_dir)
|
||||||
response = choose.run()
|
response = choose.run()
|
||||||
if response == gtk.RESPONSE_OK:
|
if response == gtk.RESPONSE_OK:
|
||||||
filename = choose.get_filename()
|
filename = choose.get_filename()
|
||||||
@ -261,8 +290,10 @@ class ImportDbPrompter:
|
|||||||
# choose.destroy()
|
# choose.destroy()
|
||||||
# self.parent.read_file(filename)
|
# self.parent.read_file(filename)
|
||||||
# return 1
|
# return 1
|
||||||
(junk,the_file) = os.path.split(filename)
|
|
||||||
for (importData,mime_filter,mime_type) in Plugins._imports:
|
(the_path,the_file) = os.path.split(filename)
|
||||||
|
GrampsCfg.save_last_import_dir(the_path)
|
||||||
|
for (importData,mime_filter,mime_type,native_format) in Plugins._imports:
|
||||||
if filetype == mime_type or the_file == mime_type:
|
if filetype == mime_type or the_file == mime_type:
|
||||||
choose.destroy()
|
choose.destroy()
|
||||||
importData(self.parent.db,filename)
|
importData(self.parent.db,filename)
|
||||||
@ -276,7 +307,6 @@ class ImportDbPrompter:
|
|||||||
choose.destroy()
|
choose.destroy()
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# NewNativeDbPrompter
|
# NewNativeDbPrompter
|
||||||
@ -316,12 +346,22 @@ class NewNativeDbPrompter:
|
|||||||
# Always add native format filter
|
# Always add native format filter
|
||||||
mime_filter = gtk.FileFilter()
|
mime_filter = gtk.FileFilter()
|
||||||
mime_filter.set_name(_('GRAMPS databases'))
|
mime_filter.set_name(_('GRAMPS databases'))
|
||||||
mime_filter.add_mime_type('application/x-gramps')
|
mime_filter.add_mime_type(const.app_gramps)
|
||||||
choose.add_filter(mime_filter)
|
choose.add_filter(mime_filter)
|
||||||
|
|
||||||
new_filename = Utils.get_new_filename('grdb')
|
# Suggested folder: try last open file, import, then last export,
|
||||||
|
# then home.
|
||||||
|
default_dir = os.path.split(GrampsCfg.get_lastfile())[0] + os.path.sep
|
||||||
|
if len(default_dir)<=1:
|
||||||
|
default_dir = GrampsCfg.get_last_import_dir()
|
||||||
|
if len(default_dir)<=1:
|
||||||
|
default_dir = GrampsCfg.get_last_export_dir()
|
||||||
|
if len(default_dir)<=1:
|
||||||
|
default_dir = '~/'
|
||||||
|
|
||||||
choose.set_filename(new_filename)
|
new_filename = Utils.get_new_filename('grdb',default_dir)
|
||||||
|
|
||||||
|
choose.set_current_folder(default_dir)
|
||||||
choose.set_current_name(os.path.split(new_filename)[1])
|
choose.set_current_name(os.path.split(new_filename)[1])
|
||||||
|
|
||||||
response = choose.run()
|
response = choose.run()
|
||||||
|
@ -50,6 +50,7 @@ import const
|
|||||||
import Utils
|
import Utils
|
||||||
import Plugins
|
import Plugins
|
||||||
import QuestionDialog
|
import QuestionDialog
|
||||||
|
import GrampsCfg
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
@ -203,6 +204,7 @@ class Exporter:
|
|||||||
Depending on the success status, set the text for the final page.
|
Depending on the success status, set the text for the final page.
|
||||||
"""
|
"""
|
||||||
filename = self.chooser.get_filename()
|
filename = self.chooser.get_filename()
|
||||||
|
GrampsCfg.save_last_export_dir(os.path.split(filename)[0])
|
||||||
ix = self.get_selected_format_index()
|
ix = self.get_selected_format_index()
|
||||||
if self.exports[ix][3]:
|
if self.exports[ix][3]:
|
||||||
success = self.exports[ix][0](self.parent.db,filename,self.person,
|
success = self.exports[ix][0](self.parent.db,filename,self.person,
|
||||||
@ -329,11 +331,19 @@ class Exporter:
|
|||||||
"""
|
"""
|
||||||
ix = self.get_selected_format_index()
|
ix = self.get_selected_format_index()
|
||||||
ext = self.exports[ix][4]
|
ext = self.exports[ix][4]
|
||||||
|
|
||||||
|
# Suggested folder: try last export, then last import, then home.
|
||||||
|
default_dir = GrampsCfg.get_last_export_dir()
|
||||||
|
if len(default_dir)<=1:
|
||||||
|
default_dir = GrampsCfg.get_last_import_dir()
|
||||||
|
if len(default_dir)<=1:
|
||||||
|
default_dir = '~/'
|
||||||
|
|
||||||
if ext == 'gramps':
|
if ext == 'gramps':
|
||||||
new_filename = os.path.expanduser('~/data.gramps')
|
new_filename = os.path.expanduser(default_dir + 'data.gramps')
|
||||||
else:
|
else:
|
||||||
new_filename = Utils.get_new_filename(ext)
|
new_filename = Utils.get_new_filename(ext,default_dir)
|
||||||
self.chooser.set_filename(new_filename)
|
self.chooser.set_current_folder(default_dir)
|
||||||
self.chooser.set_current_name(os.path.split(new_filename)[1])
|
self.chooser.set_current_name(os.path.split(new_filename)[1])
|
||||||
|
|
||||||
def get_selected_format_index(self):
|
def get_selected_format_index(self):
|
||||||
|
@ -189,6 +189,18 @@ def get_lastfile():
|
|||||||
def save_last_file(val):
|
def save_last_file(val):
|
||||||
set_string("/apps/gramps/paths/recent-file",val)
|
set_string("/apps/gramps/paths/recent-file",val)
|
||||||
|
|
||||||
|
def get_last_import_dir():
|
||||||
|
return get_string("/apps/gramps/paths/recent-import-dir")
|
||||||
|
|
||||||
|
def save_last_import_dir(val):
|
||||||
|
set_string_as_path("/apps/gramps/paths/recent-import-dir",val)
|
||||||
|
|
||||||
|
def get_last_export_dir():
|
||||||
|
return get_string("/apps/gramps/paths/recent-export-dir")
|
||||||
|
|
||||||
|
def save_last_export_dir(val):
|
||||||
|
set_string_as_path("/apps/gramps/paths/recent-export-dir",val)
|
||||||
|
|
||||||
def get_report_dir():
|
def get_report_dir():
|
||||||
return get_string("/apps/gramps/paths/report-directory")
|
return get_string("/apps/gramps/paths/report-directory")
|
||||||
|
|
||||||
|
@ -468,10 +468,10 @@ def register_export(exportData,_title,_description='',_config=None,_filename='')
|
|||||||
if _description and _filename:
|
if _description and _filename:
|
||||||
_exports.append((exportData,_title,_description,_config,_filename))
|
_exports.append((exportData,_title,_description,_config,_filename))
|
||||||
|
|
||||||
def register_import(task, ffilter, mime=None):
|
def register_import(task, ffilter, mime=None, native_format=0):
|
||||||
"""Register an import filter, taking the task and file filter"""
|
"""Register an import filter, taking the task and file filter"""
|
||||||
if mime:
|
if mime:
|
||||||
_imports.append((task, ffilter, mime))
|
_imports.append((task, ffilter, mime, native_format))
|
||||||
|
|
||||||
def register_report(task, name,
|
def register_report(task, name,
|
||||||
category=_("Uncategorized"),
|
category=_("Uncategorized"),
|
||||||
|
@ -1860,4 +1860,4 @@ _filter.add_mime_type(_mime_type)
|
|||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
from Plugins import register_import
|
from Plugins import register_import
|
||||||
register_import(importData,_filter,_mime_type)
|
register_import(importData,_filter,_mime_type,1)
|
||||||
|
@ -1221,4 +1221,4 @@ _filter.set_name(_('GRAMPS XML databases'))
|
|||||||
_filter.add_pattern(_mime_type)
|
_filter.add_pattern(_mime_type)
|
||||||
|
|
||||||
from Plugins import register_import
|
from Plugins import register_import
|
||||||
register_import(importData,_filter,_mime_type)
|
register_import(importData,_filter,_mime_type,1)
|
||||||
|
@ -551,11 +551,10 @@ def create_id():
|
|||||||
#
|
#
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
_NEW_NAME_PATTERN = '~/Untitled_%d.%s'
|
_NEW_NAME_PATTERN = '%sUntitled_%d.%s'
|
||||||
|
|
||||||
def get_new_filename(ext):
|
def get_new_filename(ext,folder='~/'):
|
||||||
ix = 1
|
ix = 1
|
||||||
while os.path.isfile(os.path.expanduser(_NEW_NAME_PATTERN % (ix,ext) )):
|
while os.path.isfile(os.path.expanduser(_NEW_NAME_PATTERN % (folder,ix,ext) )):
|
||||||
ix = ix + 1
|
ix = ix + 1
|
||||||
return os.path.expanduser(_NEW_NAME_PATTERN % (ix,ext))
|
return os.path.expanduser(_NEW_NAME_PATTERN % (folder,ix,ext))
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user