From e45cfd5d722bb4863e2d4f6d45ae442dec78fecb Mon Sep 17 00:00:00 2001 From: Alex Roitman Date: Wed, 7 Jan 2004 21:22:40 +0000 Subject: [PATCH] * src/plugins/rel_hu.py: Add to CVS. * src/plugins/Makefile.am: Ship rel_hu.py. svn: r2601 --- ChangeLog | 4 + src/plugins/Makefile.am | 3 +- src/plugins/rel_hu.py | 229 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 235 insertions(+), 1 deletion(-) create mode 100644 src/plugins/rel_hu.py diff --git a/ChangeLog b/ChangeLog index 1bd51f785..2b771a0c6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2004-01-06 Egyeki Gergely + * src/plugins/rel_hu.py: Add to CVS. + * src/plugins/Makefile.am: Ship rel_hu.py. + 2004-01-06 Alex Roitman * src/plugins/IndivComplete.py (write_note): Typo. diff --git a/src/plugins/Makefile.am b/src/plugins/Makefile.am index c44940293..bcc8c7103 100644 --- a/src/plugins/Makefile.am +++ b/src/plugins/Makefile.am @@ -46,7 +46,8 @@ pkgpython_PYTHON = \ SimpleBookTitle.py\ CustomBookText.py\ RelGraph.py\ - rel_it.py + rel_it.py\ + rel_hu.py pkgpyexecdir = @pkgpyexecdir@/plugins pkgpythondir = @pkgpythondir@/plugins diff --git a/src/plugins/rel_hu.py b/src/plugins/rel_hu.py new file mode 100644 index 000000000..eba60ef93 --- /dev/null +++ b/src/plugins/rel_hu.py @@ -0,0 +1,229 @@ +# -*- coding: utf-8 -*- +# +# Gramps - a GTK+/GNOME based genealogy program +# +# Copyright (C) 2003 Donald N. Allingham +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +# +# Written by Egyeki Gergely , 2003 +# + +#------------------------------------------------------------------------- +# +# GRAMPS modules +# +#------------------------------------------------------------------------- + +import RelLib + +from Relationship import apply_filter, is_spouse +from Plugins import register_relcalc + + +#------------------------------------------------------------------------- +# +# Shared constants +# +#------------------------------------------------------------------------- + +_level =\ + ["", "", "másod", "harmad", "negyed", "ötöd", "hatod", + "heted", "nyolcad", "kilenced", "tized", "tizenegyed", "tizenketted", + "tizenharmad", "tizennegyed", "tizenötöd", "tizenhatod", + "tizenheted", "tizennyolcad", "tizenkilenced", "huszad"] + + +#------------------------------------------------------------------------- +# +# Specific relationship functions +# +# To be honest, I doubt that this relationship naming method is widely +# spread... If you know of a rigorous, italian naming convention, +# please, drop me an email. +# +#------------------------------------------------------------------------- + +def get_parents (level): + return "%s szülei" % _level[level] + + + +def get_father (level): + if level == 0: return "" + elif level == 1: return "apja" + elif level == 2: return "nagyapja" + elif level == 3: return "dédapja" + elif level == 4: return "ükapja" + else : return "%s ükapja" % (_level[level]) + +def get_mother (level): + if level == 0: return "" + elif level == 1: return "anyja" + elif level == 2: return "nagyanyja" + elif level == 3: return "dédanyja" + elif level == 4: return "ükanyja" + else : return "%s ükanyja" % (_level[level]) + + + +def get_son (level): + if level == 0: return "" + elif level == 1: return "gyereke" + elif level == 2: return "unokája" + else : return "%s unokája" % (_level[level]) + + +def get_daughter (level): + return get_son(level) + + + + +def get_uncle (level): + if level == 0: return "" + elif level == 1: return "testvére" + elif level == 2: return "nagybátyja" + else : return "%s nagybátyja" % (_level[level]) + + +def get_aunt (level): + return get_uncle(level) + + + +def get_nephew (level): + if level == 0: return "" + elif level == 1: return "unokája" + else : return "%s unokája" % (_level[level]) + +def get_niece(level): + return get_nephew(level) + + + +def get_male_cousin (level): + if level == 0: return "" + elif level == 1: return "unokatestvére" + else : return "%s unokatestvére" % (_level[level]) + +def get_female_cousin (level): + return get_male_cousin(level) + + + + +#------------------------------------------------------------------------- +# +# get_relationship +# +#------------------------------------------------------------------------- + +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 = {} + secondList = [] + common = [] + rank = 9999999 + + if orig_person == None: + return ("nem meghatározható",[]) + + if orig_person == other_person: + return ('', []) + if is_spouse(orig_person,other_person): + return ("házastársa",[]) + + apply_filter(orig_person,0,firstList,firstMap) + apply_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 + + length = len(common) + + if length == 1: + person = common[0] + secondRel = firstMap[person.getId()] + firstRel = secondMap[person.getId()] + elif length == 2: + p1 = common[0] + secondRel = firstMap[p1.getId()] + firstRel = secondMap[p1.getId()] + elif length > 2: + person = common[0] + secondRel = firstMap[person.getId()] + firstRel = secondMap[person.getId()] + + + if firstRel == -1: + return ("",[]) + elif firstRel == 0: + if secondRel == 0: + return ('',common) + elif other_person.getGender() == RelLib.Person.male: + return (get_father(secondRel),common) + else: + return (get_mother(secondRel),common) + elif secondRel == 0: + if other_person.getGender() == RelLib.Person.male: + return (get_son(firstRel),common) + else: + return (get_daughter(firstRel),common) + elif firstRel == 1: + if other_person.getGender() == RelLib.Person.male: + return (get_uncle(secondRel),common) + else: + return (get_aunt(secondRel),common) + elif secondRel == 1: + if other_person.getGender() == RelLib.Person.male: + return (get_nephew(firstRel-1),common) + else: + return (get_niece(firstRel-1),common) + else: + if other_person.getGender() == RelLib.Person.male: + return (get_male_cousin(firstRel-1), common) + else: + return (get_female_cousin(firstRel-1), common) + + +#------------------------------------------------------------------------- +# +# Function registration +# +#------------------------------------------------------------------------- + +register_relcalc(get_relationship, + ["hu", "HU", "hu_HU", "hu_HU.utf8"]) + +# Local variables: +# buffer-file-coding-system: utf-8 +# End: