remember metric & custom paper size, issue #1481

svn: r9782
This commit is contained in:
Stéphane Charette 2008-01-12 11:37:21 +00:00
parent 7c37b80716
commit 219a325c43
9 changed files with 196 additions and 55 deletions

View File

@ -1,3 +1,15 @@
2008-01-12 Stéphane Charette <stephanecharette@gmail.com>
* src/Config/_GrampsConfigKeys.py:
* src/ReportBase/_PaperMenu.py:
* src/ReportBase/_GraphvizReportDialog.py:
* src/ReportBase/_DocReportDialog.py:
* src/ReportBase/_BareReportDialog.py:
* src/ReportBase/_ReportOptions.py:
remember if the paper options should be metric, and remember the
custom paper sizes (issues #1481)
* src/plugins/GVFamilyLines.py: small code cleanup
* src/plugins/GVRelGraph.py: implement post_init()
2008-01-11 Stéphane Charette <stephanecharette@gmail.com> 2008-01-11 Stéphane Charette <stephanecharette@gmail.com>
* src/ReportBase/_BareReportDialog.py: allow scroll arrows on the * src/ReportBase/_BareReportDialog.py: allow scroll arrows on the
notebook if there are too many tabs to display notebook if there are too many tabs to display

View File

@ -115,6 +115,7 @@ PPREFIX = ('preferences', 'pprefix', 2)
SPREFIX = ('preferences', 'sprefix', 2) SPREFIX = ('preferences', 'sprefix', 2)
GOUTPUT_PREFERENCE = ('preferences', 'goutput-preference', 2) GOUTPUT_PREFERENCE = ('preferences', 'goutput-preference', 2)
OUTPUT_PREFERENCE = ('preferences', 'output-preference', 2) OUTPUT_PREFERENCE = ('preferences', 'output-preference', 2)
PAPER_METRIC = ('preferences', 'paper-metric', 1)
PAPER_PREFERENCE = ('preferences', 'paper-preference', 2) PAPER_PREFERENCE = ('preferences', 'paper-preference', 2)
RECENT_FILE = ('paths', 'recent-file', 2) RECENT_FILE = ('paths', 'recent-file', 2)
RECENT_IMPORT_DIR = ('paths', 'recent-import-dir', 2) RECENT_IMPORT_DIR = ('paths', 'recent-import-dir', 2)
@ -232,6 +233,7 @@ default_value = {
SPREFIX : 'S%04d', SPREFIX : 'S%04d',
GOUTPUT_PREFERENCE : 'No default format', GOUTPUT_PREFERENCE : 'No default format',
OUTPUT_PREFERENCE : 'No default format', OUTPUT_PREFERENCE : 'No default format',
PAPER_METRIC : 0,
PAPER_PREFERENCE : 'Letter', PAPER_PREFERENCE : 'Letter',
RECENT_FILE : '', RECENT_FILE : '',
RECENT_IMPORT_DIR : '', RECENT_IMPORT_DIR : '',

View File

@ -149,7 +149,7 @@ class BareReportDialog(ManagedWindow.ManagedWindow):
self.setup_target_frame() self.setup_target_frame()
self.setup_format_frame() self.setup_format_frame()
self.setup_style_frame() self.setup_style_frame()
self.notebook = gtk.Notebook() self.notebook = gtk.Notebook()
self.notebook.set_scrollable(True) self.notebook.set_scrollable(True)
self.notebook.set_border_width(6) self.notebook.set_border_width(6)

View File

@ -178,9 +178,11 @@ class DocReportDialog(ReportDialog):
self.target_fileentry.set_filename(spath) self.target_fileentry.set_filename(spath)
def setup_report_options_frame(self): def setup_report_options_frame(self):
self.paper_frame = PaperFrame(self.options.handler.get_paper_name(), self.paper_frame = PaperFrame(self.options.handler.get_paper_metric(),
self.options.handler.get_paper_name(),
self.options.handler.get_orientation(), self.options.handler.get_orientation(),
self.options.handler.get_margins(), self.options.handler.get_margins(),
self.options.handler.get_custom_paper_size()
) )
self.setup_html_frame() self.setup_html_frame()
ReportDialog.setup_report_options_frame(self) ReportDialog.setup_report_options_frame(self)
@ -291,10 +293,12 @@ class DocReportDialog(ReportDialog):
self.parse_format_frame() self.parse_format_frame()
self.parse_style_frame() self.parse_style_frame()
self.parse_html_frame() self.parse_html_frame()
self.options.handler.set_paper_metric(self.paper_frame.get_paper_metric())
self.options.handler.set_paper_name(self.paper_frame.get_paper_name()) self.options.handler.set_paper_name(self.paper_frame.get_paper_name())
self.options.handler.set_orientation(self.paper_frame.get_orientation()) self.options.handler.set_orientation(self.paper_frame.get_orientation())
self.options.handler.set_margins(self.paper_frame.get_paper_margins()) self.options.handler.set_margins(self.paper_frame.get_paper_margins())
self.options.handler.set_custom_paper_size(self.paper_frame.get_custom_paper_size())
self.parse_user_options() self.parse_user_options()

View File

@ -885,9 +885,11 @@ class GraphvizReportDialog(ReportDialog):
self.paper_label = gtk.Label('<b>%s</b>'%_("Paper Options")) self.paper_label = gtk.Label('<b>%s</b>'%_("Paper Options"))
self.paper_label.set_use_markup(True) self.paper_label.set_use_markup(True)
self.paper_frame = PaperFrame(self.options.handler.get_paper_name(), self.paper_frame = PaperFrame(self.options.handler.get_paper_metric(),
self.options.handler.get_paper_name(),
self.options.handler.get_orientation(), self.options.handler.get_orientation(),
self.options.handler.get_margins() self.options.handler.get_margins(),
self.options.handler.get_custom_paper_size()
) )
self.notebook.insert_page(self.paper_frame,self.paper_label,0) self.notebook.insert_page(self.paper_frame,self.paper_label,0)
self.paper_frame.show_all() self.paper_frame.show_all()
@ -944,10 +946,12 @@ class GraphvizReportDialog(ReportDialog):
# Preparation # Preparation
self.parse_format_frame() self.parse_format_frame()
self.parse_user_options() self.parse_user_options()
self.options.handler.set_paper_metric(self.paper_frame.get_paper_metric())
self.options.handler.set_paper_name(self.paper_frame.get_paper_name()) self.options.handler.set_paper_name(self.paper_frame.get_paper_name())
self.options.handler.set_orientation(self.paper_frame.get_orientation()) self.options.handler.set_orientation(self.paper_frame.get_orientation())
self.options.handler.set_margins(self.paper_frame.get_paper_margins()) self.options.handler.set_margins(self.paper_frame.get_paper_margins())
self.options.handler.set_custom_paper_size(self.paper_frame.get_custom_paper_size())
# Create the output document. # Create the output document.
self.make_document() self.make_document()

View File

@ -142,8 +142,8 @@ class OrientationComboBox(gtk.ComboBox):
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
class PaperFrame(gtk.HBox): class PaperFrame(gtk.HBox):
"""PaperFrame provides all the entry necessary to specify a paper style. """ """PaperFrame provides all the entry necessary to specify a paper style. """
def __init__(self,default_name,default_orientation, def __init__(self,default_metric,default_name,default_orientation,
margins=[2.54,2.54,2.54,2.54]): margins=[2.54,2.54,2.54,2.54], custom=[29.7,21.0]):
gtk.HBox.__init__(self) gtk.HBox.__init__(self)
glade_file = os.path.join(const.GLADE_DIR, "paper_settings.glade") glade_file = os.path.join(const.GLADE_DIR, "paper_settings.glade")
glade_xml = gtk.glade.XML(glade_file, "paper_table", "gramps") glade_xml = gtk.glade.XML(glade_file, "paper_table", "gramps")
@ -162,6 +162,7 @@ class PaperFrame(gtk.HBox):
# insert custom widgets # insert custom widgets
self.papersize_menu = PaperComboBox(default_name) self.papersize_menu = PaperComboBox(default_name)
self.orientation_menu = OrientationComboBox(default_orientation) self.orientation_menu = OrientationComboBox(default_orientation)
self.metric.set_active(default_metric)
# connect all widgets # connect all widgets
format_table = glade_xml.get_widget('format_table') format_table = glade_xml.get_widget('format_table')
@ -178,6 +179,8 @@ class PaperFrame(gtk.HBox):
self.paper_unit = 'cm' self.paper_unit = 'cm'
self.paper_unit_multiplier = 1.0 self.paper_unit_multiplier = 1.0
self.pwidth.set_text("%.2f" % custom[0])
self.pheight.set_text("%.2f" % custom[1])
self.lmargin.set_text("%.2f" % margins[0]) self.lmargin.set_text("%.2f" % margins[0])
self.rmargin.set_text("%.2f" % margins[1]) self.rmargin.set_text("%.2f" % margins[1])
self.tmargin.set_text("%.2f" % margins[2]) self.tmargin.set_text("%.2f" % margins[2])
@ -186,6 +189,7 @@ class PaperFrame(gtk.HBox):
self.paper_table.show_all() self.paper_table.show_all()
self.add(self.paper_table) self.add(self.paper_table)
self.units_changed(self.metric)
self.size_changed(None) self.size_changed(None)
def size_changed(self, obj): def size_changed(self, obj):
@ -243,13 +247,12 @@ class PaperFrame(gtk.HBox):
def get_paper_size(self): def get_paper_size(self):
"""Read and validate paper size values. """Read and validate paper size values.
If needed update the dimensions from the width, height entries, If needed update the dimensions from the width, height entries,
and worst case fallback to A4 size. and worst case fallback to A4 size.
""" """
papersize, papername = self.papersize_menu.get_value() papersize, papername = self.papersize_menu.get_value()
# FIXME it is wrong to use translatable text in comparison. # FIXME it is wrong to use translatable text in comparison.
# How can we distinguish custom size though? # How can we distinguish custom size though?
if papername == _('Custom Size'): if papername == _('Custom Size'):
@ -290,7 +293,17 @@ class PaperFrame(gtk.HBox):
paper_margins[i] = 2.54 paper_margins[i] = 2.54
return paper_margins return paper_margins
def get_custom_paper_size(self):
width = float(self.pwidth.get_text() ) * self.paper_unit_multiplier
height = float(self.pheight.get_text()) * self.paper_unit_multiplier
paper_size = []
paper_size.append(max(width, 1.0))
paper_size.append(max(height, 1.0))
return paper_size
def get_paper_style(self): def get_paper_style(self):
paper_size, paper_name = self.get_paper_size() paper_size, paper_name = self.get_paper_size()
paper_orientation = self.orientation_menu.get_value() paper_orientation = self.orientation_menu.get_value()
@ -301,6 +314,9 @@ class PaperFrame(gtk.HBox):
*paper_margins) *paper_margins)
return pstyle return pstyle
def get_paper_metric(self):
return self.metric.get_active()
def get_paper_name(self): def get_paper_name(self):
paper_size, paper_name = self.get_paper_size() paper_size, paper_name = self.get_paper_size()
return paper_name return paper_name

