ansel/utf8 encodings

svn: r1258
This commit is contained in:
Don Allingham 2003-01-19 06:25:20 +00:00
parent af7a07d49d
commit a9f8fe034f
15 changed files with 480 additions and 487 deletions

View File

@ -335,16 +335,16 @@ class Calendar:
if month == UNDEF:
retval = str(year)
elif year == UNDEF:
retval = "%02d%s??%s??" % (month+1,sep,sep)
retval = "%02d%s??%s??" % (month,sep,sep)
else:
retval = "%02d%s??%s%04d" % (month+1,sep,sep,year)
retval = "%02d%s??%s%04d" % (month,sep,sep,year)
elif month == UNDEF:
retval = "??%s%02d%s%04d" % (sep,day,sep,year)
else:
if year == UNDEF:
retval = "%02d%s%02d%s????" % (month+1,sep,day,sep)
retval = "%02d%s%02d%s????" % (month,sep,day,sep)
else:
retval = "%02d%s%02d%s%04d" % (month+1,sep,day,sep,year)
retval = "%02d%s%02d%s%04d" % (month,sep,day,sep,year)
return self.fmt_mode(retval,mode)
@ -357,16 +357,16 @@ class Calendar:
if month == UNDEF:
retval = str(year)
elif year == UNDEF:
retval = "????%s%02d%s??" % (sep,month+1,sep)
retval = "????%s%02d%s??" % (sep,month,sep)
else:
retval = "%04d%s%02d" % (year,sep,month+1)
retval = "%04d%s%02d" % (year,sep,month)
elif month == UNDEF:
retval = "%04d%s??%s%02d" % (year,sep,sep,day)
else:
if year == UNDEF:
retval = "????%s%02d%s%02d" % (sep,month+1,sep,day)
retval = "????%s%02d%s%02d" % (sep,month,sep,day)
else:
retval = "%02d%s%02d%s%02d" % (year,sep,month+1,sep,day)
retval = "%02d%s%02d%s%02d" % (year,sep,month,sep,day)
return self.fmt_mode(retval,mode)
@ -379,16 +379,16 @@ class Calendar:
if month == UNDEF:
retval = str(year)
elif year == UNDEF:
retval = "??%s%02d%s??" % (sep,month+1,sep)
retval = "??%s%02d%s??" % (sep,month,sep)
else:
retval = "??%s%02d%s%04d" % (sep,month+1,sep,year)
retval = "??%s%02d%s%04d" % (sep,month,sep,year)
elif month == UNDEF:
retval = "%02d%s??%s%04d" % (day,sep,sep,year)
else:
if year == UNDEF:
retval = "%02d%s%02d%s????" % (day,sep,month+1,sep)
retval = "%02d%s%02d%s????" % (day,sep,month,sep)
else:
retval = "%02d%s%02d%s%04d" % (day,sep,month+1,sep,year)
retval = "%02d%s%02d%s%04d" % (day,sep,month,sep,year)
return self.fmt_mode(retval,mode)
@ -519,6 +519,7 @@ _FMT_FUNC = [
Calendar.format5,
Calendar.format6,
Calendar.format7,
Calendar.format8,
Calendar.format9,
Calendar.format_dd_dot_MON_year,
Calendar.format11,

View File

@ -223,7 +223,7 @@ class Date:
if self.range == 0:
return self.start.getDate()
elif self.range == -1:
return "%s" % self.text
return self.text
else:
return _("from %(start_date)s to %(stop_date)s") % {
'start_date' : self.start.getDate(),

43
src/Errors.py Normal file
View File

@ -0,0 +1,43 @@
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2001 David R. Hampton
#
# 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
#
class ReportError(Exception):
def __init__(self,value):
self.value = value
def __str__(self):
return self.value
class GedcomError(Exception):
def __init__(self,value):
self.value = value
def __str__(self):
return self.value
class PluginError(Exception):
def __init__(self,value):
self.value = value
def __str__(self):
return self.value

View File

@ -215,7 +215,7 @@ class FamilyView:
def remove_spouse(self,obj):
if self.selected_spouse:
name = self.selected_spouse.getPrimaryName().getRegularName()
name = GrampsCfg.nameof(self.selected_spouse)
QuestionDialog(_('Delete Spouse'),
_('Do you wish to remove %s as a spouse?') % name,
self.really_remove_spouse)
@ -285,7 +285,7 @@ class FamilyView:
if not self.person:
return
n = "%s\n\tb. %s\n\td. %s " % (self.person.getPrimaryName().getName(),
n = "%s\n\tb. %s\n\td. %s " % (GrampsCfg.nameof(self.person),
self.person.getBirth().getDate(),
self.person.getDeath().getDate())
self.ap_data.set_text(n,len(n))
@ -325,7 +325,7 @@ class FamilyView:
mdate = " - %s" % f.getMarriage().getDate()
else:
mdate = ""
v = "%s\n\t%s%s" % (sp.getPrimaryName().getName(),
v = "%s\n\t%s%s" % (GrampsCfg.nameof(sp),
f.getRelationship(),mdate)
self.spouse_model.set(iter,0,v)
else:
@ -361,7 +361,7 @@ class FamilyView:
def nameof(self,l,p,mode):
if p:
n = p.getPrimaryName().getName()
n = GrampsCfg.nameof(p)
return _("%s: %s\n\tRelationship: %s") % (l,n,mode)
else:
return _("%s: unknown") % (l)

View File

@ -94,12 +94,12 @@ _name_format_list = [
panellist = [
(_("Database"),
[( _("General"), 1),
( _("Dates and Calendars"), 6),
( _("Media Objects"), 9),
( _("GRAMPS internal IDs"), 10),
( _("Revision Control"),2)]),
(_("Display"),
[( _("General"), 5),
( _("Dates and Calendars"), 6),
( _("Tool and Status Bars"), 4)]),
(_("Usage"),
[( _("Find"), 3),

View File

@ -54,7 +54,7 @@ class DispBox:
self.person = person
self.root = root
self.name = person.getPrimaryName().getName()
self.name = GrampsCfg.nameof(person)
self.exp = "%s\nb. %s\nd. %s" % (self.name,person.getBirth().getDate(),
person.getDeath().getDate())
@ -178,7 +178,7 @@ class PedigreeView:
for t in list:
if t:
for n in [t[0].getPrimaryName().getName(),
for n in [GrampsCfg.nameof(t[0]),
"b. %s" % t[0].getBirth().getDate(),
"d. %s" % t[0].getDeath().getDate()]:
a.set_text(n,len(n))

View File

@ -25,6 +25,7 @@
#-------------------------------------------------------------------------
import string
import os
from xml.parsers.expat import ExpatError
#-------------------------------------------------------------------------
#
@ -55,6 +56,7 @@ except:
#-------------------------------------------------------------------------
def importData(database, filename, callback):
filename = os.path.normpath(filename)
basefile = os.path.dirname(filename)
database.smap = {}
database.pmap = {}
@ -92,7 +94,11 @@ def importData(database, filename, callback):
import traceback
traceback.print_exc()
return 0
except ValueError,msg:
except ExpatError, msg:
ErrorDialog(_("Error reading %s") % filename + "\n" + \
_("The file is probably either corrupt or not a valid GRAMPS database.") + "\n" + str(msg))
return 0
except ValueError, msg:
if str(msg)[0:16] == "Incorrect length":
WarningDialog(_("Your database has encountered an error in the library "
"that compresses the data.\nYour data should be okay, but "

View File

@ -386,11 +386,11 @@ class Place(SourceNote):
if self.main_loc:
return [self.title,self.id,self.main_loc.parish,self.main_loc.city,
self.main_loc.county,self.main_loc.state,self.main_loc.country,
upper(self.title), upper(self.main_loc.parish),
upper(self.main_loc.city), upper(self.main_loc.county),
upper(self.main_loc.state), upper(self.main_loc.country)]
self.title.upper(), self.main_loc.parish.upper(),
self.main_loc.city.upper(), self.main_loc.county.upper(),
self.main_loc.state.upper(), self.main_loc.country.upper()]
else:
return [self.title,self.id,'','','','','',upper(self.title), '','','','','']
return [self.title,self.id,'','','','','',self.title.upper(), '','','','','']
class Researcher(Persistent):
"""Contains the information about the owner of the database"""
@ -983,10 +983,10 @@ class Person(Persistent):
male = 1
female = 0
def __init__(self):
def __init__(self,id=""):
"""creates a new Person instance"""
self.id = ""
self.id = id
self.PrimaryName = None
self.EventList = []
self.FamilyList = []

View File

@ -1,393 +1,279 @@
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2003 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
#
import cStringIO
_s0 = {
0xA1 : u'\x01\x41', 0xA2 : u'\xD8', 0xA3 : u'\x01\x10',
0xA4 : u'\xDE', 0xA5 : u'\xC6', 0xA6 : u'\x01\x52',
0xA7 : u'\x02\xB9', 0xA8 : u'\xB7', 0xA9 : u'\x26\x6D',
0xAA : u'\xAE', 0xAB : u'\xB1', 0xAC : u'\x01\xA0',
0xAD : u'\x01\xAF', 0xAE : u'\x02\xBC', 0xB0 : u'\x02\xBB',
0xB1 : u'\x01\x42', 0xB2 : u'\xF8', 0xB3 : u'\x01\x11',
0xB4 : u'\xFE', 0xB5 : u'\xE6', 0xB6 : u'\x01\x53',
0xB7 : u'\x02\xBA', 0xB8 : u'\x01\x31', 0xB9 : u'\xA3',
0xBA : u'\xF0', 0xBC : u'\x01\xA1', 0xBD : u'\x01\xB0',
0xC0 : u'\xB0', 0xC1 : u'\x21\x13', 0xC2 : u'\x21\x17',
0xC3 : u'\xA9', 0xC4 : u'\x26\x6F', 0xC5 : u'\xBF',
0xC6 : u'\xA1', 0xCF : u'\xDF', 0xE1 : u'\x03\x00',
0xE2 : u'\x03\x01', 0xE3 : u'\x03\x02', 0xE4 : u'\x03\x03',
0xE5 : u'\x03\x04', 0xE6 : u'\x03\x06', 0xE7 : u'\x03\x07',
0xE8 : u'\x03\x08', 0xE9 : u'\x03\x0C', 0xEA : u'\x03\x0A',
0xEB : u'\xFE\x20', 0xEC : u'\xFE\x21', 0xED : u'\x03\x15',
0xEE : u'\x03\x0B', 0xEF : u'\x03\x10', 0xF0 : u'\x03\x27',
0xF1 : u'\x03\x28', 0xF2 : u'\x03\x23', 0xF3 : u'\x03\x24',
0xF4 : u'\x03\x25', 0xF5 : u'\x03\x33', 0xF6 : u'\x03\x32',
0xF7 : u'\x03\x26', 0xF8 : u'\x03\x21', 0xF9 : u'\x03\x2E',
0xFA : u'\xFE\x22', 0xFB : u'\xFE\x23', 0xE0 : u'\x03\x09',
}
_onebyte = {
'\x8D' : u'\x20\x0D', '\x8E' : u'\x20\x0C', '\xA1' : u'\x01\x41',
'\xA2' : u'\xD8', '\xA3' : u'\xD0', '\xA4' : u'\xDE',
'\xA5' : u'\xC6', '\xA6' : u'\x01\x52', '\xA7' : u'\x02\xB9',
'\xA8' : u'\xB7', '\xA9' : u'\x26\x6D', '\xAA' : u'\xAE',
'\xAB' : u'\xB1', '\xAC' : u'\x01\xA0', '\xAD' : u'\x01\xAF',
'\xAE' : u'\x02\xBE', '\xB0' : u'\x02\xBF', '\xB1' : u'\x01\x42',
'\xB2' : u'\xF8', '\xB3' : u'\x01\x11', '\xB4' : u'\xFE',
'\xB5' : u'\xE6', '\xB6' : u'\x01\x53', '\xB7' : u'\x02\xBA',
'\xB8' : u'\x01\x31', '\xB9' : u'\xA3', '\xBA' : u'\xF0',
'\xBC' : u'\x01\xA1', '\xBD' : u'\x01\xB0', '\xC0' : u'\xB0',
'\xC1' : u'\x21\x13', '\xC2' : u'\x21\x17', '\xC3' : u'\xA9',
'\xC4' : u'\x26\x6F', '\xC5' : u'\xBF', '\xC6' : u'\xA1',
'\xCF' : u'\xDF', '\xE0' : u'\x03\x09', '\xE1' : u'\x03',
'\xE2' : u'\x03\x01', '\xE3' : u'\x03\x02', '\xE4' : u'\x03\x03',
'\xE5' : u'\x03\x04', '\xE6' : u'\x03\x06', '\xE7' : u'\x03\x07',
'\xE9' : u'\x03\x0C', '\xEA' : u'\x03\x0A', '\xEB' : u'\xFE\x20',
'\xEC' : u'\xFE\x21', '\xED' : u'\x03\x15', '\xEE' : u'\x03\x0B',
'\xEF' : u'\x03\x10', '\xF0' : u'\x03\x27', '\xF1' : u'\x03\x28',
'\xF2' : u'\x03\x23', '\xF3' : u'\x03\x24', '\xF4' : u'\x03\x25',
'\xF5' : u'\x03\x33', '\xF6' : u'\x03\x32', '\xF7' : u'\x03\x26',
'\xF8' : u'\x03\x1C', '\xF9' : u'\x03\x2E', '\xFA' : u'\xFE\x22',
'\xFB' : u'\xFE\x23', '\xFE' : u'\x03\x13',
}
_e0 = {
0x41 : u'\x1E\xA2', 0x45 : u'\x1E\xBA', 0x49 : u'\x1E\xC8',
0x4F : u'\x1E\xCE', 0x55 : u'\x1E\xE6', 0x59 : u'\x1E\xF6',
0x61 : u'\x1E\xA3', 0x65 : u'\x1E\xBB', 0x69 : u'\x1E\xC9',
0x6F : u'\x1E\xCF', 0x75 : u'\x1E\xE7', 0x79 : u'\x1E\xF7',
}
_twobyte = {
'\xE0\x41' : u'\x1E\xA2', '\xE0\x45' : u'\x1E\xBA', '\xE0\x49' : u'\x1E\xC8',
'\xE0\x4F' : u'\x1E\xCE', '\xE0\x55' : u'\x1E\xE6', '\xE0\x59' : u'\x1E\xF6',
'\xE0\x61' : u'\x1E\xA3', '\xE0\x65' : u'\x1E\xBB', '\xE0\x69' : u'\x1E\xC9',
'\xE0\x6F' : u'\x1E\xCF', '\xE0\x75' : u'\x1E\xE7', '\xE0\x79' : u'\x1E\xF7',
'\xE1\x41' : u'\xC0', '\xE1\x45' : u'\xC8', '\xE1\x49' : u'\xCC',
'\xE1\x4F' : u'\xD2', '\xE1\x55' : u'\xD9', '\xE1\x57' : u'\x1E\x80',
'\xE1\x59' : u'\x1E\xF2', '\xE1\x61' : u'\xE0', '\xE1\x65' : u'\xE8',
'\xE1\x69' : u'\xEC', '\xE1\x6F' : u'\xF2', '\xE1\x75' : u'\xF9',
'\xE1\x77' : u'\x1E\x81', '\xE1\x79' : u'\x1E\xF3', '\xE2\x41' : u'\xC1',
'\xE2\x43' : u'\x01\x06', '\xE2\x45' : u'\xC9', '\xE2\x47' : u'\x01\xF4',
'\xE2\x49' : u'\xCD', '\xE2\x4B' : u'\x1E\x30', '\xE2\x4C' : u'\x01\x39',
'\xE2\x4D' : u'\x1E\x3E', '\xE2\x4E' : u'\x01\x43', '\xE2\x4F' : u'\xD3',
'\xE2\x50' : u'\x1E\x54', '\xE2\x52' : u'\x01\x54', '\xE2\x53' : u'\x01\x5A',
'\xE2\x55' : u'\xDA', '\xE2\x57' : u'\x1E\x82', '\xE2\x59' : u'\xDD',
'\xE2\x5A' : u'\x01\x79', '\xE2\x61' : u'\xE1', '\xE2\x63' : u'\x01\x07',
'\xE2\x65' : u'\xE9', '\xE2\x67' : u'\x01\xF5', '\xE2\x69' : u'\xED',
'\xE2\x6B' : u'\x1E\x31', '\xE2\x6C' : u'\x01\x3A', '\xE2\x6D' : u'\x1E\x3F',
'\xE2\x6E' : u'\x01\x44', '\xE2\x6F' : u'\xF3', '\xE2\x70' : u'\x1E\x55',
'\xE2\x72' : u'\x01\x55', '\xE2\x73' : u'\x01\x5B', '\xE2\x75' : u'\xFA',
'\xE2\x77' : u'\x1E\x83', '\xE2\x79' : u'\xFD', '\xE2\x7A' : u'\x01\x7A',
'\xE2\xA5' : u'\x01\xFC', '\xE2\xB5' : u'\x01\xFD', '\xE3\x41' : u'\xC2',
'\xE3\x43' : u'\x01\x08', '\xE3\x45' : u'\xCA', '\xE3\x47' : u'\x01\x1C',
'\xE3\x48' : u'\x01\x24', '\xE3\x49' : u'\xCE', '\xE3\x4A' : u'\x01\x34',
'\xE3\x4F' : u'\xD4', '\xE3\x53' : u'\x01\x5C', '\xE3\x55' : u'\xDB',
'\xE3\x57' : u'\x01\x74', '\xE3\x59' : u'\x01\x76', '\xE3\x5A' : u'\x1E\x90',
'\xE3\x61' : u'\xE2', '\xE3\x63' : u'\x01\x09', '\xE3\x65' : u'\xEA',
'\xE3\x67' : u'\x01\x1D', '\xE3\x68' : u'\x01\x25', '\xE3\x69' : u'\xEE',
'\xE3\x6A' : u'\x01\x35', '\xE3\x6F' : u'\xF4', '\xE3\x73' : u'\x01\x5D',
'\xE3\x75' : u'\xFB', '\xE3\x77' : u'\x01\x75', '\xE3\x79' : u'\x01\x77',
'\xE3\x7A' : u'\x1E\x91', '\xE4\x41' : u'\xC3', '\xE4\x45' : u'\x1E\xBC',
'\xE4\x49' : u'\x01\x28', '\xE4\x4E' : u'\xD1', '\xE4\x4F' : u'\xD5',
'\xE4\x55' : u'\x01\x68', '\xE4\x56' : u'\x1E\x7C', '\xE4\x59' : u'\x1E\xF8',
'\xE4\x61' : u'\xE3', '\xE4\x65' : u'\x1E\xBD', '\xE4\x69' : u'\x01\x29',
'\xE4\x6E' : u'\xF1', '\xE4\x6F' : u'\xF5', '\xE4\x75' : u'\x01\x69',
'\xE4\x76' : u'\x1E\x7D', '\xE4\x79' : u'\x1E\xF9', '\xE5\x41' : u'\x01',
'\xE5\x45' : u'\x01\x12', '\xE5\x47' : u'\x1E\x20', '\xE5\x49' : u'\x01\x2A',
'\xE5\x4F' : u'\x01\x4C', '\xE5\x55' : u'\x01\x6A', '\xE5\x61' : u'\x01\x01',
'\xE5\x65' : u'\x01\x13', '\xE5\x67' : u'\x1E\x21', '\xE5\x69' : u'\x01\x2B',
'\xE5\x6F' : u'\x01\x4D', '\xE5\x75' : u'\x01\x6B', '\xE5\xA5' : u'\x01\xE2',
'\xE5\xB5' : u'\x01\xE3', '\xE6\x41' : u'\x01\x02', '\xE6\x45' : u'\x01\x14',
'\xE6\x47' : u'\x01\x1E', '\xE6\x49' : u'\x01\x2C', '\xE6\x4F' : u'\x01\x4E',
'\xE6\x55' : u'\x01\x6C', '\xE6\x61' : u'\x01\x03', '\xE6\x65' : u'\x01\x15',
'\xE6\x67' : u'\x01\x1F', '\xE6\x69' : u'\x01\x2D', '\xE6\x6F' : u'\x01\x4F',
'\xE6\x75' : u'\x01\x6D', '\xE7\x42' : u'\x1E\x02', '\xE7\x43' : u'\x01\x0A',
'\xE7\x44' : u'\x1E\x0A', '\xE7\x45' : u'\x01\x16', '\xE7\x46' : u'\x1E\x1E',
'\xE7\x47' : u'\x01\x20', '\xE7\x48' : u'\x1E\x22', '\xE7\x49' : u'\x01\x30',
'\xE7\x4D' : u'\x1E\x40', '\xE7\x4E' : u'\x1E\x44', '\xE7\x50' : u'\x1E\x56',
'\xE7\x52' : u'\x1E\x58', '\xE7\x53' : u'\x1E\x60', '\xE7\x54' : u'\x1E\x6A',
'\xE7\x57' : u'\x1E\x86', '\xE7\x58' : u'\x1E\x8A', '\xE7\x59' : u'\x1E\x8E',
'\xE7\x5A' : u'\x01\x7B', '\xE7\x62' : u'\x1E\x03', '\xE7\x63' : u'\x01\x0B',
'\xE7\x64' : u'\x1E\x0B', '\xE7\x65' : u'\x01\x17', '\xE7\x66' : u'\x1E\x1F',
'\xE7\x67' : u'\x01\x21', '\xE7\x68' : u'\x1E\x23', '\xE7\x6D' : u'\x1E\x41',
'\xE7\x6E' : u'\x1E\x45', '\xE7\x70' : u'\x1E\x57', '\xE7\x72' : u'\x1E\x59',
'\xE7\x73' : u'\x1E\x61', '\xE7\x74' : u'\x1E\x6B', '\xE7\x77' : u'\x1E\x87',
'\xE7\x78' : u'\x1E\x8B', '\xE7\x79' : u'\x1E\x8F', '\xE7\x7A' : u'\x01\x7C',
'\xE8\x41' : u'\xC4', '\xE8\x45' : u'\xCB', '\xE8\x48' : u'\x1E\x26',
'\xE8\x49' : u'\xCF', '\xE8\x4F' : u'\xD6', '\xE8\x55' : u'\xDC',
'\xE8\x57' : u'\x1E\x84', '\xE8\x58' : u'\x1E\x8C', '\xE8\x59' : u'\x01\x78',
'\xE8\x61' : u'\xE4', '\xE8\x65' : u'\xEB', '\xE8\x68' : u'\x1E\x27',
'\xE8\x69' : u'\xEF', '\xE8\x6F' : u'\xF6', '\xE8\x74' : u'\x1E\x97',
'\xE8\x75' : u'\xFC', '\xE8\x77' : u'\x1E\x85', '\xE8\x78' : u'\x1E\x8D',
'\xE8\x79' : u'\xFF', '\xE9\x41' : u'\x01\xCD', '\xE9\x43' : u'\x01\x0C',
'\xE9\x44' : u'\x01\x0E', '\xE9\x45' : u'\x01\x1A', '\xE9\x47' : u'\x01\xE6',
'\xE9\x49' : u'\x01\xCF', '\xE9\x4B' : u'\x01\xE8', '\xE9\x4C' : u'\x01\x3D',
'\xE9\x4E' : u'\x01\x47', '\xE9\x4F' : u'\x01\xD1', '\xE9\x52' : u'\x01\x58',
'\xE9\x53' : u'\x01\x60', '\xE9\x54' : u'\x01\x64', '\xE9\x55' : u'\x01\xD3',
'\xE9\x5A' : u'\x01\x7D', '\xE9\x61' : u'\x01\xCE', '\xE9\x63' : u'\x01\x0D',
'\xE9\x64' : u'\x01\x0F', '\xE9\x65' : u'\x01\x1B', '\xE9\x67' : u'\x01\xE7',
'\xE9\x69' : u'\x01\xD0', '\xE9\x6A' : u'\x01\xF0', '\xE9\x6B' : u'\x01\xE9',
'\xE9\x6C' : u'\x01\x3E', '\xE9\x6E' : u'\x01\x48', '\xE9\x6F' : u'\x01\xD2',
'\xE9\x72' : u'\x01\x59', '\xE9\x73' : u'\x01\x61', '\xE9\x74' : u'\x01\x65',
'\xE9\x75' : u'\x01\xD4', '\xE9\x7A' : u'\x01\x7E', '\xEA\x41' : u'\xC5',
'\xEA\x61' : u'\xE5', '\xEA\x75' : u'\x01\x6F', '\xEA\x77' : u'\x1E\x98',
'\xEA\x79' : u'\x1E\x99', '\xEA\xAD' : u'\x01\x6E', '\xEE\x4F' : u'\x01\x50',
'\xEE\x55' : u'\x01\x70', '\xEE\x6F' : u'\x01\x51', '\xEE\x75' : u'\x01\x71',
'\xF0\x20' : u'\xB8', '\xF0\x43' : u'\xC7', '\xF0\x44' : u'\x1E\x10',
'\xF0\x47' : u'\x01\x22', '\xF0\x48' : u'\x1E\x28', '\xF0\x4B' : u'\x01\x36',
'\xF0\x4C' : u'\x01\x3B', '\xF0\x4E' : u'\x01\x45', '\xF0\x52' : u'\x01\x56',
'\xF0\x53' : u'\x01\x5E', '\xF0\x54' : u'\x01\x62', '\xF0\x63' : u'\xE7',
'\xF0\x64' : u'\x1E\x11', '\xF0\x67' : u'\x01\x23', '\xF0\x68' : u'\x1E\x29',
'\xF0\x6B' : u'\x01\x37', '\xF0\x6C' : u'\x01\x3C', '\xF0\x6E' : u'\x01\x46',
'\xF0\x72' : u'\x01\x57', '\xF0\x73' : u'\x01\x5F', '\xF0\x74' : u'\x01\x63',
'\xF1\x41' : u'\x01\x04', '\xF1\x45' : u'\x01\x18', '\xF1\x49' : u'\x01\x2E',
'\xF1\x4F' : u'\x01\xEA', '\xF1\x55' : u'\x01\x72', '\xF1\x61' : u'\x01\x05',
'\xF1\x65' : u'\x01\x19', '\xF1\x69' : u'\x01\x2F', '\xF1\x6F' : u'\x01\xEB',
'\xF1\x75' : u'\x01\x73', '\xF2\x41' : u'\x1E\xA0', '\xF2\x42' : u'\x1E\x04',
'\xF2\x44' : u'\x1E\x0C', '\xF2\x45' : u'\x1E\xB8', '\xF2\x48' : u'\x1E\x24',
'\xF2\x49' : u'\x1E\xCA', '\xF2\x4B' : u'\x1E\x32', '\xF2\x4C' : u'\x1E\x36',
'\xF2\x4D' : u'\x1E\x42', '\xF2\x4E' : u'\x1E\x46', '\xF2\x4F' : u'\x1E\xCC',
'\xF2\x52' : u'\x1E\x5A', '\xF2\x53' : u'\x1E\x62', '\xF2\x54' : u'\x1E\x6C',
'\xF2\x55' : u'\x1E\xE4', '\xF2\x56' : u'\x1E\x7E', '\xF2\x57' : u'\x1E\x88',
'\xF2\x59' : u'\x1E\xF4', '\xF2\x5A' : u'\x1E\x92', '\xF2\x61' : u'\x1E\xA1',
'\xF2\x62' : u'\x1E\x05', '\xF2\x64' : u'\x1E\x0D', '\xF2\x65' : u'\x1E\xB9',
'\xF2\x68' : u'\x1E\x25', '\xF2\x69' : u'\x1E\xCB', '\xF2\x6B' : u'\x1E\x33',
'\xF2\x6C' : u'\x1E\x37', '\xF2\x6D' : u'\x1E\x43', '\xF2\x6E' : u'\x1E\x47',
'\xF2\x6F' : u'\x1E\xCD', '\xF2\x72' : u'\x1E\x5B', '\xF2\x73' : u'\x1E\x63',
'\xF2\x74' : u'\x1E\x6D', '\xF2\x75' : u'\x1E\xE5', '\xF2\x76' : u'\x1E\x7F',
'\xF2\x77' : u'\x1E\x89', '\xF2\x79' : u'\x1E\xF5', '\xF2\x7A' : u'\x1E\x93',
'\xF3\x55' : u'\x1E\x72', '\xF3\x75' : u'\x1E\x73', '\xF4\x41' : u'\x1E',
'\xF4\x61' : u'\x1E\x01', '\xF9\x48' : u'\x1E\x2A', '\xF9\x68' : u'\x1E\x2B',
}
_e0e3 = {
0x41 : u'\x1E\xA8', 0x45 : u'\x1E\xC2', 0x4F : u'\x1E\xD4',
0x61 : u'\x1E\xA9', 0x65 : u'\x1E\xC3', 0x6F : u'\x1E\xD5',
}
_e0e6 = {
0x41 : u'\x1E\xB2', 0x61 : u'\x1E\xB3',
}
_e1 = {
0x41 : u'\xC0', 0x45 : u'\xC8', 0x49 : u'\xCC',
0x4F : u'\xD2', 0x55 : u'\xD9', 0x57 : u'\x1E\x80',
0x59 : u'\x1E\xF2', 0x61 : u'\xE0', 0x65 : u'\xE8',
0x69 : u'\xEC', 0x6F : u'\xF2', 0x75 : u'\xF9',
0x77 : u'\x1E\x81', 0x79 : u'\x1E\xF3',
}
_e1e3 = {
0x41 : u'\x1E\xA6', 0x45 : u'\x1E\xC0', 0x4F : u'\x1E\xD2',
0x61 : u'\x1E\xA7', 0x65 : u'\x1E\xC1', 0x6F : u'\x1E\xD3',
}
_e1e5 = {
0x45 : u'\x1E\x14', 0x4F : u'\x1E\x50', 0x65 : u'\x1E\x15',
0x6F : u'\x1E\x51',
}
_e1e6 = {
0x41 : u'\x1E\xB0', 0x61 : u'\x1E\xB1',
}
_e1e8 = {
0x55 : u'\x01\xDB', 0x75 : u'\x01\xDC',
}
_e2 = {
0x41 : u'\xC1', 0x43 : u'\x01\x06', 0x45 : u'\xC9',
0x47 : u'\x01\xF4', 0x49 : u'\xCD', 0x4B : u'\x1E\x30',
0x4C : u'\x01\x39', 0x4D : u'\x1E\x3E', 0x4E : u'\x01\x43',
0x4F : u'\xD3', 0x50 : u'\x1E\x54', 0x52 : u'\x01\x54',
0x53 : u'\x01\x5A', 0x55 : u'\xDA', 0x57 : u'\x1E\x82',
0x59 : u'\xDD', 0x5A : u'\x01\x79', 0x61 : u'\xE1',
0x63 : u'\x01\x07', 0x65 : u'\xE9', 0x67 : u'\x01\xF5',
0x69 : u'\xED', 0x6B : u'\x1E\x31', 0x6C : u'\x01\x3A',
0x6D : u'\x1E\x3F', 0x6E : u'\x01\x44', 0x6F : u'\xF3',
0x70 : u'\x1E\x55', 0x72 : u'\x01\x55', 0x73 : u'\x01\x5B',
0x75 : u'\xFA', 0x77 : u'\x1E\x83', 0x79 : u'\xFD',
0x7A : u'\x01\x7A', 0xA5 : u'\x01\xFC', 0xB5 : u'\x01\xFD',
}
_e2e3 = {
0x41 : u'\x1E\xA4', 0x45 : u'\x1E\xBE', 0x4F : u'\x1E\xD0',
0x61 : u'\x1E\xA5', 0x65 : u'\x1E\xBF', 0x6F : u'\x1E\xD1',
}
_e2e4 = {
0x4F : u'\x1E\x4C', 0x55 : u'\x1E\x78', 0x6F : u'\x1E\x4D',
0x75 : u'\x1E\x79',
}
_e2e5 = {
0x45 : u'\x1E\x16', 0x4F : u'\x1E\x52', 0x65 : u'\x1E\x17',
0x6F : u'\x1E\x53',
}
_e2e6 = {
0x41 : u'\x1E\xAE', 0x61 : u'\x1E\xAF',
}
_e2e7 = {
0x53 : u'\x1E\x64', 0x73 : u'\x1E\x65',
}
_e2e8 = {
0x49 : u'\x1E\x2E', 0x55 : u'\x01\xD7', 0x69 : u'\x1E\x2F',
0x75 : u'\x01\xD8',
}
_e2ea = {
0x41 : u'\x01\xFA', 0x61 : u'\x01\xFB',
}
_e2f0 = {
0x43 : u'\x1E\x08', 0x63 : u'\x1E\x09',
}
_e3 = {
0x41 : u'\xC2', 0x43 : u'\x01\x08', 0x45 : u'\xCA',
0x47 : u'\x01\x1C', 0x48 : u'\x01\x24', 0x49 : u'\xCE',
0x4A : u'\x01\x34', 0x4F : u'\xD4', 0x53 : u'\x01\x5C',
0x55 : u'\xDB', 0x57 : u'\x01\x74', 0x59 : u'\x01\x76',
0x5A : u'\x1E\x90', 0x61 : u'\xE2', 0x63 : u'\x01\x09',
0x65 : u'\xEA', 0x67 : u'\x01\x1D', 0x68 : u'\x01\x25',
0x69 : u'\xEE', 0x6A : u'\x01\x35', 0x6F : u'\xF4',
0x73 : u'\x01\x5D', 0x75 : u'\xFB', 0x77 : u'\x01\x75',
0x79 : u'\x01\x77', 0x7A : u'\x1E\x91',
}
_e3e0 = {
0x41 : u'\x1E\xA8', 0x45 : u'\x1E\xC2', 0x4F : u'\x1E\xD4',
0x61 : u'\x1E\xA9', 0x65 : u'\x1E\xC3', 0x6F : u'\x1E\xD5',
}
_e3e1 = {
0x41 : u'\x1E\xA6', 0x45 : u'\x1E\xC0', 0x4F : u'\x1E\xD2',
0x61 : u'\x1E\xA7', 0x65 : u'\x1E\xC1', 0x6F : u'\x1E\xD3',
}
_e3e2 = {
0x41 : u'\x1E\xA4', 0x45 : u'\x1E\xBE', 0x4F : u'\x1E\xD0',
0x61 : u'\x1E\xA5', 0x65 : u'\x1E\xBF', 0x6F : u'\x1E\xD1',
}
_e3e4 = {
0x41 : u'\x1E\xAA', 0x45 : u'\x1E\xC4', 0x4F : u'\x1E\xD6',
0x61 : u'\x1E\xAB', 0x65 : u'\x1E\xC5', 0x6F : u'\x1E\xD7',
}
_e3f2 = {
0x41 : u'\x1E\xAC', 0x45 : u'\x1E\xC6', 0x4F : u'\x1E\xD8',
0x61 : u'\x1E\xAD', 0x65 : u'\x1E\xC7', 0x6F : u'\x1E\xD9',
}
_e4 = {
0x41 : u'\xC3', 0x45 : u'\x1E\xBC', 0x49 : u'\x01\x28',
0x4E : u'\xD1', 0x4F : u'\xD5', 0x55 : u'\x01\x68',
0x56 : u'\x1E\x7C', 0x59 : u'\x1E\xF8', 0x61 : u'\xE3',
0x65 : u'\x1E\xBD', 0x69 : u'\x01\x29', 0x6E : u'\xF1',
0x6F : u'\xF5', 0x75 : u'\x01\x69', 0x76 : u'\x1E\x7D',
0x79 : u'\x1E\xF9',
}
_e4e2 = {
0x4F : u'\x1E\x4C', 0x55 : u'\x1E\x78', 0x6F : u'\x1E\x4D',
0x75 : u'\x1E\x79',
}
_e4e3 = {
0x41 : u'\x1E\xAA', 0x45 : u'\x1E\xC4', 0x4F : u'\x1E\xD6',
0x61 : u'\x1E\xAB', 0x65 : u'\x1E\xC5', 0x6F : u'\x1E\xD7',
}
_e4e6 = {
0x41 : u'\x1E\xB4', 0x61 : u'\x1E\xB5',
}
_e4e8 = {
0x4F : u'\x1E\x4E', 0x6F : u'\x1E\x4F',
}
_e5 = {
0x41 : u'\x01\x00', 0x45 : u'\x01\x12', 0x47 : u'\x1E\x20',
0x49 : u'\x01\x2A', 0x4F : u'\x01\x4C', 0x55 : u'\x01\x6A',
0x61 : u'\x01\x01', 0x65 : u'\x01\x13', 0x67 : u'\x1E\x21',
0x69 : u'\x01\x2B', 0x6F : u'\x01\x4D', 0x75 : u'\x01\x6B',
0xA5 : u'\x01\xE2', 0xB5 : u'\x01\xE3',
}
_e5e1 = {
0x45 : u'\x1E\x14', 0x4F : u'\x1E\x50', 0x65 : u'\x1E\x15',
0x6F : u'\x1E\x51',
}
_e5e2 = {
0x45 : u'\x1E\x16', 0x4F : u'\x1E\x52', 0x65 : u'\x1E\x17',
0x6F : u'\x1E\x53',
}
_e5e7 = {
0x41 : u'\x01\xE0', 0x61 : u'\x01\xE1',
}
_e5e8 = {
0x41 : u'\x01\xDE', 0x55 : u'\x1E\x7A', 0x61 : u'\x01\xDF',
0x75 : u'\x1E\x7B',
}
_e5f1 = {
0x4F : u'\x01\xEC', 0x6F : u'\x01\xED',
}
_e5f2 = {
0x4C : u'\x1E\x38', 0x52 : u'\x1E\x5C', 0x6C : u'\x1E\x39',
0x72 : u'\x1E\x5D',
}
_e6 = {
0x41 : u'\x01\x02', 0x45 : u'\x01\x14', 0x47 : u'\x01\x1E',
0x49 : u'\x01\x2C', 0x4F : u'\x01\x4E', 0x55 : u'\x01\x6C',
0x61 : u'\x01\x03', 0x65 : u'\x01\x15', 0x67 : u'\x01\x1F',
0x69 : u'\x01\x2D', 0x6F : u'\x01\x4F', 0x75 : u'\x01\x6D',
}
_e6e0 = {
0x41 : u'\x1E\xB2', 0x61 : u'\x1E\xB3',
}
_e6e1 = {
0x41 : u'\x1E\xB0', 0x61 : u'\x1E\xB1',
}
_e6e2 = {
0x41 : u'\x1E\xAE', 0x61 : u'\x1E\xAF',
}
_e6e4 = {
0x41 : u'\x1E\xB4', 0x61 : u'\x1E\xB5',
}
_e6f0 = {
0x45 : u'\x1E\x1C', 0x65 : u'\x1E\x1D',
}
_e6f2 = {
0x41 : u'\x1E\xB6', 0x61 : u'\x1E\xB7',
}
_e7 = {
0x42 : u'\x1E\x02', 0x43 : u'\x01\x0A', 0x44 : u'\x1E\x0A',
0x45 : u'\x01\x16', 0x46 : u'\x1E\x1E', 0x47 : u'\x01\x20',
0x48 : u'\x1E\x22', 0x49 : u'\x01\x30', 0x4D : u'\x1E\x40',
0x4E : u'\x1E\x44', 0x50 : u'\x1E\x56', 0x52 : u'\x1E\x58',
0x53 : u'\x1E\x60', 0x54 : u'\x1E\x6A', 0x57 : u'\x1E\x86',
0x58 : u'\x1E\x8A', 0x59 : u'\x1E\x8E', 0x5A : u'\x01\x7B',
0x62 : u'\x1E\x03', 0x63 : u'\x01\x0B', 0x64 : u'\x1E\x0B',
0x65 : u'\x01\x17', 0x66 : u'\x1E\x1F', 0x67 : u'\x01\x21',
0x68 : u'\x1E\x23', 0x6D : u'\x1E\x41', 0x6E : u'\x1E\x45',
0x70 : u'\x1E\x57', 0x72 : u'\x1E\x59', 0x73 : u'\x1E\x61',
0x74 : u'\x1E\x6B', 0x77 : u'\x1E\x87', 0x78 : u'\x1E\x8B',
0x79 : u'\x1E\x8F', 0x7A : u'\x01\x7C',
}
_e7e2 = {
0x53 : u'\x1E\x64', 0x73 : u'\x1E\x65',
}
_e7e5 = {
0x41 : u'\x01\xE0', 0x61 : u'\x01\xE1',
}
_e7e9 = {
0x53 : u'\x1E\x66', 0x73 : u'\x1E\x67',
}
_e7f2 = {
0x53 : u'\x1E\x68', 0x73 : u'\x1E\x69',
}
_e8 = {
0x41 : u'\xC4', 0x45 : u'\xCB', 0x48 : u'\x1E\x26',
0x49 : u'\xCF', 0x4F : u'\xD6', 0x55 : u'\xDC',
0x57 : u'\x1E\x84', 0x58 : u'\x1E\x8C', 0x59 : u'\x01\x78',
0x61 : u'\xE4', 0x65 : u'\xEB', 0x68 : u'\x1E\x27',
0x69 : u'\xEF', 0x6F : u'\xF6', 0x74 : u'\x1E\x97',
0x75 : u'\xFC', 0x77 : u'\x1E\x85', 0x78 : u'\x1E\x8D',
0x79 : u'\xFF',
}
_e8e1 = {
0x55 : u'\x01\xDB', 0x75 : u'\x01\xDC',
}
_e8e2 = {
0x49 : u'\x1E\x2E', 0x55 : u'\x01\xD7', 0x69 : u'\x1E\x2F',
0x75 : u'\x01\xD8',
}
_e8e4 = {
0x4F : u'\x1E\x4E', 0x6F : u'\x1E\x4F',
}
_e8e5 = {
0x41 : u'\x01\xDE', 0x55 : u'\x1E\x7A', 0x61 : u'\x01\xDF',
0x75 : u'\x1E\x7B',
}
_e8e9 = {
0x55 : u'\x01\xD9', 0x75 : u'\x01\xDA',
}
_e9 = {
0x41 : u'\x01\xCD', 0x43 : u'\x01\x0C', 0x44 : u'\x01\x0E',
0x45 : u'\x01\x1A', 0x47 : u'\x01\xE6', 0x49 : u'\x01\xCF',
0x4B : u'\x01\xE8', 0x4C : u'\x01\x3D', 0x4E : u'\x01\x47',
0x4F : u'\x01\xD1', 0x52 : u'\x01\x58', 0x53 : u'\x01\x60',
0x54 : u'\x01\x64', 0x55 : u'\x01\xD3', 0x5A : u'\x01\x7D',
0x61 : u'\x01\xCE', 0x63 : u'\x01\x0D', 0x64 : u'\x01\x0F',
0x65 : u'\x01\x1B', 0x67 : u'\x01\xE7', 0x69 : u'\x01\xD0',
0x6A : u'\x01\xF0', 0x6B : u'\x01\xE9', 0x6C : u'\x01\x3E',
0x6E : u'\x01\x48', 0x6F : u'\x01\xD2', 0x72 : u'\x01\x59',
0x73 : u'\x01\x61', 0x74 : u'\x01\x65', 0x75 : u'\x01\xD4',
0x7A : u'\x01\x7E',
}
_e9e7 = {
0x53 : u'\x1E\x66', 0x73 : u'\x1E\x67',
}
_e9e8 = {
0x55 : u'\x01\xD9', 0x75 : u'\x01\xDA',
}
_ea = {
0x41 : u'\xC5', 0x55 : u'\x01\x6E', 0x61 : u'\xE5',
0x75 : u'\x01\x6F', 0x77 : u'\x1E\x98', 0x79 : u'\x1E\x99',
}
_eae2 = {
0x41 : u'\x01\xFA', 0x61 : u'\x01\xFB',
}
_ee = {
0x4F : u'\x01\x50', 0x55 : u'\x01\x70', 0x6F : u'\x01\x51',
0x75 : u'\x01\x71',
}
_f0 = {
0x43 : u'\xC7', 0x44 : u'\x1E\x10', 0x47 : u'\x01\x22',
0x48 : u'\x1E\x28', 0x4B : u'\x01\x36', 0x4C : u'\x01\x3B',
0x4E : u'\x01\x45', 0x52 : u'\x01\x56', 0x53 : u'\x01\x5E',
0x54 : u'\x01\x62', 0x63 : u'\xE7', 0x64 : u'\x1E\x11',
0x67 : u'\x01\x23', 0x68 : u'\x1E\x29', 0x6B : u'\x01\x37',
0x6C : u'\x01\x3C', 0x6E : u'\x01\x46', 0x72 : u'\x01\x57',
0x73 : u'\x01\x5F', 0x74 : u'\x01\x63',
}
_f0e2 = {
0x43 : u'\x1E\x08', 0x63 : u'\x1E\x09',
}
_f0e6 = {
0x45 : u'\x1E\x1C', 0x65 : u'\x1E\x1D',
}
_f1 = {
0x41 : u'\x01\x04', 0x45 : u'\x01\x18', 0x49 : u'\x01\x2E',
0x4F : u'\x01\xEA', 0x55 : u'\x01\x72', 0x61 : u'\x01\x05',
0x65 : u'\x01\x19', 0x69 : u'\x01\x2F', 0x6F : u'\x01\xEB',
0x75 : u'\x01\x73',
}
_f1e5 = {
0x4F : u'\x01\xEC', 0x6F : u'\x01\xED',
}
_f2 = {
0x41 : u'\x1E\xA0', 0x42 : u'\x1E\x04', 0x44 : u'\x1E\x0C',
0x45 : u'\x1E\xB8', 0x48 : u'\x1E\x24', 0x49 : u'\x1E\xCA',
0x4B : u'\x1E\x32', 0x4C : u'\x1E\x36', 0x4D : u'\x1E\x42',
0x4E : u'\x1E\x46', 0x4F : u'\x1E\xCC', 0x52 : u'\x1E\x5A',
0x53 : u'\x1E\x62', 0x54 : u'\x1E\x6C', 0x55 : u'\x1E\xE4',
0x56 : u'\x1E\x7E', 0x57 : u'\x1E\x88', 0x59 : u'\x1E\xF4',
0x5A : u'\x1E\x92', 0x61 : u'\x1E\xA1', 0x62 : u'\x1E\x05',
0x64 : u'\x1E\x0D', 0x65 : u'\x1E\xB9', 0x68 : u'\x1E\x25',
0x69 : u'\x1E\xCB', 0x6B : u'\x1E\x33', 0x6C : u'\x1E\x37',
0x6D : u'\x1E\x43', 0x6E : u'\x1E\x47', 0x6F : u'\x1E\xCD',
0x72 : u'\x1E\x5B', 0x73 : u'\x1E\x63', 0x74 : u'\x1E\x6D',
0x75 : u'\x1E\xE5', 0x76 : u'\x1E\x7F', 0x77 : u'\x1E\x89',
0x79 : u'\x1E\xF5', 0x7A : u'\x1E\x93',
}
_f2e3 = {
0x41 : u'\x1E\xAC', 0x45 : u'\x1E\xC6', 0x4F : u'\x1E\xD8',
0x61 : u'\x1E\xAD', 0x65 : u'\x1E\xC7', 0x6F : u'\x1E\xD9',
}
_f2e5 = {
0x4C : u'\x1E\x38', 0x52 : u'\x1E\x5C', 0x6C : u'\x1E\x39',
0x72 : u'\x1E\x5D',
}
_f2e6 = {
0x41 : u'\x1E\xB6', 0x61 : u'\x1E\xB7',
}
_f2e7 = {
0x53 : u'\x1E\x68', 0x73 : u'\x1E\x69',
}
_f3 = {
0x55 : u'\x1E\x72', 0x75 : u'\x1E\x73',
}
_f4 = {
0x41 : u'\x1E\x00', 0x61 : u'\x1E\x01',
}
_f6 = {
0x42 : u'\x1E\x06', 0x44 : u'\x1E\x0E', 0x4B : u'\x1E\x34',
0x4C : u'\x1E\x3A', 0x4E : u'\x1E\x48', 0x52 : u'\x1E\x5E',
0x54 : u'\x1E\x6E', 0x5A : u'\x1E\x94', 0x62 : u'\x1E\x07',
0x64 : u'\x1E\x0F', 0x68 : u'\x1E\x96', 0x6B : u'\x1E\x35',
0x6C : u'\x1E\x3B', 0x6E : u'\x1E\x49', 0x72 : u'\x1E\x5F',
0x74 : u'\x1E\x6F', 0x7A : u'\x1E\x95',
}
_f9 = {
0x48 : u'\x1E\x2A', 0x68 : u'\x1E\x2B',
}
_s1 = {
0xe0: _e0, 0xe1: _e1, 0xe2: _e2, 0xe3: _e3, 0xe4: _e4,
0xe5: _e5, 0xe6: _e6, 0xe7: _e7, 0xe8: _e8, 0xe9: _e9,
0xea: _ea, 0xee: _ee, 0xf0: _f0, 0xf1: _f1, 0xf2: _f2,
0xf3: _f3, 0xf4: _f4, 0xf6: _f6, 0xf9: _f9,
}
_utoa = {
u'\x00\xA1' : '\xC6', u'\x00\xA3' : '\xB9', u'\x00\xA9' : '\xC3',
u'\x00\xAE' : '\xAA', u'\x00\xB0' : '\xC0', u'\x00\xB1' : '\xAB',
u'\x00\xB7' : '\xA8', u'\x00\xB8' : '\xF0\x20', u'\x00\xBF' : '\xC5',
u'\x00\xC0' : '\xE1\x41', u'\x00\xC1' : '\xE2\x41', u'\x00\xC2' : '\xE3\x41',
u'\x00\xC3' : '\xE4\x41', u'\x00\xC4' : '\xE8\x41', u'\x00\xC5' : '\xEA\x41',
u'\x00\xC6' : '\xA5', u'\x00\xC7' : '\xF0\x43', u'\x00\xC8' : '\xE1\x45',
u'\x00\xC9' : '\xE2\x45', u'\x00\xCA' : '\xE3\x45', u'\x00\xCB' : '\xE8\x45',
u'\x00\xCC' : '\xE1\x49', u'\x00\xCD' : '\xE2\x49', u'\x00\xCE' : '\xE3\x49',
u'\x00\xCF' : '\xE8\x49', u'\x00\xD0' : '\xA3', u'\x00\xD1' : '\xE4\x4E',
u'\x00\xD2' : '\xE1\x4F', u'\x00\xD3' : '\xE2\x4F', u'\x00\xD4' : '\xE3\x4F',
u'\x00\xD5' : '\xE4\x4F', u'\x00\xD6' : '\xE8\x4F', u'\x00\xD8' : '\xA2',
u'\x00\xD9' : '\xE1\x55', u'\x00\xDA' : '\xE2\x55', u'\x00\xDB' : '\xE3\x55',
u'\x00\xDC' : '\xE8\x55', u'\x00\xDD' : '\xE2\x59', u'\x00\xDE' : '\xA4',
u'\x00\xDF' : '\xCF', u'\x00\xE0' : '\xE1\x61', u'\x00\xE1' : '\xE2\x61',
u'\x00\xE2' : '\xE3\x61', u'\x00\xE3' : '\xE4\x61', u'\x00\xE4' : '\xE8\x61',
u'\x00\xE5' : '\xEA\x61', u'\x00\xE6' : '\xB5', u'\x00\xE7' : '\xF0\x63',
u'\x00\xE8' : '\xE1\x65', u'\x00\xE9' : '\xE2\x65', u'\x00\xEA' : '\xE3\x65',
u'\x00\xEB' : '\xE8\x65', u'\x00\xEC' : '\xE1\x69', u'\x00\xED' : '\xE2\x69',
u'\x00\xEE' : '\xE3\x69', u'\x00\xEF' : '\xE8\x69', u'\x00\xF0' : '\xBA',
u'\x00\xF1' : '\xE4\x6E', u'\x00\xF2' : '\xE1\x6F', u'\x00\xF3' : '\xE2\x6F',
u'\x00\xF4' : '\xE3\x6F', u'\x00\xF5' : '\xE4\x6F', u'\x00\xF6' : '\xE8\x6F',
u'\x00\xF8' : '\xB2', u'\x00\xF9' : '\xE1\x75', u'\x00\xFA' : '\xE2\x75',
u'\x00\xFB' : '\xE3\x75', u'\x00\xFC' : '\xE8\x75', u'\x00\xFD' : '\xE2\x79',
u'\x00\xFE' : '\xB4', u'\x00\xFF' : '\xE8\x79', u'\x01\x00' : '\xE5\x41',
u'\x01\x01' : '\xE5\x61', u'\x01\x02' : '\xE6\x41', u'\x01\x03' : '\xE6\x61',
u'\x01\x04' : '\xF1\x41', u'\x01\x05' : '\xF1\x61', u'\x01\x06' : '\xE2\x43',
u'\x01\x07' : '\xE2\x63', u'\x01\x08' : '\xE3\x43', u'\x01\x09' : '\xE3\x63',
u'\x01\x0A' : '\xE7\x43', u'\x01\x0B' : '\xE7\x63', u'\x01\x0C' : '\xE9\x43',
u'\x01\x0D' : '\xE9\x63', u'\x01\x0E' : '\xE9\x44', u'\x01\x0F' : '\xE9\x64',
u'\x01\x10' : '\xA3', u'\x01\x11' : '\xB3', u'\x01\x12' : '\xE5\x45',
u'\x01\x13' : '\xE5\x65', u'\x01\x14' : '\xE6\x45', u'\x01\x15' : '\xE6\x65',
u'\x01\x16' : '\xE7\x45', u'\x01\x17' : '\xE7\x65', u'\x01\x18' : '\xF1\x45',
u'\x01\x19' : '\xF1\x65', u'\x01\x1A' : '\xE9\x45', u'\x01\x1B' : '\xE9\x65',
u'\x01\x1C' : '\xE3\x47', u'\x01\x1D' : '\xE3\x67', u'\x01\x1E' : '\xE6\x47',
u'\x01\x1F' : '\xE6\x67', u'\x01\x20' : '\xE7\x47', u'\x01\x21' : '\xE7\x67',
u'\x01\x22' : '\xF0\x47', u'\x01\x23' : '\xF0\x67', u'\x01\x24' : '\xE3\x48',
u'\x01\x25' : '\xE3\x68', u'\x01\x28' : '\xE4\x49', u'\x01\x29' : '\xE4\x69',
u'\x01\x2A' : '\xE5\x49', u'\x01\x2B' : '\xE5\x69', u'\x01\x2C' : '\xE6\x49',
u'\x01\x2D' : '\xE6\x69', u'\x01\x2E' : '\xF1\x49', u'\x01\x2F' : '\xF1\x69',
u'\x01\x30' : '\xE7\x49', u'\x01\x31' : '\xB8', u'\x01\x34' : '\xE3\x4A',
u'\x01\x35' : '\xE3\x6A', u'\x01\x36' : '\xF0\x4B', u'\x01\x37' : '\xF0\x6B',
u'\x01\x39' : '\xE2\x4C', u'\x01\x3A' : '\xE2\x6C', u'\x01\x3B' : '\xF0\x4C',
u'\x01\x3C' : '\xF0\x6C', u'\x01\x3D' : '\xE9\x4C', u'\x01\x3E' : '\xE9\x6C',
u'\x01\x41' : '\xA1', u'\x01\x42' : '\xB1', u'\x01\x43' : '\xE2\x4E',
u'\x01\x44' : '\xE2\x6E', u'\x01\x45' : '\xF0\x4E', u'\x01\x46' : '\xF0\x6E',
u'\x01\x47' : '\xE9\x4E', u'\x01\x48' : '\xE9\x6E', u'\x01\x4C' : '\xE5\x4F',
u'\x01\x4D' : '\xE5\x6F', u'\x01\x4E' : '\xE6\x4F', u'\x01\x4F' : '\xE6\x6F',
u'\x01\x50' : '\xEE\x4F', u'\x01\x51' : '\xEE\x6F', u'\x01\x52' : '\xA6',
u'\x01\x53' : '\xB6', u'\x01\x54' : '\xE2\x52', u'\x01\x55' : '\xE2\x72',
u'\x01\x56' : '\xF0\x52', u'\x01\x57' : '\xF0\x72', u'\x01\x58' : '\xE9\x52',
u'\x01\x59' : '\xE9\x72', u'\x01\x5A' : '\xE2\x53', u'\x01\x5B' : '\xE2\x73',
u'\x01\x5C' : '\xE3\x53', u'\x01\x5D' : '\xE3\x73', u'\x01\x5E' : '\xF0\x53',
u'\x01\x5F' : '\xF0\x73', u'\x01\x60' : '\xE9\x53', u'\x01\x61' : '\xE9\x73',
u'\x01\x62' : '\xF0\x54', u'\x01\x63' : '\xF0\x74', u'\x01\x64' : '\xE9\x54',
u'\x01\x65' : '\xE9\x74', u'\x01\x68' : '\xE4\x55', u'\x01\x69' : '\xE4\x75',
u'\x01\x6A' : '\xE5\x55', u'\x01\x6B' : '\xE5\x75', u'\x01\x6C' : '\xE6\x55',
u'\x01\x6D' : '\xE6\x75', u'\x01\x6E' : '\xEA\xAD', u'\x01\x6F' : '\xEA\x75',
u'\x01\x70' : '\xEE\x55', u'\x01\x71' : '\xEE\x75', u'\x01\x72' : '\xF1\x55',
u'\x01\x73' : '\xF1\x75', u'\x01\x74' : '\xE3\x57', u'\x01\x75' : '\xE3\x77',
u'\x01\x76' : '\xE3\x59', u'\x01\x77' : '\xE3\x79', u'\x01\x78' : '\xE8\x59',
u'\x01\x79' : '\xE2\x5A', u'\x01\x7A' : '\xE2\x7A', u'\x01\x7B' : '\xE7\x5A',
u'\x01\x7C' : '\xE7\x7A', u'\x01\x7D' : '\xE9\x5A', u'\x01\x7E' : '\xE9\x7A',
u'\x01\xA0' : '\xAC', u'\x01\xA1' : '\xBC', u'\x01\xAF' : '\xAD',
u'\x01\xB0' : '\xBD', u'\x01\xCD' : '\xE9\x41', u'\x01\xCE' : '\xE9\x61',
u'\x01\xCF' : '\xE9\x49', u'\x01\xD0' : '\xE9\x69', u'\x01\xD1' : '\xE9\x4F',
u'\x01\xD2' : '\xE9\x6F', u'\x01\xD3' : '\xE9\x55', u'\x01\xD4' : '\xE9\x75',
u'\x01\xE2' : '\xE5\xA5', u'\x01\xE3' : '\xE5\xB5', u'\x01\xE6' : '\xE9\x47',
u'\x01\xE7' : '\xE9\x67', u'\x01\xE8' : '\xE9\x4B', u'\x01\xE9' : '\xE9\x6B',
u'\x01\xEA' : '\xF1\x4F', u'\x01\xEB' : '\xF1\x6F', u'\x01\xF0' : '\xE9\x6A',
u'\x01\xF4' : '\xE2\x47', u'\x01\xF5' : '\xE2\x67', u'\x01\xFC' : '\xE2\xA5',
u'\x01\xFD' : '\xE2\xB5', u'\x02\xB9' : '\xA7', u'\x02\xBA' : '\xB7',
u'\x02\xBE' : '\xAE', u'\x02\xBF' : '\xB0', u'\x03\x00' : '\xE1',
u'\x03\x01' : '\xE2', u'\x03\x02' : '\xE3', u'\x03\x03' : '\xE4',
u'\x03\x04' : '\xE5', u'\x03\x06' : '\xE6', u'\x03\x07' : '\xE7',
u'\x03\x09' : '\xE0', u'\x03\x0A' : '\xEA', u'\x03\x0B' : '\xEE',
u'\x03\x0C' : '\xE9', u'\x03\x10' : '\xEF', u'\x03\x13' : '\xFE',
u'\x03\x15' : '\xED', u'\x03\x1C' : '\xF8', u'\x03\x23' : '\xF2',
u'\x03\x24' : '\xF3', u'\x03\x25' : '\xF4', u'\x03\x26' : '\xF7',
u'\x03\x27' : '\xF0', u'\x03\x28' : '\xF1', u'\x03\x2E' : '\xF9',
u'\x03\x32' : '\xF6', u'\x03\x33' : '\xF5', u'\x1E\x00' : '\xF4\x41',
u'\x1E\x01' : '\xF4\x61', u'\x1E\x02' : '\xE7\x42', u'\x1E\x03' : '\xE7\x62',
u'\x1E\x04' : '\xF2\x42', u'\x1E\x05' : '\xF2\x62', u'\x1E\x0A' : '\xE7\x44',
u'\x1E\x0B' : '\xE7\x64', u'\x1E\x0C' : '\xF2\x44', u'\x1E\x0D' : '\xF2\x64',
u'\x1E\x10' : '\xF0\x44', u'\x1E\x11' : '\xF0\x64', u'\x1E\x1E' : '\xE7\x46',
u'\x1E\x1F' : '\xE7\x66', u'\x1E\x20' : '\xE5\x47', u'\x1E\x21' : '\xE5\x67',
u'\x1E\x22' : '\xE7\x48', u'\x1E\x23' : '\xE7\x68', u'\x1E\x24' : '\xF2\x48',
u'\x1E\x25' : '\xF2\x68', u'\x1E\x26' : '\xE8\x48', u'\x1E\x27' : '\xE8\x68',
u'\x1E\x28' : '\xF0\x48', u'\x1E\x29' : '\xF0\x68', u'\x1E\x2A' : '\xF9\x48',
u'\x1E\x2B' : '\xF9\x68', u'\x1E\x30' : '\xE2\x4B', u'\x1E\x31' : '\xE2\x6B',
u'\x1E\x32' : '\xF2\x4B', u'\x1E\x33' : '\xF2\x6B', u'\x1E\x36' : '\xF2\x4C',
u'\x1E\x37' : '\xF2\x6C', u'\x1E\x3E' : '\xE2\x4D', u'\x1E\x3F' : '\xE2\x6D',
u'\x1E\x40' : '\xE7\x4D', u'\x1E\x41' : '\xE7\x6D', u'\x1E\x42' : '\xF2\x4D',
u'\x1E\x43' : '\xF2\x6D', u'\x1E\x44' : '\xE7\x4E', u'\x1E\x45' : '\xE7\x6E',
u'\x1E\x46' : '\xF2\x4E', u'\x1E\x47' : '\xF2\x6E', u'\x1E\x54' : '\xE2\x50',
u'\x1E\x55' : '\xE2\x70', u'\x1E\x56' : '\xE7\x50', u'\x1E\x57' : '\xE7\x70',
u'\x1E\x58' : '\xE7\x52', u'\x1E\x59' : '\xE7\x72', u'\x1E\x5A' : '\xF2\x52',
u'\x1E\x5B' : '\xF2\x72', u'\x1E\x60' : '\xE7\x53', u'\x1E\x61' : '\xE7\x73',
u'\x1E\x62' : '\xF2\x53', u'\x1E\x63' : '\xF2\x73', u'\x1E\x6A' : '\xE7\x54',
u'\x1E\x6B' : '\xE7\x74', u'\x1E\x6C' : '\xF2\x54', u'\x1E\x6D' : '\xF2\x74',
u'\x1E\x72' : '\xF3\x55', u'\x1E\x73' : '\xF3\x75', u'\x1E\x7C' : '\xE4\x56',
u'\x1E\x7D' : '\xE4\x76', u'\x1E\x7E' : '\xF2\x56', u'\x1E\x7F' : '\xF2\x76',
u'\x1E\x80' : '\xE1\x57', u'\x1E\x81' : '\xE1\x77', u'\x1E\x82' : '\xE2\x57',
u'\x1E\x83' : '\xE2\x77', u'\x1E\x84' : '\xE8\x57', u'\x1E\x85' : '\xE8\x77',
u'\x1E\x86' : '\xE7\x57', u'\x1E\x87' : '\xE7\x77', u'\x1E\x88' : '\xF2\x57',
u'\x1E\x89' : '\xF2\x77', u'\x1E\x8A' : '\xE7\x58', u'\x1E\x8B' : '\xE7\x78',
u'\x1E\x8C' : '\xE8\x58', u'\x1E\x8D' : '\xE8\x78', u'\x1E\x8E' : '\xE7\x59',
u'\x1E\x8F' : '\xE7\x79', u'\x1E\x90' : '\xE3\x5A', u'\x1E\x91' : '\xE3\x7A',
u'\x1E\x92' : '\xF2\x5A', u'\x1E\x93' : '\xF2\x7A', u'\x1E\x97' : '\xE8\x74',
u'\x1E\x98' : '\xEA\x77', u'\x1E\x99' : '\xEA\x79', u'\x1E\xA0' : '\xF2\x41',
u'\x1E\xA1' : '\xF2\x61', u'\x1E\xA2' : '\xE0\x41', u'\x1E\xA3' : '\xE0\x61',
u'\x1E\xB8' : '\xF2\x45', u'\x1E\xB9' : '\xF2\x65', u'\x1E\xBA' : '\xE0\x45',
u'\x1E\xBB' : '\xE0\x65', u'\x1E\xBC' : '\xE4\x45', u'\x1E\xBD' : '\xE4\x65',
u'\x1E\xC8' : '\xE0\x49', u'\x1E\xC9' : '\xE0\x69', u'\x1E\xCA' : '\xF2\x49',
u'\x1E\xCB' : '\xF2\x69', u'\x1E\xCC' : '\xF2\x4F', u'\x1E\xCD' : '\xF2\x6F',
u'\x1E\xCE' : '\xE0\x4F', u'\x1E\xCF' : '\xE0\x6F', u'\x1E\xE4' : '\xF2\x55',
u'\x1E\xE5' : '\xF2\x75', u'\x1E\xE6' : '\xE0\x55', u'\x1E\xE7' : '\xE0\x75',
u'\x1E\xF2' : '\xE1\x59', u'\x1E\xF3' : '\xE1\x79', u'\x1E\xF4' : '\xF2\x59',
u'\x1E\xF5' : '\xF2\x79', u'\x1E\xF6' : '\xE0\x59', u'\x1E\xF7' : '\xE0\x79',
u'\x1E\xF8' : '\xE4\x59', u'\x1E\xF9' : '\xE4\x79',
# u'\x20\x0C' : '\x8E', u'\x20\x0D' : '\x8D', u'\x21\x13' : '\xC1',
# u'\x21\x17' : '\xC2', u'\x26\x6D' : '\xA9', u'\x26\x6F' : '\xC4',
u'\xFE\x20' : '\xEB',
u'\xFE\x21' : '\xEC', u'\xFE\x22' : '\xFA', u'\xFE\x23' : '\xFB',
}
def ansel_to_utf8(s):
"""Converts an ANSEL encoded string to UTF8"""
@ -396,19 +282,17 @@ def ansel_to_utf8(s):
while s:
c0 = ord(s[0])
if c0 <= 31:
head = ' '
head = u' '
s = s[1:]
elif c0 > 127:
try:
if c0 >= 0xC0:
c1 = ord(s[1])
head = _s1[c0][c1]
s = s[2:]
else:
head = _s0[c0]
s = s[1:]
except Exception:
head = s[0]
if _twobyte.has_key(s[0:2]):
head = _twobyte[s[0:2]]
s = s[2:]
elif _onebyte.has_key(s[0]):
head = _onebyte[s[0]]
s = s[1:]
else:
head = u'\xff\xfd'
s = s[1:]
else:
head = s[0]
@ -417,3 +301,29 @@ def ansel_to_utf8(s):
ans = buff.getvalue()
buff.close()
return ans
def utf8_to_ansel(s):
"""Converts an UTF8 encoded string to ANSEL"""
buff = cStringIO.StringIO()
while s:
c0 = ord(s[0])
print c0
if c0 <= 3 or c0 == 0x1e or c0 >= 0xf3:
try:
print s[0:2], _utoa.has_key(s[0:2])
head = _utoa[s[0:2]]
s = s[2:]
except:
head = '?'
s = s[1:]
else:
head = s[0]
s = s[1:]
buff.write(head)
ans = buff.getvalue()
buff.close()
return ans

Binary file not shown.

View File

@ -1276,9 +1276,12 @@ class Gramps:
for key in self.db.getPersonKeys():
person = self.db.getPerson(key)
val = self.db.getPersonDisplay(key)
pg = unicode(val[5])
pg = val[5]
if pg:
pg = pg[0]
else:
pg = ''
if datacomp(person):
if self.id2col.has_key(key):
continue

View File

@ -49,7 +49,6 @@ import RelLib
import Julian
import FrenchRepublic
import Hebrew
import Date
from ansel_utf8 import ansel_to_utf8
import latin_utf8
@ -58,8 +57,14 @@ from GedcomInfo import *
from QuestionDialog import ErrorDialog
from intl import gettext as _
#-------------------------------------------------------------------------
#
# constants
#
#-------------------------------------------------------------------------
ANSEL = 1
UNICODE = 2
UPDATE = 25
db = None
callback = None
@ -211,16 +216,18 @@ class GedcomParser:
self.trans2 = self.trans[0:127] + ('?' * 128)
self.file_obj = window.get_widget("file")
self.encoding_obj = window.get_widget("encoding")
self.created_obj = window.get_widget("created")
self.version_obj = window.get_widget("version")
self.families_obj = window.get_widget("families")
self.people_obj = window.get_widget("people")
self.errors_obj = window.get_widget("errors")
self.close_done = window.get_widget('close_done')
self.error_text_obj = window.get_widget("error_text")
self.window = window
if window:
self.file_obj = window.get_widget("file")
self.encoding_obj = window.get_widget("encoding")
self.created_obj = window.get_widget("created")
self.version_obj = window.get_widget("version")
self.families_obj = window.get_widget("families")
self.people_obj = window.get_widget("people")
self.errors_obj = window.get_widget("errors")
self.close_done = window.get_widget('close_done')
self.error_text_obj = window.get_widget("error_text")
self.error_count = 0
map = const.personalConstantAttributes
@ -228,8 +235,10 @@ class GedcomParser:
self.gedattr = {}
for val in map.keys():
self.gedattr[map[val]] = val
self.update(self.file_obj,file)
if self.window:
self.update(self.file_obj,file)
self.code = 0
self.search_paths = []
@ -243,7 +252,7 @@ class GedcomParser:
first = string.strip(paths[0])
if first[0] == '#':
continue
if string.upper(paths[2]) in ["VFAT","FAT","NTFS"]:
if paths[2].upper() in ["VFAT","FAT","NTFS"]:
self.search_paths.append(paths[1])
f.close()
except:
@ -274,10 +283,11 @@ class GedcomParser:
def get_next(self):
if self.backoff == 0:
next_line = string.strip(self.f.readline())
self.text = string.translate(next_line,self.trans,self.delc)
next_line = self.f.readline()
self.text = string.translate(next_line.strip(),self.trans,self.delc)
if self.text == '':
raise Errors.GedcomError(_("GEDCOM file ended unexpectedly"))
try:
self.text = self.cnv(self.text)
except:
@ -297,24 +307,35 @@ class GedcomParser:
msg = "\n\t%s\n" % self.text
self.error_text_obj.get_buffer().insert_at_cursor(msg,len(msg))
self.error_count = self.error_count + 1
self.update(self.errors_obj,str(self.error_count))
if self.window:
self.update(self.errors_obj,str(self.error_count))
self.groups = (999, "XXX", "XXX")
self.backoff = 0
return self.groups
def barf(self,level):
msg = _("Warning: line %d was not understood, so it was ignored.") % self.index
self.error_text_obj.get_buffer().insert_at_cursor(msg,len(msg))
if self.window:
self.error_text_obj.get_buffer().insert_at_cursor(msg,len(msg))
else:
print msg
msg = "\n\t%s\n" % self.text
self.error_text_obj.get_buffer().insert_at_cursor(msg,len(msg))
self.error_count = self.error_count + 1
self.update(self.errors_obj,str(self.error_count))
if self.window:
self.error_text_obj.get_buffer().insert_at_cursor(msg,len(msg))
self.error_count = self.error_count + 1
self.update(self.errors_obj,str(self.error_count))
else:
print msg
self.ignore_sub_junk(level)
def warn(self,msg):
self.error_text_obj.get_buffer().insert_at_cursor(msg,len(msg))
self.error_count = self.error_count + 1
self.update(self.errors_obj,str(self.error_count))
if self.window:
self.error_text_obj.get_buffer().insert_at_cursor(msg,len(msg))
self.error_count = self.error_count + 1
self.update(self.errors_obj,str(self.error_count))
else:
print msg
def backup(self):
self.backoff = 1
@ -333,13 +354,19 @@ class GedcomParser:
msg = str(err)
self.error_text_obj.get_buffer().insert_at_cursor(msg,len(msg))
self.update(self.families_obj,str(self.fam_count))
self.update(self.people_obj,str(self.indi_count))
if self.window:
self.update(self.families_obj,str(self.fam_count))
self.update(self.people_obj,str(self.indi_count))
self.break_note_links()
t = time.time() - t
msg = _('Import Complete: %d seconds') % t
self.error_text_obj.get_buffer().insert_at_cursor(msg,len(msg))
return self.close_done.get_active()
if self.window:
self.error_text_obj.get_buffer().insert_at_cursor(msg,len(msg))
return self.close_done.get_active()
else:
print msg
return None
def break_note_links(self):
for o in self.share_note:
@ -415,7 +442,7 @@ class GedcomParser:
while 1:
matches = self.get_next()
if matches[2] == "FAM":
if self.fam_count % 10 == 0:
if self.fam_count % UPDATE == 0 and self.window:
self.update(self.families_obj,str(self.fam_count))
self.fam_count = self.fam_count + 1
self.family = self.db.findFamily(matches[1],self.fmap)
@ -430,7 +457,7 @@ class GedcomParser:
for child in self.family.getChildList():
child.addAddress(self.addr)
elif matches[2] == "INDI":
if self.indi_count % 10 == 0:
if self.indi_count % UPDATE == 0 and self.window:
self.update(self.people_obj,str(self.indi_count))
self.indi_count = self.indi_count + 1
id = matches[1]
@ -439,14 +466,12 @@ class GedcomParser:
self.added[self.person.getId()] = self.person
self.parse_individual()
self.db.buildPersonDisplay(self.person.getId())
elif matches[2] in ["SUBM","SUBN"]:
elif matches[2] in ["SUBM","SUBN","REPO"]:
self.ignore_sub_junk(1)
elif matches[1] in ["SUBM","SUBN"]:
elif matches[1] in ["SUBM","SUBN","OBJE"]:
self.ignore_sub_junk(1)
elif matches[2] == "SOUR":
self.parse_source(matches[1],1)
elif matches[2] == "REPO":
self.ignore_sub_junk(1)
elif matches[2][0:4] == "NOTE":
if self.nmap.has_key(matches[1]):
noteobj = self.nmap[matches[1]]
@ -456,24 +481,20 @@ class GedcomParser:
text = matches[2][4:]
noteobj.append(text + self.parse_continue_data(1))
self.parse_note_data(1)
elif matches[2] == "OBJE":
self.ignore_sub_junk(1)
elif matches[1] == "TRLR":
self.backup()
return
else:
self.barf(1)
def find_or_create_person(self,id):
def find_or_create_person(self,id):
if self.pmap.has_key(id):
person = self.db.findPersonNoMap(self.pmap[id])
elif self.db.getPersonMap().has_key(id):
person = RelLib.Person()
self.pmap[id] = self.db.addPerson(person)
else:
person = RelLib.Person()
person.setId(id)
person = RelLib.Person(id)
self.db.addPersonAs(person)
self.pmap[id] = id
return person
@ -1056,7 +1077,7 @@ class GedcomParser:
while 1:
matches = self.get_next()
if int(matches[0]) < level:
if note != "":
if note:
event.setNote(note)
self.backup()
break
@ -1073,8 +1094,6 @@ class GedcomParser:
event.setName(name)
elif matches[1] == "DATE":
event.setDateObj(self.extract_date(matches[2]))
elif matches[1] in ["TIME","ADDR","AGE","AGNC","STAT","TEMP","OBJE"]:
self.ignore_sub_junk(level+1)
elif matches[1] == "SOUR":
event.addSourceRef(self.handle_source(matches,level))
elif matches[1] == "PLAC":
@ -1111,7 +1130,7 @@ class GedcomParser:
event.setDescription("%s%s" % (d, matches[2]))
elif matches[1] == "CONT":
event.setDescription("%s\n%s" % (event.getDescription(),matches[2]))
elif matches[1] == "RELI":
elif matches[1] in ["RELI", "TIME","ADDR","AGE","AGNC","STAT","TEMP","OBJE"]:
self.ignore_sub_junk(level+1)
else:
self.barf(level+1)
@ -1406,16 +1425,16 @@ class GedcomParser:
self.backup()
return
elif matches[1] == "SOUR":
if self.created_obj.get_text() == "":
if self.window and self.created_obj.get_text():
self.update(self.created_obj,matches[2])
self.gedsource = self.gedmap.get_from_source_tag(matches[2])
self.broken_conc = self.gedsource.get_conc()
if matches[2] == "FTW":
self.is_ftw = 1
genby = matches[2]
elif matches[1] == "NAME":
elif matches[1] == "NAME" and self.window:
self.update(self.created_obj,matches[2])
elif matches[1] == "VERS":
elif matches[1] == "VERS" and self.window:
self.update(self.version_obj,matches[2])
elif matches[1] in ["CORP","DATA","SUBM","SUBN","COPR","FILE","LANG"]:
self.ignore_sub_junk(2)
@ -1433,7 +1452,8 @@ class GedcomParser:
else:
self.cnv = latin_utf8.latin_to_utf8
self.ignore_sub_junk(2)
self.update(self.encoding_obj,matches[2])
if self.window:
self.update(self.encoding_obj,matches[2])
elif matches[1] == "GEDC":
self.ignore_sub_junk(2)
elif matches[1] == "_SCHEMA":
@ -1699,7 +1719,21 @@ def on_ok_clicked(obj):
#
#
#-------------------------------------------------------------------------
from Plugins import register_import
register_import(readData,_("Import from GEDCOM"))
if __name__ == "__main__":
import sys
import GrampsXML
import profile
print "Reading %s" % sys.argv[1]
db = GrampsXML.GrampsXML()
g = GedcomParser(db,sys.argv[1],None)
profile.run('g.parse_gedcom_file()')
g.resolve_refns()
else:
from Plugins import register_import
register_import(readData,_("Import from GEDCOM"))

View File

@ -51,7 +51,8 @@ class ReadNative:
self.top.show()
def show_display(self):
self.window = gtk.Window(title=_("Import from GRAMPS"))
self.window = gtk.Window()
self.window.set_title(_("Import from GRAMPS"))
vbox = gtk.VBox()
self.window.add(vbox)
label = gtk.Label(_("Import from GRAMPS"))

View File

@ -54,14 +54,12 @@ import Julian
import Hebrew
import FrenchRepublic
import GedcomInfo
import ansel_utf8
from intl import gettext as _
from latin_utf8 import latin_to_utf8
try:
from ansel import latin_to_ansel
except:
from latin_ansel import latin_to_ansel
def keep_utf8(s):
return s
#-------------------------------------------------------------------------
#
@ -341,7 +339,7 @@ class GedcomWriter:
self.person = person
self.restrict = 1
self.private = 1
self.cnvtxt = latin_to_ansel
self.cnvtxt = ansel_utf8.utf8_to_ansel
self.plist = {}
self.slist = {}
self.flist = {}
@ -425,9 +423,9 @@ class GedcomWriter:
self.source_refs = self.target_ged.get_source_refs()
if self.topDialog.get_widget("ansel").get_active():
self.cnvtxt = latin_to_ansel
self.cnvtxt = ansel_utf8.utf8_to_ansel
else:
self.cnvtxt = latin_to_utf8
self.cnvtxt = keep_utf8
name = self.topDialog.get_widget("filename").get_text()
@ -490,7 +488,7 @@ class GedcomWriter:
if self.dest:
self.g.write("1 DEST %s\n" % self.dest)
self.g.write("1 DATE %s %s %s\n" % (date[2],string.upper(date[1]),date[4]))
if self.cnvtxt == latin_to_ansel:
if self.cnvtxt == ansel_utf8.utf8_to_ansel:
self.g.write("1 CHAR ANSEL\n");
else:
self.g.write("1 CHAR UTF-8\n");

View File

@ -38,8 +38,6 @@ import Date
#
#-------------------------------------------------------------------------
su = string.upper
_plist = [ 'de', 'van', 'von', 'la', 'di', 'le', 'du' ]
_prefix = {}
@ -51,10 +49,9 @@ def build_sort_name(n):
use as a sort key in a GtkCList. The name is converted to upper case
to provide for case-insenstive sorting"""
if n.Surname:
return "%-25s%-30s%s" % (su(n.Surname),su(n.FirstName),su(n.Suffix))
return "%-25s%-30s%s" % (n.Surname.upper(),n.FirstName.upper(),n.Suffix.upper())
else:
return "@"
def build_sort_date(n):
"""Builds a date from a Date.Date instance that is suitable for