From 37f3183c3b0f4c788df7d87578974dd46a9d9f64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Rapinat?= Date: Thu, 20 Jun 2013 14:36:32 +0000 Subject: [PATCH] 6817: Enhancements for testing localized Relationship handlers (contribution by Fedir) svn: r22538 --- src/Relationship.py | 696 +++++++++++++++++--------------- src/plugins/graph/GVRelGraph.py | 70 +++- 2 files changed, 435 insertions(+), 331 deletions(-) diff --git a/src/Relationship.py b/src/Relationship.py index 78576c0fc..401760be6 100644 --- a/src/Relationship.py +++ b/src/Relationship.py @@ -1859,7 +1859,7 @@ def get_relationship_calculator(reinit=False): # #------------------------------------------------------------------------- -def _test(rc, onlybirth, inlawa, inlawb, printrelstr): +def _test(rc, onlybirth, inlawa, inlawb, printrelstr, testNum = None): """ this is a generic test suite for the singular relationship TRANSLATORS: do NOT translate, use __main__ ! """ @@ -1871,7 +1871,7 @@ def _test(rc, onlybirth, inlawa, inlawb, printrelstr): return 'f' else: return 'm' - + def _rand_relstr(len, endstr): if len == 0: return '' @@ -1880,295 +1880,337 @@ def _test(rc, onlybirth, inlawa, inlawb, printrelstr): for i in range(len-1): relstr += _rand_f_m() return relstr + endstr - + FMT = '%+50s' MAX = 30 - - #rc = RelationshipCalculator() - - print '\ntesting sons (Enter to start)\n' - sys.stdin.readline() - for i in range(MAX) : - relstr = _rand_relstr(i,'f') - rel = FMT % rc.get_single_relationship_string(0, i, - MALE, - MALE, - '', relstr, - only_birth=onlybirth, - in_law_a=inlawa, - in_law_b=inlawb) - if printrelstr : - print rel + ' |info:', relstr - else: - print rel - print '\n\ntesting daughters\n' - sys.stdin.readline() - for i in range(MAX) : - relstr = _rand_relstr(i,'m') - rel = FMT % rc.get_single_relationship_string(0, i, - MALE, - FEMALE, - '', relstr, - only_birth=onlybirth, - in_law_a=inlawa, in_law_b=inlawb) - if printrelstr : - print rel + ' |info:', relstr - else: - print rel - print '\n\ntesting unknown children\n' - sys.stdin.readline() - for i in range(MAX) : - relstr = _rand_relstr(i,'f') - rel = FMT % rc.get_single_relationship_string(0, i, - MALE, - UNKNOWN, - '', relstr, - only_birth=onlybirth, - in_law_a=inlawa, in_law_b=inlawb) - if printrelstr : - print rel + ' |info:', relstr - else: - print rel - print '\n\ntesting grandfathers\n' - sys.stdin.readline() - for i in range(MAX) : - relstr = _rand_relstr(i,'f') - rel = FMT % rc.get_single_relationship_string(i, 0, - FEMALE, - MALE, - relstr, '', - only_birth=onlybirth, - in_law_a=inlawa, in_law_b=inlawb) - if printrelstr : - print rel + ' |info:', relstr - else: - print rel - print '\n\ntesting grandmothers\n' - sys.stdin.readline() - for i in range(MAX) : - relstr = _rand_relstr(i,'m') - rel = FMT % rc.get_single_relationship_string(i, 0, - FEMALE, - FEMALE, - relstr, '', - only_birth=onlybirth, - in_law_a=inlawa, in_law_b=inlawb) - if printrelstr : - print rel + ' |info:', relstr - else: - print rel - print '\n\ntesting unknown parents\n' - sys.stdin.readline() - for i in range(MAX) : - relstr = _rand_relstr(i,'f') - rel = FMT % rc.get_single_relationship_string(i, 0, - FEMALE, - UNKNOWN, - relstr, '', - only_birth=onlybirth, - in_law_a=inlawa, in_law_b=inlawb) - if printrelstr : - print rel + ' |info:', relstr - else: - print rel - print '\n\ntesting nieces\n' - sys.stdin.readline() - for i in range(1, MAX) : - relstr = _rand_relstr(i,'m') - rel = FMT % rc.get_single_relationship_string(1, i, - FEMALE, - FEMALE, - 'm', relstr, - only_birth=onlybirth, - in_law_a=inlawa, in_law_b=inlawb) - if printrelstr : - print rel + ' |info:', relstr - else: - print rel - print '\n\ntesting nephews\n' - sys.stdin.readline() - for i in range(1, MAX) : - relstr = _rand_relstr(i,'f') - rel = FMT % rc.get_single_relationship_string(1, i, - FEMALE, - MALE, - 'f', relstr, - only_birth=onlybirth, - in_law_a=inlawa, in_law_b=inlawb) - if printrelstr : - print rel + ' |info:', relstr - else: - print rel - print '\n\ntesting unknown nephews/nieces\n' - sys.stdin.readline() - for i in range(1, MAX) : - relstr = _rand_relstr(i,'f') - rel = FMT % rc.get_single_relationship_string(1, i, - FEMALE, - UNKNOWN, - 'f', relstr, - only_birth=onlybirth, - in_law_a=inlawa, in_law_b=inlawb) - if printrelstr : - print rel + ' |info:', relstr - else: - print rel - print '\n\ntesting uncles\n' - sys.stdin.readline() - for i in range(1, MAX) : - relstr = _rand_relstr(i,'f') - rel = FMT % rc.get_single_relationship_string(i, 1, - FEMALE, - MALE, - relstr, 'f', - only_birth=onlybirth, - in_law_a=inlawa, in_law_b=inlawb) - if printrelstr : - print rel + ' |info:', relstr - else: - print rel - print '\n\ntesting aunts\n' - sys.stdin.readline() - for i in range(1, MAX) : - relstr = _rand_relstr(i,'f') - rel = FMT % rc.get_single_relationship_string(i, 1, - MALE, - FEMALE, - relstr, 'f', - only_birth=onlybirth, - in_law_a=inlawa, in_law_b=inlawb) - if printrelstr : - print rel + ' |info:', relstr - else: - print rel - print '\n\ntesting unknown uncles/aunts\n' - sys.stdin.readline() - for i in range(1, MAX) : - relstr = _rand_relstr(i,'m') - rel = FMT % rc.get_single_relationship_string(i, 1, - MALE, - UNKNOWN, - relstr, 'm', - only_birth=onlybirth, - in_law_a=inlawa, in_law_b=inlawb) - if printrelstr : - print rel + ' |info:', relstr - else: - print rel - print '\n\ntesting male cousins same generation\n' - sys.stdin.readline() - for i in range(1, MAX) : - relstra = _rand_relstr(i,'f') - relstrb = _rand_relstr(i,'f') - rel = FMT % rc.get_single_relationship_string(i, i, - MALE, - MALE, - relstra, - relstrb, - only_birth=onlybirth, - in_law_a=inlawa, in_law_b=inlawb) - if printrelstr : - print rel + ' |info:', relstra, relstrb - else: - print rel - print '\n\ntesting female cousins same generation\n' - sys.stdin.readline() - for i in range(1, MAX) : - relstra = _rand_relstr(i,'m') - relstrb = _rand_relstr(i,'m') - rel = FMT % rc.get_single_relationship_string(i, i, - MALE, - FEMALE, - relstra, - relstrb, - only_birth=onlybirth, - in_law_a=inlawa, in_law_b=inlawb) - if printrelstr : - print rel + ' |info:', relstra, relstrb - else: - print rel - print '\n\ntesting unknown cousins same generation\n' - sys.stdin.readline() - for i in range(1, MAX) : - relstra = _rand_relstr(i,'m') - relstrb = _rand_relstr(i,'m') - rel = FMT % rc.get_single_relationship_string(i, i, - MALE, - UNKNOWN, - relstra, - relstrb, - only_birth=onlybirth, - in_law_a=inlawa, in_law_b=inlawb) - if printrelstr : - print rel + ' |info:', relstra, relstrb - else: - print rel - print '\n\ntesting some cousins up\n' - sys.stdin.readline() - import random - random.seed() - for i in range(1, MAX) : - for j in range (i, MAX) : - rnd = random.randint(0, 100) - if rnd < 10 : - relstra = _rand_relstr(j,'f') - relstrb = _rand_relstr(i,'f') - if rnd < 5 : - rel = (FMT + ' |info: female, Ga=%2d, Gb=%2d') % ( - rc.get_single_relationship_string(j, i, - MALE, - FEMALE, - relstra, relstrb, - only_birth=onlybirth, - in_law_a=inlawa, in_law_b=inlawb), j, i ) - if printrelstr : - print rel + ' |info:', relstra, relstrb + + if testNum == None: + print(""" +Select a test: + 0 - all tests + 1 - testing sons + 2 - testing daughters + 3 - testing unknown children + 4 - testing grandfathers + 5 - testing grandmothers + 6 - testing unknown parents + 7 - testing nieces + 8 - testing nephews + 9 - testing unknown nephews/nieces + 10 - testing uncles + 11 - testing aunts + 12 - testing unknown uncles/aunts + 13 - testing male cousins same generation + 14 - testing female cousins same generation + 15 - testing unknown cousins same generation + 16 - testing some cousins up + 17 - testing some cousins down + +Please enter a test number and press Enter for continue: + """) + testNum = sys.stdin.readline().strip() + testNum = int(testNum) + + if testNum == 0 or testNum == 1: + print('\ntesting sons') + #sys.stdin.readline() + for i in range(MAX) : + relstr = _rand_relstr(i,'f') + rel = FMT % rc.get_single_relationship_string(0, i, + MALE, + MALE, + '', relstr, + only_birth=onlybirth, + in_law_a=inlawa, + in_law_b=inlawb) + if printrelstr : + print(rel + ' |info:', relstr) + else: + print(rel) + if testNum == 0 or testNum == 2: + print('\ntesting daughters\n') + #sys.stdin.readline() + for i in range(MAX) : + relstr = _rand_relstr(i,'m') + rel = FMT % rc.get_single_relationship_string(0, i, + MALE, + FEMALE, + '', relstr, + only_birth=onlybirth, + in_law_a=inlawa, in_law_b=inlawb) + if printrelstr : + print(rel + ' |info:', relstr) + else: + print(rel) + if testNum == 0 or testNum == 3: + print('\ntesting unknown children\n') + #sys.stdin.readline() + for i in range(MAX) : + relstr = _rand_relstr(i,'f') + rel = FMT % rc.get_single_relationship_string(0, i, + MALE, + UNKNOWN, + '', relstr, + only_birth=onlybirth, + in_law_a=inlawa, in_law_b=inlawb) + if printrelstr : + print(rel + ' |info:', relstr) + else: + print(rel) + if testNum == 0 or testNum == 4: + print('\ntesting grandfathers\n') + #sys.stdin.readline() + for i in range(MAX) : + relstr = _rand_relstr(i,'f') + rel = FMT % rc.get_single_relationship_string(i, 0, + FEMALE, + MALE, + relstr, '', + only_birth=onlybirth, + in_law_a=inlawa, in_law_b=inlawb) + if printrelstr : + print(rel + ' |info:', relstr) + else: + print(rel) + if testNum == 0 or testNum == 5: + print('\ntesting grandmothers\n') + #sys.stdin.readline() + for i in range(MAX) : + relstr = _rand_relstr(i,'m') + rel = FMT % rc.get_single_relationship_string(i, 0, + FEMALE, + FEMALE, + relstr, '', + only_birth=onlybirth, + in_law_a=inlawa, in_law_b=inlawb) + if printrelstr : + print(rel + ' |info:', relstr) + else: + print(rel) + if testNum == 0 or testNum == 6: + print('\ntesting unknown parents\n') + #sys.stdin.readline() + for i in range(MAX) : + relstr = _rand_relstr(i,'f') + rel = FMT % rc.get_single_relationship_string(i, 0, + FEMALE, + UNKNOWN, + relstr, '', + only_birth=onlybirth, + in_law_a=inlawa, in_law_b=inlawb) + if printrelstr : + print(rel + ' |info:', relstr) + else: + print(rel) + if testNum == 0 or testNum == 7: + print('\ntesting nieces\n') + #sys.stdin.readline() + for i in range(1, MAX) : + relstr = _rand_relstr(i,'m') + rel = FMT % rc.get_single_relationship_string(1, i, + FEMALE, + FEMALE, + 'm', relstr, + only_birth=onlybirth, + in_law_a=inlawa, in_law_b=inlawb) + if printrelstr : + print(rel + ' |info:', relstr) + else: + print(rel) + if testNum == 0 or testNum == 8: + print('\ntesting nephews\n') + #sys.stdin.readline() + for i in range(1, MAX) : + relstr = _rand_relstr(i,'f') + rel = FMT % rc.get_single_relationship_string(1, i, + FEMALE, + MALE, + 'f', relstr, + only_birth=onlybirth, + in_law_a=inlawa, in_law_b=inlawb) + if printrelstr : + print(rel + ' |info:', relstr) + else: + print(rel) + if testNum == 0 or testNum == 9: + print('\ntesting unknown nephews/nieces\n') + #sys.stdin.readline() + for i in range(1, MAX) : + relstr = _rand_relstr(i,'f') + rel = FMT % rc.get_single_relationship_string(1, i, + FEMALE, + UNKNOWN, + 'f', relstr, + only_birth=onlybirth, + in_law_a=inlawa, in_law_b=inlawb) + if printrelstr : + print(rel + ' |info:', relstr) + else: + print(rel) + if testNum == 0 or testNum == 10: + print('\ntesting uncles\n') + #sys.stdin.readline() + for i in range(1, MAX) : + relstr = _rand_relstr(i,'f') + rel = FMT % rc.get_single_relationship_string(i, 1, + FEMALE, + MALE, + relstr, 'f', + only_birth=onlybirth, + in_law_a=inlawa, in_law_b=inlawb) + if printrelstr : + print(rel + ' |info:', relstr) + else: + print(rel) + if testNum == 0 or testNum == 11: + print('\ntesting aunts\n') + #sys.stdin.readline() + for i in range(1, MAX) : + relstr = _rand_relstr(i,'f') + rel = FMT % rc.get_single_relationship_string(i, 1, + MALE, + FEMALE, + relstr, 'f', + only_birth=onlybirth, + in_law_a=inlawa, in_law_b=inlawb) + if printrelstr : + print(rel + ' |info:', relstr) + else: + print(rel) + if testNum == 0 or testNum == 12: + print('\ntesting unknown uncles/aunts\n') + #sys.stdin.readline() + for i in range(1, MAX) : + relstr = _rand_relstr(i,'m') + rel = FMT % rc.get_single_relationship_string(i, 1, + MALE, + UNKNOWN, + relstr, 'm', + only_birth=onlybirth, + in_law_a=inlawa, in_law_b=inlawb) + if printrelstr : + print(rel + ' |info:', relstr) + else: + print(rel) + if testNum == 0 or testNum == 13: + print('\ntesting male cousins same generation\n') + #sys.stdin.readline() + for i in range(1, MAX) : + relstra = _rand_relstr(i,'f') + relstrb = _rand_relstr(i,'f') + rel = FMT % rc.get_single_relationship_string(i, i, + MALE, + MALE, + relstra, + relstrb, + only_birth=onlybirth, + in_law_a=inlawa, in_law_b=inlawb) + if printrelstr : + print(rel + ' |info:', relstra, relstrb) + else: + print(rel) + if testNum == 0 or testNum == 14: + print('\ntesting female cousins same generation\n') + #sys.stdin.readline() + for i in range(1, MAX) : + relstra = _rand_relstr(i,'m') + relstrb = _rand_relstr(i,'m') + rel = FMT % rc.get_single_relationship_string(i, i, + MALE, + FEMALE, + relstra, + relstrb, + only_birth=onlybirth, + in_law_a=inlawa, in_law_b=inlawb) + if printrelstr : + print(rel + ' |info:', relstra, relstrb) + else: + print(rel) + if testNum == 0 or testNum == 15: + print('\ntesting unknown cousins same generation\n') + #sys.stdin.readline() + for i in range(1, MAX) : + relstra = _rand_relstr(i,'m') + relstrb = _rand_relstr(i,'m') + rel = FMT % rc.get_single_relationship_string(i, i, + MALE, + UNKNOWN, + relstra, + relstrb, + only_birth=onlybirth, + in_law_a=inlawa, in_law_b=inlawb) + if printrelstr : + print(rel + ' |info:', relstra, relstrb) + else: + print(rel) + if testNum == 0 or testNum == 16: + print('\ntesting some cousins up\n') + #sys.stdin.readline() + import random + random.seed() + for i in range(1, MAX) : + for j in range (i, MAX) : + rnd = random.randint(0, 100) + if rnd < 10 : + relstra = _rand_relstr(j,'f') + relstrb = _rand_relstr(i,'f') + if rnd < 5 : + rel = (FMT + ' |info: female, Ga=%2d, Gb=%2d') % ( + rc.get_single_relationship_string(j, i, + MALE, + FEMALE, + relstra, relstrb, + only_birth=onlybirth, + in_law_a=inlawa, in_law_b=inlawb), j, i ) + if printrelstr : + print(rel + ' |info:', relstra, relstrb) + else: + print(rel) else: - print rel - else: - rel = (FMT + ' |info: male, Ga=%2d, Gb=%2d') % ( - rc.get_single_relationship_string(j, i, - MALE, - MALE, - relstra, relstrb, - only_birth=onlybirth, - in_law_a=inlawa, in_law_b=inlawb), j, i ) - if printrelstr : - print rel + ' |info:', relstra, relstrb + rel = (FMT + ' |info: male, Ga=%2d, Gb=%2d') % ( + rc.get_single_relationship_string(j, i, + MALE, + MALE, + relstra, relstrb, + only_birth=onlybirth, + in_law_a=inlawa, in_law_b=inlawb), j, i ) + if printrelstr : + print(rel + ' |info:', relstra, relstrb) + else: + print(rel) + if testNum == 0 or testNum == 17: + print('\ntesting some cousins down\n') + #sys.stdin.readline() + for i in range(1, MAX) : + for j in range (i, MAX) : + rnd = random.randint(0, 100) + if rnd < 10 : + relstra = _rand_relstr(i,'f') + relstrb = _rand_relstr(j,'f') + if rnd < 5 : + rel = (FMT + ' |info: female, Ga=%2d, Gb=%2d') % ( + rc.get_single_relationship_string(i, j, + MALE, + FEMALE, + relstra, relstrb, + only_birth=onlybirth, + in_law_a=inlawa, in_law_b=inlawb), i, j) + if printrelstr : + print(rel + ' |info:', relstra, relstrb) + else: + print(rel) else: - print rel - print '\n\ntesting some cousins down\n' - sys.stdin.readline() - for i in range(1, MAX) : - for j in range (i, MAX) : - rnd = random.randint(0, 100) - if rnd < 10 : - relstra = _rand_relstr(i,'f') - relstrb = _rand_relstr(j,'f') - if rnd < 5 : - rel = (FMT + ' |info: female, Ga=%2d, Gb=%2d') % ( - rc.get_single_relationship_string(i, j, - MALE, - FEMALE, - relstra, relstrb, - only_birth=onlybirth, - in_law_a=inlawa, in_law_b=inlawb), i, j) - if printrelstr : - print rel + ' |info:', relstra, relstrb - else: - print rel - else: - rel = (FMT + ' |info: male, Ga=%2d, Gb=%2d') % ( - rc.get_single_relationship_string(i, j, - MALE, - MALE, - relstra, relstrb, - only_birth=onlybirth, - in_law_a=inlawa, in_law_b=inlawb), i, j) - if printrelstr : - print rel + ' |info:', relstr - else: - print rel + rel = (FMT + ' |info: male, Ga=%2d, Gb=%2d') % ( + rc.get_single_relationship_string(i, j, + MALE, + MALE, + relstra, relstrb, + only_birth=onlybirth, + in_law_a=inlawa, in_law_b=inlawb), i, j) + if printrelstr : + print(rel + ' |info:', relstra, relstrb) + else: + print(rel) def _testsibling(rc): vals = [(rc.NORM_SIB, 'sibling'), @@ -2181,9 +2223,9 @@ def _testsibling(rc): (UNKNOWN, 'unknown')]: for inlaw in [False, True]: for sibt, str in vals: - print FMT % rc.get_sibling_relationship_string( + print(FMT % rc.get_sibling_relationship_string( sibt, MALE, gendr, - in_law_a = inlaw) + ' |info:', str, strgen + in_law_a = inlaw) + ' |info:', str, strgen) def _test_spouse(rc): FMT = '%+50s' @@ -2199,41 +2241,63 @@ def _test_spouse(rc): (FEMALE, 'female'), (UNKNOWN, 'unknown')] : for spouse_type, str in vals: - print FMT % rc.get_partner_relationship_string( + print(FMT % rc.get_partner_relationship_string( spouse_type, MALE, gender) + \ - ' |info: gender='+strgen+', rel='+str + ' |info: gender='+strgen+', rel='+str) def test(rc, printrelstr): """ this is a generic test suite for the singular relationship - TRANSLATORS: do NOT translate, call this from + TRANSLATORS: do NOT translate, call this from __main__ in the rel_xx.py module. """ import sys - - print '\nType y to do a test\n\n' - print 'Test normal relations?' - data = sys.stdin.readline() - if data == 'y\n': - _test(rc, True, False, False, printrelstr) - print '\n\nTest step relations?' - data = sys.stdin.readline() - if data == 'y\n': - _test(rc, False, False, False, printrelstr) - print '\n\nTest in-law relations (first pers)?' - data = sys.stdin.readline() - if data == 'y\n': - _test(rc, True, True, False, printrelstr) - print '\n\nTest step and in-law relations?' - data = sys.stdin.readline() - if data == 'y\n': - _test(rc, False, True, False, printrelstr) - print '\n\nTest sibling types?' - data = sys.stdin.readline() - if data == 'y\n': + import argparse + + parser = argparse.ArgumentParser(description='Test the Relationship Calculator') + parser.add_argument('-r', type=int, help = 'type of the relations test') + parser.add_argument('-s', type=int, help = 'type of the singular relationship test') + + args = parser.parse_args() + testNum = args.r + + if testNum == None: + print(""" +Select a test: + 0 - all tests + 1 - Test normal relations + 2 - Test step relations + 3 - Test in-law relations (first pers) + 4 - Test step and in-law relations + 5 - Test sibling types + 6 - Test partner types + +Please enter a test number and press Enter for continue: + """) + testNum = sys.stdin.readline().strip() + testNum = int(testNum) + + if testNum == 0 or testNum == 1: + print('\n\n=== Test normal relations ===') + _test(rc, True, False, False, printrelstr, args.s) + + if testNum == 0 or testNum == 2: + print('\n\n=== Test step relations ===') + _test(rc, False, False, False, printrelstr, args.s) + + if testNum == 0 or testNum == 3: + print('\n\n=== Test in-law relations (first pers) ===') + _test(rc, True, True, False, printrelstr, args.s) + + if testNum == 0 or testNum == 4: + print('\n\n=== Test step and in-law relations ===') + _test(rc, False, True, False, printrelstr, args.s) + + if testNum == 0 or testNum == 5: + print('\n\n=== Test sibling types ===') _testsibling(rc) - print '\n\nTest partner types?' - data = sys.stdin.readline() - if data == 'y\n': + + if testNum == 0 or testNum == 6: + print('\n\n=== Test partner types ===') _test_spouse(rc) if __name__ == "__main__": diff --git a/src/plugins/graph/GVRelGraph.py b/src/plugins/graph/GVRelGraph.py index ed8cc10d2..69b11df27 100644 --- a/src/plugins/graph/GVRelGraph.py +++ b/src/plugins/graph/GVRelGraph.py @@ -57,6 +57,7 @@ import DateHandler import gen.lib import Utils import ThumbNails +import Relationship from gen.utils import get_birth_or_fallback, get_death_or_fallback #------------------------------------------------------------------------ @@ -121,7 +122,11 @@ class RelGraphReport(Report): menu = options.menu get_option_by_name = options.menu.get_option_by_name get_value = lambda name: get_option_by_name(name).get_value() + + self.center_person = database.get_person_from_gramps_id(get_value('pid')) + self.increlname = get_value('increlname') + self.advrelinfo = get_value('advrelinfo') self.includeid = get_value('incid') self.includedates = get_value('incdate') self.includeurl = get_value('url') @@ -157,6 +162,10 @@ class RelGraphReport(Report): self.arrowtailstyle = 'none' filter_option = get_option_by_name('filter') self._filter = filter_option.get_filter() + + if self.increlname : + # init Relationship Calcilator + self.relationship = Relationship.get_relationship_calculator() def write_report(self): self.person_handles = self._filter.apply(self.database, @@ -326,6 +335,9 @@ class RelGraphReport(Report): elif gender == person.UNKNOWN: shape = "hexagon" + if person == self.center_person and self.increlname: + shape = "octagon" + if self.colorize == 'colored': if gender == person.MALE: color = self.colors['male'] @@ -401,12 +413,28 @@ class RelGraphReport(Report): if self.includedates: birth, death = self.get_date_strings(person) label = label + '%s(%s - %s)' % (lineDelimiter, birth, death) - + + if self.increlname : + # Display Relationship info + if self.advrelinfo: + (relation, Ga, Gb) = self.relationship.get_one_relationship(self.database, self.center_person, person, True) + else: + relation = self.relationship.get_one_relationship(self.database, self.center_person, person) + + if self.bUseHtmlOutput: + label += '
' + relation + if self.advrelinfo: + label += '
Ga=%d Gb=%d' % (Ga, Gb) + else: + label += "%s%s" % (lineDelimiter, relation) + if self.advrelinfo: + label += "%sGa=%d Gb=%d" % (lineDelimiter, Ga, Gb) + # see if we have a table that needs to be terminated if self.bUseHtmlOutput: label += '' return label - else : + else: # non html label is enclosed by "" so escape other " return label.replace('"', '\\\"') @@ -477,7 +505,7 @@ class RelGraphOptions(MenuReportOptions): self.__filter.set_help( _("Determines what people are included in the graph")) add_option("filter", self.__filter) - self.__filter.connect('value-changed', self.__filter_changed) + #self.__filter.connect('value-changed', self.__filter_changed) self.__pid = PersonOption(_("Filter Person")) self.__pid.set_help(_("The center person for the filter")) @@ -486,6 +514,18 @@ class RelGraphOptions(MenuReportOptions): self.__update_filters() + self.__include_relname = BooleanOption( + _("Include Relationships"), True) + self.__include_relname.set_help(_("Include the Relationships" + "names, for display relations to the center person")) + add_option("increlname", self.__include_relname) + + self.__include_advrelinfo = BooleanOption( + _("Advanced Relationships info"), False) + self.__include_advrelinfo.set_help(_("Include Ga and Gb info," + " useful for debug the Relationship calculator")) + add_option("advrelinfo", self.__include_advrelinfo) + self.incdate = BooleanOption( _("Include Birth, Marriage and Death dates"), True) self.incdate.set_help(_("Include the dates that the individual was " @@ -604,18 +644,18 @@ class RelGraphOptions(MenuReportOptions): else: self.justyears.set_available(False) - def __filter_changed(self): - """ - Handle filter change. If the filter is not specific to a person, - disable the person option - """ - filter_value = self.__filter.get_value() - if filter_value in [1, 2, 3, 4]: - # Filters 1, 2, 3 and 4 rely on the center person - self.__pid.set_available(True) - else: - # The rest don't - self.__pid.set_available(False) + #def __filter_changed(self): + #""" + #Handle filter change. If the filter is not specific to a person, + #disable the person option + #""" + #filter_value = self.__filter.get_value() + #if filter_value in [1, 2, 3, 4]: + ## Filters 1, 2, 3 and 4 rely on the center person + #self.__pid.set_available(True) + #else: + ## The rest don't + #self.__pid.set_available(False) def __image_changed(self): """