* src/AutoComp.py: remove double display of data
* src/FamilyView.py: remove unused check * src/GrampsBSDDB.py: search by gramps_id * src/GrampsDbBase.py: search by gramps_id, unicode/str conversions * src/Marriage.py: handle gramps_id editing * src/ReadXML.py: fix handle/gramps_id on import * src/plugins/RelCalc.py: display date instead of event handle * src/Relationship.py: family handles working * src/PeopleModel.py: comment out unused functions * src/PeopleModel.py: simplify model interface * src/AddSpouse.py: get_family_from_handle fixes * src/EditPerson.py: get_family_from_handle fixes * src/EditSource.py: get_family_from_handle fixes * src/GraphLayout.py: get_family_from_handle fixes * src/ImageSelect.py: get_family_from_handle fixes * src/MediaView.py: get_family_from_handle fixes * src/MergeData.py: get_family_from_handle fixes * src/PlaceView.py: get_family_from_handle fixes * src/ReadXML.py: get_family_from_handle fixes * src/RelLib.py: get_family_from_handle fixes * src/Relationship.py: get_family_from_handle fixes * src/SelectChild.py: get_family_from_handle fixes * src/SourceView.py: get_family_from_handle fixes * src/SubstKeywords.py: get_family_from_handle fixes * src/WriteXML.py: get_family_from_handle fixes * src/gramps_main.py: get_family_from_handle fixes svn: r3446
This commit is contained in:
		
							
								
								
									
										43
									
								
								ChangeLog
									
									
									
									
									
								
							
							
						
						
									
										43
									
								
								ChangeLog
									
									
									
									
									
								
							@@ -1,21 +1,30 @@
 | 
			
		||||
2004-08-19  Don Allingham  <dallingham@users.sourceforge.net>
 | 
			
		||||
	* PeopleModel.py: simplify model interface
 | 
			
		||||
        * AddSpouse.py: get_family_from_handle fixes
 | 
			
		||||
	* EditPerson.py: get_family_from_handle fixes
 | 
			
		||||
	* EditSource.py: get_family_from_handle fixes
 | 
			
		||||
	* GraphLayout.py: get_family_from_handle fixes
 | 
			
		||||
	* ImageSelect.py: get_family_from_handle fixes
 | 
			
		||||
	* MediaView.py: get_family_from_handle fixes
 | 
			
		||||
	* MergeData.py: get_family_from_handle fixes
 | 
			
		||||
	* PlaceView.py: get_family_from_handle fixes
 | 
			
		||||
	* ReadXML.py: get_family_from_handle fixes
 | 
			
		||||
	* RelLib.py: get_family_from_handle fixes
 | 
			
		||||
	* Relationship.py: get_family_from_handle fixes
 | 
			
		||||
	* SelectChild.py: get_family_from_handle fixes
 | 
			
		||||
	* SourceView.py: get_family_from_handle fixes
 | 
			
		||||
	* SubstKeywords.py: get_family_from_handle fixes
 | 
			
		||||
	* WriteXML.py: get_family_from_handle fixes
 | 
			
		||||
	* gramps_main.py: get_family_from_handle fixes
 | 
			
		||||
	* src/AutoComp.py: remove double display of data
 | 
			
		||||
	* src/FamilyView.py: remove unused check
 | 
			
		||||
	* src/GrampsBSDDB.py: search by gramps_id
 | 
			
		||||
	* src/GrampsDbBase.py: search by gramps_id, unicode/str conversions
 | 
			
		||||
	* src/Marriage.py: handle gramps_id editing
 | 
			
		||||
	* src/ReadXML.py: fix handle/gramps_id on import
 | 
			
		||||
	* src/plugins/RelCalc.py: display date instead of event handle
 | 
			
		||||
	* src/Relationship.py: family handles working
 | 
			
		||||
	* src/PeopleModel.py: comment out unused functions
 | 
			
		||||
	* src/PeopleModel.py: simplify model interface
 | 
			
		||||
	* src/AddSpouse.py: get_family_from_handle fixes
 | 
			
		||||
	* src/EditPerson.py: get_family_from_handle fixes
 | 
			
		||||
	* src/EditSource.py: get_family_from_handle fixes
 | 
			
		||||
	* src/GraphLayout.py: get_family_from_handle fixes
 | 
			
		||||
	* src/ImageSelect.py: get_family_from_handle fixes
 | 
			
		||||
	* src/MediaView.py: get_family_from_handle fixes
 | 
			
		||||
	* src/MergeData.py: get_family_from_handle fixes
 | 
			
		||||
	* src/PlaceView.py: get_family_from_handle fixes
 | 
			
		||||
	* src/ReadXML.py: get_family_from_handle fixes
 | 
			
		||||
	* src/RelLib.py: get_family_from_handle fixes
 | 
			
		||||
	* src/Relationship.py: get_family_from_handle fixes
 | 
			
		||||
	* src/SelectChild.py: get_family_from_handle fixes
 | 
			
		||||
	* src/SourceView.py: get_family_from_handle fixes
 | 
			
		||||
	* src/SubstKeywords.py: get_family_from_handle fixes
 | 
			
		||||
	* src/WriteXML.py: get_family_from_handle fixes
 | 
			
		||||
	* src/gramps_main.py: get_family_from_handle fixes
 | 
			
		||||
	* plugins/AncestorChart.py: get_family_from_handle fixes
 | 
			
		||||
	* plugins/AncestorChart2.py: get_family_from_handle fixes
 | 
			
		||||
	* plugins/AncestorReport.py: get_family_from_handle fixes
 | 
			
		||||
 
 | 
			
		||||
