* src/DbPrompter.py (format_maker): Add mnemonic activation target

to the format selector label; Use new import format; don't treat
native formats as plugins anymore.
* src/PluginMgr.py: Add format name to import registration.
* src/ReadGedcom.py: Cleanups; Don't register already native import.
* src/ReadXML.py: Don't register already native import.
* src/data/gramps.xml: Add magic patterns for XML, GEDCOM, and GW.
* src/plugins/ImportGeneWeb.py: Register with format name.
* src/plugins/ReadNative.py: Remove obsolete file.
* src/plugins/ReadPkg.py: Lots of cleanups; Register with format name.


svn: r4105
This commit is contained in:
Alex Roitman
2005-02-28 01:51:21 +00:00
parent 017fe976b2
commit c7b909ae02
9 changed files with 116 additions and 340 deletions

View File

@@ -679,6 +679,7 @@ _mime_type = const.app_geneweb
_filter = gtk.FileFilter()
_filter.set_name(_('GeneWeb files'))
_filter.add_mime_type(_mime_type)
_format_name = _('GeneWeb')
from PluginMgr import register_import
register_import(importData,_filter,_mime_type,1)
register_import(importData,_filter,_mime_type,0,_format_name)

View File

@@ -1,109 +0,0 @@
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2000-2004 Donald N. Allingham
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# $Id$
#
# Modified by Alex Roitman to handle media object files.
#
"Import from Gramps database"
from ReadXML import *
import Utils
from gettext import gettext as _
import gtk
import const
import os
_title_string = _("GRAMPS XML database")
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
def readData(database,active_person,cb):
ReadNative(database,active_person,cb)
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
class ReadNative:
def __init__(self,database,active_person,cb):
self.db = database
self.callback = cb
self.top = gtk.FileSelection("%s - GRAMPS" % _title_string)
self.top.hide_fileop_buttons()
self.top.ok_button.connect('clicked', self.on_ok_clicked)
self.top.cancel_button.connect('clicked', self.close_window)
self.top.show()
def close_window(self,obj):
self.top.destroy()
def show_display(self):
self.window = gtk.Window()
self.window.set_title(_title_string)
vbox = gtk.VBox()
self.window.add(vbox)
label = gtk.Label(_title_string)
vbox.add(label)
adj = gtk.Adjustment(lower=0,upper=100)
self.progress_bar = gtk.ProgressBar(adj)
vbox.add(self.progress_bar)
self.window.show_all()
def on_ok_clicked(self,obj):
imp_dbpath = self.top.get_filename()
if imp_dbpath == "":
return
Utils.destroy_passed_object(self.top)
self.show_display()
dbname = os.path.join(imp_dbpath,const.xmlFile)
try:
importData(self.db,dbname,self.progress)
except:
import DisplayTrace
DisplayTrace.DisplayTrace()
self.window.destroy()
self.callback()
def progress(self,val):
self.progress_bar.set_fraction(val)
while gtk.events_pending():
gtk.mainiteration()
#------------------------------------------------------------------------
#
# Register with the plugin system
#
#------------------------------------------------------------------------
from PluginMgr import register_import
register_import(readData,_title_string)

View File

