diff --git a/src/Calendar.py b/src/Calendar.py index bad38c96e..a7f4e9a2a 100644 --- a/src/Calendar.py +++ b/src/Calendar.py @@ -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, diff --git a/src/Date.py b/src/Date.py index bf01d09ef..cb9fbdc91 100644 --- a/src/Date.py +++ b/src/Date.py @@ -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(), diff --git a/src/Errors.py b/src/Errors.py new file mode 100644 index 000000000..d04dd5b57 --- /dev/null +++ b/src/Errors.py @@ -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 diff --git a/src/FamilyView.py b/src/FamilyView.py index a25d6776e..8def65d5c 100644 --- a/src/FamilyView.py +++ b/src/FamilyView.py @@ -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) diff --git a/src/GrampsCfg.py b/src/GrampsCfg.py index 2f0d51c21..0b0cc0651 100644 --- a/src/GrampsCfg.py +++ b/src/GrampsCfg.py @@ -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), diff --git a/src/PedView.py b/src/PedView.py index 1cff11743..835492eda 100644 --- a/src/PedView.py +++ b/src/PedView.py @@ -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)) diff --git a/src/ReadXML.py b/src/ReadXML.py index 214d5e998..fd7333b6e 100644 --- a/src/ReadXML.py +++ b/src/ReadXML.py @@ -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 " diff --git a/src/RelLib.py b/src/RelLib.py index 47b58eaf5..99a230471 100644 --- a/src/RelLib.py +++ b/src/RelLib.py @@ -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 = [] diff --git a/src/ansel_utf8.py b/src/ansel_utf8.py index 3f6e5b7b7..819764362 100644 --- a/src/ansel_utf8.py +++ b/src/ansel_utf8.py @@ -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 + + + diff --git a/src/gramps.zodb b/src/gramps.zodb index ad3e9f9b8..85c114830 100644 Binary files a/src/gramps.zodb and b/src/gramps.zodb differ diff --git a/src/gramps_main.py b/src/gramps_main.py index b96e8d47d..5504d4c6a 100755 --- a/src/gramps_main.py +++ b/src/gramps_main.py @@ -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 diff --git a/src/plugins/ReadGedcom.py b/src/plugins/ReadGedcom.py index a9a247b86..46670b83c 100644 --- a/src/plugins/ReadGedcom.py +++ b/src/plugins/ReadGedcom.py @@ -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")) + + diff --git a/src/plugins/ReadNative.py b/src/plugins/ReadNative.py index d091a0991..b09917d03 100644 --- a/src/plugins/ReadNative.py +++ b/src/plugins/ReadNative.py @@ -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")) diff --git a/src/plugins/WriteGedcom.py b/src/plugins/WriteGedcom.py index 8af12289f..7b19c6ac9 100644 --- a/src/plugins/WriteGedcom.py +++ b/src/plugins/WriteGedcom.py @@ -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"); diff --git a/src/sort.py b/src/sort.py index 26df9abf6..6f1164b0e 100644 --- a/src/sort.py +++ b/src/sort.py @@ -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