@@ -44,7 +44,6 @@ def fill_combo(combo,data_list):
 | 
			
		||||
 | 
			
		||||
def fill_entry(entry,data_list):
 | 
			
		||||
        store = gtk.ListStore(gobject.TYPE_STRING)
 | 
			
		||||
 | 
			
		||||
        for data in data_list:
 | 
			
		||||
            store.append(row=[data])
 | 
			
		||||
        
 | 
			
		||||
@@ -55,15 +54,13 @@ def fill_entry(entry,data_list):
 | 
			
		||||
        entry.set_completion(completion)
 | 
			
		||||
    
 | 
			
		||||
def fill_option_text(combobox,data):
 | 
			
		||||
    store = gtk.ListStore(gobject.TYPE_STRING)
 | 
			
		||||
    cell = gtk.CellRendererText()
 | 
			
		||||
    combobox.pack_start(cell,gtk.TRUE)
 | 
			
		||||
    combobox.add_attribute(cell,'text',0)
 | 
			
		||||
    for item in data:
 | 
			
		||||
        store.append(row=[item])
 | 
			
		||||
    combobox.set_model(store)
 | 
			
		||||
    combobox.set_active(0)
 | 
			
		||||
	store = gtk.ListStore(gobject.TYPE_STRING)
 | 
			
		||||
	cell = gtk.CellRendererText()
 | 
			
		||||
	for item in data:
 | 
			
		||||
		store.append(row=[item])
 | 
			
		||||
	combobox.set_model(store)
 | 
			
		||||
	combobox.set_active(0)
 | 
			
		||||
 | 
			
		||||
def get_option(combobox):
 | 
			
		||||
    store = combobox.get_model()
 | 
			
		||||
    return store.get_value(combobox.get_active_iter(),0)
 | 
			
		||||
	store = combobox.get_model()
 | 
			
		||||
	return store.get_value(combobox.get_active_iter(),0)
 | 
			
		||||
 
 | 
			
		||||
@@ -907,8 +907,6 @@ class FamilyView:
 | 
			
		||||
        flist = {}
 | 
			
		||||
 | 
			
		||||
        for f in splist:
 | 
			
		||||
            if not f:
 | 
			
		||||
                continue
 | 
			
		||||
            fm = self.parent.db.get_family_from_handle(f)
 | 
			
		||||
            
 | 
			
		||||
            if fm.get_father_handle() == self.person.get_handle():
 | 
			
		||||
 
 | 
			
		||||
@@ -32,6 +32,9 @@ def find_surname(key,data):
 | 
			
		||||
def find_idmap(key,data):
 | 
			
		||||
    return str(data[1])
 | 
			
		||||
 | 
			
		||||
def find_fidmap(key,data):
 | 
			
		||||
    return str(data[1])
 | 
			
		||||
 | 
			
		||||
def find_eventname(key,data):
 | 
			
		||||
    return str(data[1])
 | 
			
		||||
 | 
			
		||||
@@ -76,11 +79,16 @@ class GrampsBSDDB(GrampsDbBase):
 | 
			
		||||
        self.id_trans.set_flags(db.DB_DUP)
 | 
			
		||||
        self.id_trans.open(name, "idtrans", db.DB_HASH, flags=db.DB_CREATE)
 | 
			
		||||
 | 
			
		||||
        self.fid_trans = db.DB(self.env)
 | 
			
		||||
        self.fid_trans.set_flags(db.DB_DUP)
 | 
			
		||||
        self.fid_trans.open(name, "fidtrans", db.DB_HASH, flags=db.DB_CREATE)
 | 
			
		||||
 | 
			
		||||
        self.eventnames = db.DB(self.env)
 | 
			
		||||
        self.eventnames.set_flags(db.DB_DUP)
 | 
			
		||||
        self.eventnames.open(name, "eventnames", db.DB_HASH, flags=db.DB_CREATE)
 | 
			
		||||
        self.person_map.associate(self.surnames, find_surname, db.DB_CREATE)
 | 
			
		||||
        self.person_map.associate(self.id_trans, find_idmap, db.DB_CREATE)
 | 
			
		||||
        self.person_map.associate(self.fid_trans, find_fidmap, db.DB_CREATE)
 | 
			
		||||
        self.event_map.associate(self.eventnames, find_eventname, db.DB_CREATE)
 | 
			
		||||
 | 
			
		||||
        self.undodb = db.DB()
 | 
			
		||||
@@ -106,6 +114,7 @@ class GrampsBSDDB(GrampsDbBase):
 | 
			
		||||
        self.surnames.close()
 | 
			
		||||
        self.eventnames.close()
 | 
			
		||||
        self.id_trans.close()
 | 
			
		||||
        self.fid_trans.close()
 | 
			
		||||
        self.env.close()
 | 
			
		||||
        self.undodb.close()
 | 
			
		||||
 | 
			
		||||
