7836: Limit the number of generations displayed in the ancestor gramplet

This commit is contained in:
Nick Hall 2014-06-21 14:21:11 +01:00
parent bcb9141273
commit 604e9ac9aa

View File

@ -1,7 +1,7 @@
# #
# Gramps - a GTK+/GNOME based genealogy program # Gramps - a GTK+/GNOME based genealogy program
# #
# Copyright (C) 2013 Nick Hall # Copyright (C) 2013-2014 Nick Hall
# #
# This program is free software; you can redistribute it and/or modify # 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 # it under the terms of the GNU General Public License as published by
@ -18,15 +18,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# #
"""Descendant Gramplet""" """Ancestor Gramplet"""
#------------------------------------------------------------------------
#
# Python modules
#
#------------------------------------------------------------------------
from gramps.gen.const import GRAMPS_LOCALE as glocale
_ = glocale.translation.gettext
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -47,6 +39,10 @@ from gramps.gen.errors import WindowActiveError
from gramps.gen.display.name import displayer as name_displayer from gramps.gen.display.name import displayer as name_displayer
from gramps.gen.datehandler import get_date from gramps.gen.datehandler import get_date
from gramps.gen.utils.db import get_birth_or_fallback, get_death_or_fallback from gramps.gen.utils.db import get_birth_or_fallback, get_death_or_fallback
from gramps.gen.config import config
from gramps.gen.const import GRAMPS_LOCALE as glocale
_ = glocale.translation.gettext
class Ancestor(Gramplet): class Ancestor(Gramplet):
@ -114,13 +110,16 @@ class Ancestor(Gramplet):
active_handle = self.get_active('Person') active_handle = self.get_active('Person')
self.model.clear() self.model.clear()
if active_handle: if active_handle:
self.add_to_tree(None, active_handle) self.add_to_tree(1, None, active_handle)
self.view.expand_all() self.view.expand_all()
self.set_has_data(self.get_has_data(active_handle)) self.set_has_data(self.get_has_data(active_handle))
else: else:
self.set_has_data(False) self.set_has_data(False)
def add_to_tree(self, parent_id, person_handle): def add_to_tree(self, depth, parent_id, person_handle):
if depth > config.get('behavior.generation-depth'):
return
person = self.dbstate.db.get_person_from_handle(person_handle) person = self.dbstate.db.get_person_from_handle(person_handle)
name = name_displayer.display(person) name = name_displayer.display(person)
@ -145,15 +144,16 @@ class Ancestor(Gramplet):
tooltip = name + '\n' + birth_text + '\n' + death_text tooltip = name + '\n' + birth_text + '\n' + death_text
item_id = self.model.add([name, birth_date, birth_sort, label = _('%(depth)s. %(name)s') % {'depth': depth, 'name': name}
item_id = self.model.add([label, birth_date, birth_sort,
tooltip, person_handle], node=parent_id) tooltip, person_handle], node=parent_id)
family_handle = person.get_main_parents_family_handle() family_handle = person.get_main_parents_family_handle()
family = self.dbstate.db.get_family_from_handle(family_handle) family = self.dbstate.db.get_family_from_handle(family_handle)
if family: if family:
if family.get_father_handle(): if family.get_father_handle():
self.add_to_tree(item_id, family.get_father_handle()) self.add_to_tree(depth + 1, item_id, family.get_father_handle())
if family.get_mother_handle(): if family.get_mother_handle():
self.add_to_tree(item_id, family.get_mother_handle()) self.add_to_tree(depth + 1, item_id, family.get_mother_handle())
return item_id return item_id