ASSO tag support
svn: r6339
This commit is contained in:
parent
d03c217524
commit
efd56461dd
@ -1,4 +1,7 @@
|
||||
2006-04-13 Don Allingham <don@gramps-project.org>
|
||||
* src/GrampsDb/_ReadGedcom.py: handle ASSO tag
|
||||
* src/GrampsDb/_GedTokens.py: handle ASSO tag
|
||||
* example/gedcom/sample.ged: add ASSO tag
|
||||
* src/GrampsDb/_WriteXML.py: write old style XML.
|
||||
* src/Editors/_EditPersonRef.py: display person correctly in label
|
||||
* src/Editors/_EditFamily.py: comment out unused tab
|
||||
|
@ -58,6 +58,10 @@
|
||||
1 NAME Edwin Michael /Smith/
|
||||
2 NOTE This is a note attached to a name
|
||||
2 SOUR @S1600@
|
||||
1 ASSO @I07@
|
||||
2 RELA SomeRelationship
|
||||
2 NOTE This is a note for the ASSOC import
|
||||
2 SOUR @S1600@
|
||||
1 SEX M
|
||||
1 TITL Grand Poobah
|
||||
1 OBJE
|
||||
@ -516,6 +520,7 @@
|
||||
2 DATE 26 JUN 34 B.C.
|
||||
2 PLAC Hayward, Alameda Co., CA
|
||||
0 @F01@ FAM
|
||||
1 HUSB @IC3a2b1@
|
||||
1 WIFE @I40@
|
||||
1 CHIL @I42@
|
||||
2 _FREL Adopted
|
||||
|
@ -123,6 +123,7 @@ TOKEN__WTN = 103
|
||||
TOKEN_HEAD = 105
|
||||
TOKEN_CALN = 106
|
||||
TOKEN_MEDI = 107
|
||||
TOKEN_RELA = 108
|
||||
|
||||
tokens = {
|
||||
"HEAD" : TOKEN_HEAD, "MEDI" : TOKEN_MEDI,
|
||||
@ -208,5 +209,5 @@ tokens = {
|
||||
"_UID" : TOKEN__UID, "VERS" : TOKEN_VERS,
|
||||
"VERSION" : TOKEN_VERS, "WIFE" : TOKEN_WIFE,
|
||||
"_WITN" : TOKEN__WITN, "_WTN" : TOKEN__WTN,
|
||||
"_CHUR" : TOKEN_IGNORE,
|
||||
"_CHUR" : TOKEN_IGNORE,"RELA" : TOKEN_RELA,
|
||||
}
|
||||
|
@ -541,7 +541,7 @@ class GedcomParser:
|
||||
TOKEN_RFN : self.func_person_attr,
|
||||
TOKEN__UID : self.func_person_attr,
|
||||
TOKEN_CHAN : self.skip_record,
|
||||
TOKEN_ASSO : self.skip_record,
|
||||
TOKEN_ASSO : self.func_person_asso,
|
||||
TOKEN_ANCI : self.skip_record,
|
||||
TOKEN_DESI : self.skip_record,
|
||||
TOKEN_RIN : self.skip_record,
|
||||
@ -808,7 +808,8 @@ class GedcomParser:
|
||||
if mother:
|
||||
mother.add_address(self.addr)
|
||||
self.db.commit_person(mother, self.trans)
|
||||
for child_handle in self.family.get_child_handle_list():
|
||||
for child_ref in self.family.get_child_ref_list():
|
||||
child_handle = child_ref.ref
|
||||
child = self.db.get_person_from_handle(child_handle)
|
||||
if child:
|
||||
child.add_address(self.addr)
|
||||
@ -1105,26 +1106,12 @@ class GedcomParser:
|
||||
mrel,frel = self.parse_ftw_relations(2)
|
||||
gid = matches[2]
|
||||
child = self.find_or_create_person(self.map_gid(gid[1:-1]))
|
||||
self.family.add_child_handle(child.handle)
|
||||
|
||||
change = False
|
||||
|
||||
for f in child.get_parent_family_handle_list():
|
||||
if f[0] == self.family.handle:
|
||||
if (mrel != f[1] or frel != f[2]):
|
||||
change = True
|
||||
child.change_parent_family_handle(self.family.handle,
|
||||
mrel, frel)
|
||||
break
|
||||
else:
|
||||
change = True
|
||||
if mrel in rel_types and frel in rel_types:
|
||||
child.set_main_parent_family_handle(self.family.handle)
|
||||
else:
|
||||
if child.get_main_parents_family_handle() == self.family.handle:
|
||||
child.set_main_parent_family_handle(None)
|
||||
if change:
|
||||
self.db.commit_person(child, self.trans)
|
||||
ref = RelLib.ChildRef()
|
||||
ref.ref = child.handle
|
||||
ref.set_father_relation(frel)
|
||||
ref.set_mother_relation(mrel)
|
||||
self.family.add_child_ref(ref)
|
||||
elif matches[1] == TOKEN_NCHI:
|
||||
a = RelLib.Attribute()
|
||||
a.set_type((RelLib.Attribute.NUM_CHILD,''))
|
||||
@ -1540,7 +1527,9 @@ class GedcomParser:
|
||||
mrel,frel = self.parse_adopt_famc(level+1);
|
||||
if self.person.get_main_parents_family_handle() == handle:
|
||||
self.person.set_main_parent_family_handle(None)
|
||||
self.person.add_parent_family_handle(handle,mrel,frel)
|
||||
self.person.add_parent_family_handle(handle)
|
||||
if mrel[0] != RelLib.ChildRef.BIRTH or frel[0] != RelLib.ChildRef.BIRTH:
|
||||
print "NOT FIXED YET"
|
||||
elif matches[1] == TOKEN_PLAC:
|
||||
val = matches[2]
|
||||
place = self.find_or_create_place(val)
|
||||
@ -2038,6 +2027,32 @@ class GedcomParser:
|
||||
state.name_cnt += 1
|
||||
self.parse_name(name,2,state)
|
||||
|
||||
def func_person_asso(self, matches, state):
|
||||
print matches
|
||||
gid = matches[2]
|
||||
handle = self.find_person_handle(self.map_gid(gid[1:-1]))
|
||||
ref = RelLib.PersonRef()
|
||||
print handle
|
||||
ref.ref = handle
|
||||
|
||||
self.person.add_person_ref(ref)
|
||||
|
||||
while True:
|
||||
matches = self.get_next()
|
||||
|
||||
if int(matches[0]) < 2:
|
||||
self.backup()
|
||||
return
|
||||
elif matches[1] == TOKEN_RELA:
|
||||
ref.rel = matches[2]
|
||||
elif matches[1] == TOKEN_SOUR:
|
||||
ref.add_source_reference(self.handle_source(matches,2))
|
||||
elif matches[1] == TOKEN_NOTE:
|
||||
note = self.parse_note(matches,ref,2,"")
|
||||
ref.set_note(note)
|
||||
else:
|
||||
self.barf(2)
|
||||
|
||||
def func_person_alt_name(self,matches,state):
|
||||
aka = RelLib.Name()
|
||||
try:
|
||||
@ -2107,7 +2122,8 @@ class GedcomParser:
|
||||
else:
|
||||
if state.person.get_main_parents_family_handle() == handle:
|
||||
state.person.set_main_parent_family_handle(None)
|
||||
state.person.add_parent_family_handle(handle,ftype,ftype)
|
||||
state.person.add_parent_family_handle(handle)
|
||||
print "NEED TO CHANGE CHILDREF TO",ftype,ftype
|
||||
|
||||
def func_person_resi(self,matches,state):
|
||||
addr = RelLib.Address()
|
||||
|
Loading…
Reference in New Issue
Block a user