@@ -167,3 +176,26 @@ class GrampsBSDDB(GrampsDbBase):
 | 
			
		||||
            transaction.add(EVENT_KEY,handle,old_data)
 | 
			
		||||
        self.event_map.delete(str(handle))
 | 
			
		||||
 | 
			
		||||
    def get_person_from_gramps_id(self,val):
 | 
			
		||||
        """finds a Person in the database from the passed gramps' ID.
 | 
			
		||||
        If no such Person exists, a new Person is added to the database."""
 | 
			
		||||
 | 
			
		||||
        data = self.id_trans.get(str(val))
 | 
			
		||||
        if data:
 | 
			
		||||
            person = Person()
 | 
			
		||||
            person.unserialize(cPickle.loads(data))
 | 
			
		||||
            return person
 | 
			
		||||
        else:
 | 
			
		||||
            return None
 | 
			
		||||
 | 
			
		||||
    def get_family_from_gramps_id(self,val):
 | 
			
		||||
        """finds a Person in the database from the passed gramps' ID.
 | 
			
		||||
        If no such Person exists, a new Person is added to the database."""
 | 
			
		||||
 | 
			
		||||
        data = self.fid_trans.get(str(val))
 | 
			
		||||
        if data:
 | 
			
		||||
            family = Family()
 | 
			
		||||
            family.unserialize(cPickle.loads(data))
 | 
			
		||||
            return family
 | 
			
		||||
        else:
 | 
			
		||||
            return None
 | 
			
		||||
 
 | 
			
		||||
@@ -106,14 +106,14 @@ class GrampsDbBase:
 | 
			
		||||
        Opens the specified database. The method needs to be overridden
 | 
			
		||||
        in the derived class.
 | 
			
		||||
        """
 | 
			
		||||
        assert(0,"Needs to be overridden in the derived class")
 | 
			
		||||
        assert(False,"Needs to be overridden in the derived class")
 | 
			
		||||
 | 
			
		||||
    def close(self):
 | 
			
		||||
        """
 | 
			
		||||
        Closes the specified database. The method needs to be overridden
 | 
			
		||||
        in the derived class.
 | 
			
		||||
        """
 | 
			
		||||
        assert(0,"Needs to be overridden in the derived class")
 | 
			
		||||
        assert(False,"Needs to be overridden in the derived class")
 | 
			
		||||
        
 | 
			
		||||
    def is_open(self):
 | 
			
		||||
        """
 | 
			
		||||
@@ -126,7 +126,7 @@ class GrampsDbBase:
 | 
			
		||||
        Commits the specified Person to the database, storing the changes
 | 
			
		||||
        as part of the transaction.
 | 
			
		||||
        """
 | 
			
		||||
        handle = person.get_handle()
 | 
			
		||||
        handle = str(person.get_handle())
 | 
			
		||||
        if transaction != None:
 | 
			
		||||
            old_data = self.person_map.get(handle)
 | 
			
		||||
            transaction.add(PERSON_KEY,handle,old_data)
 | 
			
		||||
@@ -141,7 +141,7 @@ class GrampsDbBase:
 | 
			
		||||
        if transaction != None:
 | 
			
		||||
            old_data = self.media_map.get(handle)
 | 
			
		||||
            transaction.add(MEDIA_KEY,handle,old_data)
 | 
			
		||||
        self.media_map[str(obj.get_handle())] = obj.serialize()
 | 
			
		||||
        self.media_map[handle] = obj.serialize()
 | 
			
		||||
 | 
			
		||||
    def commit_source(self,source,transaction):
 | 
			
		||||
        """
 | 
			
		||||
@@ -152,7 +152,7 @@ class GrampsDbBase:
 | 
			
		||||
        if transaction != None:
 | 
			
		||||
            old_data = self.source_map.get(handle)
 | 
			
		||||
            transaction.add(SOURCE_KEY,handle,old_data)
 | 
			
		||||
        self.source_map[str(source.get_handle())] =  source.serialize()
 | 
			
		||||
        self.source_map[handle] =  source.serialize()
 | 
			
		||||
 | 
			
		||||
    def commit_place(self,place,transaction):
 | 
			
		||||
        """
 | 
			
		||||
@@ -163,7 +163,7 @@ class GrampsDbBase:
 | 
			
		||||
        if transaction != None:
 | 
			
		||||
            old_data = self.place_map.get(handle)
 | 
			
		||||
            transaction.add(PLACE_KEY,handle,old_data)
 | 
			
		||||
        self.place_map[str(place.get_handle())] = place.serialize()
 | 
			
		||||
        self.place_map[handle] = place.serialize()
 | 
			
		||||
 | 
			
		||||
    def commit_event(self,event,transaction):
 | 
			
		||||
        """
 | 
			
		||||
@@ -174,7 +174,7 @@ class GrampsDbBase:
 | 
			
		||||
        if transaction != None:
 | 
			
		||||
            old_data = self.event_map.get(handle)
 | 
			
		||||
            transaction.add(EVENT_KEY,handle,old_data)
 | 
			
		||||
        self.event_map[str(event.get_handle())] = event.serialize()
 | 
			
		||||
        self.event_map[handle] = event.serialize()
 | 
			
		||||
 | 
			
		||||
    def commit_family(self,family,transaction):
 | 
			
		||||
        """
 | 
			
		||||
@@ -185,7 +185,7 @@ class GrampsDbBase:
 | 
			
		||||
        if transaction != None:
 | 
			
		||||
            old_data = self.family_map.get(handle)
 | 
			
		||||
            transaction.add(FAMILY_KEY,handle,old_data)
 | 
			
		||||
        self.family_map[str(family.get_handle())] = family.serialize()
 | 
			
		||||
        self.family_map[handle] = family.serialize()
 | 
			
		||||
 | 
			
		||||
    def find_next_person_gramps_id(self):
 | 
			
		||||
        """
 | 
			
		||||
