REFN changes for GEDCOM import
svn: r802
This commit is contained in:
parent
e466d17c79
commit
42cfd52db4
@ -34,6 +34,7 @@ intl22.so: intl.c
|
|||||||
|
|
||||||
install:
|
install:
|
||||||
${INSTALL} -d ${datadir}
|
${INSTALL} -d ${datadir}
|
||||||
|
(cd ${datadir} ;rm -f *.py *.pyo *.pyc *.glade *.xpm *.so)
|
||||||
${INSTALL} *.py *.jpg *.pyo *.png *.glade *.xpm *.so ${datadir}
|
${INSTALL} *.py *.jpg *.pyo *.png *.glade *.xpm *.so ${datadir}
|
||||||
${INSTALL} -d ${prefix}/share/pixmaps
|
${INSTALL} -d ${prefix}/share/pixmaps
|
||||||
${INSTALL} gramps.png ${prefix}/share/pixmaps
|
${INSTALL} gramps.png ${prefix}/share/pixmaps
|
||||||
|
@ -1701,8 +1701,8 @@ class GrampsDB:
|
|||||||
|
|
||||||
for p in self.personMap.values():
|
for p in self.personMap.values():
|
||||||
p.MainFamily = None
|
p.MainFamily = None
|
||||||
p.AltFamilyList = None
|
p.AltFamilyList = []
|
||||||
p.FamilyList = None
|
p.FamilyList = []
|
||||||
self.personMap = {}
|
self.personMap = {}
|
||||||
|
|
||||||
self.sourceMap = {}
|
self.sourceMap = {}
|
||||||
|
@ -229,8 +229,6 @@ class OpenOfficeDoc(TextDoc):
|
|||||||
|
|
||||||
image = ImgManip.ImgManip(name)
|
image = ImgManip.ImgManip(name)
|
||||||
(x,y) = image.size()
|
(x,y) = image.size()
|
||||||
aspect_ratio = float(x)/float(y)
|
|
||||||
|
|
||||||
ratio = float(x_cm)*float(y)/(float(y_cm)*float(x))
|
ratio = float(x_cm)*float(y)/(float(y_cm)*float(x))
|
||||||
|
|
||||||
if ratio < 1:
|
if ratio < 1:
|
||||||
|
@ -520,7 +520,7 @@ class Gramps:
|
|||||||
if val == 1:
|
if val == 1:
|
||||||
return
|
return
|
||||||
self.clear_database()
|
self.clear_database()
|
||||||
DbPrompter.DbPrompter(self.database,1)
|
DbPrompter.DbPrompter(self,1)
|
||||||
|
|
||||||
def clear_database(self):
|
def clear_database(self):
|
||||||
"""Clear out the database if permission was granted"""
|
"""Clear out the database if permission was granted"""
|
||||||
@ -1146,6 +1146,14 @@ class Gramps:
|
|||||||
|
|
||||||
file = self.database.getSavePath()
|
file = self.database.getSavePath()
|
||||||
self.database.new()
|
self.database.new()
|
||||||
|
self.active_person = None
|
||||||
|
self.active_father = None
|
||||||
|
self.active_family = None
|
||||||
|
self.active_mother = None
|
||||||
|
self.active_child = None
|
||||||
|
self.active_spouse = None
|
||||||
|
self.id2col = {}
|
||||||
|
self.alt2col = {}
|
||||||
self.read_file(file)
|
self.read_file(file)
|
||||||
Utils.clearModified()
|
Utils.clearModified()
|
||||||
Utils.clear_timer()
|
Utils.clear_timer()
|
||||||
|
@ -67,6 +67,7 @@ for val in const.familyConstantEvents.keys():
|
|||||||
if key != "":
|
if key != "":
|
||||||
ged2fam[key] = val
|
ged2fam[key] = val
|
||||||
|
|
||||||
|
intRE = re.compile(r"\s*(\d+)\s*$")
|
||||||
lineRE = re.compile(r"\s*(\d+)\s+(\S+)\s*(.*)$")
|
lineRE = re.compile(r"\s*(\d+)\s+(\S+)\s*(.*)$")
|
||||||
headRE = re.compile(r"\s*(\d+)\s+HEAD")
|
headRE = re.compile(r"\s*(\d+)\s+HEAD")
|
||||||
nameRegexp= re.compile(r"/?([^/]*)(/([^/]*)(/([^/]*))?)?")
|
nameRegexp= re.compile(r"/?([^/]*)(/([^/]*)(/([^/]*))?)?")
|
||||||
@ -108,6 +109,7 @@ def importData(database, filename):
|
|||||||
return
|
return
|
||||||
|
|
||||||
g.parse_gedcom_file()
|
g.parse_gedcom_file()
|
||||||
|
g.resolve_refns()
|
||||||
|
|
||||||
statusTop.get_widget("close").set_sensitive(1)
|
statusTop.get_widget("close").set_sensitive(1)
|
||||||
|
|
||||||
@ -142,6 +144,8 @@ class GedcomParser:
|
|||||||
self.fmap = {}
|
self.fmap = {}
|
||||||
self.smap = {}
|
self.smap = {}
|
||||||
self.nmap = {}
|
self.nmap = {}
|
||||||
|
self.refn = {}
|
||||||
|
self.added = []
|
||||||
self.gedmap = GedcomInfoDB()
|
self.gedmap = GedcomInfoDB()
|
||||||
self.gedsource = None
|
self.gedsource = None
|
||||||
self.dir_path = os.path.dirname(file)
|
self.dir_path = os.path.dirname(file)
|
||||||
@ -367,6 +371,7 @@ class GedcomParser:
|
|||||||
self.update(self.people_obj,str(self.indi_count))
|
self.update(self.people_obj,str(self.indi_count))
|
||||||
self.indi_count = self.indi_count + 1
|
self.indi_count = self.indi_count + 1
|
||||||
self.person = self.db.findPerson(matches[1],self.pmap)
|
self.person = self.db.findPerson(matches[1],self.pmap)
|
||||||
|
self.added.append(self.person)
|
||||||
self.parse_individual()
|
self.parse_individual()
|
||||||
elif matches[2] in ["SUBM","SUBN"]:
|
elif matches[2] in ["SUBM","SUBN"]:
|
||||||
self.ignore_sub_junk(1)
|
self.ignore_sub_junk(1)
|
||||||
@ -701,10 +706,8 @@ class GedcomParser:
|
|||||||
self.parse_source_reference(source_ref,2)
|
self.parse_source_reference(source_ref,2)
|
||||||
self.person.getPrimaryName().addSourceRef(source_ref)
|
self.person.getPrimaryName().addSourceRef(source_ref)
|
||||||
elif matches[1] == "REFN":
|
elif matches[1] == "REFN":
|
||||||
attr = Attribute()
|
if intRE.match(matches[2]):
|
||||||
attr.setType("Reference Number")
|
self.refn[self.person] = int(matches[2])
|
||||||
attr.setValue(matches[2])
|
|
||||||
self.person.addAttribute(attr)
|
|
||||||
elif matches[1] in ["AFN","CHAN","REFN","ASSO"]:
|
elif matches[1] in ["AFN","CHAN","REFN","ASSO"]:
|
||||||
self.ignore_sub_junk(2)
|
self.ignore_sub_junk(2)
|
||||||
elif matches[1] in ["ANCI","DESI","RIN","RFN"]:
|
elif matches[1] in ["ANCI","DESI","RIN","RFN"]:
|
||||||
@ -1635,6 +1638,42 @@ class GedcomParser:
|
|||||||
|
|
||||||
return dateobj
|
return dateobj
|
||||||
|
|
||||||
|
def resolve_refns(self):
|
||||||
|
prefix = self.db.iprefix
|
||||||
|
pmap = self.db.getPersonMap()
|
||||||
|
renamed = []
|
||||||
|
new_pmax = self.db.pmapIndex
|
||||||
|
for person in self.added:
|
||||||
|
if self.refn.has_key(person):
|
||||||
|
val = self.refn[person]
|
||||||
|
new_key = prefix % val
|
||||||
|
new_pmax = max(new_pmax,val)
|
||||||
|
|
||||||
|
# new ID is not used
|
||||||
|
if not pmap.has_key(new_key):
|
||||||
|
del pmap[person.getId()]
|
||||||
|
pmap[new_key] = person
|
||||||
|
person.setId(new_key)
|
||||||
|
else:
|
||||||
|
tp = pmap[new_key]
|
||||||
|
# same person, just change it
|
||||||
|
if person == tp:
|
||||||
|
del pmap[person.getId()]
|
||||||
|
pmap[new_key] = person
|
||||||
|
person.setId(new_key)
|
||||||
|
# person currently using it was just added, change it
|
||||||
|
elif tp in self.added:
|
||||||
|
if not self.refn.has_key(tp):
|
||||||
|
renamed.append(tp)
|
||||||
|
del pmap[person.getId()]
|
||||||
|
pmap[new_key] = person
|
||||||
|
person.setId(new_key)
|
||||||
|
|
||||||
|
self.db.pmapIndex = new_pmax
|
||||||
|
for person in renamed:
|
||||||
|
del pmap[person]
|
||||||
|
self.db.addPerson(person)
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
Loading…
Reference in New Issue
Block a user