@@ -1,7 +1,7 @@
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2000-2004 Donald N. Allingham
# Copyright (C) 2000-2005 Donald N. Allingham
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -17,32 +17,36 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# $Id$
#
# Written by Alex Roitman, largely based on ReadNative.py by Don Allingham
#
"Import from Gramps package"
from ReadXML import *
import Utils
from gettext import gettext as _
import gtk
import const
#-------------------------------------------------------------------------
#
# Python modules
#
#-------------------------------------------------------------------------
import os
from QuestionDialog import ErrorDialog, WarningDialog
import TarFile
from gettext import gettext as _
_title_string = _("GRAMPS package")
#-------------------------------------------------------------------------
#
#
# GNOME/GTK+ modules
#
#-------------------------------------------------------------------------
#def readData(database,active_person,cb):
# ReadPkg(database,active_person,cb)
import gtk
#-------------------------------------------------------------------------
#
# GRAMPS modules
#
#-------------------------------------------------------------------------
import const
import ReadXML
from QuestionDialog import ErrorDialog
import TarFile
#-------------------------------------------------------------------------
#
@@ -50,133 +54,46 @@ _title_string = _("GRAMPS package")
#
#-------------------------------------------------------------------------
def impData(database, name,cb=None,cl=0):
# Create tempdir, if it does not exist, then check for writability
tmpdir_path = os.path.expanduser("~/.gramps/tmp" )
if not os.path.isdir(tmpdir_path):
try:
os.mkdir(tmpdir_path,0700)
except:
ErrorDialog( _("Could not create temporary directory %s") %
tmpdir_path )
return
elif not os.access(tmpdir_path,os.W_OK):
ErrorDialog( _("Temporary directory %s is not writable") % tmpdir_path )
return
else: # tempdir exists and writable -- clean it up if not empty
files = os.listdir(tmpdir_path) ;
for filename in files:
os.remove( os.path.join(tmpdir_path,filename) )
# Create tempdir, if it does not exist, then check for writability
tmpdir_path = os.path.expanduser("~/.gramps/tmp" )
if not os.path.isdir(tmpdir_path):
try:
t = TarFile.ReadTarFile(name,tmpdir_path)
t.extract()
t.close()
os.mkdir(tmpdir_path,0700)
except:
print "name3:", name
print tmpdir_path
ErrorDialog(_("Error extracting into %s") % tmpdir_path )
ErrorDialog( _("Could not create temporary directory %s") %
tmpdir_path )
return
dbname = os.path.join(tmpdir_path,const.xmlFile)
try:
importData(database,dbname,cb)
except:
import DisplayTrace
DisplayTrace.DisplayTrace()
# Clean up tempdir after ourselves
files = os.listdir(tmpdir_path)
elif not os.access(tmpdir_path,os.W_OK):
ErrorDialog( _("Temporary directory %s is not writable") % tmpdir_path )
return
else: # tempdir exists and writable -- clean it up if not empty
files = os.listdir(tmpdir_path) ;
for filename in files:
os.remove(os.path.join(tmpdir_path,filename))
os.remove( os.path.join(tmpdir_path,filename) )
os.rmdir(tmpdir_path)
try:
t = TarFile.ReadTarFile(name,tmpdir_path)
t.extract()
t.close()
except:
ErrorDialog(_("Error extracting into %s") % tmpdir_path )
return
dbname = os.path.join(tmpdir_path,const.xmlFile)
try:
ReadXML.importData(database,dbname,cb)
except:
import DisplayTrace
DisplayTrace.DisplayTrace()
# Clean up tempdir after ourselves
files = os.listdir(tmpdir_path)
for filename in files:
os.remove(os.path.join(tmpdir_path,filename))
os.rmdir(tmpdir_path)
#class ReadPkg:
# def __init__(self,database,active_person,cb):
# self.db = database
# self.callback = cb
#
# self.top = gtk.FileSelection("%s - GRAMPS" % _title_string)
# self.top.hide_fileop_buttons()
# self.top.ok_button.connect('clicked', self.on_ok_clicked)
# self.top.cancel_button.connect('clicked', self.close_window)
# self.top.show()
#
# def close_window(self,obj):
# self.top.destroy()
#
# def show_display(self):
# self.window = gtk.Window()
# self.window.set_title(_title_string)
# vbox = gtk.VBox()
# self.window.add(vbox)
# label = gtk.Label(_title_string)
# vbox.add(label)
# adj = gtk.Adjustment(lower=0,upper=100)
# self.progress_bar = gtk.ProgressBar(adj)
# vbox.add(self.progress_bar)
# self.window.show_all()
#
# def on_ok_clicked(self,obj):
#
# name = self.top.get_filename()
# if name == "":
# return
#
# Utils.destroy_passed_object(self.top)
# self.show_display()
#
# # Create tempdir, if it does not exist, then check for writability
# tmpdir_path = os.path.expanduser("~/.gramps/tmp" )
# if not os.path.isdir(tmpdir_path):
# try:
# os.mkdir(tmpdir_path,0700)
# except:
# ErrorDialog( _("Could not create temporary directory %s") %
# tmpdir_path )
# return
# elif not os.access(tmpdir_path,os.W_OK):
# ErrorDialog( _("Temporary directory %s is not writable") % tmpdir_path )
# return
# else: # tempdir exists and writable -- clean it up if not empty
# files = os.listdir(tmpdir_path) ;
# for filename in files:
# os.remove( os.path.join(tmpdir_path,filename) )
#
# try:
# t = TarFile.ReadTarFile(name,tmpdir_path)
# t.extract()
# except:
# ErrorDialog(_("Error extracting into %s") % tmpdir_path )
# return
#
# dbname = os.path.join(tmpdir_path,const.xmlFile)
#
# try:
# importData(self.db,dbname,self.progress)
# except:
# import DisplayTrace
# DisplayTrace.DisplayTrace()
#
#
#
#
# # Clean up tempdir after ourselves
# files = os.listdir(tmpdir_path)
# for filename in files:
# os.remove(os.path.join(tmpdir_path,filename))
#
# os.rmdir(tmpdir_path)
#
# self.window.destroy()
# self.callback()
#
# def progress(self,val):
# self.progress_bar.set_fraction(val)
# while gtk.events_pending():
# gtk.mainiteration()
#
#------------------------------------------------------------------------
#
# Register with the plugin system
@@ -186,7 +103,7 @@ _mime_type = 'application/x-gramps-package'
_filter = gtk.FileFilter()
_filter.set_name(_('GRAMPS packages'))
_filter.add_mime_type(_mime_type)
_format_name = _('GRAMPS package')
from PluginMgr import register_import
register_import(impData,_filter,_mime_type)
register_import(impData,_filter,_mime_type,0,_format_name)