@@ -263,7 +263,7 @@ class GrampsDbBase:
 | 
			
		||||
        """finds a Person in the database from the passed gramps' ID.
 | 
			
		||||
        If no such Person exists, a new Person is added to the database."""
 | 
			
		||||
 | 
			
		||||
        data = self.person_map.get(val)
 | 
			
		||||
        data = self.person_map.get(str(val))
 | 
			
		||||
        if data:
 | 
			
		||||
            person = Person()
 | 
			
		||||
            person.unserialize(data)
 | 
			
		||||
@@ -336,7 +336,7 @@ class GrampsDbBase:
 | 
			
		||||
            person.set_handle(val)
 | 
			
		||||
            if transaction != None:
 | 
			
		||||
                transaction.add(PERSON_KEY, val, None)
 | 
			
		||||
            self.person_map[val] = person.serialize()
 | 
			
		||||
            self.person_map[str(val)] = person.serialize()
 | 
			
		||||
            self.genderStats.count_person (person, self)
 | 
			
		||||
        return person
 | 
			
		||||
 | 
			
		||||
@@ -390,7 +390,7 @@ class GrampsDbBase:
 | 
			
		||||
        data = self.place_map.get(str(handle))
 | 
			
		||||
        place = Place()
 | 
			
		||||
        if not data:
 | 
			
		||||
            place.handle = handle
 | 
			
		||||
            place.set_handle(handle)
 | 
			
		||||
            if transaction != None:
 | 
			
		||||
                transaction.add(PLACE_KEY,handle,None)
 | 
			
		||||
            self.place_map[str(handle)] = place.serialize()
 | 
			
		||||
@@ -408,13 +408,37 @@ class GrampsDbBase:
 | 
			
		||||
        if data:
 | 
			
		||||
            family.unserialize(data)
 | 
			
		||||
        else:
 | 
			
		||||
            family.handle = val
 | 
			
		||||
            family.set_handle(val)
 | 
			
		||||
            if transaction:
 | 
			
		||||
                transaction.add(FAMILY_KEY,val,None)
 | 
			
		||||
            self.family_map[str(val)] = family.serialize()
 | 
			
		||||
            self.fmap_index = self.fmap_index + 1
 | 
			
		||||
        return family
 | 
			
		||||
 | 
			
		||||
    def get_person_from_gramps_id(self,val):
 | 
			
		||||
        """
 | 
			
		||||
        Finds a Person in the database from the passed GRAMPS ID.
 | 
			
		||||
        If no such Person exists, None is returned.
 | 
			
		||||
 | 
			
		||||
        Needs to be overridden by the derrived class.
 | 
			
		||||
        """
 | 
			
		||||
        data = self.id_trans.get(str(val))
 | 
			
		||||
        if data:
 | 
			
		||||
            person = Person()
 | 
			
		||||
            person.unserialize(cPickle.loads(data))
 | 
			
		||||
            return person
 | 
			
		||||
        else:
 | 
			
		||||
            return None
 | 
			
		||||
 | 
			
		||||
    def get_family_from_gramps_id(self,val):
 | 
			
		||||
        """
 | 
			
		||||
        Finds a Family in the database from the passed GRAMPS ID.
 | 
			
		||||
        If no such Family exists, None is returned.
 | 
			
		||||
 | 
			
		||||
        Needs to be overridden by the derrived class.
 | 
			
		||||
        """
 | 
			
		||||
        assert(False,"Needs to be overridden in the derived class")
 | 
			
		||||
 | 
			
		||||
    def add_person(self,person,transaction):
 | 
			
		||||
        """
 | 
			
		||||
        Adds a Person to the database, assigning internal IDs if they have
 | 
			
		||||
@@ -906,49 +930,23 @@ class GrampsDbBase:
 | 
			
		||||
        """
 | 
			
		||||
        return self.media_map.has_key(str(handle)) != None
 | 
			
		||||
 | 
			
		||||
    def get_person_from_gramps_id(self,val):
 | 
			
		||||
        """finds a Person in the database from the passed gramps' ID.
 | 
			
		||||
        If no such Person exists, a new Person is added to the database."""
 | 
			
		||||
 | 
			
		||||
        data = self.id_trans.get(str(val))
 | 
			
		||||
        if data:
 | 
			
		||||
            person = Person()
 | 
			
		||||
            person.unserialize(cPickle.loads(data))
 | 
			
		||||
            return person
 | 
			
		||||
        else:
 | 
			
		||||
            return None
 | 
			
		||||
 | 
			
		||||
    def find_person_from_gramps_id(self,val,transaction):
 | 
			
		||||
        """finds a Person in the database from the passed gramps' ID.
 | 
			
		||||
        If no such Person exists, a new Person is added to the database."""
 | 
			
		||||
 | 
			
		||||
        person = Person()
 | 
			
		||||
        data = self.id_trans.get(str(val))
 | 
			
		||||
        if data:
 | 
			
		||||
            person.unserialize(cPickle.loads(data))
 | 
			
		||||
        else:
 | 
			
		||||
            intid = Utils.create_id()
 | 
			
		||||
            person.set_handle(intid)
 | 
			
		||||
            person.set_gramps_id(val)
 | 
			
		||||
            self.add_person(person,transaction)
 | 
			
		||||
        return person
 | 
			
		||||
 | 
			
		||||
    def _sortbyname(self,f,s):
 | 
			
		||||
        n1 = self.person_map.get(f)[2].sname
 | 
			
		||||
        n2 = self.person_map.get(s)[2].sname
 | 
			
		||||
        n1 = self.person_map.get(str(f))[2].sname
 | 
			
		||||
        n2 = self.person_map.get(str(s))[2].sname
 | 
			
		||||
        return cmp(n1,n2)
 | 
			
		||||
 | 
			
		||||
    def _sortbyplace(self,f,s):
 | 
			
		||||
        return cmp(self.place_map.get(f)[2].upper(), self.place_map.get(s)[2].upper())
 | 
			
		||||
        return cmp(self.place_map.get(str(f))[2].upper(),
 | 
			
		||||
                   self.place_map.get(str(s))[2].upper())
 | 
			
		||||
 | 
			
		||||
    def _sortbysource(self,f,s):
 | 
			
		||||
        fp = self.source_map[f][2].upper()
 | 
			
		||||
        sp = self.source_map[s][2].upper()
 | 
			
		||||
        fp = self.source_map[str(f)][2].upper()
 | 
			
		||||
        sp = self.source_map[str(s)][2].upper()
 | 
			
		||||
        return cmp(fp,sp)
 | 
			
		||||
 | 
			
		||||
    def _sortbymedia(self,f,s):
 | 
			
		||||
        fp = self.media_map[f][4].upper()
 | 
			
		||||
        sp = self.media_map[s][4].upper()
 | 
			
		||||
        fp = self.media_map[str(f)][4].upper()
 | 
			
		||||
        sp = self.media_map[str(s)][4].upper()
 | 
			
		||||
        return cmp(fp,sp)
 | 
			
		||||
 | 
			
		||||
    def set_person_column_order(self,list):
 | 
			
		||||
 
 | 
			
		||||
