* src/PedView.py (get_distance): Remove function; use similar
from Relationship module. svn: r3793
This commit is contained in:
parent
b51838f634
commit
c4751c41d5
@ -1,3 +1,7 @@
|
|||||||
|
2004-12-09 Alex Roitman <shura@alex.neuro.umn.edu>
|
||||||
|
* src/PedView.py (get_distance): Remove function; use similar
|
||||||
|
from Relationship module.
|
||||||
|
|
||||||
2004-12-09 Don Allingham <dallingham@users.sourceforge.net>
|
2004-12-09 Don Allingham <dallingham@users.sourceforge.net>
|
||||||
* src/FamilyView.py: remove debug statement
|
* src/FamilyView.py: remove debug statement
|
||||||
* src/PeopleModel.py: abandon the attempt to use TreeFilter
|
* src/PeopleModel.py: abandon the attempt to use TreeFilter
|
||||||
|
@ -172,6 +172,8 @@ class PedigreeView:
|
|||||||
self.boxes = []
|
self.boxes = []
|
||||||
self.root = self.canvas.root()
|
self.root = self.canvas.root()
|
||||||
self.active_person = None
|
self.active_person = None
|
||||||
|
r = Relationship.RelationshipCalculator(self.parent.db)
|
||||||
|
self.distance = r.get_relationship_distance
|
||||||
self.x1 = 0
|
self.x1 = 0
|
||||||
self.x2 = 0
|
self.x2 = 0
|
||||||
self.y1 = 0
|
self.y1 = 0
|
||||||
@ -291,11 +293,11 @@ class PedigreeView:
|
|||||||
|
|
||||||
gen_no = 1
|
gen_no = 1
|
||||||
if self.anchor:
|
if self.anchor:
|
||||||
gn = get_distance(self.parent.db,self.anchor,self.active_person)
|
(firstRel,secondRel,common) = self.distance(self.active_person,self.anchor)
|
||||||
if gn == None:
|
if not common or type(common) in [type(''),type(u'')]:
|
||||||
self.remove_anchor()
|
self.remove_anchor()
|
||||||
else:
|
else:
|
||||||
gen_no = gn
|
gen_no = len(firstRel)-len(secondRel)
|
||||||
|
|
||||||
for i in range(int(xdiv)):
|
for i in range(int(xdiv)):
|
||||||
item = self.root.add(gnome.canvas.CanvasText, x=(cw*i/xdiv + cpad), y=h,
|
item = self.root.add(gnome.canvas.CanvasText, x=(cw*i/xdiv + cpad), y=h,
|
||||||
@ -711,63 +713,6 @@ class PedigreeView:
|
|||||||
self.add_nav_portion_to_menu(menu)
|
self.add_nav_portion_to_menu(menu)
|
||||||
menu.popup(None,None,None,event.button,event.time)
|
menu.popup(None,None,None,event.button,event.time)
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# Function to determine distance between people
|
|
||||||
#
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
def get_distance(db,orig_person,other_person):
|
|
||||||
"""
|
|
||||||
Returns a number of generations representing distance between two people.
|
|
||||||
|
|
||||||
If the two people don't have common ancestors, None is returned.
|
|
||||||
Otherwise, the returned number is the distance from the orig_person
|
|
||||||
to the closest common ancestor minus the distance from the other_person
|
|
||||||
to the closest common ancestor.
|
|
||||||
"""
|
|
||||||
|
|
||||||
firstMap = {}
|
|
||||||
firstList = []
|
|
||||||
secondMap = {}
|
|
||||||
secondList = []
|
|
||||||
common = []
|
|
||||||
rank = 9999999
|
|
||||||
|
|
||||||
if orig_person == None or other_person == None:
|
|
||||||
return None
|
|
||||||
|
|
||||||
if orig_person == other_person:
|
|
||||||
return 0
|
|
||||||
|
|
||||||
try:
|
|
||||||
r = Relationship.RelationshipCalculator(db)
|
|
||||||
r.apply_filter(orig_person,0,firstList,firstMap)
|
|
||||||
r.apply_filter(other_person,0,secondList,secondMap)
|
|
||||||
except RuntimeError:
|
|
||||||
return None
|
|
||||||
|
|
||||||
for person_handle in firstList:
|
|
||||||
if person_handle in secondList:
|
|
||||||
new_rank = firstMap[person_handle]
|
|
||||||
if new_rank < rank:
|
|
||||||
rank = new_rank
|
|
||||||
common = [ person_handle ]
|
|
||||||
elif new_rank == rank:
|
|
||||||
common.append(person_handle)
|
|
||||||
|
|
||||||
if not common:
|
|
||||||
return None
|
|
||||||
|
|
||||||
firstRel = None
|
|
||||||
secondRel = None
|
|
||||||
|
|
||||||
person_handle = common[0]
|
|
||||||
secondRel = secondMap[person_handle]
|
|
||||||
firstRel = firstMap[person_handle]
|
|
||||||
if firstRel == None or secondRel == None:
|
|
||||||
return None
|
|
||||||
return firstRel-secondRel
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# Function to return children's list of a person
|
# Function to return children's list of a person
|
||||||
|
Loading…
Reference in New Issue
Block a user