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()