add name-format option to the three GraphViz reports
svn: r22013
This commit is contained in:
parent
57f6f389a8
commit
f0ea234060
@ -6,7 +6,7 @@
|
|||||||
# Copyright (C) 2009-2010 Gary Burton
|
# Copyright (C) 2009-2010 Gary Burton
|
||||||
# Contribution 2009 by Bob Ham <rah@bash.sh>
|
# Contribution 2009 by Bob Ham <rah@bash.sh>
|
||||||
# Copyright (C) 2010 Jakim Friant
|
# Copyright (C) 2010 Jakim Friant
|
||||||
# Copyright (C) 2011 Paul Franklin
|
# Copyright (C) 2011-2013 Paul Franklin
|
||||||
#
|
#
|
||||||
# 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
|
||||||
@ -29,16 +29,14 @@
|
|||||||
Family Lines, a GraphViz-based plugin for Gramps.
|
Family Lines, a GraphViz-based plugin for Gramps.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# python modules
|
# python modules
|
||||||
#
|
#
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
from gramps.gen.const import GRAMPS_LOCALE as glocale
|
from __future__ import unicode_literals
|
||||||
_ = glocale.translation.gettext
|
|
||||||
from functools import partial
|
from functools import partial
|
||||||
|
import copy
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
@ -53,6 +51,8 @@ log = logging.getLogger(".FamilyLines")
|
|||||||
# GRAMPS module
|
# GRAMPS module
|
||||||
#
|
#
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
|
from gramps.gen.const import GRAMPS_LOCALE as glocale
|
||||||
|
_ = glocale.translation.gettext
|
||||||
from gramps.gen.lib import EventRoleType, EventType, Person
|
from gramps.gen.lib import EventRoleType, EventType, Person
|
||||||
from gramps.gen.utils.file import media_path_full
|
from gramps.gen.utils.file import media_path_full
|
||||||
from gramps.gui.thumbnails import get_thumbnail_path
|
from gramps.gui.thumbnails import get_thumbnail_path
|
||||||
@ -60,11 +60,12 @@ from gramps.gen.datehandler import displayer as _dd
|
|||||||
from gramps.gen.plug.report import Report
|
from gramps.gen.plug.report import Report
|
||||||
from gramps.gen.plug.report import utils as ReportUtils
|
from gramps.gen.plug.report import utils as ReportUtils
|
||||||
from gramps.gen.plug.report import MenuReportOptions
|
from gramps.gen.plug.report import MenuReportOptions
|
||||||
|
from gramps.gen.plug.report import stdoptions
|
||||||
from gramps.gen.plug.menu import (NumberOption, ColorOption, BooleanOption,
|
from gramps.gen.plug.menu import (NumberOption, ColorOption, BooleanOption,
|
||||||
EnumeratedListOption, PersonListOption,
|
EnumeratedListOption, PersonListOption,
|
||||||
SurnameColorOption)
|
SurnameColorOption)
|
||||||
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.display.name import displayer as name_displayer
|
from gramps.gen.display.name import displayer as global_name_display
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
@ -111,7 +112,8 @@ class FamilyLinesOptions(MenuReportOptions):
|
|||||||
def add_menu_options(self, menu):
|
def add_menu_options(self, menu):
|
||||||
|
|
||||||
# --------------------------------
|
# --------------------------------
|
||||||
add_option = partial(menu.add_option, _('People of Interest'))
|
category_name = _('People of Interest')
|
||||||
|
add_option = partial(menu.add_option, category_name)
|
||||||
# --------------------------------
|
# --------------------------------
|
||||||
|
|
||||||
person_list = PersonListOption(_('People of interest'))
|
person_list = PersonListOption(_('People of interest'))
|
||||||
@ -119,6 +121,8 @@ class FamilyLinesOptions(MenuReportOptions):
|
|||||||
'point when determining "family lines".'))
|
'point when determining "family lines".'))
|
||||||
add_option('gidlist', person_list)
|
add_option('gidlist', person_list)
|
||||||
|
|
||||||
|
stdoptions.add_name_format_option(menu, category_name)
|
||||||
|
|
||||||
followpar = BooleanOption(
|
followpar = BooleanOption(
|
||||||
_('Follow parents to determine family lines'), True)
|
_('Follow parents to determine family lines'), True)
|
||||||
followpar.set_help(_('Parents and their ancestors will be '
|
followpar.set_help(_('Parents and their ancestors will be '
|
||||||
@ -349,6 +353,13 @@ class FamilyLinesReport(Report):
|
|||||||
#option can be from another family tree, so person can be None
|
#option can be from another family tree, so person can be None
|
||||||
self._interest_set.add(person.get_handle())
|
self._interest_set.add(person.get_handle())
|
||||||
|
|
||||||
|
# Copy the global NameDisplay so that we don't change application
|
||||||
|
# defaults.
|
||||||
|
self._name_display = copy.deepcopy(global_name_display)
|
||||||
|
name_format = menu.get_option_by_name("name_format").get_value()
|
||||||
|
if name_format != 0:
|
||||||
|
self._name_display.set_default_format(name_format)
|
||||||
|
|
||||||
# convert the 'surnamecolors' string to a dictionary of names and colors
|
# convert the 'surnamecolors' string to a dictionary of names and colors
|
||||||
self._surnamecolors = {}
|
self._surnamecolors = {}
|
||||||
tmp = get_value('surnamecolors')
|
tmp = get_value('surnamecolors')
|
||||||
@ -719,7 +730,7 @@ class FamilyLinesReport(Report):
|
|||||||
# loop through all the people we need to output
|
# loop through all the people we need to output
|
||||||
for handle in self._people:
|
for handle in self._people:
|
||||||
person = self._db.get_person_from_handle(handle)
|
person = self._db.get_person_from_handle(handle)
|
||||||
name = name_displayer.display_name(person.get_primary_name())
|
name = self._name_display.display(person)
|
||||||
|
|
||||||
# figure out what colour to use
|
# figure out what colour to use
|
||||||
gender = person.get_gender()
|
gender = person.get_gender()
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
# Copyright (C) 2007-2008 Brian G. Matherly
|
# Copyright (C) 2007-2008 Brian G. Matherly
|
||||||
# Copyright (C) 2008 Stephane Charette <stephanecharette@gmail.com>
|
# Copyright (C) 2008 Stephane Charette <stephanecharette@gmail.com>
|
||||||
# Contribution 2009 by Bob Ham <rah@bash.sh>
|
# Contribution 2009 by Bob Ham <rah@bash.sh>
|
||||||
# Copyright (C) 2010 Jakim Friant
|
# Copyright (C) 2010 Jakim Friant
|
||||||
|
# Copyright (C) 2013 Paul Franklin
|
||||||
#
|
#
|
||||||
# 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
|
||||||
@ -24,28 +25,29 @@
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
Generate an hourglass graph using the GraphViz generator.
|
Generate an hourglass graph using the GraphViz generator.
|
||||||
/Reports/GraphViz/Hourglass Graph
|
|
||||||
"""
|
"""
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# python modules
|
# python modules
|
||||||
#
|
#
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
from gramps.gen.const import GRAMPS_LOCALE as glocale
|
import copy
|
||||||
_ = glocale.translation.gettext
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# GRAMPS modules
|
# GRAMPS modules
|
||||||
#
|
#
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
from gramps.gen.display.name import displayer as name_displayer
|
from gramps.gen.const import GRAMPS_LOCALE as glocale
|
||||||
|
_ = glocale.translation.gettext
|
||||||
|
from gramps.gen.display.name import displayer as global_name_display
|
||||||
from gramps.gen.errors import ReportError
|
from gramps.gen.errors import ReportError
|
||||||
from gramps.gen.plug.menu import (PersonOption, BooleanOption, NumberOption,
|
from gramps.gen.plug.menu import (PersonOption, BooleanOption, NumberOption,
|
||||||
EnumeratedListOption)
|
EnumeratedListOption)
|
||||||
from gramps.gen.plug.report import Report
|
from gramps.gen.plug.report import Report
|
||||||
from gramps.gen.plug.report import utils as ReportUtils
|
from gramps.gen.plug.report import utils as ReportUtils
|
||||||
from gramps.gen.plug.report import MenuReportOptions
|
from gramps.gen.plug.report import MenuReportOptions
|
||||||
|
from gramps.gen.plug.report import stdoptions
|
||||||
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
|
||||||
|
|
||||||
@ -108,6 +110,13 @@ class HourGlassReport(Report):
|
|||||||
self.colors = filled
|
self.colors = filled
|
||||||
self.roundcorners = menu.get_option_by_name('roundcorners').get_value()
|
self.roundcorners = menu.get_option_by_name('roundcorners').get_value()
|
||||||
|
|
||||||
|
# Copy the global NameDisplay so that we don't change application
|
||||||
|
# defaults.
|
||||||
|
self._name_display = copy.deepcopy(global_name_display)
|
||||||
|
name_format = menu.get_option_by_name("name_format").get_value()
|
||||||
|
if name_format != 0:
|
||||||
|
self._name_display.set_default_format(name_format)
|
||||||
|
|
||||||
def write_report(self):
|
def write_report(self):
|
||||||
"""
|
"""
|
||||||
Generate the report.
|
Generate the report.
|
||||||
@ -172,7 +181,7 @@ class HourGlassReport(Report):
|
|||||||
Add a person to the Graph. The node id will be the person's gramps id.
|
Add a person to the Graph. The node id will be the person's gramps id.
|
||||||
"""
|
"""
|
||||||
p_id = person.get_gramps_id()
|
p_id = person.get_gramps_id()
|
||||||
name = name_displayer.display_formal(person)
|
name = self._name_display.display(person)
|
||||||
|
|
||||||
birth_evt = get_birth_or_fallback(self.__db, person)
|
birth_evt = get_birth_or_fallback(self.__db, person)
|
||||||
if birth_evt:
|
if birth_evt:
|
||||||
@ -263,6 +272,8 @@ class HourGlassOptions(MenuReportOptions):
|
|||||||
pid.set_help(_("The Center person for the graph"))
|
pid.set_help(_("The Center person for the graph"))
|
||||||
menu.add_option(category_name, "pid", pid)
|
menu.add_option(category_name, "pid", pid)
|
||||||
|
|
||||||
|
stdoptions.add_name_format_option(menu, category_name)
|
||||||
|
|
||||||
max_gen = NumberOption(_('Max Descendant Generations'), 10, 1, 15)
|
max_gen = NumberOption(_('Max Descendant Generations'), 10, 1, 15)
|
||||||
max_gen.set_help(_("The number of generations of descendants to "
|
max_gen.set_help(_("The number of generations of descendants to "
|
||||||
"include in the graph"))
|
"include in the graph"))
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
# Copyright (C) 2009 Gary Burton
|
# Copyright (C) 2009 Gary Burton
|
||||||
# Contribution 2009 by Bob Ham <rah@bash.sh>
|
# Contribution 2009 by Bob Ham <rah@bash.sh>
|
||||||
# Copyright (C) 2010 Jakim Friant
|
# Copyright (C) 2010 Jakim Friant
|
||||||
|
# Copyright (C) 2013 Paul Franklin
|
||||||
#
|
#
|
||||||
# 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
|
||||||
@ -42,6 +43,7 @@ Create a relationship graph using Graphviz
|
|||||||
from gramps.gen.const import GRAMPS_LOCALE as glocale
|
from gramps.gen.const import GRAMPS_LOCALE as glocale
|
||||||
_ = glocale.translation.sgettext
|
_ = glocale.translation.sgettext
|
||||||
from functools import partial
|
from functools import partial
|
||||||
|
import copy
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
@ -49,12 +51,13 @@ from functools import partial
|
|||||||
#
|
#
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
from gramps.gen.constfunc import conv_to_unicode
|
from gramps.gen.constfunc import conv_to_unicode
|
||||||
from gramps.gen.plug.menu import (BooleanOption, EnumeratedListOption, FilterOption,
|
from gramps.gen.plug.menu import (BooleanOption, EnumeratedListOption,
|
||||||
PersonOption, ColorOption)
|
FilterOption, PersonOption, ColorOption)
|
||||||
from gramps.gen.plug.report import Report
|
from gramps.gen.plug.report import Report
|
||||||
from gramps.gen.plug.report import utils as ReportUtils
|
from gramps.gen.plug.report import utils as ReportUtils
|
||||||
from gramps.gen.plug.report import MenuReportOptions
|
from gramps.gen.plug.report import MenuReportOptions
|
||||||
from gramps.gen.display.name import displayer as name_displayer
|
from gramps.gen.plug.report import stdoptions
|
||||||
|
from gramps.gen.display.name import displayer as global_name_display
|
||||||
from gramps.gen.datehandler import get_date
|
from gramps.gen.datehandler import get_date
|
||||||
from gramps.gen.lib import ChildRefType, EventRoleType, EventType
|
from gramps.gen.lib import ChildRefType, EventRoleType, EventType
|
||||||
from gramps.gen.utils.file import media_path_full, find_file
|
from gramps.gen.utils.file import media_path_full, find_file
|
||||||
@ -160,6 +163,13 @@ class RelGraphReport(Report):
|
|||||||
filter_option = get_option_by_name('filter')
|
filter_option = get_option_by_name('filter')
|
||||||
self._filter = filter_option.get_filter()
|
self._filter = filter_option.get_filter()
|
||||||
|
|
||||||
|
# Copy the global NameDisplay so that we don't change application
|
||||||
|
# defaults.
|
||||||
|
self._name_display = copy.deepcopy(global_name_display)
|
||||||
|
name_format = menu.get_option_by_name("name_format").get_value()
|
||||||
|
if name_format != 0:
|
||||||
|
self._name_display.set_default_format(name_format)
|
||||||
|
|
||||||
def write_report(self):
|
def write_report(self):
|
||||||
self.person_handles = self._filter.apply(self.database,
|
self.person_handles = self._filter.apply(self.database,
|
||||||
self.database.iter_person_handles())
|
self.database.iter_person_handles())
|
||||||
@ -392,7 +402,7 @@ class RelGraphReport(Report):
|
|||||||
self.bUseHtmlOutput = False
|
self.bUseHtmlOutput = False
|
||||||
|
|
||||||
# at the very least, the label must have the person's name
|
# at the very least, the label must have the person's name
|
||||||
nm = name_displayer.display_name(person.get_primary_name())
|
nm = self._name_display.display(person)
|
||||||
if self.bUseHtmlOutput :
|
if self.bUseHtmlOutput :
|
||||||
# avoid < and > in the name, as this is html text
|
# avoid < and > in the name, as this is html text
|
||||||
label += nm.replace('<', '<').replace('>', '>')
|
label += nm.replace('<', '<').replace('>', '>')
|
||||||
@ -480,7 +490,8 @@ class RelGraphOptions(MenuReportOptions):
|
|||||||
|
|
||||||
def add_menu_options(self, menu):
|
def add_menu_options(self, menu):
|
||||||
################################
|
################################
|
||||||
add_option = partial(menu.add_option, _("Report Options"))
|
category_name = _("Report Options")
|
||||||
|
add_option = partial(menu.add_option, category_name)
|
||||||
################################
|
################################
|
||||||
|
|
||||||
self.__filter = FilterOption(_("Filter"), 0)
|
self.__filter = FilterOption(_("Filter"), 0)
|
||||||
@ -494,6 +505,8 @@ class RelGraphOptions(MenuReportOptions):
|
|||||||
add_option("pid", self.__pid)
|
add_option("pid", self.__pid)
|
||||||
self.__pid.connect('value-changed', self.__update_filters)
|
self.__pid.connect('value-changed', self.__update_filters)
|
||||||
|
|
||||||
|
stdoptions.add_name_format_option(menu, category_name)
|
||||||
|
|
||||||
self.__update_filters()
|
self.__update_filters()
|
||||||
|
|
||||||
self.incdate = BooleanOption(
|
self.incdate = BooleanOption(
|
||||||
|
Loading…
Reference in New Issue
Block a user