From c273028faca6609cb0fe0d6889d2dd8e4362dfbb Mon Sep 17 00:00:00 2001 From: Don Allingham Date: Mon, 20 Jan 2003 13:31:49 +0000 Subject: [PATCH] Fixed ISO date format svn: r1265 --- gramps/src/GedcomInfo.py | 12 ++++++++ gramps/src/WriteXML.py | 3 ++ gramps/src/data/gedcom.xml | 10 ++++++ gramps/src/plugins/ReadGedcom.py | 10 ++++++ gramps/src/plugins/WriteGedcom.py | 51 +++++++++++++++++++++++-------- 5 files changed, 73 insertions(+), 13 deletions(-) diff --git a/gramps/src/GedcomInfo.py b/gramps/src/GedcomInfo.py index bd220ce8f..4ef996eb1 100644 --- a/gramps/src/GedcomInfo.py +++ b/gramps/src/GedcomInfo.py @@ -42,6 +42,8 @@ OBJE_NO = 0 OBJE_YES = 1 RESIDENCE_ADDR = 0 RESIDENCE_PLAC = 1 +SOURCE_REFS_NO = 0 +SOURCE_REFS_YES = 1 #------------------------------------------------------------------------- # @@ -60,6 +62,7 @@ class GedcomDescription: self.cal = CALENDAR_YES self.obje = OBJE_YES self.resi = RESIDENCE_ADDR + self.source_refs = SOURCE_REFS_YES self.gramps2tag_map = {} self.tag2gramps_map = {} @@ -105,6 +108,12 @@ class GedcomDescription: def get_resi(self): return self.resi + def set_source_refs(self,val): + self.source_refs = val + + def get_source_refs(self): + return self.source_refs + def add_tag_value(self,tag,value): self.gramps2tag_map[value] = tag self.tag2gramps_map[tag] = value @@ -220,3 +229,6 @@ class GedInfoParser: elif tag == "residence": if u2l(attrs['val']) == 'place': self.current.set_resi(RESIDENCE_PLAC) + elif tag == "source_refs": + if u2l(attrs['val']) == 'no': + self.current.set_source_refs(SOURCE_REFS_NO) diff --git a/gramps/src/WriteXML.py b/gramps/src/WriteXML.py index 2d3f74d83..4ec154ddc 100644 --- a/gramps/src/WriteXML.py +++ b/gramps/src/WriteXML.py @@ -194,6 +194,9 @@ class XmlWriter: for key in self.db.getPersonKeys(): person = self.db.getPerson(key) + if not person: + GnomeErrorDialog("Person ID %s was NULL" % key) + continue if self.callback and count % delta == 0: self.callback(float(count)/float(total)) count = count + 1 diff --git a/gramps/src/data/gedcom.xml b/gramps/src/data/gedcom.xml index d37dac2e3..31fd99568 100644 --- a/gramps/src/data/gedcom.xml +++ b/gramps/src/data/gedcom.xml @@ -10,6 +10,7 @@ + @@ -21,6 +22,7 @@ + @@ -36,6 +38,7 @@ + @@ -47,6 +50,7 @@ + @@ -58,6 +62,7 @@ + @@ -69,6 +74,7 @@ + @@ -80,6 +86,7 @@ + @@ -91,6 +98,7 @@ + @@ -102,6 +110,7 @@ + @@ -113,5 +122,6 @@ + diff --git a/gramps/src/plugins/ReadGedcom.py b/gramps/src/plugins/ReadGedcom.py index 3f8d0fcca..c657b5940 100644 --- a/gramps/src/plugins/ReadGedcom.py +++ b/gramps/src/plugins/ReadGedcom.py @@ -137,6 +137,11 @@ def importData(database, filename, cb=None): try: close = g.parse_gedcom_file() + except IOError,msg: + Utils.destroy_passed_object(statusWindow) + errmsg = _("%s could not be opened\n") % filename + gnome.ui.GnomeErrorDialog(errmsg + str(msg)) + return except GedcomParser.BadFile, msg: Utils.destroy_passed_object(statusWindow) gnome.ui.GnomeErrorDialog(_("Failure reading %s: %s\n" @@ -144,6 +149,11 @@ def importData(database, filename, cb=None): "but was '%s'") % (filename,GedcomParser.BadFile,msg)) return + except: + import DisplayTrace + Utils.destroy_passed_object(statusWindow) + DisplayTrace.DisplayTrace() + return g.resolve_refns() diff --git a/gramps/src/plugins/WriteGedcom.py b/gramps/src/plugins/WriteGedcom.py index e7549e4a5..da29e9bed 100644 --- a/gramps/src/plugins/WriteGedcom.py +++ b/gramps/src/plugins/WriteGedcom.py @@ -388,6 +388,7 @@ class GedcomWriter: self.cal = self.target_ged.get_alt_calendar() self.obje = self.target_ged.get_obje() self.resi = self.target_ged.get_resi() + self.source_refs = self.target_ged.get_source_refs() if self.topDialog.get_widget("ansel").get_active(): self.cnvtxt = latin_to_ansel @@ -509,8 +510,11 @@ class GedcomWriter: self.pbar.set_value(100.0) self.write_families() - self.write_sources() - + if self.source_refs: + self.write_sources() + else: + self.sbar.set_value(100.0) + self.g.write("0 TRLR\n") self.g.close() @@ -914,20 +918,41 @@ class GedcomWriter: def write_source_ref(self,level,ref): if ref.getBase() == None: return - self.g.write("%d SOUR @%s@\n" % (level,self.sid(ref.getBase().getId()))) - if ref.getPage() != "": - self.g.write("%d PAGE %s\n" % (level+1,ref.getPage())) + if self.source_refs: + self.g.write("%d SOUR @%s@\n" % + (level,self.sid(ref.getBase().getId()))) + if ref.getPage() != "": + self.g.write("%d PAGE %s\n" % (level+1,ref.getPage())) - ref_text = ref.getText() - if ref_text != "" or not ref.getDate().isEmpty(): - self.g.write('%d DATA\n' % (level+1)) - if ref_text != "": - self.write_long_text("TEXT",level+2,ref_text) - pfx = "%d DATE" % (level+2) - self.print_date(pfx,ref.getDate()) + ref_text = ref.getText() + if ref_text != "" or not ref.getDate().isEmpty(): + self.g.write('%d DATA\n' % (level+1)) + if ref_text != "": + self.write_long_text("TEXT",level+2,ref_text) + pfx = "%d DATE" % (level+2) + self.print_date(pfx,ref.getDate()) + else: + # We put title, page, and date on the SOUR line. + # Not using CONC because GeneWeb does not support this. + # TEXT and NOTE will be ignored by GeneWeb, but we can't + # output paragaphs in SOUR if we don't use CONC. + sbase = ref.getBase() + if sbase and sbase.getTitle(): + txt = sbase.getTitle() + ". " + else: + txt = "" + if ref.getPage(): + txt = txt + ref.getPage() + ". " + self.g.write("%d SOUR %s" % (level,self.cnvtxt(txt))) + if not ref.getDate().isEmpty(): + self.print_date("", ref.getDate()) + else: + self.g.write("\n") + if ref.getText(): + self.write_long_text("TEXT",level+1,ref_text) if ref.getComments() != "": self.write_long_text("NOTE",level+1,ref.getComments()) - + def fid(self,id): return id