View File

@ -70,8 +70,10 @@ class OptionList(_Options.OptionList):
def __init__(self): def __init__(self):
_Options.OptionList.__init__(self) _Options.OptionList.__init__(self)
self.style_name = None self.style_name = None
self.paper_metric = None
self.paper_name = None self.paper_name = None
self.orientation = None self.orientation = None
self.custom_paper_size = [29.7, 21.0]
self.margins = [2.54, 2.54, 2.54, 2.54] self.margins = [2.54, 2.54, 2.54, 2.54]
self.template_name = None self.template_name = None
self.format_name = None self.format_name = None
@ -92,6 +94,22 @@ class OptionList(_Options.OptionList):
""" """
return self.style_name return self.style_name
def set_paper_metric(self,paper_metric):
"""
Sets the paper metric for the OptionList.
@param paper_metric: whether to use metric.
@type paper_name: boolean
"""
self.paper_metric = paper_metric
def get_paper_metric(self):
"""
Returns the paper metric of the OptionList.
@returns: returns whether to use metric
@rtype: boolean
"""
return self.paper_metric
def set_paper_name(self,paper_name): def set_paper_name(self,paper_name):
""" """
Sets the paper name for the OptionList. Sets the paper name for the OptionList.
@ -126,6 +144,22 @@ class OptionList(_Options.OptionList):
""" """
return self.orientation return self.orientation
def set_custom_paper_size(self,paper_size):
"""
Sets the custom paper size for the OptionList.
@param paper_size: paper size to set in cm.
@type paper_size: [float, float]
"""
self.custom_paper_size = paper_size
def get_custom_paper_size(self):
"""
Returns the custom paper size for the OptionList.
@returns: returns the custom paper size in cm
@rtype: [float, float]
"""
return self.custom_paper_size
def set_margins(self,margins): def set_margins(self,margins):
""" """
Sets the margins for the OptionList. Sets the margins for the OptionList.
@ -209,19 +243,39 @@ class OptionListCollection(_Options.OptionListCollection):
def init_common(self): def init_common(self):
# Default values for common options # Default values for common options
self.default_style_name = "default" self.default_style_name = "default"
self.default_paper_metric = Config.get(Config.PAPER_METRIC)
self.default_paper_name = Config.get(Config.PAPER_PREFERENCE) self.default_paper_name = Config.get(Config.PAPER_PREFERENCE)
self.default_template_name = "" self.default_template_name = ""
self.default_orientation = BaseDoc.PAPER_PORTRAIT self.default_orientation = BaseDoc.PAPER_PORTRAIT
self.default_custom_paper_size = [29.7, 21.0]
self.default_margins = [2.54, 2.54, 2.54, 2.54] self.default_margins = [2.54, 2.54, 2.54, 2.54]
self.default_format_name = 'print' self.default_format_name = 'print'
self.last_paper_metric = self.default_paper_metric
self.last_paper_name = self.default_paper_name self.last_paper_name = self.default_paper_name
self.last_orientation = self.default_orientation self.last_orientation = self.default_orientation
self.last_custom_paper_size = copy.copy(self.default_custom_paper_size)
self.last_margins = copy.copy(self.default_margins) self.last_margins = copy.copy(self.default_margins)
self.last_template_name = self.default_template_name self.last_template_name = self.default_template_name
self.last_format_name = self.default_format_name self.last_format_name = self.default_format_name
self.option_list_map = {} self.option_list_map = {}
def set_last_paper_metric(self,paper_metric):
"""
Sets the last paper metric used for the any report in this collection.
@param paper_metric: whether to use metric.
@type paper_name: boolean
"""
self.last_paper_metric = paper_metric
def get_last_paper_metric(self):
"""
Returns the last paper metric used for the any report in this collection.
@returns: returns whether or not to use metric
@rtype: boolean
"""
return self.last_paper_metric
def set_last_paper_name(self,paper_name): def set_last_paper_name(self,paper_name):
""" """
Sets the last paper name used for the any report in this collection. Sets the last paper name used for the any report in this collection.
@ -255,6 +309,23 @@ class OptionListCollection(_Options.OptionListCollection):
""" """
return self.last_orientation return self.last_orientation
def set_last_custom_paper_size(self,custom_paper_size):
"""
Sets the last custom paper size used for the any report in this collection.
@param custom_paper_size: size to set in cm (width, height)
@type margins: [float, float]
"""
self.last_custom_paper_size = copy.copy(custom_paper_size)
def get_last_custom_paper_size(self):
"""
Returns the last custom paper size used for the any report in this
collection.
@returns: list of last custom paper size used in cm (width, height)
@rtype: [float, float]
"""
return copy.copy(self.last_custom_paper_size)
def set_last_margins(self,margins): def set_last_margins(self,margins):
""" """
Sets the last margins used for the any report in this collection. Sets the last margins used for the any report in this collection.
@ -323,6 +394,11 @@ class OptionListCollection(_Options.OptionListCollection):
def write_common(self,f): def write_common(self,f):
f.write('<last-common>\n') f.write('<last-common>\n')
if self.get_last_paper_metric() != self.default_paper_metric:
f.write(' <metric value="%d"/>\n' % self.get_last_paper_metric() )
if self.get_last_custom_paper_size() != self.default_custom_paper_size:
size = self.get_last_custom_paper_size()
f.write(' <size value="%f %f"/>\n' % (size[0], size[1]) )
if self.get_last_paper_name() != self.default_paper_name: if self.get_last_paper_name() != self.default_paper_name:
f.write(' <paper name="%s"/>\n' % escxml(self.get_last_paper_name()) ) f.write(' <paper name="%s"/>\n' % escxml(self.get_last_paper_name()) )
if self.get_last_template_name() != self.default_template_name: if self.get_last_template_name() != self.default_template_name:
@ -337,6 +413,13 @@ class OptionListCollection(_Options.OptionListCollection):
if option_list.get_style_name() \ if option_list.get_style_name() \
and option_list.get_style_name() != self.default_style_name: and option_list.get_style_name() != self.default_style_name:
f.write(' <style name="%s"/>\n' % escxml(option_list.get_style_name()) ) f.write(' <style name="%s"/>\n' % escxml(option_list.get_style_name()) )
if option_list.get_paper_metric() \
and option_list.get_paper_metric() != self.default_paper_metric:
f.write(' <metric value="%d"/>\n' % option_list.get_paper_metric() )
if option_list.get_custom_paper_size() \
and option_list.get_custom_paper_size() != self.default_custom_paper_size:
size = self.get_last_custom_paper_size()
f.write(' <size value="%f %f"/>\n' % (size[0], size[1]) )
if option_list.get_paper_name() \ if option_list.get_paper_name() \
and option_list.get_paper_name() != self.default_paper_name: and option_list.get_paper_name() != self.default_paper_name:
f.write(' <paper name="%s"/>\n' % escxml(option_list.get_paper_name()) ) f.write(' <paper name="%s"/>\n' % escxml(option_list.get_paper_name()) )
@ -418,6 +501,20 @@ class OptionParser(_Options.OptionParser):
self.collection.set_last_orientation(int(attrs['value'])) self.collection.set_last_orientation(int(attrs['value']))
else: else:
self.option_list.set_orientation(int(attrs['value'])) self.option_list.set_orientation(int(attrs['value']))
elif tag == "metric":
if self.common:
self.collection.set_last_paper_metric(int(attrs['value']))
else:
self.option_list.set_paper_metric(int(attrs['value']))
elif tag == "size":
width, height = attrs['value'].split()
width = float(width)
height = float(height)
if self.common:
self.collection.set_last_custom_paper_size([width, height])
else:
self.option_list.set_custom_paper_size([width, height])
elif tag == "margin": elif tag == "margin":
pos, value = int(attrs['number']), float(attrs['value']) pos, value = int(attrs['number']), float(attrs['value'])
if self.common: if self.common:
@ -465,8 +562,10 @@ class OptionHandler(_Options.OptionHandler):
# Retrieve our options from whole collection # Retrieve our options from whole collection
self.style_name = self.option_list_collection.default_style_name self.style_name = self.option_list_collection.default_style_name
self.paper_metric = self.option_list_collection.get_last_paper_metric()
self.paper_name = self.option_list_collection.get_last_paper_name() self.paper_name = self.option_list_collection.get_last_paper_name()
self.orientation = self.option_list_collection.get_last_orientation() self.orientation = self.option_list_collection.get_last_orientation()
self.custom_paper_size = self.option_list_collection.get_last_custom_paper_size()
self.margins = self.option_list_collection.get_last_margins() self.margins = self.option_list_collection.get_last_margins()
self.template_name = self.option_list_collection.get_last_template_name() self.template_name = self.option_list_collection.get_last_template_name()
self.format_name = self.option_list_collection.get_last_format_name() self.format_name = self.option_list_collection.get_last_format_name()
@ -476,10 +575,14 @@ class OptionHandler(_Options.OptionHandler):
self.style_name = self.saved_option_list.get_style_name() self.style_name = self.saved_option_list.get_style_name()
if self.saved_option_list.get_orientation(): if self.saved_option_list.get_orientation():
self.orientation = self.saved_option_list.get_orientation() self.orientation = self.saved_option_list.get_orientation()
if self.saved_option_list.get_custom_paper_size():
self.custom_paper_size = self.saved_option_list.get_custom_paper_size()
if self.saved_option_list.get_margins(): if self.saved_option_list.get_margins():
self.margins = self.saved_option_list.get_margins() self.margins = self.saved_option_list.get_margins()
if self.saved_option_list.get_template_name(): if self.saved_option_list.get_template_name():
self.template_name = self.saved_option_list.get_template_name() self.template_name = self.saved_option_list.get_template_name()
if self.saved_option_list.get_paper_metric():
self.paper_metric = self.saved_option_list.get_paper_metric()
if self.saved_option_list.get_paper_name(): if self.saved_option_list.get_paper_name():
self.paper_name = self.saved_option_list.get_paper_name() self.paper_name = self.saved_option_list.get_paper_name()
if self.saved_option_list.get_format_name(): if self.saved_option_list.get_format_name():
@ -489,8 +592,10 @@ class OptionHandler(_Options.OptionHandler):
# First we save common options # First we save common options
self.saved_option_list.set_style_name(self.style_name) self.saved_option_list.set_style_name(self.style_name)
self.saved_option_list.set_orientation(self.orientation) self.saved_option_list.set_orientation(self.orientation)
self.saved_option_list.set_custom_paper_size(self.custom_paper_size)
self.saved_option_list.set_margins(self.margins) self.saved_option_list.set_margins(self.margins)
self.saved_option_list.set_template_name(self.template_name) self.saved_option_list.set_template_name(self.template_name)
self.saved_option_list.set_paper_metric(self.paper_metric)
self.saved_option_list.set_paper_name(self.paper_name) self.saved_option_list.set_paper_name(self.paper_name)
self.saved_option_list.set_format_name(self.format_name) self.saved_option_list.set_format_name(self.format_name)
self.option_list_collection.set_option_list(self.module_name, self.option_list_collection.set_option_list(self.module_name,
@ -498,8 +603,10 @@ class OptionHandler(_Options.OptionHandler):
# Then save last-common options from the current selection # Then save last-common options from the current selection
self.option_list_collection.set_last_orientation(self.orientation) self.option_list_collection.set_last_orientation(self.orientation)
self.option_list_collection.set_last_custom_paper_size(self.custom_paper_size)
self.option_list_collection.set_last_margins(self.margins) self.option_list_collection.set_last_margins(self.margins)
self.option_list_collection.set_last_template_name(self.template_name) self.option_list_collection.set_last_template_name(self.template_name)
self.option_list_collection.set_last_paper_metric(self.paper_metric)
self.option_list_collection.set_last_paper_name(self.paper_name) self.option_list_collection.set_last_paper_name(self.paper_name)
self.option_list_collection.set_last_format_name(self.format_name) self.option_list_collection.set_last_format_name(self.format_name)
@ -519,6 +626,12 @@ class OptionHandler(_Options.OptionHandler):
def set_format_name(self,format_name): def set_format_name(self,format_name):
self.format_name = format_name self.format_name = format_name
def get_paper_metric(self):
return self.paper_metric
def set_paper_metric(self,paper_metric):
self.paper_metric = paper_metric
def get_paper_name(self): def get_paper_name(self):
return self.paper_name return self.paper_name
@ -549,6 +662,12 @@ class OptionHandler(_Options.OptionHandler):
def set_orientation(self,orientation): def set_orientation(self,orientation):
self.orientation = orientation self.orientation = orientation
def get_custom_paper_size(self):
return copy.copy(self.custom_paper_size)
def set_custom_paper_size(self,custom_paper_size):
self.custom_paper_size = copy.copy(custom_paper_size)
def get_margins(self): def get_margins(self):
return copy.copy(self.margins) return copy.copy(self.margins)

View File

@ -1,7 +1,7 @@
# #
# Gramps - a GTK+/GNOME based genealogy program # Gramps - a GTK+/GNOME based genealogy program
# #
# Copyright (C) 2007 Stephane Charette # Copyright (C) 2007-2008 Stephane Charette
# Copyright (C) 2007 Brian G. Matherly # Copyright (C) 2007 Brian G. Matherly
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
@ -30,8 +30,6 @@ Family Lines, a GraphViz-based plugin for Gramps.
# python modules # python modules
# #
#------------------------------------------------------------------------ #------------------------------------------------------------------------
import os
import time
from gettext import gettext as _ from gettext import gettext as _
#------------------------------------------------------------------------ #------------------------------------------------------------------------
@ -42,37 +40,17 @@ from gettext import gettext as _
import logging import logging
log = logging.getLogger(".FamilyLines") log = logging.getLogger(".FamilyLines")
#------------------------------------------------------------------------
#
# GNOME/gtk
#
#------------------------------------------------------------------------
import gtk
import gobject
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #
# GRAMPS module # GRAMPS module
# #
#------------------------------------------------------------------------ #------------------------------------------------------------------------
import gen.lib import gen.lib
import Config
import Errors
import Utils import Utils
import ThumbNails import ThumbNails
import DateHandler
import GrampsWidgets
import ManagedWindow
from PluginUtils import register_report
from ReportBase import Report, ReportUtils, CATEGORY_CODE, MODE_GUI, MODE_CLI
from ReportBase import Report, MenuReportOptions, MODE_GUI, MODE_CLI, CATEGORY_GRAPHVIZ
from ReportBase._ReportDialog import ReportDialog
from PluginUtils import register_report, EnumeratedListOption, BooleanOption, NumberOption, ColourButtonOption, PersonListOption, SurnameColourOption
from QuestionDialog import ErrorDialog, WarningDialog
from BasicUtils import name_displayer as _nd
from DateHandler import displayer as _dd from DateHandler import displayer as _dd
from DateHandler import parser from ReportBase import Report, ReportUtils, MenuReportOptions, CATEGORY_GRAPHVIZ, MODE_GUI
from Selectors import selector_factory from PluginUtils import register_report, EnumeratedListOption, BooleanOption, NumberOption, ColourButtonOption, PersonListOption, SurnameColourOption
#------------------------------------------------------------------------ #------------------------------------------------------------------------
@ -226,19 +204,15 @@ class FamilyLinesOptions(MenuReportOptions):
def post_init(self, dialog): def post_init(self, dialog):
# this method is called after all of the controls have been # this method is called after all of the controls have been
# created, but before the notebook is shown to the user # created, but before the notebook itself has been created
# re-order the notebook tabs the way we want self.limitParents. gobj.connect('toggled', self.limitChanged )
# dialog.notebook. self.limitChildren. gobj.connect('toggled', self.limitChanged )
self.includeImages. gobj.connect('toggled', self.imagesChanged )
self.limitParents.gobj.connect('toggled', self.limitChanged)
self.limitChildren.gobj.connect('toggled', self.limitChanged)
self.includeImages.gobj.connect('toggled', self.imagesChanged)
# ensure things are initialized correctly when it first comes up # ensure things are initialized correctly when it first comes up
self.limitChanged(self.limitParents.gobj) self.limitChanged( self.limitParents.gobj )
self.imagesChanged(self.includeImages.gobj) self.imagesChanged( self.includeImages.gobj )
#------------------------------------------------------------------------ #------------------------------------------------------------------------

View File

@ -450,17 +450,17 @@ class RelGraphOptions(MenuReportOptions):
incid.set_help(_("Include individual and family IDs.")) incid.set_help(_("Include individual and family IDs."))
menu.add_option(category_name,"incid", incid) menu.add_option(category_name,"incid", incid)
includeImages = BooleanOption( self.includeImages = BooleanOption(
_('Include thumbnail images of people'), False) _('Include thumbnail images of people'), False)
includeImages.set_help(_("Whether to include thumbnails of people.")) self.includeImages.set_help(_("Whether to include thumbnails of people."))
menu.add_option(category_name,"includeImages", includeImages) menu.add_option(category_name,"includeImages", self.includeImages)
imageOnTheSide = EnumeratedListOption(_("Thumbnail Location"), 0) self.imageOnTheSide = EnumeratedListOption(_("Thumbnail Location"), 0)
imageOnTheSide.add_item(0, _('Above the name')) self.imageOnTheSide.add_item(0, _('Above the name'))
imageOnTheSide.add_item(1, _('Beside the name')) self.imageOnTheSide.add_item(1, _('Beside the name'))
imageOnTheSide.set_help(_("Where the thumbnail image should appear " self.imageOnTheSide.set_help(_("Where the thumbnail image should appear "
"relative to the name")) "relative to the name"))
menu.add_option(category_name,"imageOnTheSide",imageOnTheSide) menu.add_option(category_name,"imageOnTheSide",self.imageOnTheSide)
################################ ################################
category_name = _("Graph Style") category_name = _("Graph Style")
@ -490,6 +490,16 @@ class RelGraphOptions(MenuReportOptions):
showfamily.set_help(_("Families will show up as ellipses, linked " showfamily.set_help(_("Families will show up as ellipses, linked "
"to parents and children.")) "to parents and children."))
menu.add_option(category_name,"showfamily", showfamily) menu.add_option(category_name,"showfamily", showfamily)
def imageChanged(self, button):
self.imageOnTheSide.gobj.set_sensitive(self.includeImages.gobj.get_active())
def post_init(self, dialog):
self.includeImages.gobj.connect('toggled', self.imageChanged)
self.imageChanged(self.includeImages.gobj)
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #