Relcal changes for plugins
svn: r1479
This commit is contained in:
parent
251254abf0
commit
1fa91ea6bc
@ -1,3 +1,6 @@
|
||||
Version 0.9.2
|
||||
* Fixed duplicate place problem.
|
||||
|
||||
Version 0.9.1
|
||||
* Custom paper sizes may be set for reports
|
||||
* Witnesses may be added to an event. The witnesses do not have to be in
|
||||
|
@ -79,6 +79,19 @@ _textdoc = []
|
||||
_drawdoc = []
|
||||
_failmsg = []
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Default relationship calculator
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import Relationship
|
||||
|
||||
_relcalc_task = Relationship.get_relationship
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
_unavailable = _("No description was provided"),
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@ -453,9 +466,13 @@ def register_tool(task, name,
|
||||
del_index = i
|
||||
if del_index != -1:
|
||||
del _tools[del_index]
|
||||
_tools.append((task, category, name, description, xpm, status, author_name, author_email))
|
||||
|
||||
_tools.append((task, category, name, description, xpm, status, author_name, author_name))
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Text document registration
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
def register_text_doc(name,classref, table, paper, style, ext):
|
||||
"""Register a text document generator"""
|
||||
for n in _textdoc:
|
||||
@ -463,6 +480,11 @@ def register_text_doc(name,classref, table, paper, style, ext):
|
||||
return
|
||||
_textdoc.append((name,classref,table,paper,style,ext))
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Drawing document registration
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
def register_draw_doc(name,classref,paper,style, ext):
|
||||
"""Register a drawing document generator"""
|
||||
for n in _drawdoc:
|
||||
@ -470,6 +492,23 @@ def register_draw_doc(name,classref,paper,style, ext):
|
||||
return
|
||||
_drawdoc.append((name,classref,paper,style,ext))
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Relationchip calculator registration
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
def register_relcalc(func, languages):
|
||||
"""Register a relationshp calculator"""
|
||||
import sys
|
||||
global _relcal_task
|
||||
|
||||
if sys.environ.get('LANG') in languages:
|
||||
_relcalc_task = func
|
||||
|
||||
def relationship_function():
|
||||
global _relcal_task
|
||||
return _relcalc_task
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Image attributes
|
||||
|
@ -33,148 +33,150 @@ import GrampsCfg
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
level_name = [ "", "First", "Second", "Third", "Fourth", "Fifth", "Sixth",
|
||||
"Seventh", "Eighth", "Ninth", "Tenth", "Eleventh", "Twelfth",
|
||||
"Thirteenth", "Fourteenth", "Fifteenth", "Sixteenth",
|
||||
"Seventeenth", "Eigthteenth", "Nineteenth", "Twentieth" ]
|
||||
_level_name = [ "", "first", "second", "third", "fourth", "fifth", "sixth",
|
||||
"seventh", "eighth", "ninth", "tenth", "eleventh", "twelfth",
|
||||
"thirteenth", "fourteenth", "fifteenth", "sixteenth",
|
||||
"seventeenth", "eigthteenth", "nineteenth", "twentieth" ]
|
||||
|
||||
removed_level = [ "", " once removed", " twice removed", " three times removed",
|
||||
" four times removed", " five times removed", " six times removed",
|
||||
" sevent times removed", " eight times removed", " nine times removed",
|
||||
" ten times removed", " eleven times removed", " twelve times removed",
|
||||
" thirteen times removed", " fourteen times removed", " fifteen times removed",
|
||||
" sixteen times removed", " seventeen times removed", " eighteen times removed",
|
||||
" nineteen times removed", " twenty times removed" ]
|
||||
_removed_level = [ "", " once removed", " twice removed", " three times removed",
|
||||
" four times removed", " five times removed", " six times removed",
|
||||
" sevent times removed", " eight times removed", " nine times removed",
|
||||
" ten times removed", " eleven times removed", " twelve times removed",
|
||||
" thirteen times removed", " fourteen times removed", " fifteen times removed",
|
||||
" sixteen times removed", " seventeen times removed", " eighteen times removed",
|
||||
" nineteen times removed", " twenty times removed" ]
|
||||
|
||||
father_level = [ "", "Father", "Grandfather", "Great Grandfather", "Second Great Grandfather",
|
||||
"Third Great Grandfather", "Fourth Great Grandfather",
|
||||
"Fifth Great Grandfather", "Sixth Great Grandfather",
|
||||
"Seventh Great Grandfather", "Eighth Great Grandfather",
|
||||
"Ninth Great Grandfather", "Tenth Great Grandfather",
|
||||
"Eleventh Great Grandfather", "Twelefth Great Grandfather",
|
||||
"Thirteenth Great Grandfather", "Fourteenth Great Grandfather",
|
||||
"Fifteenth Great Grandfather", "Sixteenth Great Grandfather",
|
||||
"Seventeenth Great Grandfather", "Eightteenth Great Grandfather",
|
||||
"Ninetheen Great Grandfather", "Twentieth Great Grandfather", ]
|
||||
_father_level = [ "", "father", "grandfather", "great grandfather", "second great grandfather",
|
||||
"third great grandfather", "fourth great grandfather",
|
||||
"fifth great grandfather", "sixth great grandfather",
|
||||
"seventh great grandfather", "eighth great grandfather",
|
||||
"ninth great grandfather", "tenth great grandfather",
|
||||
"eleventh great grandfather", "twelefth great grandfather",
|
||||
"thirteenth great grandfather", "fourteenth great grandfather",
|
||||
"fifteenth great grandfather", "sixteenth great grandfather",
|
||||
"seventeenth great grandfather", "eightteenth great grandfather",
|
||||
"ninetheen great grandfather", "twentieth great grandfather", ]
|
||||
|
||||
mother_level = [ "", "Mother", "Grandmother", "Great Grandmother", "Second Great Grandmother",
|
||||
"Third Great Grandmother", "Fourth Great Grandmother",
|
||||
"Fifth Great Grandmother", "Sixth Great Grandmother",
|
||||
"Seventh Great Grandmother", "Eighth Great Grandmother",
|
||||
"Ninth Great Grandmother", "Tenth Great Grandmother",
|
||||
"Eleventh Great Grandmother", "Twelefth Great Grandmother",
|
||||
"Thirteenth Great Grandmother", "Fourteenth Great Grandmother",
|
||||
"Fifteenth Great Grandmother", "Sixteenth Great Grandmother",
|
||||
"Seventeenth Great Grandmother", "Eightteenth Great Grandmother",
|
||||
"Ninetheen Great Grandmother", "Twentieth Great Grandmother", ]
|
||||
_mother_level = [ "", "mother", "grandmother", "great grandmother", "second great grandmother",
|
||||
"third great grandmother", "fourth great grandmother",
|
||||
"fifth great grandmother", "sixth great grandmother",
|
||||
"seventh great grandmother", "eighth great grandmother",
|
||||
"ninth great grandmother", "tenth great grandmother",
|
||||
"eleventh great grandmother", "twelefth great grandmother",
|
||||
"thirteenth great grandmother", "fourteenth great grandmother",
|
||||
"fifteenth great grandmother", "sixteenth great grandmother",
|
||||
"seventeenth great grandmother", "eightteenth great grandmother",
|
||||
"ninetheen great grandmother", "twentieth great grandmother", ]
|
||||
|
||||
son_level = [ "", "Son", "Grandson", "Great Grandson", "Second Great Grandson",
|
||||
"Third Great Grandson", "Fourth Great Grandson",
|
||||
"Fifth Great Grandson", "Sixth Great Grandson",
|
||||
"Seventh Great Grandson", "Eighth Great Grandson",
|
||||
"Ninth Great Grandson", "Tenth Great Grandson",
|
||||
"Eleventh Great Grandson", "Twelefth Great Grandson",
|
||||
"Thirteenth Great Grandson", "Fourteenth Great Grandson",
|
||||
"Fifteenth Great Grandson", "Sixteenth Great Grandson",
|
||||
"Seventeenth Great Grandson", "Eightteenth Great Grandson",
|
||||
"Ninetheen Great Grandson", "Twentieth Great Grandson", ]
|
||||
_son_level = [ "", "son", "grandson", "great grandson", "second great grandson",
|
||||
"third great grandson", "fourth great grandson",
|
||||
"fifth great grandson", "sixth great grandson",
|
||||
"seventh great grandson", "eighth great grandson",
|
||||
"ninth great grandson", "tenth great grandson",
|
||||
"eleventh great grandson", "twelefth great grandson",
|
||||
"thirteenth great grandson", "fourteenth great grandson",
|
||||
"fifteenth great grandson", "sixteenth great grandson",
|
||||
"seventeenth great grandson", "eightteenth great grandson",
|
||||
"ninetheen great grandson", "twentieth great grandson", ]
|
||||
|
||||
daughter_level = [ "", "Daughter", "Granddaughter", "Great Granddaughter", "Second Great Granddaughter",
|
||||
"Third Great Granddaughter", "Fourth Great Granddaughter",
|
||||
"Fifth Great Granddaughter", "Sixth Great Granddaughter",
|
||||
"Seventh Great Granddaughter", "Eighth Great Granddaughter",
|
||||
"Ninth Great Granddaughter", "Tenth Great Granddaughter",
|
||||
"Eleventh Great Granddaughter", "Twelefth Great Granddaughter",
|
||||
"Thirteenth Great Granddaughter", "Fourteenth Great Granddaughter",
|
||||
"Fifteenth Great Granddaughter", "Sixteenth Great Granddaughter",
|
||||
"Seventeenth Great Granddaughter", "Eightteenth Great Granddaughter",
|
||||
"Ninetheen Great Granddaughter", "Twentieth Great Granddaughter", ]
|
||||
_daughter_level = [ "", "daughter", "granddaughter", "great granddaughter",
|
||||
"second great granddaughter",
|
||||
"third great granddaughter", "fourth great granddaughter",
|
||||
"fifth great granddaughter", "sixth great granddaughter",
|
||||
"seventh great granddaughter", "eighth great granddaughter",
|
||||
"ninth great granddaughter", "tenth great granddaughter",
|
||||
"eleventh great granddaughter", "twelefth great granddaughter",
|
||||
"thirteenth great granddaughter", "fourteenth great granddaughter",
|
||||
"fifteenth great granddaughter", "sixteenth great granddaughter",
|
||||
"seventeenth great granddaughter", "eightteenth great granddaughter",
|
||||
"ninetheen great granddaughter", "twentieth great granddaughter", ]
|
||||
|
||||
sister_level = [ "", "Sister", "Aunt", "Grandaunt", "Great Grandaunt", "Second Great Grandaunt",
|
||||
"Third Great Grandaunt", "Fourth Great Grandaunt",
|
||||
"Fifth Great Grandaunt", "Sixth Great Grandaunt",
|
||||
"Seventh Great Grandaunt", "Eighth Great Grandaunt",
|
||||
"Ninth Great Grandaunt", "Tenth Great Grandaunt",
|
||||
"Eleventh Great Grandaunt", "Twelefth Great Grandaunt",
|
||||
"Thirteenth Great Grandaunt", "Fourteenth Great Grandaunt",
|
||||
"Fifteenth Great Grandaunt", "Sixteenth Great Grandaunt",
|
||||
"Seventeenth Great Grandaunt", "Eightteenth Great Grandaunt",
|
||||
"Ninetheen Great Grandaunt", "Twentieth Great Grandaunt", ]
|
||||
_sister_level = [ "", "sister", "aunt", "grandaunt", "great grandaunt", "second great grandaunt",
|
||||
"third great grandaunt", "fourth great grandaunt",
|
||||
"fifth great grandaunt", "sixth great grandaunt",
|
||||
"seventh great grandaunt", "eighth great grandaunt",
|
||||
"ninth great grandaunt", "tenth great grandaunt",
|
||||
"eleventh great grandaunt", "twelefth great grandaunt",
|
||||
"thirteenth great grandaunt", "fourteenth great grandaunt",
|
||||
"fifteenth great grandaunt", "sixteenth great grandaunt",
|
||||
"seventeenth great grandaunt", "eightteenth great grandaunt",
|
||||
"ninetheen great grandaunt", "twentieth great grandaunt", ]
|
||||
|
||||
brother_level = [ "", "Brother", "Uncle", "Granduncle", "Great Granduncle", "Second Great Granduncle",
|
||||
"Third Great Granduncle", "Fourth Great Granduncle",
|
||||
"Fifth Great Granduncle", "Sixth Great Granduncle",
|
||||
"Seventh Great Granduncle", "Eighth Great Granduncle",
|
||||
"Ninth Great Granduncle", "Tenth Great Granduncle",
|
||||
"Eleventh Great Granduncle", "Twelefth Great Granduncle",
|
||||
"Thirteenth Great Granduncle", "Fourteenth Great Granduncle",
|
||||
"Fifteenth Great Granduncle", "Sixteenth Great Granduncle",
|
||||
"Seventeenth Great Granduncle", "Eightteenth Great Granduncle",
|
||||
"Ninetheen Great Granduncle", "Twentieth Great Granduncle", ]
|
||||
_brother_level = [ "", "brother", "uncle", "granduncle", "great granduncle", "second great granduncle",
|
||||
"third great granduncle", "fourth great granduncle",
|
||||
"fifth great granduncle", "sixth great granduncle",
|
||||
"seventh great granduncle", "eighth great granduncle",
|
||||
"ninth great granduncle", "tenth great granduncle",
|
||||
"eleventh great granduncle", "twelefth great granduncle",
|
||||
"thirteenth great granduncle", "fourteenth great granduncle",
|
||||
"fifteenth great granduncle", "sixteenth great granduncle",
|
||||
"seventeenth great granduncle", "eightteenth great granduncle",
|
||||
"ninetheen great granduncle", "twentieth great granduncle", ]
|
||||
|
||||
nephew_level = [ "", "Nephew", "Grandnephew", "Great Grandnephew", "Second Great Grandnephew",
|
||||
"Third Great Grandnephew", "Fourth Great Grandnephew",
|
||||
"Fifth Great Grandnephew", "Sixth Great Grandnephew",
|
||||
"Seventh Great Grandnephew", "Eighth Great Grandnephew",
|
||||
"Ninth Great Grandnephew", "Tenth Great Grandnephew",
|
||||
"Eleventh Great Grandnephew", "Twelefth Great Grandnephew",
|
||||
"Thirteenth Great Grandnephew", "Fourteenth Great Grandnephew",
|
||||
"Fifteenth Great Grandnephew", "Sixteenth Great Grandnephew",
|
||||
"Seventeenth Great Grandnephew", "Eightteenth Great Grandnephew",
|
||||
"Ninetheen Great Grandnephew", "Twentieth Great Grandnephew", ]
|
||||
niece_level = [ "", "Niece", "Grandniece", "Great Grandniece", "Second Great Grandniece",
|
||||
"Third Great Grandniece", "Fourth Great Grandniece",
|
||||
"Fifth Great Grandniece", "Sixth Great Grandniece",
|
||||
"Seventh Great Grandniece", "Eighth Great Grandniece",
|
||||
"Ninth Great Grandniece", "Tenth Great Grandniece",
|
||||
"Eleventh Great Grandniece", "Twelefth Great Grandniece",
|
||||
"Thirteenth Great Grandniece", "Fourteenth Great Grandniece",
|
||||
"Fifteenth Great Grandniece", "Sixteenth Great Grandniece",
|
||||
"Seventeenth Great Grandniece", "Eightteenth Great Grandniece",
|
||||
"Ninetheen Great Grandniece", "Twentieth Great Grandniece", ]
|
||||
_nephew_level = [ "", "nephew", "grandnephew", "great grandnephew", "second great grandnephew",
|
||||
"third great grandnephew", "fourth great grandnephew",
|
||||
"fifth great grandnephew", "sixth great grandnephew",
|
||||
"seventh great grandnephew", "eighth great grandnephew",
|
||||
"ninth great grandnephew", "tenth great grandnephew",
|
||||
"eleventh great grandnephew", "twelefth great grandnephew",
|
||||
"thirteenth great grandnephew", "fourteenth great grandnephew",
|
||||
"fifteenth great grandnephew", "sixteenth great grandnephew",
|
||||
"seventeenth great grandnephew", "eightteenth great grandnephew",
|
||||
"ninetheen great grandnephew", "twentieth great grandnephew", ]
|
||||
|
||||
_niece_level = [ "", "niece", "grandniece", "great grandniece", "second great grandniece",
|
||||
"third great grandniece", "fourth great grandniece",
|
||||
"fifth great grandniece", "sixth great grandniece",
|
||||
"seventh great grandniece", "eighth great grandniece",
|
||||
"ninth great grandniece", "tenth great grandniece",
|
||||
"eleventh great grandniece", "twelefth great grandniece",
|
||||
"thirteenth great grandniece", "fourteenth great grandniece",
|
||||
"fifteenth great grandniece", "sixteenth great grandniece",
|
||||
"seventeenth great grandniece", "eightteenth great grandniece",
|
||||
"ninetheen great grandniece", "twentieth great grandniece", ]
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
def filter(person,index,list,map):
|
||||
def apply_filter(person,index,plist,pmap):
|
||||
if person == None:
|
||||
return
|
||||
list.append(person)
|
||||
map[person.getId()] = index
|
||||
plist.append(person)
|
||||
pmap[person.getId()] = index
|
||||
|
||||
family = person.getMainParents()
|
||||
if family != None:
|
||||
filter(family.getFather(),index+1,list,map)
|
||||
filter(family.getMother(),index+1,list,map)
|
||||
apply_filter(family.getFather(),index+1,plist,pmap)
|
||||
apply_filter(family.getMother(),index+1,plist,pmap)
|
||||
|
||||
def get_cousin(f,s,level,removed):
|
||||
return "%s cousin%s of %s" % (level_name[level],removed_level[removed],f)
|
||||
def get_cousin(level,removed):
|
||||
return "%s cousin%s" % (_level_name[level],_removed_level[removed])
|
||||
|
||||
def get_father(f,s,level):
|
||||
return "%s of %s" % (father_level[level],f)
|
||||
def get_father(level):
|
||||
return _father_level[level]
|
||||
|
||||
def get_son(f,s,level):
|
||||
return "%s of %s" % (son_level[level],f)
|
||||
def get_son(level):
|
||||
return _son_level[level]
|
||||
|
||||
def get_mother(f,s,level):
|
||||
return "%s of %s" % (mother_level[level],f)
|
||||
def get_mother(level):
|
||||
return _mother_level[level]
|
||||
|
||||
def get_daughter(f,s,level):
|
||||
return "%s of %s" % (daughter_level[level],f)
|
||||
def get_daughter(level):
|
||||
return _daughter_level[level]
|
||||
|
||||
def get_aunt(f,s,level):
|
||||
return "%s of %s" % (sister_level[level],f)
|
||||
def get_aunt(level):
|
||||
return _sister_level[level]
|
||||
|
||||
def get_uncle(f,s,level):
|
||||
return "%s of %s" % (brother_level[level],f)
|
||||
def get_uncle(level):
|
||||
return _brother_level[level]
|
||||
|
||||
def get_nephew(f,s,level):
|
||||
return "%s of %s" % (nephew_level[level],f)
|
||||
def get_nephew(level):
|
||||
return _nephew_level[level]
|
||||
|
||||
def get_niece(f,s,level):
|
||||
return "%s of %s" % (niece_level[level],f)
|
||||
def get_niece(level):
|
||||
return _niece_level[level],f
|
||||
|
||||
def is_spouse(orig,other):
|
||||
for f in orig.getFamilyList():
|
||||
@ -183,6 +185,10 @@ def is_spouse(orig,other):
|
||||
return 0
|
||||
|
||||
def get_relationship(orig_person,other_person):
|
||||
"""
|
||||
returns a string representing the relationshp between the two people,
|
||||
along with a list of common ancestors (typically father,mother)
|
||||
"""
|
||||
firstMap = {}
|
||||
firstList = []
|
||||
secondMap = {}
|
||||
@ -191,18 +197,18 @@ def get_relationship(orig_person,other_person):
|
||||
rank = 9999999
|
||||
|
||||
if orig_person == None:
|
||||
return "No Home Person has been defined"
|
||||
return "undefined"
|
||||
|
||||
firstName = orig_person.getPrimaryName().getRegularName()
|
||||
secondName = other_person.getPrimaryName().getRegularName()
|
||||
|
||||
if orig_person == other_person:
|
||||
return firstName
|
||||
return ('', [])
|
||||
if is_spouse(orig_person,other_person):
|
||||
return "Spouse of %s" % (firstName)
|
||||
return ("spouse",[])
|
||||
|
||||
filter(orig_person,0,firstList,firstMap)
|
||||
filter(other_person,0,secondList,secondMap)
|
||||
apply_filter(orig_person,0,firstList,firstMap)
|
||||
apply_filter(other_person,0,secondList,secondMap)
|
||||
|
||||
for person in firstList:
|
||||
if person in secondList:
|
||||
@ -232,32 +238,32 @@ def get_relationship(orig_person,other_person):
|
||||
firstRel = secondMap[person.getId()]
|
||||
|
||||
if firstRel == -1:
|
||||
return "No relationship to %s" % firstName
|
||||
return ("",[])
|
||||
elif firstRel == 0:
|
||||
if secondRel == 0:
|
||||
return firstName
|
||||
return ('',common)
|
||||
elif other_person.getGender() == RelLib.Person.male:
|
||||
return get_father(firstName,secondName,secondRel)
|
||||
return (get_father(secondRel),common)
|
||||
else:
|
||||
return get_mother(firstName,secondName,secondRel)
|
||||
return (get_mother(secondRel),common)
|
||||
elif secondRel == 0:
|
||||
if other_person.getGender() == RelLib.Person.male:
|
||||
return get_son(firstName,secondName,firstRel)
|
||||
return (get_son(firstRel),common)
|
||||
else:
|
||||
return get_daughter(firstName,secondName,firstRel)
|
||||
return (get_daughter(firstRel),common)
|
||||
elif firstRel == 1:
|
||||
if other_person.getGender() == RelLib.Person.male:
|
||||
return get_uncle(firstName,secondName,secondRel)
|
||||
return (get_uncle(secondRel),common)
|
||||
else:
|
||||
return get_aunt(firstName,secondName,secondRel)
|
||||
return (get_aunt(secondRel),common)
|
||||
elif secondRel == 1:
|
||||
if other_person.getGender() == RelLib.Person.male:
|
||||
return get_nephew(firstName,secondName,firstRel-1)
|
||||
return (get_nephew(firstRel-1),common)
|
||||
else:
|
||||
return get_niece(firstName,secondName,firstRel-1)
|
||||
return (get_niece(firstRel-1),common)
|
||||
else:
|
||||
if secondRel > firstRel:
|
||||
return get_cousin(firstName,secondName,firstRel-1,secondRel-firstRel)
|
||||
return (get_cousin(firstRel-1,secondRel-firstRel),common)
|
||||
else:
|
||||
return get_cousin(firstName,secondName,secondRel-1,firstRel-secondRel)
|
||||
return (get_cousin(secondRel-1,firstRel-secondRel),common)
|
||||
|
||||
|
@ -279,7 +279,8 @@ class PdfDoc(TextDoc.TextDoc):
|
||||
def write_text(self,text):
|
||||
text = text.replace('&','&'); # Must be first
|
||||
text = text.replace('<','<');
|
||||
self.text = self.text + text.replace('>','>');
|
||||
text = text.replace('>','>');
|
||||
self.text = self.text + text.replace('\n','<br>');
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
@ -301,5 +302,5 @@ Plugins.register_text_doc(
|
||||
table=1,
|
||||
paper=1,
|
||||
style=1,
|
||||
ext="pdf"
|
||||
ext=".pdf"
|
||||
)
|
||||
|
@ -72,7 +72,6 @@ import VersionControl
|
||||
import ReadXML
|
||||
import ListModel
|
||||
import GrampsXML
|
||||
import Relationship
|
||||
|
||||
try:
|
||||
import GrampsZODB
|
||||
@ -138,6 +137,7 @@ class Gramps:
|
||||
self.db.set_pprefix(GrampsCfg.pprefix)
|
||||
|
||||
GrampsCfg.loadConfig(self.full_update)
|
||||
self.relationship = Plugins.relationship_function()
|
||||
self.init_interface()
|
||||
|
||||
if arg != None:
|
||||
@ -1027,10 +1027,24 @@ class Gramps:
|
||||
pname = GrampsCfg.nameof(self.active_person)
|
||||
name = "[%s] %s" % (self.active_person.getId(),pname)
|
||||
else:
|
||||
name = Relationship.get_relationship(self.db.getDefaultPerson(),
|
||||
self.active_person)
|
||||
name = self.display_relationship()
|
||||
self.status_text(name)
|
||||
return 0
|
||||
|
||||
def display_relationship(self):
|
||||
try:
|
||||
pname = GrampsCfg.nameof(self.db.getDefaultPerson())
|
||||
(name,plist) = self.relationship(self.db.getDefaultPerson(),
|
||||
self.active_person)
|
||||
|
||||
if name:
|
||||
return _("%(relationship)s of %(person)s") % {
|
||||
'relationship' : name, 'person' : pname }
|
||||
else:
|
||||
return ""
|
||||
except:
|
||||
import DisplayTrace
|
||||
DisplayTrace.DisplayTrace()
|
||||
|
||||
def on_open_activate(self,obj):
|
||||
wFs = gtk.glade.XML(const.revisionFile, "dbopen")
|
||||
|
@ -45,249 +45,9 @@ import gtk.glade
|
||||
import RelLib
|
||||
import Utils
|
||||
import ListModel
|
||||
import Plugins
|
||||
from intl import gettext as _
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
def filter(person,index,list,map):
|
||||
if person == None:
|
||||
return
|
||||
list.append(person)
|
||||
map[person.getId()] = index
|
||||
|
||||
family = person.getMainParents()
|
||||
if family != None:
|
||||
filter(family.getFather(),index+1,list,map)
|
||||
filter(family.getMother(),index+1,list,map)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
def get_cousin(f,s,level,removed):
|
||||
if level == 1:
|
||||
if removed == 0:
|
||||
return _("%(p1)s is the first cousin of %(p2)s.") % {
|
||||
'p1' : f, 'p2' : s}
|
||||
elif removed == 1:
|
||||
return _("%(p1)s is the first cousin once removed of %(p2)s.") % {
|
||||
'p1' : f, 'p2' : s}
|
||||
elif removed == 2:
|
||||
return _("%(p1)s is the first cousin twice removed of %(p2)s.") % {
|
||||
'p1' : f,'p2' : s}
|
||||
else:
|
||||
return _("%(p1)s is the first cousin %(removed)d times removed of %(p2)s.") % {
|
||||
'p1' :f, 'p2' :s, 'removed' : removed}
|
||||
elif level == 2:
|
||||
if removed == 0:
|
||||
return _("%(p1)s is the second cousin of %(p2)s.") % {
|
||||
'p1' : f, 'p2' : s }
|
||||
elif removed == 1:
|
||||
return _("%(p1)s is the second cousin once removed of %(p2)s.") % {
|
||||
'p1' : f, 'p2' : s }
|
||||
elif removed == 2:
|
||||
return _("%(p1)s is the second cousin twice removed of %(p2)s.") % {
|
||||
'p1' : f, 'p2' : s }
|
||||
else:
|
||||
return _("%(p1)s is the second cousin %(removed)d times removed of %(p2)s.") % {
|
||||
'p1' : f, 'p2' : s, 'removed' : removed }
|
||||
elif level == 3:
|
||||
if removed == 0:
|
||||
return _("%(p1)s is the third cousin of %(p2)s.") % {
|
||||
'p1' : f, 'p2' : s }
|
||||
elif removed == 1:
|
||||
return _("%(p1)s is the third cousin once removed of %(p2)s.") % {
|
||||
'p1' : f, 'p2' : s }
|
||||
elif removed == 2:
|
||||
return _("%(p1)s is the third cousin twice removed of %(p2)s.") % {
|
||||
'p1' : f, 'p2' : s }
|
||||
else:
|
||||
return _("%(p1)s is the third cousin %(removed)d times removed of %(p2)s.") % {
|
||||
'p1' : f, 'p2' : s, 'removed' : removed }
|
||||
else:
|
||||
if removed == 0:
|
||||
return _("%(p1)s is the %(level)dth cousin of %(p2)s.") % {
|
||||
'p1': f, 'level': level, 'p2' : s }
|
||||
elif removed == 1:
|
||||
return _("%(p1)s is the %(level)dth cousin once removed of %(p2)s.") % {
|
||||
'p1': f, 'level': level, 'p2' : s }
|
||||
elif removed == 2:
|
||||
return _("%(p1)s is the %(level)dth cousin twice removed of %(p2)s.") % {
|
||||
'p1': f, 'level': level, 'p2' : s }
|
||||
else:
|
||||
return _("%(p1)s is the %(level)dth cousin %(removed)d times removed of %(p2)s.") % {
|
||||
'p1': f, 'level': level, 'removed' : removed, 'p2' : s }
|
||||
|
||||
def get_father(f,s,level):
|
||||
if level == 1:
|
||||
return _("%(p1)s is the father of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 2:
|
||||
return _("%(p1)s is the grandfather of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 3:
|
||||
return _("%(p1)s is the great grandfather of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 4:
|
||||
return _("%(p1)s is the second great grandfather of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 5:
|
||||
return _("%(p1)s is the third great grandfather of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
else:
|
||||
return _("%(p1)s is the %(level)dth great grandfather of %(p2)s.") % {
|
||||
'p1': s, 'level' : level-2, 'p2': f }
|
||||
|
||||
def get_son(f,s,level):
|
||||
if level == 1:
|
||||
return _("%(p1)s is the son of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 2:
|
||||
return _("%(p1)s is the grandson of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 3:
|
||||
return _("%(p1)s is the great grandson of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 4:
|
||||
return _("%(p1)s is the second great grandson of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 5:
|
||||
return _("%(p1)s is the third great grandson of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
else:
|
||||
return _("%(p1)s is the %(level)dth great grandson of %(p2)s.") % {
|
||||
'p1': s, 'level' : level-2, 'p2': f }
|
||||
|
||||
def get_mother(f,s,level):
|
||||
if level == 1:
|
||||
return _("%(p1)s is the mother of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 2:
|
||||
return _("%(p1)s is the grandmother of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 3:
|
||||
return _("%(p1)s is the great grandmother of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 4:
|
||||
return _("%(p1)s is the second great grandmother of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 5:
|
||||
return _("%(p1)s is the third great grandmother of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
else:
|
||||
return _("%(p1)s is the %(level)dth great grandmother of %(p2)s.") % {
|
||||
'p1': s, 'level' : level-2, 'p2': f }
|
||||
|
||||
def get_daughter(f,s,level):
|
||||
if level == 1:
|
||||
return _("%(p1)s is the daughter of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 2:
|
||||
return _("%(p1)s is the granddaughter of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 3:
|
||||
return _("%(p1)s is the great granddaughter of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 4:
|
||||
return _("%(p1)s is the second great granddaughter of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 5:
|
||||
return _("%(p1)s is the third great granddaughter of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
else:
|
||||
return _("%(p1)s is the %(level)dth great granddaughter of %(p2)s.") % {
|
||||
'p1': s, 'level' : level-2, 'p2': f }
|
||||
|
||||
def get_aunt(f,s,level):
|
||||
if level == 1:
|
||||
return _("%(p1)s is the sister of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 2:
|
||||
return _("%(p1)s is the aunt of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 3:
|
||||
return _("%(p1)s is the grandaunt of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 4:
|
||||
return _("%(p1)s is the great grandaunt of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 5:
|
||||
return _("%(p1)s is the second great grandaunt of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 6:
|
||||
return _("%(p1)s is the third great grandaunt of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
else:
|
||||
return _("%(p1)s is the %(level)dth great grandaunt of %(p2)s.") % {
|
||||
'p1': s, 'level' : level-3, 'p2': f }
|
||||
|
||||
def get_uncle(f,s,level):
|
||||
if level == 1:
|
||||
return _("%(p1)s is the brother of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 2:
|
||||
return _("%(p1)s is the uncle of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 3:
|
||||
return _("%(p1)s is the granduncle of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 4:
|
||||
return _("%(p1)s is the great granduncle of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 5:
|
||||
return _("%(p1)s is the second great granduncle of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 6:
|
||||
return _("%(p1)s is the third great granduncle of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
else:
|
||||
return _("%(p1)s is the %(level)dth great granduncle of %(p2)s.") % {
|
||||
'p1': s, 'level' : level-3, 'p2': f }
|
||||
|
||||
def get_nephew(f,s,level):
|
||||
if level == 1:
|
||||
return _("%(p1)s is the nephew of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 2:
|
||||
return _("%(p1)s is the grandnephew of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 3:
|
||||
return _("%(p1)s is the great grandnephew of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 4:
|
||||
return _("%(p1)s is the second great grandnephew of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 5:
|
||||
return _("%(p1)s is the third great grandnephew of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
else:
|
||||
return _("%(p1)s is the %(level)dth great grandnephew of %(p2)s.") % {
|
||||
'p1': s, 'level' : level-2, 'p2': f }
|
||||
|
||||
def get_niece(f,s,level):
|
||||
if level == 1:
|
||||
return _("%(p1)s is the niece of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 2:
|
||||
return _("%(p1)s is the grandniece of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 3:
|
||||
return _("%(p1)s is the great grandniece of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 4:
|
||||
return _("%(p1)s is the second great grandniece of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
elif level == 5:
|
||||
return _("%(p1)s is the third great grandniece of %(p2)s.") % {
|
||||
'p1': s, 'p2': f }
|
||||
else:
|
||||
return _("%(p1)s is the %(level)dth great grandniece of %(p2)s.") % {
|
||||
'p1': s, 'level' : level-2, 'p2': f }
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
@ -309,6 +69,7 @@ class RelCalc:
|
||||
def __init__(self,database,person):
|
||||
self.person = person
|
||||
self.db = database
|
||||
self.relationship = Plugins.relationship_function()
|
||||
|
||||
base = os.path.dirname(__file__)
|
||||
glade_file = "%s/relcalc.glade" % base
|
||||
@ -341,50 +102,23 @@ class RelCalc:
|
||||
})
|
||||
|
||||
def on_apply_clicked(self,obj):
|
||||
firstMap = {}
|
||||
firstList = []
|
||||
secondMap = {}
|
||||
secondList = []
|
||||
common = []
|
||||
rank = 9999999
|
||||
|
||||
model,iter = self.clist.get_selected()
|
||||
if not iter:
|
||||
return
|
||||
|
||||
id = self.clist.get_object(iter)
|
||||
other_person = self.db.getPerson(id)
|
||||
filter(self.person,0,firstList,firstMap)
|
||||
filter(other_person,0,secondList,secondMap)
|
||||
|
||||
for person in firstList:
|
||||
if person in secondList:
|
||||
new_rank = firstMap[person.getId()]
|
||||
if new_rank < rank:
|
||||
rank = new_rank
|
||||
common = [ person ]
|
||||
elif new_rank == rank:
|
||||
common.append(person)
|
||||
|
||||
firstRel = -1
|
||||
secondRel = -1
|
||||
|
||||
firstName = self.person.getPrimaryName().getRegularName()
|
||||
secondName = other_person.getPrimaryName().getRegularName()
|
||||
|
||||
(rel_string,common) = self.relationship(self.person,other_person)
|
||||
length = len(common)
|
||||
|
||||
if length == 1:
|
||||
person = common[0]
|
||||
secondRel = firstMap[person.getId()]
|
||||
firstRel = secondMap[person.getId()]
|
||||
name = person.getPrimaryName().getRegularName()
|
||||
commontext = " " + _("Their common ancestor is %s.") % name
|
||||
elif length == 2:
|
||||
p1 = common[0]
|
||||
p2 = common[1]
|
||||
secondRel = firstMap[p1.getId()]
|
||||
firstRel = secondMap[p1.getId()]
|
||||
commontext = " " + _("Their common ancestors are %s and %s.") % \
|
||||
(p1.getPrimaryName().getRegularName(),\
|
||||
p2.getPrimaryName().getRegularName())
|
||||
@ -392,8 +126,6 @@ class RelCalc:
|
||||
index = 0
|
||||
commontext = " " + _("Their common ancestors are : ")
|
||||
for person in common:
|
||||
secondRel = firstMap[person.getId()]
|
||||
firstRel = secondMap[person.getId()]
|
||||
if index != 0:
|
||||
commontext = commontext + ", "
|
||||
commontext = commontext + person.getPrimaryName().getRegularName()
|
||||
@ -402,42 +134,18 @@ class RelCalc:
|
||||
else:
|
||||
commontext = ""
|
||||
|
||||
if firstRel == -1:
|
||||
msg = _("There is no relationship between %s and %s.")
|
||||
text = msg % (firstName,secondName)
|
||||
elif firstRel == 0:
|
||||
if secondRel == 0:
|
||||
text = _("%s and %s are the same person.") % (firstName,secondName)
|
||||
elif other_person.getGender() == RelLib.Person.male:
|
||||
text = get_father(firstName,secondName,secondRel)
|
||||
else:
|
||||
text = get_mother(firstName,secondName,secondRel)
|
||||
elif secondRel == 0:
|
||||
if other_person.getGender() == RelLib.Person.male:
|
||||
text = get_son(firstName,secondName,firstRel)
|
||||
else:
|
||||
text = get_daughter(firstName,secondName,firstRel)
|
||||
elif firstRel == 1:
|
||||
if other_person.getGender() == RelLib.Person.male:
|
||||
text = get_uncle(firstName,secondName,secondRel)
|
||||
else:
|
||||
text = get_aunt(firstName,secondName,secondRel)
|
||||
elif secondRel == 1:
|
||||
if other_person.getGender() == RelLib.Person.male:
|
||||
text = get_nephew(firstName,secondName,firstRel-1)
|
||||
else:
|
||||
text = get_niece(firstName,secondName,firstRel-1)
|
||||
else:
|
||||
if secondRel > firstRel:
|
||||
text = get_cousin(firstName,secondName,firstRel-1,secondRel-firstRel)
|
||||
else:
|
||||
text = get_cousin(firstName,secondName,secondRel-1,firstRel-secondRel)
|
||||
|
||||
text1 = self.glade.get_widget("text1").get_buffer()
|
||||
if firstRel == 0 or secondRel == 0:
|
||||
text1.set_text(text)
|
||||
else:
|
||||
text1.set_text(text + commontext)
|
||||
p1 = self.person.getPrimaryName().getName()
|
||||
p2 = other_person.getPrimaryName().getName()
|
||||
|
||||
if rel_string == "":
|
||||
rstr = _("%(person)s and %(active_person)s are not related.") % {
|
||||
'person' : p2, 'active_person' : p1 }
|
||||
else:
|
||||
rstr = _("%(person)s is the %(relationship)s of %(active_person)s.") % {
|
||||
'person' : p2, 'relationship' : rel_string, 'active_person' : p1 }
|
||||
|
||||
text1.set_text("%s %s" % (rstr, commontext))
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
|
Loading…
Reference in New Issue
Block a user