diff --git a/gramps/src/Date.py b/gramps/src/Date.py
index afd9bba57..ecdb9a0d0 100644
--- a/gramps/src/Date.py
+++ b/gramps/src/Date.py
@@ -459,10 +459,8 @@ class SingleDate:
return "%s%s%s" % (y,m,d)
def getSaveDate(self):
- retval = ""
-
if self.month == UNDEF and self.day == UNDEF and self.year == UNDEF :
- pass
+ return ""
elif self.day == UNDEF:
if self.month == UNDEF:
retval = str(self.year)
@@ -485,11 +483,9 @@ class SingleDate:
retval = "BEFORE" + " " + retval
elif self.mode == SingleDate.after:
retval = "AFTER" + " " + retval
-
return retval
- def getFmt1(self):
-
+ def get_fmt1(self):
if self.month == UNDEF and self.day == UNDEF and self.year == UNDEF :
return ""
elif self.day == UNDEF:
@@ -514,10 +510,9 @@ class SingleDate:
retval = _("before") + ' ' + retval
elif self.mode == SingleDate.after:
retval = _("after") + ' ' + retval
-
return retval
- def getFmt2(self):
+ def get_fmt2(self):
if self.month == UNDEF and self.day == UNDEF and self.year == UNDEF :
return ""
elif self.month != UNDEF and self.month != UNDEF:
@@ -547,7 +542,7 @@ class SingleDate:
return retval
- def getFmt3(self):
+ def get_fmt3(self):
if self.month == UNDEF and self.day == UNDEF and self.year == UNDEF :
return ""
elif self.day == UNDEF:
@@ -574,10 +569,9 @@ class SingleDate:
retval = "%s %s" % (_("BEFORE"),retval)
elif self.mode == SingleDate.after:
retval = "%s %s" % (_("AFTER"),retval)
-
return retval
- def getFmt10(self):
+ def get_fmt10(self):
if self.month == UNDEF and self.day == UNDEF and self.year == UNDEF :
return ""
elif self.day == UNDEF:
@@ -663,13 +657,13 @@ class SingleDate:
return retval
- def getFmt4(self):
+ def get_fmt4(self):
return self.get_mmddyyyy("/")
- def getFmt5(self):
+ def get_fmt5(self):
return self.get_mmddyyyy("-")
- def getFmt8(self):
+ def get_fmt8(self):
return self.get_mmddyyyy(".")
def get_ddmmyyyy(self,sep):
@@ -701,22 +695,22 @@ class SingleDate:
return retval
- def getFmt6(self):
+ def get_fmt6(self):
return self.get_ddmmyyyy("/")
- def getFmt7(self):
+ def get_fmt7(self):
return self.get_ddmmyyyy("-")
- def getFmt9(self):
+ def get_fmt9(self):
return self.get_ddmmyyyy(".")
- def getFmt11(self):
+ def get_fmt11(self):
return self.get_yyyymmdd("/")
- def getFmt12(self):
+ def get_fmt12(self):
return self.get_yyyymmdd("-")
- def getFmt13(self):
+ def get_fmt13(self):
return self.get_yyyymmdd(".")
#--------------------------------------------------------------------
@@ -724,9 +718,9 @@ class SingleDate:
#
#
#--------------------------------------------------------------------
- fmtFunc = [ getFmt1, getFmt2, getFmt3, getFmt4, getFmt5, getFmt6,
- getFmt7, getFmt8, getFmt9, getFmt10, getFmt11, getFmt12,
- getFmt13]
+ fmtFunc = [ get_fmt1, get_fmt2, get_fmt3, get_fmt4, get_fmt5, get_fmt6,
+ get_fmt7, get_fmt8, get_fmt9, get_fmt10, get_fmt11, get_fmt12,
+ get_fmt13]
def display_calendar(self,month_map):
if self.year==UNDEF:
@@ -735,7 +729,7 @@ class SingleDate:
elif self.day == UNDEF:
return month_map[self.month]
else:
- return "%02 %s" % (self.day,month_map[self.month])
+ return "%02d %s" % (self.day,month_map[self.month])
elif self.month == UNDEF:
return str(self.year)
elif self.day == UNDEF:
diff --git a/gramps/src/EditPerson.py b/gramps/src/EditPerson.py
index df40ff746..6dda0ee5b 100644
--- a/gramps/src/EditPerson.py
+++ b/gramps/src/EditPerson.py
@@ -871,7 +871,7 @@ def birth_dates_in_order(list):
for i in range(len(list)):
child = list[i]
bday = child.getBirth().getDateObj()
- child_date = sort.build_sort_birth(bday)
+ child_date = sort.build_sort_event(bday)
if (child_date == "99999999"):
continue
if (prev_date <= child_date): # <= allows for twins
@@ -895,13 +895,13 @@ def reorder_child_list(person, list):
return(list)
# Build the person's date string once
- person_bday = sort.build_sort_birth(person.getBirth().getDateObj())
+ person_bday = sort.build_sort_event(person.getBirth().getDateObj())
# First, see if the person needs to be moved forward in the list
index = list.index(person)
target = index
for i in range(index-1, -1, -1):
- other_bday = sort.build_sort_birth(list[i].getBirth().getDateObj())
+ other_bday = sort.build_sort_event(list[i].getBirth().getDateObj())
if (other_bday == "99999999"):
continue;
if (person_bday < other_bday):
@@ -910,7 +910,7 @@ def reorder_child_list(person, list):
# Now try moving to a later position in the list
if (target == index):
for i in range(index, len(list)):
- other_bday = sort.build_sort_birth(list[i].getBirth().getDateObj())
+ other_bday = sort.build_sort_event(list[i].getBirth().getDateObj())
if (other_bday == "99999999"):
continue;
if (person_bday > other_bday):
diff --git a/gramps/src/RelLib.py b/gramps/src/RelLib.py
index 35313333b..ea73b44ef 100644
--- a/gramps/src/RelLib.py
+++ b/gramps/src/RelLib.py
@@ -434,7 +434,7 @@ class Photo(SourceNote):
self.attrlist = list
class ObjectRef:
-
+ """Object reference class"""
def __init__(self,source=None):
self.attrlist = []
if source:
diff --git a/gramps/src/const.py b/gramps/src/const.py
index cac39d1d0..be9676421 100644
--- a/gramps/src/const.py
+++ b/gramps/src/const.py
@@ -90,7 +90,7 @@ gtkrcFile = "%s/gtkrc" % rootDir
#
#-------------------------------------------------------------------------
progName = "gramps"
-version = "0.6.2"
+version = "0.7.0pre"
copyright = "© 2001 Donald N. Allingham"
authors = ["Donald N. Allingham", "David Hampton"]
comments = _("Gramps (Genealogical Research and Analysis Management Programming System) is a personal genealogy program.")
diff --git a/gramps/src/latin_utf8.py b/gramps/src/latin_utf8.py
index b43a79a96..567a6d7c0 100644
--- a/gramps/src/latin_utf8.py
+++ b/gramps/src/latin_utf8.py
@@ -43,10 +43,8 @@ else:
for c in s:
try:
cv = code_to_utf8(1,c)
- except Exception,e:
- from traceback import print_exc
- print_exc()
- cv = ''
+ except Exception:
+ cv = '?'
buff.write(cv)
ans = buff.getvalue()
buff.close()
diff --git a/gramps/src/plugins/ReadGedcom.py b/gramps/src/plugins/ReadGedcom.py
index 581004ccb..66e3629d9 100644
--- a/gramps/src/plugins/ReadGedcom.py
+++ b/gramps/src/plugins/ReadGedcom.py
@@ -33,9 +33,9 @@ import string
import const
import utils
-from gtk import *
-from gnome.ui import *
-from libglade import *
+import gtk
+import gnome.ui
+import libglade
import gnome.mime
ANSEL = 1
@@ -104,14 +104,13 @@ def importData(database, filename):
global callback
global topDialog
global glade_file
- global statusWindow
# add some checking here
if clear_data == 1:
database.new()
- statusTop = GladeXML(glade_file,"status")
+ statusTop = libglade.GladeXML(glade_file,"status")
statusWindow = statusTop.get_widget("status")
statusTop.get_widget("close").set_sensitive(0)
statusTop.signal_autoconnect({
@@ -122,11 +121,11 @@ def importData(database, filename):
g = GedcomParser(database,filename,statusTop)
except IOError,msg:
utils.destroy_passed_object(statusWindow)
- GnomeErrorDialog(_("%s could not be opened\n") % filename + str(msg))
+ gnome.ui.GnomeErrorDialog(_("%s could not be opened\n") % filename + str(msg))
return
except:
utils.destroy_passed_object(statusWindow)
- GnomeErrorDialog(_("%s could not be opened\n") % filename)
+ gnome.ui.GnomeErrorDialog(_("%s could not be opened\n") % filename)
return
g.parse_gedcom_file()
@@ -199,8 +198,8 @@ class GedcomParser:
def update(self,field,text):
field.set_text(text)
- while events_pending():
- mainiteration()
+ while gtk.events_pending():
+ gtk.mainiteration()
def get_next(self):
if self.backoff == 0:
@@ -283,18 +282,18 @@ class GedcomParser:
elif matches[1] == "DATA" or matches[1] == "TEXT":
self.ignore_sub_junk(2)
elif matches[1] == "TITL":
- title = matches[2] + self.parse_continue_data(2)
+ title = matches[2] + self.parse_continue_data()
title = string.replace(title,'\n',' ')
self.source.setTitle(title)
elif matches[1] == "AUTH":
- self.source.setAuthor(matches[2] + self.parse_continue_data(2))
+ self.source.setAuthor(matches[2] + self.parse_continue_data())
elif matches[1] == "PUBL":
- self.source.setPubInfo(matches[2] + self.parse_continue_data(2))
+ self.source.setPubInfo(matches[2] + self.parse_continue_data())
elif matches[1] == "OBJE":
self.ignore_sub_junk(2)
elif matches[1] == "NOTE":
if matches[2] and matches[2][0] != "@":
- note = matches[1] + self.parse_continue_data(1)
+ note = matches[1] + self.parse_continue_data()
self.source.setNote(note)
self.ignore_sub_junk(2)
else:
@@ -346,9 +345,9 @@ class GedcomParser:
self.nmap[matches[1]] = noteobj
text = matches[2][4:]
if text == "":
- noteobj.set(self.parse_continue_data(1))
+ noteobj.set(self.parse_continue_data())
else:
- noteobj.set(text + self.parse_continue_data(1))
+ noteobj.set(text + self.parse_continue_data())
self.parse_note_data(1)
elif matches[2] == "OBJE":
self.ignore_sub_junk(2)
@@ -417,7 +416,7 @@ class GedcomParser:
self.ignore_sub_junk(2)
elif matches[1] == "ADDR":
self.addr = Address()
- self.addr.setStreet(matches[2] + self.parse_continue_data(2))
+ self.addr.setStreet(matches[2] + self.parse_continue_data())
self.parse_address(self.addr,2)
elif matches[1] == "CHIL":
mrel,frel = self.parse_ftw_relations(2)
@@ -448,7 +447,7 @@ class GedcomParser:
self.parse_family_object(2)
elif matches[1] == "NOTE":
if matches[2] and matches[2][0] != "@":
- note = matches[1] + self.parse_continue_data(1)
+ note = matches[1] + self.parse_continue_data()
self.family.setNote(note)
self.ignore_sub_junk(2)
else:
@@ -514,7 +513,7 @@ class GedcomParser:
self.parse_person_object(2)
elif matches[1] == "NOTE":
if not string.strip(matches[2]) or matches[2] and matches[2][0] != "@":
- note = matches[2] + self.parse_continue_data(1)
+ note = matches[2] + self.parse_continue_data()
self.person.setNote(note)
self.ignore_sub_junk(2)
else:
@@ -558,7 +557,7 @@ class GedcomParser:
self.parse_residence(addr,2)
elif matches[1] == "ADDR":
addr = Address()
- addr.setStreet(matches[2] + self.parse_continue_data(2))
+ addr.setStreet(matches[2] + self.parse_continue_data())
self.parse_address(addr,2)
self.person.addAddress(addr)
elif matches[1] == "BIRT":
@@ -631,7 +630,7 @@ class GedcomParser:
return note
elif matches[1] == "NOTE":
if not string.strip(matches[2]) or matches[2] and matches[2][0] != "@":
- note = matches[2] + self.parse_continue_data(level+1)
+ note = matches[2] + self.parse_continue_data()
self.parse_note_data(level+1)
else:
self.ignore_sub_junk(level+1)
@@ -653,7 +652,7 @@ class GedcomParser:
type = matches[1]
elif matches[1] == "NOTE":
if not string.strip(matches[2]) or matches[2] and matches[2][0] != "@":
- note = matches[2] + self.parse_continue_data(level+1)
+ note = matches[2] + self.parse_continue_data()
self.parse_note_data(level+1)
else:
self.ignore_sub_junk(level+1)
@@ -674,7 +673,7 @@ class GedcomParser:
elif matches[1] == "FILE":
file = matches[2]
elif matches[1] == "NOTE":
- note = matches[2] + self.parse_continue_data(level+1)
+ note = matches[2] + self.parse_continue_data()
elif matches[1][0] == "_":
self.ignore_sub_junk(level+1)
elif int(matches[0]) < level:
@@ -720,7 +719,7 @@ class GedcomParser:
elif matches[1] == "FILE":
file = matches[2]
elif matches[1] == "NOTE":
- note = matches[2] + self.parse_continue_data(level+1)
+ note = matches[2] + self.parse_continue_data()
elif int(matches[0]) < level:
self.backup()
break
@@ -759,7 +758,7 @@ class GedcomParser:
elif matches[1] == "FILE":
file = matches[2]
elif matches[1] == "NOTE":
- note = matches[2] + self.parse_continue_data(level+1)
+ note = matches[2] + self.parse_continue_data()
elif int(matches[0]) < level:
self.backup()
break
@@ -792,7 +791,7 @@ class GedcomParser:
elif matches[1] == "DATE":
address.setDateObj(self.extract_date(matches[2]))
elif matches[1] == "ADDR":
- address.setStreet(matches[2] + self.parse_continue_data(2))
+ address.setStreet(matches[2] + self.parse_continue_data())
self.parse_address(address,level+1)
elif matches[1] in ["AGE","AGNC","CAUS","STAT","TEMP","OBJE","TYPE"]:
self.ignore_sub_junk(level+1)
@@ -808,7 +807,7 @@ class GedcomParser:
pass
elif matches[1] == "NOTE":
if not string.strip(matches[2]) or matches[2] and matches[2][0] != "@":
- note = matches[1] + self.parse_continue_data(1)
+ note = matches[1] + self.parse_continue_data()
address.setNote(note)
self.ignore_sub_junk(2)
else:
@@ -830,7 +829,7 @@ class GedcomParser:
return
elif matches[1] in [ "ADDR", "ADR1", "ADR2" ]:
val = address.getStreet()
- data = self.parse_continue_data(level+1)
+ data = self.parse_continue_data()
if first == 0:
val = "%s %s" % (matches[2],data)
first = 1
@@ -877,7 +876,7 @@ class GedcomParser:
s = self.db.findSource(ref,self.smap)
source_ref.setBase(s)
s.setTitle('Imported Source #%d' % self.localref)
- s.setNote(matches[2] + self.parse_continue_data(1))
+ s.setNote(matches[2] + self.parse_continue_data())
self.ignore_sub_junk(2)
else:
source_ref.setBase(self.db.findSource(matches[2],self.smap))
@@ -900,10 +899,10 @@ class GedcomParser:
event.setPlace(place)
self.ignore_sub_junk(level+1)
elif matches[1] == "CAUS":
- info = matches[2] + self.parse_continue_data(level+1)
+ info = matches[2] + self.parse_continue_data()
event.setCause(info)
elif matches[1] == "NOTE":
- info = matches[2] + self.parse_continue_data(level+1)
+ info = matches[2] + self.parse_continue_data()
if note == "":
note = info
else:
@@ -940,7 +939,7 @@ class GedcomParser:
s = self.db.findSource(ref,self.smap)
source_ref.setBase(s)
s.setTitle('Imported Source #%d' % self.localref)
- s.setNote(matches[2] + self.parse_continue_data(1))
+ s.setNote(matches[2] + self.parse_continue_data())
self.ignore_sub_junk(2)
else:
source_ref.setBase(self.db.findSource(matches[2],self.smap))
@@ -969,10 +968,10 @@ class GedcomParser:
event.setPlace(place)
self.ignore_sub_junk(level+1)
elif matches[1] == "CAUS":
- info = matches[2] + self.parse_continue_data(level+1)
+ info = matches[2] + self.parse_continue_data()
event.setCause(info)
elif matches[1] == "NOTE":
- info = matches[2] + self.parse_continue_data(level+1)
+ info = matches[2] + self.parse_continue_data()
if note == "":
note = info
else:
@@ -1029,7 +1028,7 @@ class GedcomParser:
s = self.db.findSource(ref,self.smap)
source_ref.setBase(s)
s.setTitle('Imported Source #%d' % self.localref)
- s.setNote(matches[2] + self.parse_continue_data(1))
+ s.setNote(matches[2] + self.parse_continue_data())
self.ignore_sub_junk(2)
else:
source_ref.setBase(self.db.findSource(matches[2],self.smap))
@@ -1041,7 +1040,7 @@ class GedcomParser:
attr.setValue(val)
self.ignore_sub_junk(level+1)
elif matches[1] == "NOTE":
- info = matches[2] + self.parse_continue_data(level+1)
+ info = matches[2] + self.parse_continue_data()
if note == "":
note = info
else:
@@ -1082,7 +1081,7 @@ class GedcomParser:
ref = "gsr%d" % self.localref
s = self.db.findSource(ref,self.smap)
source_ref.setBase(s)
- note = matches[2] + self.parse_continue_data(1)
+ note = matches[2] + self.parse_continue_data()
s.setTitle('Imported Source #%d' % self.localref)
s.setNote(note)
self.ignore_sub_junk(2)
@@ -1103,7 +1102,7 @@ class GedcomParser:
self.ignore_sub_junk(level+1)
elif matches[1] == "NOTE":
if not string.strip(matches[2]) or matches[2] and matches[2][0] != "@":
- note = matches[1] + self.parse_continue_data(1)
+ note = matches[1] + self.parse_continue_data()
event.setNote(note)
self.ignore_sub_junk(2)
else:
@@ -1125,7 +1124,7 @@ class GedcomParser:
self.backup()
return
elif matches[1] == "PAGE":
- source.setPage(matches[2] + self.parse_continue_data(level+1))
+ source.setPage(matches[2] + self.parse_continue_data())
elif matches[1] == "DATA":
date,text = self.parse_source_data(level+1)
d = Date.Date()
@@ -1142,7 +1141,7 @@ class GedcomParser:
source.setConfidence(val)
elif matches[1] == "NOTE":
if not string.strip(matches[2]) or matches[2] and matches[2][0] != "@":
- note = matches[1] + self.parse_continue_data(1)
+ note = matches[1] + self.parse_continue_data()
source.setComments(note)
self.ignore_sub_junk(2)
else:
@@ -1169,7 +1168,7 @@ class GedcomParser:
date = matches[2]
elif matches[1] == "TEXT":
- note = matches[2] + self.parse_continue_data(level+1)
+ note = matches[2] + self.parse_continue_data()
else:
self.barf(level+1)
@@ -1223,7 +1222,7 @@ class GedcomParser:
self.parse_source_reference(source_ref,level+1)
elif matches[1][0:4] == "NOTE":
if matches[2] and matches[2][0] != "@":
- note = matches[2] + self.parse_continue_data(1)
+ note = matches[2] + self.parse_continue_data()
name.setNote(note)
self.ignore_sub_junk(2)
else:
@@ -1301,7 +1300,7 @@ class GedcomParser:
date = self.parse_date(2)
date.date = matches[2]
elif matches[1] == "NOTE":
- note = matches[2] + self.parse_continue_data(2)
+ note = matches[2] + self.parse_continue_data()
elif matches[1][0] == "_":
self.ignore_sub_junk(2)
else:
@@ -1381,7 +1380,7 @@ class GedcomParser:
elif matches[1] != "FORM":
self.barf(level+1)
- def parse_continue_data(self,level):
+ def parse_continue_data(self):
data = ""
while 1:
matches = self.get_next()
@@ -1484,7 +1483,7 @@ def readData(database,active_person,cb):
"on_ok_clicked" : on_ok_clicked
}
- topDialog = GladeXML(glade_file,"gedcomImport")
+ topDialog = libglade.GladeXML(glade_file,"gedcomImport")
topDialog.signal_autoconnect(dic)
topDialog.get_widget("gedcomImport").show()
diff --git a/gramps/src/plugins/ReadNative.py b/gramps/src/plugins/ReadNative.py
index a743f183c..18c652af7 100644
--- a/gramps/src/plugins/ReadNative.py
+++ b/gramps/src/plugins/ReadNative.py
@@ -89,5 +89,5 @@ def on_ok_clicked(obj):
#------------------------------------------------------------------------
from Plugins import register_import
-register_import(readData,_("Import from Gramps"))
+register_import(readData,_("Import from GRAMPS"))
diff --git a/gramps/src/plugins/WriteGedcom.py b/gramps/src/plugins/WriteGedcom.py
index 53e09bde5..3a4f02f6f 100644
--- a/gramps/src/plugins/WriteGedcom.py
+++ b/gramps/src/plugins/WriteGedcom.py
@@ -30,16 +30,59 @@ import intl
import Date
_ = intl.gettext
-from gtk import *
-from gnome.ui import *
-from libglade import *
+import gtk
+import gnome.ui
+import libglade
-import const
from latin_ansel import latin_to_ansel
from latin_utf8 import latin_to_utf8
-_hmonth = [ "", "ELUL", "TSH", "CSH", "KSL", "TVT", "SHV", "ADR",
- "ADS", "NSN", "IYR", "SVN", "TMZ", "AAV", "ELL" ]
+#-------------------------------------------------------------------------
+#
+# GEDCOM feature support
+#
+#-------------------------------------------------------------------------
+_ADOPT_NONE = 0
+_ADOPT_EVENT = 1
+_ADOPT_FTW = 2
+_ADOPT_LEGACY = 3
+_ADOPT_PEDI = 4
+_ADOPT_EVENT_EXT = 5
+
+_CONC_OK = 0
+_CONC_BROKEN = 1
+
+_ALT_NONE = 0
+_ALT_STD = 1
+_ALT_ALIAS = 2
+_ALT_AKA = 3
+_ALT_EVENT_AKA = 4
+
+_CAL_NO = 0
+_CAL_YES = 1
+
+targets = [
+ ("Standard GEDCOM 5.5", "GEDCOM 5.5", _ADOPT_EVENT_EXT, _CONC_OK, _ALT_STD, _CAL_YES),
+ ("Brother's Keeper", "BROSKEEP", _ADOPT_NONE, _CONC_BROKEN, _ALT_NONE, _CAL_NO),
+ ("Family Origins", "FamilyOrigins", _ADOPT_EVENT, _CONC_BROKEN, _ALT_EVENT_AKA, _CAL_NO),
+ ("Family Tree Maker", "FTW", _ADOPT_FTW, _CONC_BROKEN, _ALT_ALIAS, _CAL_NO),
+ ("Ftree", "", _ADOPT_NONE, _CONC_BROKEN, _ALT_NONE, _CAL_NO),
+ ("GeneWeb", "", _ADOPT_NONE, _CONC_OK, _ALT_NONE, _CAL_YES),
+ ("Legacy", "Legacy", _ADOPT_LEGACY, _CONC_BROKEN, _ALT_STD, _CAL_NO),
+ ("Personal Ancestral File", "PAF", _ADOPT_PEDI, _CONC_OK, _ALT_AKA, _CAL_NO),
+ ("Reunion", "REUNION", _ADOPT_NONE, _CONC_BROKEN, _ALT_NONE, _CAL_NO),
+ ("Visual Genealogie", "", _ADOPT_NONE, _CONC_BROKEN, _ALT_NONE, _CAL_NO),
+ ]
+
+#-------------------------------------------------------------------------
+#
+# Calendar month names
+#
+#-------------------------------------------------------------------------
+
+_hmonth = [
+ "", "ELUL", "TSH", "CSH", "KSL", "TVT", "SHV", "ADR",
+ "ADS", "NSN", "IYR", "SVN", "TMZ", "AAV", "ELL" ]
_fmonth = [
"", "VEND", "BRUM", "FRIM", "NIVO", "PLUV", "VENT",
@@ -49,86 +92,93 @@ _month = [
"", "JAN", "FEB", "MAR", "APR", "MAY", "JUN",
"JUL", "AUG", "SEP", "OCT", "NOV", "DEC" ]
+_calmap = {
+ Date.HEBREW : (_hmonth, '@#HEBREW@'),
+ Date.FRENCH : (_fmonth, '@#FRENCH R@'),
+ Date.JULIAN : (_month, '@#JULIAN@'),
+ }
+
+
#-------------------------------------------------------------------------
#
# Filters
#
#-------------------------------------------------------------------------
-def entire_database(database,person):
+def entire_database(database,person,private):
plist = database.getPersonMap().values()
flist = database.getFamilyMap().values()
slist = database.getSourceMap().values()
return (plist,flist,slist)
-def active_person_descendants(database,person):
+def active_person_descendants(database,person,private):
plist = []
flist = []
slist = []
- descend(person,plist,flist,slist)
+ descend(person,plist,flist,slist,private)
return (plist,flist,slist)
-def active_person_ancestors_and_descendants(database,person):
+def active_person_ancestors_and_descendants(database,person,private):
plist = []
flist = []
slist = []
- descend(person,plist,flist,slist)
- ancestors(person,plist,flist,slist)
+ descend(person,plist,flist,slist,private)
+ ancestors(person,plist,flist,slist,private)
return (plist,flist,slist)
-def active_person_ancestors(database,person):
+def active_person_ancestors(database,person,private):
plist = []
flist = []
slist = []
- ancestors(person,plist,flist,slist)
+ ancestors(person,plist,flist,slist,private)
return (plist,flist,slist)
-def interconnected(database,person):
+def interconnected(database,person,private):
plist = []
flist = []
slist = []
- walk(person,plist,flist,slist)
+ walk(person,plist,flist,slist,private)
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
-def descend(person,plist,flist,slist):
+def descend(person,plist,flist,slist,private):
if person == None or person in plist:
return
plist.append(person)
- add_persons_sources(person)
+ add_persons_sources(person,slist,private)
for family in person.getFamilyList():
- add_familys_sources(family,slist)
+ add_familys_sources(family,slist,private)
flist.append(family)
father = family.getFather()
mother = family.getMother()
if father != None and father not in plist:
plist.append(father)
- add_persons_sources(father,slist)
+ add_persons_sources(father,slist,private)
if mother != None and mother not in plist:
plist.append(mother)
- add_persons_sources(mother,slist)
+ add_persons_sources(mother,slist,private)
for child in family.getChildList():
- descend(child,plist,flist,slist)
+ descend(child,plist,flist,slist,private)
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
-def ancestors(person,plist,flist,slist):
+def ancestors(person,plist,flist,slist,private):
if person == None or person in plist:
return
plist.append(person)
- add_persons_sources(person,slist)
+ add_persons_sources(person,slist,private)
family = person.getMainFamily()
if family == None or family in flist:
return
- add_familys_sources(family,slist)
- family_list.append(family,flist)
- ancestors(family.getMother(),plist,flist,slist)
- ancestors(family.getFather(),plist,flist,slist)
+ add_familys_sources(family,slist,private)
+ flist.append(family)
+ ancestors(family.getMother(),plist,flist,slist,private)
+ ancestors(family.getFather(),plist,flist,slist,private)
#-------------------------------------------------------------------------
@@ -136,11 +186,11 @@ def ancestors(person,plist,flist,slist):
#
#
#-------------------------------------------------------------------------
-def walk(person,plist,flist,slist):
+def walk(person,plist,flist,slist,private):
if person == None or person in plist:
return
plist.append(person)
- add_persons_sources(person,slist)
+ add_persons_sources(person,slist,private)
families = person.getFamilyList()
families.append(person.getMainFamily())
for f in person.getAltFamilyList():
@@ -148,19 +198,40 @@ def walk(person,plist,flist,slist):
for family in families:
if family == None or family in flist:
continue
- add_familys_sources(family,slist)
+ add_familys_sources(family,slist,private)
flist.append(family)
- walk(family.getFather(),plist,flist,slist)
- walk(family.getMother(),plist,flist,slist)
+ walk(family.getFather(),plist,flist,slist,private)
+ walk(family.getMother(),plist,flist,slist,private)
for child in family.getChildList():
- walk(child,plist,flist,slist)
+ walk(child,plist,flist,slist,private)
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
-def add_persons_sources(person,slist):
+def add_familys_sources(family,slist,private):
+ for event in family.getEventList():
+ if private and event.getPrivacy():
+ continue
+ for source_ref in event.getSourceRefList():
+ sbase = source_ref.getBase()
+ if sbase != None and sbase not in slist:
+ slist.append(sbase)
+ for attr in family.getAttributeList():
+ if private and attr.getPrivacy():
+ continue
+ for source_ref in attr.getSourceRefList():
+ sbase = source_ref.getBase()
+ if sbase != None and sbase not in slist:
+ slist.append(sbase)
+
+#-------------------------------------------------------------------------
+#
+#
+#
+#-------------------------------------------------------------------------
+def add_persons_sources(person,slist,private):
elist = person.getEventList()[:]
elist.append(person.getBirth())
@@ -186,7 +257,7 @@ def add_persons_sources(person,slist):
sbase = source_ref.getBase()
if sbase != None and sbase not in slist:
slist.append(sbase)
- for name in person.getNameList + [ person.getPrimaryName() ]:
+ for name in person.getNameList + [person.getPrimaryName()]:
if private and name.getPrivacy():
continue
for source_ref in name.getSourceRefList():
@@ -194,27 +265,6 @@ def add_persons_sources(person,slist):
if sbase != None and sbase not in slist:
slist.append(sbase)
-#-------------------------------------------------------------------------
-#
-#
-#
-#-------------------------------------------------------------------------
-def add_familys_sources(family,slist):
- for event in family.getEventList():
- if private and event.getPrivacy():
- continue
- for source_ref in event.getSourceRefList():
- sbase = source_ref.getBase()
- if sbase != None and sbase not in slist:
- slist.append(sbase)
- for attr in family.getAttributeList():
- if private and attr.getPrivacy():
- continue
- for source_ref in attr.getSourceRefList():
- sbase = source_ref.getBase()
- if sbase != None and sbase not in slist:
- slist.append(sbase)
-
#-------------------------------------------------------------------------
#
#
@@ -306,24 +356,24 @@ def ged_subdate(date):
if date.month == -1:
retval = str(date.year)
elif date.year == -1:
- retval = "(%s)" % SingleDate.emname[date.month]
+ retval = "(%s)" % Date.SingleDate.emname[date.month]
else:
- retval = "%s %d" % (SingleDate.emname[date.month],date.year)
+ retval = "%s %d" % (Date.SingleDate.emname[date.month],date.year)
elif date.month == -1:
retval = str(date.year)
else:
- month = SingleDate.emname[date.month]
+ month = Date.SingleDate.emname[date.month]
if date.year == -1:
retval = "(%d %s)" % (date.day,month)
else:
retval = "%d %s %d" % (date.day,month,date.year)
- if date.mode == SingleDate.about:
+ if date.mode == Date.SingleDate.about:
retval = "ABT %s" % retval
- if date.mode == SingleDate.before:
+ if date.mode == Date.SingleDate.before:
retval = "BEF %s" % retval
- elif date.mode == SingleDate.after:
+ elif date.mode == Date.SingleDate.after:
retval = "AFT %s" % retval
return retval
@@ -342,49 +392,69 @@ def writeData(database,person):
#
#-------------------------------------------------------------------------
class GedcomWriter:
+ """Writes a GEDCOM file from the passed database"""
+
def __init__(self,db,person):
self.db = db
self.person = person
self.restrict = 1
self.private = 1
self.cnvtxt = latin_to_ansel
- self.people_list = []
- self.source_list = []
- self.family_list = []
- self.adopt_mode = 0
-
+ self.plist = []
+ self.slist = []
+ self.flist = []
+ self.adopt = _ADOPT_EVENT
+ self.fidval = 0
+ self.fidmap = {}
+ self.pidval = 0
+ self.pidmap = {}
+ self.sidval = 0
+ self.sidmap = {}
+
glade_file = "%s/gedcomexport.glade" % os.path.dirname(__file__)
- self.topDialog = GladeXML(glade_file,"gedcomExport")
+ self.topDialog = libglade.GladeXML(glade_file,"gedcomExport")
self.topDialog.signal_autoconnect({
"destroy_passed_object" : utils.destroy_passed_object,
"on_ok_clicked" : self.on_ok_clicked
})
filter_obj = self.topDialog.get_widget("filter")
- myMenu = GtkMenu()
- menuitem = GtkMenuItem(_("Entire Database"))
+ myMenu = gtk.GtkMenu()
+ menuitem = gtk.GtkMenuItem(_("Entire Database"))
myMenu.append(menuitem)
menuitem.set_data("filter",entire_database)
menuitem.show()
name = person.getPrimaryName().getRegularName()
- menuitem = GtkMenuItem(_("Ancestors of %s") % name)
+ menuitem = gtk.GtkMenuItem(_("Ancestors of %s") % name)
myMenu.append(menuitem)
menuitem.set_data("filter",active_person_ancestors)
menuitem.show()
- menuitem = GtkMenuItem(_("Descendants of %s") % name)
+ menuitem = gtk.GtkMenuItem(_("Descendants of %s") % name)
myMenu.append(menuitem)
menuitem.set_data("filter",active_person_descendants)
menuitem.show()
- menuitem = GtkMenuItem(_("Ancestors and Descendants of %s") % name)
+ menuitem = gtk.GtkMenuItem(_("Ancestors and Descendants of %s") % name)
myMenu.append(menuitem)
menuitem.set_data("filter",active_person_ancestors_and_descendants)
menuitem.show()
- menuitem = GtkMenuItem(_("People somehow connected to %s") % name)
+ menuitem = gtk.GtkMenuItem(_("People somehow connected to %s") % name)
myMenu.append(menuitem)
menuitem.set_data("filter",interconnected)
menuitem.show()
filter_obj.set_menu(myMenu)
+ self.filter_menu = myMenu
+
+ target_obj = self.topDialog.get_widget("target")
+ myMenu = gtk.GtkMenu()
+ for (name,dest,adopt,conc,alt,cal) in targets:
+ menuitem = gtk.GtkMenuItem(name)
+ myMenu.append(menuitem)
+ menuitem.set_data("data",(dest,adopt,conc,alt,cal))
+ menuitem.show()
+
+ target_obj.set_menu(myMenu)
+ self.target_menu = myMenu
self.topDialog.get_widget("gedcomExport").show()
@@ -393,8 +463,9 @@ class GedcomWriter:
self.restrict = self.topDialog.get_widget("restrict").get_active()
self.private = self.topDialog.get_widget("private").get_active()
- filter_obj = self.topDialog.get_widget("filter").get_menu().get_active()
- filter = filter_obj.get_data("filter")
+ filter = self.filter_menu.get_active().get_data("filter")
+ act_tgt = self.target_menu.get_active()
+ (self.dest,self.adopt,self.conc,self.altname,self.cal) = act_tgt.get_data("data")
if self.topDialog.get_widget("ansel").get_active():
self.cnvtxt = latin_to_ansel
@@ -403,13 +474,13 @@ class GedcomWriter:
name = self.topDialog.get_widget("filename").get_text()
- (self.people_list,self.family_list,self.source_list) = filter(self.db,self.person)
+ (self.plist,self.flist,self.slist) = filter(self.db,self.person,self.private)
utils.destroy_passed_object(obj)
glade_file = "%s/gedcomexport.glade" % os.path.dirname(__file__)
- self.exprogress = GladeXML(glade_file,"exportprogress")
+ self.exprogress = libglade.GladeXML(glade_file,"exportprogress")
self.exprogress.signal_autoconnect({
"on_close_clicked" : utils.destroy_passed_object
})
@@ -433,11 +504,11 @@ class GedcomWriter:
self.g = open(filename,"w")
except IOError,msg:
msg = "%s\n%s" % (_("Could not create %s") % filename,str(msg))
- GnomeErrorDialog(msg)
+ gnome.ui.GnomeErrorDialog(msg)
self.progress.destroy()
return
except:
- GnomeErrorDialog(_("Could not create %s") % filename)
+ gnome.ui.GnomeErrorDialog(_("Could not create %s") % filename)
self.progress.destroy()
return
@@ -447,7 +518,8 @@ class GedcomWriter:
self.g.write("1 SOUR GRAMPS\n")
self.g.write("2 VERS " + const.version + "\n")
self.g.write("2 NAME Gramps\n")
- self.g.write("1 DEST GRAMPS\n")
+ 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:
self.g.write("1 CHAR ANSEL\n");
@@ -489,28 +561,28 @@ class GedcomWriter:
self.g.write('1 ADDR Not Provided\n')
self.g.write('2 CONT Not Provided\n')
- self.people_list.sort(sortById)
- nump = float(len(self.people_list))
+ self.plist.sort(sortById)
+ nump = float(len(self.plist))
index = 0.0
- for person in self.people_list:
+ for person in self.plist:
self.write_person(person)
index = index + 1
self.pbar.set_value((100*index)/nump)
- while(events_pending()):
- mainiteration()
+ while(gtk.events_pending()):
+ gtk.mainiteration()
self.pbar.set_value(100.0)
- nump = float(len(self.family_list))
+ nump = float(len(self.flist))
index = 0.0
- for family in self.family_list:
- self.g.write("0 @F%s@ FAM\n" % family.getId())
+ for family in self.flist:
+ self.g.write("0 @%s@ FAM\n" % self.fid(family.getId()))
person = family.getFather()
if person != None:
- self.g.write("1 HUSB @I%s@\n" % person.getId())
+ self.g.write("1 HUSB @%s@\n" % self.pid(person.getId()))
person = family.getMother()
if person != None:
- self.g.write("1 WIFE @I%s@\n" % person.getId())
+ self.g.write("1 WIFE @%s@\n" % self.pid(person.getId()))
father = family.getFather()
mother = family.getMother()
@@ -533,8 +605,8 @@ class GedcomWriter:
self.dump_event_stats(event)
for person in family.getChildList():
- self.g.write("1 CHIL @I%s@\n" % person.getId())
- if self.adopt_mode == 2:
+ self.g.write("1 CHIL @%s@\n" % self.pid(person.getId()))
+ if self.adopt == _ADOPT_FTW:
if person.getMainFamily() == family:
self.g.write('2 _FREL Natural\n')
self.g.write('2 _MREL Natural\n')
@@ -544,7 +616,7 @@ class GedcomWriter:
self.g.write('2 _FREL %s\n' % f[2])
self.g.write('2 _MREL %s\n' % f[1])
break
- if self.adopt_mode == 3:
+ if self.adopt == _ADOPT_LEGACY:
for f in person.getAltFamilyList():
if f[0] == family:
self.g.write('2 _STAT %s\n' % f[2])
@@ -552,14 +624,14 @@ class GedcomWriter:
index = index + 1
self.fbar.set_value((100*index)/nump)
- while(events_pending()):
- mainiteration()
+ while(gtk.events_pending()):
+ gtk.mainiteration()
self.fbar.set_value(100.0)
- nump = float(len(self.source_list))
+ nump = float(len(self.slist))
index = 0.0
- for source in self.source_list:
- self.g.write("0 @S%s@ SOUR\n" % source.getId())
+ for source in self.slist:
+ self.g.write("0 @%s@ SOUR\n" % self.sid(source.getId()))
if source.getTitle() != "":
self.g.write("1 TITL %s\n" % fmtline(self.cnvtxt(source.getTitle()),248,1))
if source.getAuthor() != "":
@@ -571,22 +643,24 @@ class GedcomWriter:
if source.getCallNumber() != "":
self.g.write("1 CALN %s\n" % self.cnvtxt(source.getCallNumber()))
if source.getNote() != "":
- write_long_text(g,"NOTE",1,source.getNote())
+ self.write_long_text("NOTE",1,source.getNote())
index = index + 1
self.sbar.set_value((100*index)/nump)
- while(events_pending()):
- mainiteration()
+ while(gtk.events_pending()):
+ gtk.mainiteration()
self.sbar.set_value(100.0)
self.g.write("0 TRLR\n")
self.g.close()
def write_person(self,person):
- self.g.write("0 @I%s@ INDI\n" % person.getId())
+ self.g.write("0 @%s@ INDI\n" % self.pid(person.getId()))
self.write_person_name(person.getPrimaryName(),person.getNickName())
-# for name in person.getAlternateNames():
-# self.write_person_name(name,"")
+
+ if self.altname == _ALT_STD:
+ for name in person.getAlternateNames():
+ self.write_person_name(name,"")
if person.getGender() == Person.male:
self.g.write("1 SEX M\n")
@@ -620,7 +694,7 @@ class GedcomWriter:
val = const.personalConstantEvents[name]
else:
val = ""
- if self.adopt_mode == 1 and val == "ADOP":
+ if self.adopt == _ADOPT_EVENT and val == "ADOP":
ad = 1
self.g.write('1 ADOP\n')
fam = None
@@ -631,7 +705,7 @@ class GedcomWriter:
fam = f[0]
break
if fam:
- self.g.write('2 FAMC @F%s@\n' % fam.getId())
+ self.g.write('2 FAMC @%s@\n' % self.fid(fam.getId()))
if mrel == frel:
self.g.write('3 ADOP BOTH\n')
elif mrel == "adopted":
@@ -647,7 +721,7 @@ class GedcomWriter:
self.dump_event_stats(event)
- if self.adopt_mode == 1 and ad == 0 and len(person.getAltFamilyList()) != 0:
+ if self.adopt == _ADOPT_EVENT and ad == 0 and len(person.getAltFamilyList()) != 0:
self.g.write('1 ADOP\n')
fam = None
for f in person.getAltFamilyList():
@@ -657,7 +731,7 @@ class GedcomWriter:
fam = f[0]
break
if fam:
- self.g.write('2 FAMC @F%s@\n' % fam.getId())
+ self.g.write('2 FAMC @%s@\n' % self.fid(fam.getId()))
if mrel == frel:
self.g.write('3 ADOP BOTH\n')
elif mrel == "adopted":
@@ -706,18 +780,18 @@ class GedcomWriter:
self.write_source_ref(3,srcref)
family = person.getMainFamily()
- if family != None and family in self.family_list:
- self.g.write("1 FAMC @F%s@\n" % family.getId())
+ if family != None and family in self.flist:
+ self.g.write("1 FAMC @%s@\n" % self.fid(family.getId()))
for family in person.getAltFamilyList():
- self.g.write("1 FAMC @F%s@\n" % family[0].getId())
- if self.adopt_mode == 0:
+ self.g.write("1 FAMC @%s@\n" % self.fid(family[0].getId()))
+ if self.adopt == _ADOPT_PEDI:
if string.lower(family[1]) == "adopted":
self.g.write("2 PEDI Adopted\n")
for family in person.getFamilyList():
- if family != None and family in self.family_list:
- self.g.write("1 FAMS @F%s@\n" % family.getId())
+ if family != None and family in self.flist:
+ self.g.write("1 FAMS @%s@\n" % self.fid(family.getId()))
for url in person.getUrlList():
self.g.write('1 OBJE\n')
@@ -731,17 +805,24 @@ class GedcomWriter:
self.write_long_text("NOTE",1,person.getNote())
def write_long_text(self,tag,level,note):
+ if self.conc == _CONC_OK:
+ self.write_conc_ok(tag,level,note)
+ else:
+ self.write_conc_broken(tag,level,note)
+
+ def write_conc_ok(self,tag,level,note):
prefix = "%d %s" % (level,tag)
textlines = string.split(note,'\n')
if len(note) == 0:
- g.write("%s\n" % prefix)
+ self.g.write("%s\n" % prefix)
else:
for line in textlines:
ll = len(line)
while ll > 0:
brkpt = 70
if ll > brkpt:
- while (ll > brkpt and line[brkpt] in string.whitespace):
+ while (ll > brkpt and \
+ (line[brkpt] in string.whitespace or line[brkpt+1] in string.whitespace)):
brkpt = brkpt+1
if ll == brkpt:
self.g.write("%s %s\n" % (prefix,line))
@@ -753,9 +834,37 @@ class GedcomWriter:
self.g.write("%s %s\n" % (prefix,line))
line = ""
if len(line) > 0:
- prefix = "%d CONC" % (level + 1)
+ prefix = "%d CONC" % (level+1)
else:
- prefix = "%d CONT" % (level + 1)
+ prefix = "%d CONT" % (level+1)
+ ll = len(line)
+
+ def write_conc_broken(self,tag,level,note):
+ prefix = "%d %s" % (level,tag)
+ textlines = string.split(note,'\n')
+ if len(note) == 0:
+ self.g.write("%s\n" % prefix)
+ else:
+ for line in textlines:
+ ll = len(line)
+ while ll > 0:
+ brkpt = 70
+ if ll > brkpt:
+ while (ll > brkpt and line[brkpt] not in string.whitespace):
+ brkpt = brkpt+1
+ if ll == brkpt:
+ self.g.write("%s %s\n" % (prefix,line))
+ line = ''
+ else:
+ self.g.write("%s %s\n" % (prefix,line[0:brkpt+1]))
+ line = line[brkpt+1:]
+ else:
+ self.g.write("%s %s\n" % (prefix,line))
+ line = ""
+ if len(line) > 0:
+ prefix = "%d CONC" % (level+1)
+ else:
+ prefix = "%d CONT" % (level+1)
ll = len(line)
def dump_event_stats(self,event):
@@ -777,34 +886,33 @@ class GedcomWriter:
start = date.get_start_date()
if date.get_calendar() == Date.GREGORIAN:
- cal = ''
if date.isRange():
val = "FROM %s TO %s" % (make_date(start,_month),
make_date(date.get_stop_date(),_month))
else:
val = make_date(start,_month)
- elif date.get_calendar() == Date.HEBREW:
- cal = '@#HEBREW@ '
- if date.isRange():
- val = "FROM %s TO %s" % (make_date(start,_hmonth),
- make_date(date.get_stop_date(),_hmonth))
- else:
- val = make_date(start,_hmonth)
- elif date.get_calendar() == Date.FRENCH:
- cal = '@#FRENCH R@ '
- if date.isRange():
- val = "FROM %s TO %s" % (make_date(start,_fmonth),
- make_date(date.get_stop_date(),_fmonth))
- else:
- val = make_date(start,_fmonth)
+ self.g.write("%s %s\n" % (prefix,val))
else:
- cal = '@#JULIAN@ '
- if date.isRange():
- val = "FROM %s TO %s" % (make_date(start,_month),
- make_date(date.get_stop_date(),_month))
+ if self.cal == _CAL_YES:
+ (mlist,cal) = _calmap[date.get_calendar()]
+ if date.isRange():
+ stop = date.get_stop_date()
+ val = "FROM %s TO %s" % (make_date(start,mlist),
+ make_date(stop,mlist))
+ else:
+ val = make_date(start,_hmonth)
+ self.g.write("%s %s %s\n" % (prefix,cal,val))
else:
- val = make_date(start,_month)
- self.g.write("%s %s%s\n" % (prefix,cal,val))
+ mydate = Date.Date(date)
+ mydate.set_calendar(Date.GREGORIAN)
+ start = mydate.get_start_date()
+ if mydate.isRange():
+ stop = mydate.get_stop_date()
+ val = "FROM %s TO %s" % (make_date(start,_month),
+ make_date(stop,_month))
+ else:
+ val = make_date(start,_month)
+ self.g.write("%s %s\n" % (prefix,val))
def write_person_name(self,name,nick):
firstName = self.cnvtxt(name.getFirstName())
@@ -834,7 +942,7 @@ class GedcomWriter:
def write_source_ref(self,level,ref):
if ref.getBase() == None:
return
- self.g.write("%d SOUR @S%s@\n" % (level,ref.getBase().getId()))
+ 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()))
@@ -849,10 +957,8 @@ class GedcomWriter:
self.write_long_text("NOTE",level+1,ref.getComments())
def probably_alive(self,person):
-
if person == None:
return 1
-
if self.restrict == 0:
return 0
@@ -869,6 +975,32 @@ class GedcomWriter:
return 0
return 1
+ def fid(self,id):
+ if self.fidmap.has_key(id):
+ return self.fidmap[id]
+ else:
+ val = "F%05d" % self.fidval
+ self.fidval = self.fidval + 1
+ self.fidmap[id] = val
+ return val
+
+ def pid(self,id):
+ if self.pidmap.has_key(id):
+ return self.pidmap[id]
+ else:
+ val = "I%05d" % self.pidval
+ self.pidval = self.pidval + 1
+ self.pidmap[id] = val
+ return val
+
+ def sid(self,id):
+ if self.sidmap.has_key(id):
+ return self.sidmap[id]
+ else:
+ val = "S%05d" % self.sidval
+ self.sidval = self.sidval + 1
+ self.sidmap[id] = val
+ return val
#-------------------------------------------------------------------------
#
diff --git a/gramps/src/plugins/gedcomexport.glade b/gramps/src/plugins/gedcomexport.glade
index 16bcf0c06..154e091b9 100644
--- a/gramps/src/plugins/gedcomexport.glade
+++ b/gramps/src/plugins/gedcomexport.glade
@@ -20,7 +20,7 @@
GTK_WIN_POS_CENTER
True
False
- False
+ True
False
False
False
@@ -244,6 +244,49 @@
False
0
+
+ GtkHBox
+ hbox1
+ False
+ 0
+
+ 0
+ False
+ False
+
+
+
+ GtkLabel
+ label5
+
+ GTK_JUSTIFY_CENTER
+ False
+ 0.5
+ 0.5
+ 5
+ 0
+
+ 0
+ False
+ False
+
+
+
+
+ GtkOptionMenu
+ target
+ True
+ Standard GEDCOM 5.5
+
+ 0
+
+ 5
+ False
+ False
+
+
+
+
GtkCheckButton
private