@@ -199,7 +199,7 @@ class Marriage:
 | 
			
		||||
 | 
			
		||||
        frel = family.get_relationship()
 | 
			
		||||
        self.type_field.set_active(frel)
 | 
			
		||||
        self.gid.set_text(family.get_handle())
 | 
			
		||||
        self.gid.set_text(family.get_gramps_id())
 | 
			
		||||
        self.gid.set_editable(1)
 | 
			
		||||
 | 
			
		||||
        AutoComp.fill_combo(self.lds_temple,_temple_names)
 | 
			
		||||
@@ -556,6 +556,9 @@ class Marriage:
 | 
			
		||||
        else:
 | 
			
		||||
            self.close(0)
 | 
			
		||||
 | 
			
		||||
    def save(self):
 | 
			
		||||
        self.on_close_marriage_editor(None)
 | 
			
		||||
 | 
			
		||||
    def on_delete_event(self,obj,b):
 | 
			
		||||
        self.on_cancel_edit(obj)
 | 
			
		||||
 | 
			
		||||
@@ -565,11 +568,9 @@ class Marriage:
 | 
			
		||||
 | 
			
		||||
        idval = unicode(self.gid.get_text())
 | 
			
		||||
        family = self.family
 | 
			
		||||
        if idval != family.get_handle():
 | 
			
		||||
            if not self.db.has_family_handle(idval):
 | 
			
		||||
                if self.db.has_family_handle(family.get_handle()):
 | 
			
		||||
                    self.db.remove_family_handle(family.get_handle(),trans)
 | 
			
		||||
                family.set_handle(idval)
 | 
			
		||||
        if idval != family.get_gramps_id():
 | 
			
		||||
            if not self.db.get_family_from_gramps_id(idval):
 | 
			
		||||
                family.set_gramps_id(idval)
 | 
			
		||||
            else:
 | 
			
		||||
                WarningDialog(_("GRAMPS ID value was not changed."),
 | 
			
		||||
                              _('The GRAMPS ID that you chose for this '
 | 
			
		||||
 
 | 
			
		||||
@@ -97,31 +97,8 @@ class PeopleModel(gtk.GenericTreeModel):
 | 
			
		||||
        else:
 | 
			
		||||
            self.rebuild_data()
 | 
			
		||||
 | 
			
		||||
        self.connect('row-deleted',self.on_row_deleted)
 | 
			
		||||
        self.connect('row-inserted',self.on_row_inserted)
 | 
			
		||||
 | 
			
		||||
    def on_row_inserted(self,model,path,iter):
 | 
			
		||||
        pass
 | 
			
		||||
 | 
			
		||||
    def on_row_deleted(self,model,path):
 | 
			
		||||
        surname = self.top_path2iter[path[0]]
 | 
			
		||||
        pid = self.path2iter[(surname,path[1])]
 | 
			
		||||
 | 
			
		||||
        for idval in self.sname_sub[surname]:
 | 
			
		||||
            key = self.iter2path[idval]
 | 
			
		||||
            del self.iter2path[idval]
 | 
			
		||||
            del self.path2iter[key]
 | 
			
		||||
        self.sname_sub[surname].remove(pid)
 | 
			
		||||
 | 
			
		||||
        val = 0
 | 
			
		||||
        entries = self.sname_sub[surname]
 | 
			
		||||
        entries.sort(self.byname)
 | 
			
		||||
        for person_handle in entries:
 | 
			
		||||
            tpl = (surname,val)
 | 
			
		||||
            self.iter2path[person_handle] = tpl
 | 
			
		||||
            self.path2iter[tpl] = person_handle
 | 
			
		||||
            val += 1
 | 
			
		||||
        return 0
 | 
			
		||||
#        self.connect('row-deleted',self.on_row_deleted)
 | 
			
		||||
#        self.connect('row-inserted',self.on_row_inserted)
 | 
			
		||||
    
 | 
			
		||||
    def rebuild_data(self):
 | 
			
		||||
        self.top_path2iter = []
 | 
			
		||||
@@ -165,44 +142,6 @@ class PeopleModel(gtk.GenericTreeModel):
 | 
			
		||||
                self.path2iter,
 | 
			
		||||
                self.sname_sub)
 | 
			
		||||
 | 
			
		||||
    def add_person(self,person):
 | 
			
		||||
        pid = person.get_handle()
 | 
			
		||||
        need = 0
 | 
			
		||||
        surname = person.get_primary_name().get_surname()
 | 
			
		||||
        if self.sname_sub.has_key(surname):
 | 
			
		||||
            self.sname_sub[surname].append(pid)
 | 
			
		||||
        else:
 | 
			
		||||
            self.sname_sub[surname] = [pid]
 | 
			
		||||
 | 
			
		||||
            inscol = 0
 | 
			
		||||
            sval = 0
 | 
			
		||||
            name_list = self.db.get_surname_list()
 | 
			
		||||
            for name in name_list:
 | 
			
		||||
                if self.sname_sub.has_key(name):
 | 
			
		||||
                    self.top_path2iter[sval] = name
 | 
			
		||||
                if name == surname:
 | 
			
		||||
                    inscol = (sval,)
 | 
			
		||||
                    need = 1
 | 
			
		||||
                sval += 1
 | 
			
		||||
 | 
			
		||||
        column = 0
 | 
			
		||||
        val = 0
 | 
			
		||||
        entries = self.sname_sub[surname]
 | 
			
		||||
        entries.sort(self.byname)
 | 
			
		||||
        for person_handle in entries:
 | 
			
		||||
            tpl = (surname,val)
 | 
			
		||||
            self.iter2path[person_handle] = tpl
 | 
			
		||||
            self.path2iter[tpl] = person_handle
 | 
			
		||||
            if person_handle == pid:
 | 
			
		||||
                column = val
 | 
			
		||||
            val += 1
 | 
			
		||||
 | 
			
		||||
        col = self.top_path2iter.index(surname)
 | 
			
		||||
        mypath = (col[0],column)
 | 
			
		||||
        if need:
 | 
			
		||||
            self.row_inserted(inscol,self.get_iter(inscol))
 | 
			
		||||
        self.row_inserted(mypath,self.get_iter(mypath))
 | 
			
		||||
 | 
			
		||||
    def byname(self,f,s):
 | 
			
		||||
        n1 = self.db.person_map.get(str(f))[_NAME_COL].get_sort_name()
 | 
			
		||||
        n2 = self.db.person_map.get(str(s))[_NAME_COL].get_sort_name()
 | 
			
		||||
@@ -384,4 +323,65 @@ class PeopleModel(gtk.GenericTreeModel):
 | 
			
		||||
                    return self.db.get_place_from_handle(place_handle).get_title()
 | 
			
		||||
        return u""
 | 
			
		||||
 | 
			
		||||
#     def add_person(self,person):
 | 
			
		||||
#         pid = person.get_handle()
 | 
			
		||||
#         need = 0
 | 
			
		||||
#         surname = person.get_primary_name().get_surname()
 | 
			
		||||
#         if self.sname_sub.has_key(surname):
 | 
			
		||||
#             self.sname_sub[surname].append(pid)
 | 
			
		||||
#         else:
 | 
			
		||||
#             self.sname_sub[surname] = [pid]
 | 
			
		||||
 | 
			
		||||
#             inscol = 0
 | 
			
		||||
#             sval = 0
 | 
			
		||||
#             name_list = self.db.get_surname_list()
 | 
			
		||||
#             for name in name_list:
 | 
			
		||||
#                 if self.sname_sub.has_key(name):
 | 
			
		||||
#                     self.top_path2iter[sval] = name
 | 
			
		||||
#                 if name == surname:
 | 
			
		||||
#                     inscol = (sval,)
 | 
			
		||||
#                     need = 1
 | 
			
		||||
#                 sval += 1
 | 
			
		||||
 | 
			
		||||
#         column = 0
 | 
			
		||||
#         val = 0
 | 
			
		||||
#         entries = self.sname_sub[surname]
 | 
			
		||||
#         entries.sort(self.byname)
 | 
			
		||||
#         for person_handle in entries:
 | 
			
		||||
#             tpl = (surname,val)
 | 
			
		||||
#             self.iter2path[person_handle] = tpl
 | 
			
		||||
#             self.path2iter[tpl] = person_handle
 | 
			
		||||
#             if person_handle == pid:
 | 
			
		||||
#                 column = val
 | 
			
		||||
#             val += 1
 | 
			
		||||
 | 
			
		||||
#         col = self.top_path2iter.index(surname)
 | 
			
		||||
#         mypath = (col[0],column)
 | 
			
		||||
#         if need:
 | 
			
		||||
#             self.row_inserted(inscol,self.get_iter(inscol))
 | 
			
		||||
#         self.row_inserted(mypath,self.get_iter(mypath))
 | 
			
		||||
 | 
			
		||||
#     def on_row_inserted(self,model,path,iter):
 | 
			
		||||
#         pass
 | 
			
		||||
 | 
			
		||||
#     def on_row_deleted(self,model,path):
 | 
			
		||||
#         surname = self.top_path2iter[path[0]]
 | 
			
		||||
#         pid = self.path2iter[(surname,path[1])]
 | 
			
		||||
 | 
			
		||||
#         for idval in self.sname_sub[surname]:
 | 
			
		||||
#             key = self.iter2path[idval]
 | 
			
		||||
#             del self.iter2path[idval]
 | 
			
		||||
#             del self.path2iter[key]
 | 
			
		||||
#         self.sname_sub[surname].remove(pid)
 | 
			
		||||
 | 
			
		||||
#         val = 0
 | 
			
		||||
#         entries = self.sname_sub[surname]
 | 
			
		||||
#         entries.sort(self.byname)
 | 
			
		||||
#         for person_handle in entries:
 | 
			
		||||
#             tpl = (surname,val)
 | 
			
		||||
#             self.iter2path[person_handle] = tpl
 | 
			
		||||
#             self.path2iter[tpl] = person_handle
 | 
			
		||||
#             val += 1
 | 
			
		||||
#         return 0
 | 
			
		||||
 | 
			
		||||
_GENDER = [ _(u'female'), _(u'male'), _(u'unknown') ]
 | 
			
		||||
 
 | 
			
		||||
@@ -278,6 +278,7 @@ class GrampsParser:
 | 
			
		||||
        self.tlist = []
 | 
			
		||||
        self.conf = 2
 | 
			
		||||
        self.gid2id = {}
 | 
			
		||||
        self.gid2fid = {}
 | 
			
		||||
        
 | 
			
		||||
        self.ord = None
 | 
			
		||||
        self.objref = None
 | 
			
		||||
@@ -329,6 +330,7 @@ class GrampsParser:
 | 
			
		||||
        self.func = None
 | 
			
		||||
        self.witness_comment = ""
 | 
			
		||||
        self.idswap = {}
 | 
			
		||||
        self.fidswap = {}
 | 
			
		||||
 | 
			
		||||
        self.func_map = {
 | 
			
		||||
            "address"    : (self.start_address, self.stop_address),
 | 
			
		||||
@@ -414,26 +416,47 @@ class GrampsParser:
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
    def find_person_by_gramps_id(self,gramps_id):
 | 
			
		||||
        person = RelLib.Person()
 | 
			
		||||
        intid = self.gid2id.get(gramps_id)
 | 
			
		||||
        if intid:
 | 
			
		||||
            person.unserialize(self.db.person_map.get(intid))
 | 
			
		||||
            person = self.db.get_person_from_handle(intid)
 | 
			
		||||
        else:
 | 
			
		||||
            intid = Utils.create_id()
 | 
			
		||||
            person = RelLib.Person()
 | 
			
		||||
            person.set_handle(intid)
 | 
			
		||||
            person.set_gramps_id(gramps_id)
 | 
			
		||||
            self.db.add_person(person,self.trans)
 | 
			
		||||
            self.gid2id[gramps_id] = intid
 | 
			
		||||
        return person
 | 
			
		||||
 | 
			
		||||
    def find_family_by_gramps_id(self,gramps_id):
 | 
			
		||||
        intid = self.gid2fid.get(gramps_id)
 | 
			
		||||
        if intid:
 | 
			
		||||
            family = self.db.get_family_from_handle(intid)
 | 
			
		||||
        else:
 | 
			
		||||
            intid = Utils.create_id()
 | 
			
		||||
            family = RelLib.Family()
 | 
			
		||||
            family.set_handle(intid)
 | 
			
		||||
            family.set_gramps_id(gramps_id)
 | 
			
		||||
            self.db.add_family(family,self.trans)
 | 
			
		||||
            self.gid2fid[gramps_id] = intid
 | 
			
		||||
        return family
 | 
			
		||||
 | 
			
		||||
    def map_gid(self,id):
 | 
			
		||||
        if not self.idswap.get(id):
 | 
			
		||||
            if self.db.id_trans.get(str(id)):
 | 
			
		||||
            if self.db.get_person_from_gramps_id(id):
 | 
			
		||||
                self.idswap[id] = self.db.find_next_person_gramps_id()
 | 
			
		||||
            else:
 | 
			
		||||
                self.idswap[id] = id
 | 
			
		||||
        return self.idswap[id]
 | 
			
		||||
 | 
			
		||||
    def map_fid(self,id):
 | 
			
		||||
        if not self.fidswap.get(id):
 | 
			
		||||
            if self.db.get_family_from_gramps_id(id):
 | 
			
		||||
                self.fidswap[id] = self.db.find_next_family_gramps_id()
 | 
			
		||||
            else:
 | 
			
		||||
                self.fidswap[id] = id
 | 
			
		||||
        return self.fidswap[id]
 | 
			
		||||
 | 
			
		||||
    def parse(self,file):
 | 
			
		||||
        self.trans = self.db.transaction_begin()
 | 
			
		||||
        p = xml.parsers.expat.ParserCreate()
 | 
			
		||||
@@ -444,7 +467,7 @@ class GrampsParser:
 | 
			
		||||
            
 | 
			
		||||
        self.db.set_researcher(self.owner)
 | 
			
		||||
        if self.tempDefault != None:
 | 
			
		||||
            id = self.tempDefault
 | 
			
		||||
            id = self.map_gid(self.tempDefault)
 | 
			
		||||
            person = self.find_person_by_gramps_id(id)
 | 
			
		||||
            if person:
 | 
			
		||||
                self.db.set_default_person_handle(person.get_handle())
 | 
			
		||||
@@ -477,8 +500,8 @@ class GrampsParser:
 | 
			
		||||
        self.ord.set_status(int(attrs['val']))
 | 
			
		||||
 | 
			
		||||
    def start_sealed_to(self,attrs):
 | 
			
		||||
        id = self.map_gid(attrs['ref'])
 | 
			
		||||
        self.ord.set_family_handle(self.db.find_family_from_handle(id,self.trans))
 | 
			
		||||
        id = self.map_fid(attrs['ref'])
 | 
			
		||||
        self.ord.set_family_handle(self.find_family_by_gramps_id(id))
 | 
			
		||||
        
 | 
			
		||||
    def start_place(self,attrs):
 | 
			
		||||
        self.placeobj = self.db.find_place_from_handle(attrs['ref'],self.trans)
 | 
			
		||||
@@ -578,7 +601,8 @@ class GrampsParser:
 | 
			
		||||
            self.address.private = int(attrs["priv"])
 | 
			
		||||
 | 
			
		||||
    def start_bmark(self,attrs):
 | 
			
		||||
        person = self.find_person_by_gramps_id(self.map_gid(attrs["ref"]))
 | 
			
		||||
        id = self.map_gid(attrs["ref"])
 | 
			
		||||
        person = self.find_person_by_gramps_id(id)
 | 
			
		||||
        self.db.bookmarks.append(person.get_handle())
 | 
			
		||||
 | 
			
		||||
    def start_person(self,attrs):
 | 
			
		||||
@@ -635,7 +659,7 @@ class GrampsParser:
 | 
			
		||||
        if self.callback != None and self.count % self.increment == 0:
 | 
			
		||||
            self.callback(float(self.count)/float(self.entries))
 | 
			
		||||
        self.count = self.count + 1
 | 
			
		||||
        self.family = self.db.find_family_from_handle(attrs["id"],self.trans)
 | 
			
		||||
        self.family = self.find_family_by_gramps_id(self.map_fid(attrs["id"]))
 | 
			
		||||
        
 | 
			
		||||
        if attrs.has_key("type"):
 | 
			
		||||
            self.family.set_relationship(_FAMILY_TRANS.get(attrs["type"],
 | 
			
		||||
@@ -646,7 +670,7 @@ class GrampsParser:
 | 
			
		||||
            self.family.set_complete_flag(0)
 | 
			
		||||
 | 
			
		||||
    def start_childof(self,attrs):
 | 
			
		||||
        family = self.db.find_family_from_handle(attrs["ref"],self.trans)
 | 
			
		||||
        family = self.find_family_by_gramps_id(self.map_fid(attrs["ref"]))
 | 
			
		||||
        if attrs.has_key("mrel"):
 | 
			
		||||
            mrel = attrs["mrel"]
 | 
			
		||||
        else:
 | 
			
		||||
@@ -658,7 +682,8 @@ class GrampsParser:
 | 
			
		||||
        self.person.add_parent_family_handle(family.get_handle(),mrel,frel)
 | 
			
		||||
 | 
			
		||||
    def start_parentin(self,attrs):
 | 
			
		||||
        self.person.add_family_handle(attrs["ref"])
 | 
			
		||||
        family = self.find_family_by_gramps_id(self.map_fid(attrs["ref"]))
 | 
			
		||||
        self.person.add_family_handle(family.get_handle())
 | 
			
		||||
 | 
			
		||||
    def start_name(self,attrs):
 | 
			
		||||
        if not self.in_witness:
 | 
			
		||||
 
 | 
			
		||||
@@ -502,14 +502,6 @@ class Person(PrimaryObject,SourceNote):
 | 
			
		||||
        else:
 | 
			
		||||
            return self.parent_family_list[0][0]
 | 
			
		||||
 | 
			
		||||
    def get_main_parents_family_handle(self):
 | 
			
		||||
        """returns the main Family of the Person, the Family in which the
 | 
			
		||||
        Person is a natural born child"""
 | 
			
		||||
        if len(self.parent_family_list) == 0:
 | 
			
		||||
            return (None,None,None)
 | 
			
		||||
        else:
 | 
			
		||||
            return self.parent_family_list[0]
 | 
			
		||||
 | 
			
		||||
    def set_lds_baptism(self,ord):
 | 
			
		||||
        """Sets the LDS Baptism ordinance"""
 | 
			
		||||
        self.lds_bapt = ord
 | 
			
		||||
 
 | 
			
		||||
@@ -170,8 +170,8 @@ class RelationshipCalculator:
 | 
			
		||||
        pmap[person.get_handle()] = index
 | 
			
		||||
 | 
			
		||||
        family_handle = person.get_main_parents_family_handle()
 | 
			
		||||
        family = self.db.get_family_from_handle(family_handle)
 | 
			
		||||
        if family != None:
 | 
			
		||||
        if family_handle != None:
 | 
			
		||||
            family = self.db.get_family_from_handle(family_handle)
 | 
			
		||||
            father = self.db.get_person_from_handle(family.get_father_handle())
 | 
			
		||||
            mother = self.db.get_person_from_handle(family.get_mother_handle())
 | 
			
		||||
            self.apply_filter(father,index+1,plist,pmap)
 | 
			
		||||
 
 | 
			
		||||
@@ -98,7 +98,8 @@ class RelCalc:
 | 
			
		||||
            if p == self.person:
 | 
			
		||||
                continue
 | 
			
		||||
            val = self.db.get_person_from_handle(key).get_display_info()
 | 
			
		||||
            self.clist.add([val[0],val[1],val[3],val[5],val[6]],p.get_handle())
 | 
			
		||||
            event = self.db.find_event_from_handle(val[3])
 | 
			
		||||
            self.clist.add([val[0],val[1],event.get_date(),val[5],val[6]],p.get_handle())
 | 
			
		||||
 | 
			
		||||
        self.clist.connect_model()
 | 
			
		||||
            
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user