diff --git a/gramps/gui/plug/report/_docreportdialog.py b/gramps/gui/plug/report/_docreportdialog.py
index f50221d5b..f1adc6480 100644
--- a/gramps/gui/plug/report/_docreportdialog.py
+++ b/gramps/gui/plug/report/_docreportdialog.py
@@ -20,14 +20,16 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
+"""
+ base class for generating dialogs for docgen-derived reports
+"""
+
#-------------------------------------------------------------------------
#
# Python modules
#
#-------------------------------------------------------------------------
import os
-from gramps.gen.const import GRAMPS_LOCALE as glocale
-_ = glocale.translation.gettext
#-------------------------------------------------------------------------
#
@@ -41,10 +43,13 @@ from gi.repository import Gtk
# Gramps modules
#
#-------------------------------------------------------------------------
+from gramps.gen.const import GRAMPS_LOCALE as glocale
+_ = glocale.translation.gettext
from gramps.gen.config import config
from ._reportdialog import ReportDialog
from ._papermenu import PaperFrame
from ...pluginmanager import GuiPluginManager
+
PLUGMAN = GuiPluginManager.get_instance()
#-------------------------------------------------------------------------
@@ -64,15 +69,22 @@ class DocReportDialog(ReportDialog):
self.style_name = "default"
self.firstpage_added = False
- self.CSS = PLUGMAN.process_plugin_data('WEBSTUFF')
+ self.css = PLUGMAN.process_plugin_data('WEBSTUFF')
self.dbname = dbstate.db.get_dbname()
ReportDialog.__init__(self, dbstate, uistate, option_class,
- name, trans_name)
+ name, trans_name)
+
+ self.basedocname = None # keep pylint happy
+ self.css_filename = None
+ self.doc = None
+ self.doc_option_class = None
+ self.format = None
+ self.html_label = None
+ self.paper_label = None
# Allow for post processing of the format frame, since the
# show_all task calls events that may reset values
-
def init_interface(self):
ReportDialog.init_interface(self)
self.doc_type_changed(self.format_menu, preserve_tab=False)
@@ -125,12 +137,14 @@ class DocReportDialog(ReportDialog):
if self.firstpage_added:
self.notebook.remove_page(0)
if docgen_plugin.get_paper_used():
- self.paper_label = Gtk.Label(label='%s' % _("Paper Options"))
+ self.paper_label = Gtk.Label(
+ label='%s' % _("Paper Options"))
self.paper_label.set_use_markup(True)
self.notebook.insert_page(self.paper_frame, self.paper_label, 0)
self.paper_frame.show_all()
else:
- self.html_label = Gtk.Label(label='%s' % _("HTML Options"))
+ self.html_label = Gtk.Label(
+ label='%s' % _("HTML Options"))
self.html_label.set_use_markup(True)
self.notebook.insert_page(self.html_grid, self.html_label, 0)
self.html_grid.show_all()
@@ -167,14 +181,15 @@ class DocReportDialog(ReportDialog):
self.make_doc_menu(self.options.handler.get_format_name())
self.format_menu.connect('changed', self.doc_type_changed)
- label = Gtk.Label(label="%s:" % _("Output Format"))
+ label = Gtk.Label(label=_("%s:") % _("Output Format"))
label.set_halign(Gtk.Align.START)
self.grid.attach(label, 1, self.row, 1, 1)
self.format_menu.set_hexpand(True)
self.grid.attach(self.format_menu, 2, self.row, 2, 1)
self.row += 1
- self.open_with_app = Gtk.CheckButton(label=_("Open with default viewer"))
+ self.open_with_app = Gtk.CheckButton(
+ label=_("Open with default viewer"))
self.open_with_app.set_active(
config.get('interface.open-with-default-viewer'))
self.grid.attach(self.open_with_app, 2, self.row, 2, 1)
@@ -197,12 +212,13 @@ class DocReportDialog(ReportDialog):
self.target_fileentry.set_filename(spath)
def setup_report_options_frame(self):
- 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_margins(),
- self.options.handler.get_custom_paper_size()
- )
+ """ Set up the html/paper frame of the dialog """
+ 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_margins(),
+ self.options.handler.get_custom_paper_size())
self.setup_html_frame()
ReportDialog.setup_report_options_frame(self)
@@ -216,23 +232,24 @@ class DocReportDialog(ReportDialog):
self.html_grid.set_row_spacing(6)
self.html_grid.set_border_width(6)
- label = Gtk.Label(label="%s:" % _("CSS file"))
+ label = Gtk.Label(label=_("%s:") % _("CSS file"))
label.set_halign(Gtk.Align.START)
self.html_grid.attach(label, 1, 1, 1, 1)
self.css_combo = Gtk.ComboBoxText()
self.css_combo.set_hexpand(True)
- css_filename = self.options.handler.get_css_filename()
+ self.css_filename = self.options.handler.get_css_filename()
active_index = 0
index = 0
- for (name, id) in sorted([(self.CSS[key]["translation"], self.CSS[key]["id"])
- for key in self.CSS]):
- if self.CSS[id]["user"]:
- self.css_combo.append_text(self.CSS[id]["translation"])
+ for (name, _id) in sorted([(self.css[key]["translation"],
+ self.css[key]["id"])
+ for key in self.css]):
+ if self.css[_id]["user"]:
+ self.css_combo.append_text(self.css[_id]["translation"])
# Associate this index number with CSS too:
- self.CSS[index] = self.CSS[id]
- if css_filename == self.CSS[id]["filename"]:
+ self.css[index] = self.css[_id]
+ if self.css_filename == self.css[_id]["filename"]:
active_index = index
index += 1
@@ -254,7 +271,11 @@ class DocReportDialog(ReportDialog):
displayed on the screen. The subclass will know whether this
entry was enabled. This is for simplicity of programming."""
- self.css_filename = self.CSS[self.css_combo.get_active()]["filename"]
+ active = self.css_combo.get_active()
+ if active == -1: # legal for "no active item" (see 7585, 8189, 9461)
+ active = self.style_name
+ if self.css:
+ self.css_filename = self.css[active]["filename"]
self.options.handler.set_css_filename(self.css_filename)
def on_ok_clicked(self, obj):
@@ -271,11 +292,16 @@ class DocReportDialog(ReportDialog):
self.parse_style_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_orientation(self.paper_frame.get_orientation())
- 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.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_orientation(
+ self.paper_frame.get_orientation())
+ 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()
diff --git a/gramps/gui/plug/report/_graphvizreportdialog.py b/gramps/gui/plug/report/_graphvizreportdialog.py
index d949ee45a..78f3a9357 100644
--- a/gramps/gui/plug/report/_graphvizreportdialog.py
+++ b/gramps/gui/plug/report/_graphvizreportdialog.py
@@ -23,14 +23,14 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
+""" a ReportDialog customized for Graphviz-based reports """
+
#------------------------------------------------------------------------
#
# python modules
#
#------------------------------------------------------------------------
import os
-from gramps.gen.const import GRAMPS_LOCALE as glocale
-_ = glocale.translation.gettext
#-------------------------------------------------------------------------------
#
@@ -45,6 +45,8 @@ from gi.repository import GObject
# Gramps modules
#
#-------------------------------------------------------------------------------
+from gramps.gen.const import GRAMPS_LOCALE as glocale
+_ = glocale.translation.gettext
from gramps.gen.config import config
from gramps.gen.plug.report import CATEGORY_GRAPHVIZ
from ._reportdialog import ReportDialog
@@ -59,11 +61,12 @@ from gramps.gen.plug.menu import Menu
#-------------------------------------------------------------------------------
class GraphvizFormatComboBox(Gtk.ComboBox):
"""
- Format combo box class for Graphviz report.
+ Combo box class for Graphviz report format choices.
"""
def set(self, active=None):
- self.store = Gtk.ListStore(GObject.TYPE_STRING)
- self.set_model(self.store)
+ """ initialize the Graphviz choices """
+ store = Gtk.ListStore(GObject.TYPE_STRING)
+ self.set_model(store)
cell = Gtk.CellRendererText()
self.pack_start(cell, True)
self.add_attribute(cell, 'text', 0)
@@ -72,34 +75,26 @@ class GraphvizFormatComboBox(Gtk.ComboBox):
active_index = 0
for item in graphdoc.FORMATS:
name = item["descr"]
- self.store.append(row=[name])
+ store.append(row=[name])
if item['type'] == active:
active_index = index
index += 1
self.set_active(active_index)
def get_label(self):
+ """ get the format description """
return graphdoc.FORMATS[self.get_active()]["descr"]
def get_reference(self):
+ """ get the format class """
return graphdoc.FORMATS[self.get_active()]["class"]
- def get_paper(self):
- return 1
-
- def get_styles(self):
- return 0
-
def get_ext(self):
+ """ get the format extension """
return '.%s' % graphdoc.FORMATS[self.get_active()]['ext']
- def get_oformat_str(self): # the report's output-format type
- return graphdoc.FORMATS[self.get_active()]["type"]
-
- def is_file_output(self):
- return True
-
def get_clname(self):
+ """ get the report's output format type"""
return graphdoc.FORMATS[self.get_active()]["type"]
#-----------------------------------------------------------------------
@@ -108,10 +103,11 @@ class GraphvizFormatComboBox(Gtk.ComboBox):
#
#-----------------------------------------------------------------------
class GraphvizReportDialog(ReportDialog):
- """A class of ReportDialog customized for graphviz based reports."""
+ """A class of ReportDialog customized for Graphviz-based reports."""
+
def __init__(self, dbstate, uistate, opt, name, translated_name):
"""Initialize a dialog to request that the user select options
- for a graphviz report. See the ReportDialog class for
+ for a Graphviz report. See the ReportDialog class for
more information."""
self.category = CATEGORY_GRAPHVIZ
self.__gvoptions = graphdoc.GVOptions()
@@ -119,11 +115,15 @@ class GraphvizReportDialog(ReportDialog):
ReportDialog.__init__(self, dbstate, uistate, opt,
name, translated_name)
+ self.doc = None # keep pylint happy
+ self.format = None
+ self.paper_label = None
+
def init_options(self, option_class):
try:
if issubclass(option_class, object): # Old-style class
self.options = option_class(self.raw_name,
- self.dbstate.get_database())
+ self.dbstate.get_database())
except TypeError:
self.options = option_class
@@ -147,7 +147,7 @@ class GraphvizReportDialog(ReportDialog):
self.format_menu = GraphvizFormatComboBox()
self.format_menu.set(self.options.handler.get_format_name())
self.format_menu.connect('changed', self.doc_type_changed)
- label = Gtk.Label(label="%s:" % _("Output Format"))
+ label = Gtk.Label(label=_("%s:") % _("Output Format"))
label.set_halign(Gtk.Align.START)
self.grid.attach(label, 1, self.row, 1, 1)
self.format_menu.set_hexpand(True)
@@ -181,12 +181,11 @@ class GraphvizReportDialog(ReportDialog):
self.paper_label.set_use_markup(True)
handler = self.options.handler
self.paper_frame = PaperFrame(
- handler.get_paper_metric(),
- handler.get_paper_name(),
- handler.get_orientation(),
- handler.get_margins(),
- handler.get_custom_paper_size(),
- )
+ handler.get_paper_metric(),
+ handler.get_paper_name(),
+ handler.get_orientation(),
+ handler.get_margins(),
+ handler.get_custom_paper_size())
self.notebook.insert_page(self.paper_frame, self.paper_label, 0)
self.paper_frame.show_all()
@@ -213,7 +212,7 @@ class GraphvizReportDialog(ReportDialog):
fname = spath
self.target_fileentry.set_filename(fname)
- output_format_str = obj.get_oformat_str()
+ output_format_str = obj.get_clname()
if output_format_str in ['gvpdf', 'gspdf', 'ps']:
# Always use 72 DPI for PostScript and PDF files.
self.__gvoptions.dpi.set_value(72)
@@ -254,12 +253,15 @@ class GraphvizReportDialog(ReportDialog):
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_orientation(self.paper_frame.get_orientation())
- self.options.handler.set_margins(self.paper_frame.get_paper_margins())
+ self.paper_frame.get_paper_metric())
+ 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_margins(
+ self.paper_frame.get_paper_margins())
self.options.handler.set_custom_paper_size(
- self.paper_frame.get_custom_paper_size())
+ self.paper_frame.get_custom_paper_size())
# Create the output document.
self.make_document()