* src/ArgHandler.py: Command line support for geneweb import
and export; Fix command line exports for gedcom, XML, and package. * src/Exporter.py (help): Point to correct manual section. * src/const.py.in: Add a constant for geneweb mime type name. * src/plugins/WriteFtree.py: Support wizard and fix command line mode. * src/plugins/writeftree.glade: Support export wizard. * src/plugins/WritePkg.py: Support wizard and fix command line mode. * src/plugins/ImportGeneWeb.py: Comment out debugging messages. * src/plugins/WriteGeneWeb.py: Support for command-line export. svn: r4054
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2000-2004 Martin Hawlisch, Donald N. Allingham
|
||||
# Copyright (C) 2000-2005 Martin Hawlisch, 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
|
||||
@ -29,9 +29,8 @@
|
||||
#-------------------------------------------------------------------------
|
||||
import os
|
||||
import re
|
||||
import string
|
||||
import const
|
||||
import time
|
||||
from gettext import gettext as _
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -48,13 +47,11 @@ import gtk.glade
|
||||
#-------------------------------------------------------------------------
|
||||
import Errors
|
||||
import RelLib
|
||||
import Date
|
||||
import DateHandler
|
||||
import latin_utf8
|
||||
import Utils
|
||||
import const
|
||||
from QuestionDialog import ErrorDialog
|
||||
from gettext import gettext as _
|
||||
|
||||
from DateHandler import parser as _dp
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -98,7 +95,6 @@ class GeneWebParser:
|
||||
self.db = dbase
|
||||
self.f = open(file,"rU")
|
||||
self.filename = file
|
||||
self.dp = DateHandler.create_parser()
|
||||
|
||||
def get_next_line(self):
|
||||
line = self.f.readline()
|
||||
@ -133,7 +129,7 @@ class GeneWebParser:
|
||||
|
||||
fields = line.split(" ")
|
||||
|
||||
print "LINE: %s" %line
|
||||
#print "LINE: %s" %line
|
||||
if fields[0] == "fam":
|
||||
self.read_family_line(line,fields)
|
||||
elif fields[0] == "src":
|
||||
@ -173,7 +169,7 @@ class GeneWebParser:
|
||||
self.fkeys.append(self.current_family.get_handle())
|
||||
idx = 1;
|
||||
|
||||
print "\nHusband:"
|
||||
#print "\nHusband:"
|
||||
(idx,husband) = self.parse_person(fields,idx,RelLib.Person.MALE,None)
|
||||
if husband:
|
||||
self.current_husband_handle = husband.get_handle()
|
||||
@ -181,9 +177,9 @@ class GeneWebParser:
|
||||
self.db.commit_family(self.current_family,self.trans)
|
||||
husband.add_family_handle(self.current_family.get_handle())
|
||||
self.db.commit_person(husband,self.trans)
|
||||
print "Marriage:"
|
||||
#print "Marriage:"
|
||||
idx = self.parse_marriage(fields,idx)
|
||||
print "Wife:"
|
||||
#print "Wife:"
|
||||
(idx,wife) = self.parse_person(fields,idx,RelLib.Person.FEMALE,None)
|
||||
if wife:
|
||||
self.current_family.set_mother_handle(wife.get_handle())
|
||||
@ -194,15 +190,15 @@ class GeneWebParser:
|
||||
|
||||
def read_source_line(self,line,fields):
|
||||
if not self.current_family:
|
||||
print "Unknown family of child!"
|
||||
return None
|
||||
print "Unknown family of child!"
|
||||
return None
|
||||
source = self.get_or_create_source(self.decode(fields[1]))
|
||||
self.current_family.add_source_reference(source)
|
||||
self.db.commit_family(self.current_family,self.trans)
|
||||
return None
|
||||
|
||||
def read_witness_line(self,line,fields):
|
||||
print "Witness:"
|
||||
#print "Witness:"
|
||||
if fields[1] == "m:":
|
||||
self.parse_person(fields,2,RelLib.Person.MALE,None)
|
||||
elif fields[1] == "f:":
|
||||
@ -219,8 +215,8 @@ class GeneWebParser:
|
||||
husb = self.db.get_person_from_handle(self.current_husband_handle)
|
||||
father_surname = husb.get_primary_name().get_surname()
|
||||
if not self.current_family:
|
||||
print "Unknown family of child!"
|
||||
return None
|
||||
print "Unknown family of child!"
|
||||
return None
|
||||
while 1:
|
||||
line = self.get_next_line()
|
||||
if line == None:
|
||||
@ -230,7 +226,7 @@ class GeneWebParser:
|
||||
|
||||
fields = line.split(" ")
|
||||
if fields[0] == "-":
|
||||
print "Child:"
|
||||
#print "Child:"
|
||||
child = None
|
||||
if fields[1] == "h":
|
||||
(idx,child) = self.parse_person(fields,2,RelLib.Person.MALE,father_surname)
|
||||
@ -254,8 +250,8 @@ class GeneWebParser:
|
||||
|
||||
def read_family_comment(self,line,fields):
|
||||
if not self.current_family:
|
||||
print "Unknown family of child!"
|
||||
return None
|
||||
print "Unknown family of child!"
|
||||
return None
|
||||
self.current_family.set_note(self.cnv(line))
|
||||
self.db.commit_family(self.current_family,self.trans)
|
||||
return None
|
||||
@ -299,7 +295,7 @@ class GeneWebParser:
|
||||
|
||||
# skip to marriage date in case person contained unmatches tokens
|
||||
#Alex: this failed when fields[idx] was an empty line. Fixed.
|
||||
#while idx < len(fields) and not fields[idx][0] == "+":
|
||||
#while idx < len(fields) and not fields[idx][0] == "+":
|
||||
while idx < len(fields) and not (fields[idx] and fields[idx][0] == "+"):
|
||||
print "Unknown field: "+fields[idx]
|
||||
idx = idx + 1
|
||||
@ -307,33 +303,33 @@ class GeneWebParser:
|
||||
while idx < len(fields) and mariageDataRe.match(fields[idx]):
|
||||
if fields[idx][0] == "+":
|
||||
mar_date = self.parse_date(self.decode(fields[idx]))
|
||||
print " Married at: %s" % fields[idx]
|
||||
#print " Married at: %s" % fields[idx]
|
||||
idx = idx + 1
|
||||
elif fields[idx][0] == "-":
|
||||
div_date = self.parse_date(self.decode(fields[idx]))
|
||||
print " Div at: %s" % fields[idx]
|
||||
#print " Div at: %s" % fields[idx]
|
||||
idx = idx + 1
|
||||
elif fields[idx] == "#mp":
|
||||
idx = idx + 1
|
||||
mar_place = self.get_or_create_place(self.decode(fields[idx]))
|
||||
print " Marriage place: %s" % fields[idx]
|
||||
#print " Marriage place: %s" % fields[idx]
|
||||
idx = idx + 1
|
||||
elif fields[idx] == "#ms":
|
||||
idx = idx + 1
|
||||
mar_source = self.get_or_create_source(self.decode(fields[idx]))
|
||||
print " Marriage source: %s" % fields[idx]
|
||||
#print " Marriage source: %s" % fields[idx]
|
||||
idx = idx + 1
|
||||
elif fields[idx] == "#sep":
|
||||
idx = idx + 1
|
||||
sep_date = self.parse_date(self.decode(fields[idx]))
|
||||
print " Seperated since: %s" % fields[idx]
|
||||
#print " Seperated since: %s" % fields[idx]
|
||||
idx = idx + 1
|
||||
elif fields[idx] == "#np":
|
||||
print " Are not married."
|
||||
#print " Are not married."
|
||||
married = 0
|
||||
idx = idx + 1
|
||||
elif fields[idx] == "#eng":
|
||||
print " Are engaged."
|
||||
#print " Are engaged."
|
||||
engaged = 1
|
||||
idx = idx + 1
|
||||
else:
|
||||
@ -385,7 +381,7 @@ class GeneWebParser:
|
||||
surname = self.decode(fields[idx])
|
||||
idx = idx + 1
|
||||
|
||||
print "Person: %s %s" % (firstname, surname)
|
||||
#print "Person: %s %s" % (firstname, surname)
|
||||
person = self.get_or_create_person(firstname,surname)
|
||||
name = RelLib.Name()
|
||||
name.set_type("Birth Name")
|
||||
@ -424,113 +420,113 @@ class GeneWebParser:
|
||||
|
||||
while idx < len(fields) and personDataRe.match(fields[idx]):
|
||||
if fields[idx][0] == '(':
|
||||
print "Public Name: %s" % fields[idx]
|
||||
#print "Public Name: %s" % fields[idx]
|
||||
public_name = self.decode(fields[idx])
|
||||
idx = idx + 1
|
||||
elif fields[idx][0] == '{':
|
||||
print "Firstsname Alias: %s" % fields[idx]
|
||||
#print "Firstsname Alias: %s" % fields[idx]
|
||||
firstname_aliases.append(self.decode(fields[idx]))
|
||||
idx = idx + 1
|
||||
elif fields[idx][0] == '[':
|
||||
print "Titles: %s" % fields[idx]
|
||||
#print "Titles: %s" % fields[idx]
|
||||
idx = idx + 1
|
||||
elif fields[idx] == '#nick':
|
||||
idx = idx + 1
|
||||
print "Nick Name: %s" % fields[idx]
|
||||
#print "Nick Name: %s" % fields[idx]
|
||||
nick_names.append(self.decode(fields[idx]))
|
||||
idx = idx + 1
|
||||
elif fields[idx] == '#occu':
|
||||
idx = idx + 1
|
||||
print "Occupation: %s" % fields[idx]
|
||||
#print "Occupation: %s" % fields[idx]
|
||||
occu = self.create_event("Occupation",self.decode(fields[idx]))
|
||||
person.add_event_handle(occu.get_handle())
|
||||
self.db.commit_person(person,self.trans)
|
||||
idx = idx + 1
|
||||
elif fields[idx] == '#alias':
|
||||
idx = idx + 1
|
||||
print "Name Alias: %s" % fields[idx]
|
||||
#print "Name Alias: %s" % fields[idx]
|
||||
name_aliases.append(self.decode(fields[idx]))
|
||||
idx = idx + 1
|
||||
elif fields[idx] == '#salias':
|
||||
idx = idx + 1
|
||||
print "Surname Alias: %s" % fields[idx]
|
||||
#print "Surname Alias: %s" % fields[idx]
|
||||
surname_aliases.append(self.decode(fields[idx]))
|
||||
idx = idx + 1
|
||||
elif fields[idx] == '#image':
|
||||
idx = idx + 1
|
||||
print "Image: %s" % fields[idx]
|
||||
#print "Image: %s" % fields[idx]
|
||||
idx = idx + 1
|
||||
elif fields[idx] == '#src':
|
||||
idx = idx + 1
|
||||
print "Source: %s" % fields[idx]
|
||||
#print "Source: %s" % fields[idx]
|
||||
source = self.get_or_create_source(self.decode(fields[idx]))
|
||||
idx = idx + 1
|
||||
elif fields[idx] == '#bs':
|
||||
idx = idx + 1
|
||||
print "Birth Source: %s" % fields[idx]
|
||||
#print "Birth Source: %s" % fields[idx]
|
||||
birth_source = self.get_or_create_source(self.decode(fields[idx]))
|
||||
idx = idx + 1
|
||||
elif fields[idx][0] == '!':
|
||||
print "Baptize at: %s" % fields[idx]
|
||||
#print "Baptize at: %s" % fields[idx]
|
||||
bapt_date = self.parse_date(self.decode(fields[idx]))
|
||||
idx = idx + 1
|
||||
elif fields[idx] == '#bp':
|
||||
idx = idx + 1
|
||||
print "Birth Place: %s" % fields[idx]
|
||||
#print "Birth Place: %s" % fields[idx]
|
||||
birth_place = self.get_or_create_place(self.decode(fields[idx]))
|
||||
idx = idx + 1
|
||||
elif fields[idx] == '#pp':
|
||||
idx = idx + 1
|
||||
print "Baptize Place: %s" % fields[idx]
|
||||
#print "Baptize Place: %s" % fields[idx]
|
||||
bapt_place = self.get_or_create_place(self.decode(fields[idx]))
|
||||
idx = idx + 1
|
||||
elif fields[idx] == '#ps':
|
||||
idx = idx + 1
|
||||
print "Baptize Source: %s" % fields[idx]
|
||||
#print "Baptize Source: %s" % fields[idx]
|
||||
bapt_source = self.get_or_create_source(self.decode(fields[idx]))
|
||||
idx = idx + 1
|
||||
elif fields[idx] == '#dp':
|
||||
idx = idx + 1
|
||||
print "Death Place: %s" % fields[idx]
|
||||
#print "Death Place: %s" % fields[idx]
|
||||
death_place = self.get_or_create_place(self.decode(fields[idx]))
|
||||
idx = idx + 1
|
||||
elif fields[idx] == '#ds':
|
||||
idx = idx + 1
|
||||
print "Death Source: %s" % fields[idx]
|
||||
#print "Death Source: %s" % fields[idx]
|
||||
death_source = self.get_or_create_source(self.decode(fields[idx]))
|
||||
idx = idx + 1
|
||||
elif fields[idx] == '#buri':
|
||||
idx = idx + 1
|
||||
print "Burial Date: %s" % fields[idx]
|
||||
#print "Burial Date: %s" % fields[idx]
|
||||
bur_date = self.parse_date(self.decode(fields[idx]))
|
||||
idx = idx + 1
|
||||
elif fields[idx] == '#crem':
|
||||
idx = idx + 1
|
||||
print "Cremention Date: %s" % fields[idx]
|
||||
#print "Cremention Date: %s" % fields[idx]
|
||||
crem_date = self.parse_date(self.decode(fields[idx]))
|
||||
idx = idx + 1
|
||||
elif fields[idx] == '#bp':
|
||||
idx = idx + 1
|
||||
print "Burial Place: %s" % fields[idx]
|
||||
#print "Burial Place: %s" % fields[idx]
|
||||
bur_place = self.get_or_create_place(self.decode(fields[idx]))
|
||||
idx = idx + 1
|
||||
elif fields[idx] == '#rs':
|
||||
idx = idx + 1
|
||||
print "Burial Source: %s" % fields[idx]
|
||||
#print "Burial Source: %s" % fields[idx]
|
||||
bur_source = self.get_or_create_source(self.decode(fields[idx]))
|
||||
idx = idx + 1
|
||||
elif fields[idx] == '#apubl':
|
||||
print "This is a public record"
|
||||
#print "This is a public record"
|
||||
idx = idx + 1
|
||||
elif fields[idx] == '#apriv':
|
||||
print "This is a private record"
|
||||
#print "This is a private record"
|
||||
idx = idx + 1
|
||||
elif dateRe.match( fields[idx]):
|
||||
if not birth_date:
|
||||
print "Birth Date: %s" % fields[idx]
|
||||
#print "Birth Date: %s" % fields[idx]
|
||||
birth_date = self.parse_date(self.decode(fields[idx]))
|
||||
else:
|
||||
print "Death Date: %s" % fields[idx]
|
||||
#print "Death Date: %s" % fields[idx]
|
||||
death_date = self.parse_date(self.decode(fields[idx]))
|
||||
idx = idx + 1
|
||||
else:
|
||||
@ -611,8 +607,7 @@ class GeneWebParser:
|
||||
return (idx,person)
|
||||
|
||||
def parse_date(self,field):
|
||||
#Alex: this should do the trick
|
||||
date = self.dp.parse(field)
|
||||
date = _dp.parse(field)
|
||||
return date
|
||||
|
||||
def create_event(self,type,desc=None,date=None,place=None,source=None):
|
||||
@ -680,11 +675,10 @@ class GeneWebParser:
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
_mime_type = 'application/x-geneweb'
|
||||
_mime_type = const.app_geneweb
|
||||
_filter = gtk.FileFilter()
|
||||
_filter.set_name(_('GeneWeb files'))
|
||||
_filter.add_mime_type(_mime_type)
|
||||
|
||||
from PluginMgr import register_import
|
||||
|
||||
register_import(importData,_filter,_mime_type,1)
|
||||
|
Reference in New Issue
Block a user