diff --git a/ChangeLog b/ChangeLog index 15df56683..88144dd7b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-07-11 Don Allingham + * src/FamilyView.py: handle deleting of parent properly + * src/plugins/WriteGedcom.py: revert to using GRAMPS ID values + * src/plugins/WriteXML.py: use proper ID values + 2004-07-10 Alex Roitman * NEWS: Update. * src/Exporter.py: Clean up, add doc strings. @@ -12,6 +17,7 @@ 2004-07-09 Don Allingham * src/AddMedia.py: Handle the new file selector * src/MediaView.py: redraw list properly + * src/FamilyView.py: fix removal of parents 2004-07-09 Alex Roitman * src/gramps_main.py (on_export_activate): Switch to new Exporter. diff --git a/src/AddSpouse.py b/src/AddSpouse.py index e4c61162a..645e15bb6 100644 --- a/src/AddSpouse.py +++ b/src/AddSpouse.py @@ -249,11 +249,12 @@ class AddSpouse: return spouse = self.db.get_person(idlist[0]) + spouse_id = spouse.get_id() # don't do anything if the marriage already exists for f in self.person.get_family_id_list(): fam = self.db.find_family_from_id(f) - if spouse.get_id() == fam.get_mother_id() or spouse.get_id() == fam.get_father_id(): + if spouse_id == fam.get_mother_id() or spouse_id == fam.get_father_id(): Utils.destroy_passed_object(obj) return @@ -263,6 +264,7 @@ class AddSpouse: self.active_family = self.db.new_family(trans) self.person.add_family_id(self.active_family.get_id()) self.db.commit_person(self.person,trans) + spouse.add_family_id(self.active_family.get_id()) self.db.commit_person(spouse,trans) @@ -277,6 +279,7 @@ class AddSpouse: self.active_family.set_relationship(rtype) self.db.commit_family(self.active_family,trans) self.db.add_transaction(trans,_("Add Spouse")) + Utils.destroy_passed_object(obj) self.update(self.active_family) m = Marriage.Marriage(self.parent, self.active_family, diff --git a/src/FamilyView.py b/src/FamilyView.py index aaf09cec3..6859ca755 100644 --- a/src/FamilyView.py +++ b/src/FamilyView.py @@ -1221,12 +1221,14 @@ class FamilyView: model, iter = self.child_selection.get_selected() if iter: id = self.child_model.get_value(iter,2) - self.parent.change_active_person(self.parent.db.get_person(id)) + child = self.parent.db.try_to_find_person_from_gramps_id(id) + self.parent.change_active_person(child) self.load_family() else: list = self.family.get_child_id_list() if len(list) == 1: - self.parent.change_active_person(list[0]) + p = self.parent.db.try_to_find_person_from_id(list[0]) + self.parent.change_active_person(p) self.load_family() def parent_editor(self,person,selection): @@ -1271,7 +1273,10 @@ class FamilyView: def parent_deleter(self,person,selection): if not person: return + + trans = self.parent.db.start_transaction() plist = person.get_parent_family_id_list() + if len(plist) == 0: return if len(plist) == 1: @@ -1282,10 +1287,24 @@ class FamilyView: return row = model.get_path(iter) - fam = person.get_parent_family_id_list()[row[0]] - person.remove_parent_family_id(fam[0]) + family_id = person.get_parent_family_id_list()[row[0]][0] + person.remove_parent_family_id(family_id) + fam = self.parent.db.try_to_find_family_from_id(family_id) + + if len(fam.get_child_id_list()) == 0: + father_id = fam.get_father_id() + mother_id = fam.get_mother_id() + if father_id == None and mother_id: + mother = self.parent.db.find_person_from_id(mother_id) + mother.remove_family_id(fam) + self.parent.db.commit_person(mother,trans) + self.parent.db.delete_family(fam,trans) + elif mother_id == None and father_id: + father = self.parent.db.find_person_from_id(father_id) + father.remove_family_id(fam,trans) + self.parent.db.commit_person(father,trans) + self.parent.db.delete_family(fam,trans) - trans = self.parent.db.start_transaction() self.parent.db.commit_person(person,trans) n = person.get_primary_name().get_regular_name() self.parent.db.add_transaction(trans,_("Remove Parents (%s)") % n) diff --git a/src/RelLib.py b/src/RelLib.py index 6af7e23d1..add2a712e 100644 --- a/src/RelLib.py +++ b/src/RelLib.py @@ -1186,16 +1186,19 @@ class Person(SourceNote): self.note) def unserialize(self,data): - (self.id, self.gid, self.gender, - self.primary_name, self.alternate_names, self.nickname, - self.death_id, self.birth_id, self.event_list, - self.family_list, self.parent_family_list, - self.media_list, - self.address_list, - self.attribute_list, - self.urls, - self.lds_bapt, self.lds_endow, self.lds_seal, - self.complete, self.source_list, self.note) = data + try: + (self.id, self.gid, self.gender, + self.primary_name, self.alternate_names, self.nickname, + self.death_id, self.birth_id, self.event_list, + self.family_list, self.parent_family_list, + self.media_list, + self.address_list, + self.attribute_list, + self.urls, + self.lds_bapt, self.lds_endow, self.lds_seal, + self.complete, self.source_list, self.note) = data + except: + print data def set_complete(self,val): self.complete = val diff --git a/src/WriteXML.py b/src/WriteXML.py index 8579d69e2..27cf71189 100644 --- a/src/WriteXML.py +++ b/src/WriteXML.py @@ -237,7 +237,7 @@ class XmlWriter: self.g.write(" \n") keys = self.db.get_person_keys() @@ -331,8 +331,10 @@ class XmlWriter: count = count + 1 self.write_family_id(family,2) - self.write_ref("father",family.get_father_id(),3) - self.write_ref("mother",family.get_mother_id(),3) + fid = family.get_father_id() + mid = family.get_mother_id() + self.write_ref("father",fid,3) + self.write_ref("mother",mid,3) for event_id in family.get_event_list(): event = self.db.find_event_from_id(event_id) self.dump_event(event,3) @@ -532,7 +534,7 @@ class XmlWriter: def write_id(self,label,person,index=1): if person: - self.g.write('%s<%s id="%s"' % (" "*index,label,person.get_gramps_id())) + self.g.write('%s<%s id="%s"' % (" "*index,label,person.get_id())) comp = person.get_complete() if comp: self.g.write(' complete="1"') @@ -791,8 +793,8 @@ class XmlWriter: # #------------------------------------------------------------------------- def sortById(first,second): - fid = first.get_gramps_id() - sid = second.get_gramps_id() + fid = first.get_id() + sid = second.get_id() if fid < sid: return -1 diff --git a/src/plugins/WriteGedcom.py b/src/plugins/WriteGedcom.py index bb45865d3..d4b70e5a9 100644 --- a/src/plugins/WriteGedcom.py +++ b/src/plugins/WriteGedcom.py @@ -201,6 +201,22 @@ def sortById(first,second): else: return 1 +#------------------------------------------------------------------------- +# +# +# +#------------------------------------------------------------------------- +def sort_by_gramps_id(first,second): + fid = first.get_gramps_id() + sid = second.get_gramps_id() + + if fid == sid: + return 0 + elif fid < sid: + return -1 + else: + return 1 + #------------------------------------------------------------------------- # # @@ -809,7 +825,7 @@ class GedcomWriter: # self.sbar.set_fraction(1.0) def write_person(self,person): - self.writeln("0 @%s@ INDI" % self.pid(person.get_id())) + self.writeln("0 @%s@ INDI" % self.pid(person.get_gramps_id())) restricted = self.restrict and person.probably_alive (self.db) self.prefn(person) primaryname = person.get_primary_name () @@ -1221,7 +1237,7 @@ class GedcomWriter: return id def prefn(self,person): - match = _get_int.search(person.get_id()) + match = _get_int.search(person.get_gramps_id()) if match: self.writeln('1 REFN %d' % int(match.groups()[0]))