diff --git a/po/POTFILES.in b/po/POTFILES.in index 460362767..b7ca1c64d 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -392,6 +392,7 @@ src/PluginUtils/_Tool.py src/gen/utils/dbutils.py src/gen/utils/progressmon.py src/gen/plug/__init__.py +src/gen/plug/_docgen.py src/gen/plug/_export.py src/gen/plug/_import.py src/gen/plug/_manager.py @@ -418,11 +419,9 @@ src/gen/plug/menu/_text.py # ReportBase package -src/ReportBase/_BookFormatComboBox.py src/ReportBase/_CommandLineReport.py src/ReportBase/_Constants.py src/ReportBase/_DocReportDialog.py -src/ReportBase/_DrawFormatComboBox.py src/ReportBase/_DrawReportDialog.py src/ReportBase/_Endnotes.py src/ReportBase/_GraphvizReportDialog.py @@ -437,7 +436,6 @@ src/ReportBase/_ReportUtils.py src/ReportBase/_StyleComboBox.py src/ReportBase/_StyleEditor.py src/ReportBase/_TemplateParser.py -src/ReportBase/_TextFormatComboBox.py src/ReportBase/_TextReportDialog.py # gen diff --git a/src/Config/_GrampsConfigKeys.py b/src/Config/_GrampsConfigKeys.py index b8ed7aae8..b5a77a89b 100644 --- a/src/Config/_GrampsConfigKeys.py +++ b/src/Config/_GrampsConfigKeys.py @@ -136,8 +136,6 @@ IPREFIX = ('preferences', 'iprefix', 2) OPREFIX = ('preferences', 'oprefix', 2) PPREFIX = ('preferences', 'pprefix', 2) SPREFIX = ('preferences', 'sprefix', 2) -GOUTPUT_PREFERENCE = ('preferences', 'goutput-preference', 2) -OUTPUT_PREFERENCE = ('preferences', 'output-preference', 2) PAPER_METRIC = ('preferences', 'paper-metric', 1) PAPER_PREFERENCE = ('preferences', 'paper-preference', 2) RECENT_FILE = ('paths', 'recent-file', 2) @@ -285,9 +283,7 @@ default_value = { IPREFIX : 'I%04d', OPREFIX : 'O%04d', PPREFIX : 'P%04d', - SPREFIX : 'S%04d', - GOUTPUT_PREFERENCE : 'No default format', - OUTPUT_PREFERENCE : 'No default format', + SPREFIX : 'S%04d', PAPER_METRIC : 0, PAPER_PREFERENCE : 'Letter', RECENT_FILE : '', diff --git a/src/ReportBase/Makefile.am b/src/ReportBase/Makefile.am index 762ee899d..ea7a61e41 100644 --- a/src/ReportBase/Makefile.am +++ b/src/ReportBase/Makefile.am @@ -5,11 +5,9 @@ pkgdatadir = $(datadir)/@PACKAGE@/ReportBase pkgdata_PYTHON = \ __init__.py\ _Bibliography.py\ - _BookFormatComboBox.py\ _CommandLineReport.py\ _Constants.py\ _DocReportDialog.py\ - _DrawFormatComboBox.py\ _DrawReportDialog.py\ _Endnotes.py\ _FileEntry.py\ @@ -23,7 +21,6 @@ pkgdata_PYTHON = \ _StyleComboBox.py\ _StyleEditor.py\ _TemplateParser.py\ - _TextFormatComboBox.py\ _TextReportDialog.py\ _WebReportDialog.py diff --git a/src/ReportBase/_BookFormatComboBox.py b/src/ReportBase/_BookFormatComboBox.py deleted file mode 100644 index ec1a9558d..000000000 --- a/src/ReportBase/_BookFormatComboBox.py +++ /dev/null @@ -1,92 +0,0 @@ -# -# Gramps - a GTK+/GNOME based genealogy program -# -# Copyright (C) 2001-2006 Donald N. Allingham -# Copyright (C) 2008 Brian G. Matherly -# -# 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 -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# - -# $Id:_BookFormatComboBox.py 9912 2008-01-22 09:17:46Z acraphae $ - -#------------------------------------------------------------------------- -# -# GTK libraries -# -#------------------------------------------------------------------------- -import gtk -import gobject - -#------------------------------------------------------------------------- -# -# GRAMPS classes -# -#------------------------------------------------------------------------- -import Config -import PluginUtils -import gen - -#------------------------------------------------------------------------- -# -# get_text_doc_menu -# -#------------------------------------------------------------------------- -class BookFormatComboBox(gtk.ComboBox): - - def __init__(self): - pmgr = gen.plug.PluginManager.get_instance() - self.__book_doc_list = pmgr.get_book_doc_list() - self.__book_doc_list.sort() - gtk.ComboBox.__init__(self) - - def set(self, callback, obj=None, active=None): - self.store = gtk.ListStore(gobject.TYPE_STRING) - self.set_model(self.store) - cell = gtk.CellRendererText() - self.pack_start(cell, True) - self.add_attribute(cell, 'text', 0) - - out_pref = Config.get(Config.OUTPUT_PREFERENCE) - index = 0 - active_index = 0 - self.data = [] - for item in self.__book_doc_list: - self.data.append(item) - name = item[0] - self.store.append(row=[name]) - if item[5] == active: - active_index = index - elif not active and name == out_pref: - active_index = index - index += 1 - self.set_active(active_index) - - def get_reference(self): - return self.data[self.get_active()][1] - - def get_label(self): - return self.data[self.get_active()][0] - - def get_paper(self): - return self.data[self.get_active()][2] - - def get_ext(self): - return self.data[self.get_active()][4] - - def is_file_output(self): - return len(self.get_ext()) > 0 - - def get_clname(self): - return self.data[self.get_active()][5] diff --git a/src/ReportBase/_CommandLineReport.py b/src/ReportBase/_CommandLineReport.py index 8afc4920c..63ece411a 100644 --- a/src/ReportBase/_CommandLineReport.py +++ b/src/ReportBase/_CommandLineReport.py @@ -108,6 +108,21 @@ class CommandLineReport: def __init__(self, database, name, category, option_class, options_str_dict, noopt=False): + + pmgr = gen.plug.PluginManager.get_instance() + self.__textdoc_plugins = [] + self.__drawdoc_plugins = [] + self.__bookdoc_plugins = [] + for plugin in pmgr.get_docgen_plugins(): + if plugin.get_text_support() and plugin.get_extension(): + self.__textdoc_plugins.append(plugin) + if plugin.get_draw_support() and plugin.get_extension(): + self.__drawdoc_plugins.append(plugin) + if plugin.get_text_support() and \ + plugin.get_draw_support() and \ + plugin.get_extension(): + self.__bookdoc_plugins.append(plugin) + self.database = database self.category = category self.format = None @@ -125,11 +140,6 @@ class CommandLineReport: """ Initialize the options that are hard-coded into the report system. """ - pmgr = gen.plug.PluginManager.get_instance() - _textdoc_list = pmgr.get_text_doc_list() - _drawdoc_list = pmgr.get_draw_doc_list() - _bookdoc_list = pmgr.get_book_doc_list() - self.options_dict = { 'of' : self.option_class.handler.module_name, 'off' : self.option_class.handler.get_format_name(), @@ -142,7 +152,7 @@ class CommandLineReport: self.options_help = { 'of' : ["=filename", "Output file name. MANDATORY", ""], - 'off' : ["=format", "Output file format.", ""], + 'off' : ["=format", "Output file format.", []], 'style' : ["=name", "Style name.", ""], 'papers' : ["=name", "Paper size name.", ""], 'papero' : ["=num", "Paper orientation number.", ""], @@ -156,14 +166,17 @@ class CommandLineReport: "whatever_name") if self.category == CATEGORY_TEXT: - self.options_help['off'][2] = \ - [ item[6] for item in _textdoc_list ] + for plugin in self.__textdoc_plugins: + self.options_help['off'][2].append( + plugin.get_extension() + "\t" + plugin.get_description() ) elif self.category == CATEGORY_DRAW: - self.options_help['off'][2] = \ - [ item[6] for item in _drawdoc_list ] + for plugin in self.__drawdoc_plugins: + self.options_help['off'][2].append( + plugin.get_extension() + "\t" + plugin.get_description() ) elif self.category == CATEGORY_BOOK: - self.options_help['off'][2] = \ - [ item[6] for item in _bookdoc_list ] + for plugin in self.__bookdoc_plugins: + self.options_help['off'][2].append( + plugin.get_extension() + "\t" + plugin.get_description() ) else: self.options_help['off'][2] = "NA" @@ -284,29 +297,27 @@ class CommandLineReport: self.option_class.handler.output = self.options_dict['of'] - pmgr = gen.plug.PluginManager.get_instance() - if self.category == CATEGORY_TEXT: - for item in pmgr.get_text_doc_list(): - if item[6] == self.options_dict['off']: - self.format = item[1] + for plugin in self.__textdoc_plugins: + if plugin.get_extension() == self.options_dict['off']: + self.format = plugin.get_basedoc() if self.format is None: # Pick the first one as the default. - self.format = pmgr.get_text_doc_list()[0][1] + self.format = self.__textdoc_plugins[0].get_basedoc() elif self.category == CATEGORY_DRAW: - for item in pmgr.get_draw_doc_list(): - if item[6] == self.options_dict['off']: - self.format = item[1] + for plugin in self.__drawdoc_plugins: + if plugin.get_extension() == self.options_dict['off']: + self.format = plugin.get_basedoc() if self.format is None: # Pick the first one as the default. - self.format = pmgr.get_draw_doc_list()[0][1] + self.format = self.__drawdoc_plugins[0].get_basedoc() elif self.category == CATEGORY_BOOK: - for item in pmgr.get_book_doc_list(): - if item[6] == self.options_dict['off']: - self.format = item[1] + for plugin in self.__bookdoc_plugins: + if plugin.get_extension() == self.options_dict['off']: + self.format = plugin.get_basedoc() if self.format is None: # Pick the first one as the default. - self.format = pmgr.get_book_doc_list()[0][1] + self.format = self.__bookdoc_plugins[0].get_basedoc() else: self.format = None diff --git a/src/ReportBase/_DocReportDialog.py b/src/ReportBase/_DocReportDialog.py index ecddf6fc8..63dd1f021 100644 --- a/src/ReportBase/_DocReportDialog.py +++ b/src/ReportBase/_DocReportDialog.py @@ -104,7 +104,8 @@ class DocReportDialog(ReportDialog): file format. For example, a HTML document doesn't need any paper size/orientation options, but it does need a template file. Those chances are made here.""" - if obj.is_file_output(): + docgen_plugin = obj.get_active_plugin() + if docgen_plugin.get_extension(): self.open_with_app.set_sensitive (True) else: self.open_with_app.set_sensitive (False) @@ -114,7 +115,7 @@ class DocReportDialog(ReportDialog): if self.page_html_added: self.notebook.remove_page(0) - if obj.get_paper() == 1: + if docgen_plugin.get_paper_used(): self.paper_label = gtk.Label('%s'%_("Paper Options")) self.paper_label.set_use_markup(True) self.notebook.insert_page(self.paper_frame,self.paper_label,0) @@ -125,15 +126,12 @@ class DocReportDialog(ReportDialog): self.notebook.insert_page(self.html_table,self.html_label,0) self.html_table.show_all() - if obj.is_file_output(): + ext_val = docgen_plugin.get_extension() + if ext_val: fname = self.target_fileentry.get_full_path(0) (spath, ext) = os.path.splitext(fname) - - ext_val = obj.get_ext() - if ext_val: - fname = spath + ext_val - else: - fname = spath + + fname = spath + "." + ext_val self.target_fileentry.set_filename(fname) self.target_fileentry.set_sensitive(True) else: @@ -142,8 +140,8 @@ class DocReportDialog(ReportDialog): # Does this report format use styles? if self.style_button: - self.style_button.set_sensitive(obj.get_styles()) - self.style_menu.set_sensitive(obj.get_styles()) + self.style_button.set_sensitive(docgen_plugin.get_style_support()) + self.style_menu.set_sensitive(docgen_plugin.get_style_support()) self.page_html_added = True def setup_format_frame(self): @@ -165,13 +163,13 @@ class DocReportDialog(ReportDialog): yoptions=gtk.SHRINK) self.row += 1 - ext = self.format_menu.get_ext() + ext = self.format_menu.get_active_plugin().get_extension() if ext is None: ext = "" else: spath = self.get_default_directory() base = self.get_default_basename() - spath = os.path.normpath("%s/%s%s" % (spath, base, ext)) + spath = os.path.normpath("%s/%s.%s" % (spath, base, ext)) self.target_fileentry.set_filename(spath) def setup_report_options_frame(self): @@ -253,8 +251,9 @@ class DocReportDialog(ReportDialog): def parse_format_frame(self): """Parse the format frame of the dialog. Save the user selected output format for later use.""" - self.format = self.format_menu.get_reference() - format_name = self.format_menu.get_clname() + docgen_plugin = self.format_menu.get_active_plugin() + self.format = docgen_plugin.get_basedoc() + format_name = docgen_plugin.get_extension() self.options.handler.set_format_name(format_name) def parse_html_frame(self): diff --git a/src/ReportBase/_DrawFormatComboBox.py b/src/ReportBase/_DrawFormatComboBox.py deleted file mode 100644 index 949f0f9a7..000000000 --- a/src/ReportBase/_DrawFormatComboBox.py +++ /dev/null @@ -1,85 +0,0 @@ -# -# Gramps - a GTK+/GNOME based genealogy program -# -# Copyright (C) 2001-2006 Donald N. Allingham -# Copyright (C) 2008 Brian G. Matherly -# -# 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 -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# - -# $Id:_DrawFormatComboBox.py 9912 2008-01-22 09:17:46Z acraphae $ - -import gtk -import gobject -import Config -import gen - -#------------------------------------------------------------------------- -# -# get_text_doc_menu -# -#------------------------------------------------------------------------- -class DrawFormatComboBox(gtk.ComboBox): - - def __init__(self): - pmgr = gen.plug.PluginManager.get_instance() - self.__drawdoc_list = pmgr.get_draw_doc_list() - self.__drawdoc_list.sort() - gtk.ComboBox.__init__(self) - - def set(self,tables,callback, obj=None,active=None): - self.store = gtk.ListStore(gobject.TYPE_STRING) - self.set_model(self.store) - cell = gtk.CellRendererText() - self.pack_start(cell,True) - self.add_attribute(cell,'text',0) - - out_pref = Config.get(Config.OUTPUT_PREFERENCE) - index = 0 - active_index = 0 - for item in self.__drawdoc_list: - if tables and item[2] == 0: - continue - name = item[0] - self.store.append(row=[name]) - #if callback: - # menuitem.connect("activate",callback) - if item[5] == active: - active_index = index - elif not active and name == out_pref: - active_index = index - index = index + 1 - self.set_active(active_index) - - def get_reference(self): - return self.__drawdoc_list[self.get_active()][1] - - def get_label(self): - return self.__drawdoc_list[self.get_active()][0] - - def get_paper(self): - return self.__drawdoc_list[self.get_active()][2] - - def get_styles(self): - return self.__drawdoc_list[self.get_active()][3] - - def get_ext(self): - return self.__drawdoc_list[self.get_active()][4] - - def is_file_output(self): - return len(self.get_ext()) > 0 - - def get_clname(self): - return self.__drawdoc_list[self.get_active()][5] diff --git a/src/ReportBase/_DrawReportDialog.py b/src/ReportBase/_DrawReportDialog.py index b9ba0805d..23b9322c0 100644 --- a/src/ReportBase/_DrawReportDialog.py +++ b/src/ReportBase/_DrawReportDialog.py @@ -20,32 +20,88 @@ # $Id$ +#------------------------------------------------------------------------- +# +# GTK modules +# +#------------------------------------------------------------------------- +import gtk +import gobject + +#------------------------------------------------------------------------- +# +# GRAMPS modules +# +#------------------------------------------------------------------------- from _Constants import CATEGORY_DRAW from _DocReportDialog import DocReportDialog -from _DrawFormatComboBox import DrawFormatComboBox +from gen.plug import PluginManager + +#------------------------------------------------------------------------- +# +# _DrawFormatComboBox +# +#------------------------------------------------------------------------- +class _DrawFormatComboBox(gtk.ComboBox): + """ + This class is a combo box that allows the selection of a docgen plugin + from all drawdoc plugins. + """ + def __init__(self, active): + + gtk.ComboBox.__init__(self) + + pmgr = PluginManager.get_instance() + self.__drawdoc_plugins = [] + for plugin in pmgr.get_docgen_plugins(): + if plugin.get_draw_support(): + self.__drawdoc_plugins.append(plugin) + + self.store = gtk.ListStore(gobject.TYPE_STRING) + self.set_model(self.store) + cell = gtk.CellRendererText() + self.pack_start(cell, True) + self.add_attribute(cell, 'text', 0) + + index = 0 + active_index = 0 + for plugin in self.__drawdoc_plugins: + name = plugin.get_name() + self.store.append(row=[name]) + if plugin.get_extension() == active: + active_index = index + index = index + 1 + self.set_active(active_index) + + def get_active_plugin(self): + """ + Get the plugin represented by the currently active selection. + """ + return self.__drawdoc_plugins[self.get_active()] #----------------------------------------------------------------------- # -# Drawing reports +# DrawReportDialog # #----------------------------------------------------------------------- class DrawReportDialog(DocReportDialog): - """A class of ReportDialog customized for drawing based reports.""" + """ + A class of ReportDialog customized for drawing based reports. + """ def __init__(self, dbstate, uistate, opt, name, translated_name): - """Initialize a dialog to request that the user select options + """ + Initialize a dialog to request that the user select options for a basic drawing report. See the ReportDialog class for - more information.""" + more information. + """ + self.format_menu = None self.category = CATEGORY_DRAW DocReportDialog.__init__(self, dbstate, uistate, opt, name, translated_name) - #------------------------------------------------------------------------ - # - # Functions related to selecting/changing the current file format. - # - #------------------------------------------------------------------------ def make_doc_menu(self,active=None): - """Build a menu of document types that are appropriate for - this drawing report.""" - self.format_menu = DrawFormatComboBox() - self.format_menu.set(False,self.doc_type_changed, None, active) + """ + Build a menu of document types that are appropriate for + this drawing report. + """ + self.format_menu = _DrawFormatComboBox( active ) diff --git a/src/ReportBase/_GraphvizReportDialog.py b/src/ReportBase/_GraphvizReportDialog.py index 10a8e564d..9db082050 100644 --- a/src/ReportBase/_GraphvizReportDialog.py +++ b/src/ReportBase/_GraphvizReportDialog.py @@ -860,7 +860,6 @@ class GraphvizFormatComboBox(gtk.ComboBox): self.pack_start(cell, True) self.add_attribute(cell, 'text', 0) - out_pref = Config.get(Config.OUTPUT_PREFERENCE) index = 0 active_index = 0 for item in _FORMATS: @@ -868,8 +867,6 @@ class GraphvizFormatComboBox(gtk.ComboBox): self.store.append(row=[name]) if item['type'] == active: active_index = index - elif not active and name == out_pref: - active_index = index index = index + 1 self.set_active(active_index) diff --git a/src/ReportBase/_TextFormatComboBox.py b/src/ReportBase/_TextFormatComboBox.py deleted file mode 100644 index 9fc929085..000000000 --- a/src/ReportBase/_TextFormatComboBox.py +++ /dev/null @@ -1,81 +0,0 @@ -# -# Gramps - a GTK+/GNOME based genealogy program -# -# Copyright (C) 2001-2006 Donald N. Allingham -# Copyright (C) 2008 Brian G. Matherly -# -# 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 -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# - -# $Id:_TextFormatComboBox.py 9912 2008-01-22 09:17:46Z acraphae $ - -import gtk -import gobject -import Config -import gen - -#------------------------------------------------------------------------- -# -# get_text_doc_menu -# -#------------------------------------------------------------------------- -class TextFormatComboBox(gtk.ComboBox): - - def __init__(self): - pmgr = gen.plug.PluginManager.get_instance() - self.__text_doc_list = pmgr.get_text_doc_list() - self.__text_doc_list.sort() - gtk.ComboBox.__init__(self) - - def set(self, callback, obj=None, active=None): - self.store = gtk.ListStore(gobject.TYPE_STRING) - self.set_model(self.store) - cell = gtk.CellRendererText() - self.pack_start(cell, True) - self.add_attribute(cell, 'text', 0) - - out_pref = Config.get(Config.OUTPUT_PREFERENCE) - index = 0 - active_index = 0 - for item in self.__text_doc_list: - name = item[0] - self.store.append(row=[name]) - if item[5] == active: - active_index = index - elif not active and name == out_pref: - active_index = index - index = index + 1 - self.set_active(active_index) - - def get_label(self): - return self.__text_doc_list[self.get_active()][0] - - def get_reference(self): - return self.__text_doc_list[self.get_active()][1] - - def get_paper(self): - return self.__text_doc_list[self.get_active()][2] - - def get_styles(self): - return self.__text_doc_list[self.get_active()][3] - - def get_ext(self): - return self.__text_doc_list[self.get_active()][4] - - def is_file_output(self): - return len(self.get_ext()) > 0 - - def get_clname(self): - return self.__text_doc_list[self.get_active()][5] diff --git a/src/ReportBase/_TextReportDialog.py b/src/ReportBase/_TextReportDialog.py index bb27724b4..46cb86c61 100644 --- a/src/ReportBase/_TextReportDialog.py +++ b/src/ReportBase/_TextReportDialog.py @@ -2,6 +2,7 @@ # Gramps - a GTK+/GNOME based genealogy program # # Copyright (C) 2001-2006 Donald N. Allingham +# Copyright (C) 2008-2009 Brian G. Matherly # # 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 @@ -20,34 +21,88 @@ # $Id$ +#------------------------------------------------------------------------- +# +# GTK modules +# +#------------------------------------------------------------------------- +import gtk +import gobject + +#------------------------------------------------------------------------- +# +# GRAMPS modules +# +#------------------------------------------------------------------------- +from gen.plug import PluginManager from _Constants import CATEGORY_TEXT from _DocReportDialog import DocReportDialog -from _TextFormatComboBox import TextFormatComboBox + +#------------------------------------------------------------------------- +# +# _TextFormatComboBox +# +#------------------------------------------------------------------------- +class _TextFormatComboBox(gtk.ComboBox): + """ + This class is a combo box that allows the selection of a docgen plugin + from all textdoc plugins. + """ + def __init__(self, active): + + gtk.ComboBox.__init__(self) + + pmgr = PluginManager.get_instance() + self.__textdoc_plugins = [] + for plugin in pmgr.get_docgen_plugins(): + if plugin.get_text_support(): + self.__textdoc_plugins.append(plugin) + + self.store = gtk.ListStore(gobject.TYPE_STRING) + self.set_model(self.store) + cell = gtk.CellRendererText() + self.pack_start(cell, True) + self.add_attribute(cell, 'text', 0) + + index = 0 + active_index = 0 + for plugin in self.__textdoc_plugins: + name = plugin.get_name() + self.store.append(row=[name]) + if plugin.get_extension() == active: + active_index = index + index = index + 1 + self.set_active(active_index) + + def get_active_plugin(self): + """ + Get the plugin represented by the currently active selection. + """ + return self.__textdoc_plugins[self.get_active()] #----------------------------------------------------------------------- # -# Textual reports +# TextReportDialog # #----------------------------------------------------------------------- class TextReportDialog(DocReportDialog): - """A class of ReportDialog customized for text based reports.""" - + """ + A class of ReportDialog customized for text based reports. + """ def __init__(self, dbstate, uistate, options, name, translated_name): - """Initialize a dialog to request that the user select options + """ + Initialize a dialog to request that the user select options for a basic text report. See the ReportDialog class for more - information.""" + information. + """ + self.format_menu = None self.category = CATEGORY_TEXT DocReportDialog.__init__(self, dbstate, uistate, options, name, translated_name) - #------------------------------------------------------------------------ - # - # Functions related to selecting/changing the current file format. - # - #------------------------------------------------------------------------ - def make_doc_menu(self,active=None): - """Build a menu of document types that are appropriate for - this text report. This menu will be generated based upon - whether the document requires table support, etc.""" - self.format_menu = TextFormatComboBox() - self.format_menu.set(self.doc_type_changed, None, active) + def make_doc_menu(self, active=None): + """ + Build a menu of document types that are appropriate for + this text report. + """ + self.format_menu = _TextFormatComboBox( active ) diff --git a/src/gen/plug/Makefile.am b/src/gen/plug/Makefile.am index 93beb1f10..3f9f29fd1 100644 --- a/src/gen/plug/Makefile.am +++ b/src/gen/plug/Makefile.am @@ -10,6 +10,7 @@ pkgdatadir = $(datadir)/@PACKAGE@/gen/plug pkgdata_PYTHON = \ __init__.py \ + _docgen.py \ _export.py \ _import.py \ _manager.py \ diff --git a/src/gen/plug/__init__.py b/src/gen/plug/__init__.py index c1479ec8f..f529c80e6 100644 --- a/src/gen/plug/__init__.py +++ b/src/gen/plug/__init__.py @@ -25,5 +25,7 @@ from _plugin import Plugin from _manager import PluginManager from _import import ImportPlugin from _export import ExportPlugin +from _docgen import DocGenPlugin -__all__ = [ "menu", Plugin, PluginManager, ImportPlugin, ExportPlugin ] +__all__ = [ "menu", Plugin, PluginManager, ImportPlugin, ExportPlugin, \ + DocGenPlugin ] diff --git a/src/gen/plug/_docgen.py b/src/gen/plug/_docgen.py new file mode 100644 index 000000000..3ff3b6107 --- /dev/null +++ b/src/gen/plug/_docgen.py @@ -0,0 +1,109 @@ +# +# Gramps - a GTK+/GNOME based genealogy program +# +# Copyright (C) 2008 Brian G. Matherly +# +# 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 +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# $Id: $ + +""" +This module provides the Plugin class for document generator plugins. +""" + +from gen.plug import Plugin +import BaseDoc + +class DocGenPlugin(Plugin): + """ + This class represents a plugin for generating documents from Gramps + """ + def __init__(self, name, description, basedoc, paper, style, extension): + """ + @param name: A friendly name to call this plugin. + Example: "Plain Text" + @type name: string + @param description: A short description of the plugin. + Example: "This plugin will generate text documents in plain text." + @type description: string + @param basedoc: A class that implements the BaseDoc.BaseDoc + interface. + @type basedoc: BaseDoc.BaseDoc + @param paper: Indicates whether the plugin uses paper or not. + True = use paper; False = do not use paper + @type paper: bool + @param style: Indicates whether the plugin uses styles or not. + True = use styles; False = do not use styles + @type style: bool + @param extension: The extension for the output file. + Example: "txt" + @type extension: str + @return: nothing + """ + Plugin.__init__(self, name, description, basedoc.__module__) + self.__basedoc = basedoc + self.__paper = paper + self.__style = style + self.__extension = extension + + def get_basedoc(self): + """ + Get the BaseDoc class for this plugin. + + @return: the BaseDoc.BaseDoc class passed into __init__ + """ + return self.__basedoc + + def get_paper_used(self): + """ + Get the paper flag for this plugin. + + @return: bool - True = use paper; False = do not use paper + """ + return self.__paper + + def get_style_support(self): + """ + Get the style flag for this plugin. + + @return: bool - True = use styles; False = do not use styles + """ + return self.__style + + def get_extension(self): + """ + Get the file extension for the output file. + + @return: str + """ + return self.__extension + + def get_text_support(self): + """ + Check if the plugin supports the BaseDoc.TextDoc interface. + + @return: bool: True if TextDoc is supported; False if TextDoc is not + supported. + """ + return bool(issubclass(self.__basedoc, BaseDoc.TextDoc)) + + def get_draw_support(self): + """ + Check if the plugin supports the BaseDoc.DrawDoc interface. + + @return: bool: True if DrawDoc is supported; False if DrawDoc is not + supported. + """ + return bool(issubclass(self.__basedoc, BaseDoc.DrawDoc)) \ No newline at end of file diff --git a/src/gen/plug/_manager.py b/src/gen/plug/_manager.py index a19cf2c71..0a7af1666 100644 --- a/src/gen/plug/_manager.py +++ b/src/gen/plug/_manager.py @@ -95,13 +95,11 @@ class PluginManager(gen.utils.Callback): self.__tool_list = [] self.__import_plugins = [] self.__export_plugins = [] + self.__docgen_plugins = [] self.__general_plugins = [] self.__mapservice_list = [] self.__attempt_list = [] self.__loaddir_list = [] - self.__textdoc_list = [] - self.__bookdoc_list = [] - self.__drawdoc_list = [] self.__failmsg_list = [] self.__bkitems_list = [] self.__cl_list = [] @@ -169,6 +167,7 @@ class PluginManager(gen.utils.Callback): # TODO: do other lists need to be reset here, too? self.__import_plugins[:] = [] self.__export_plugins[:] = [] + self.__docgen_plugins[:] = [] for plugin in self.__success_list: filename = plugin[0] @@ -250,18 +249,6 @@ class PluginManager(gen.utils.Callback): """ Return the list of book plugins. """ return self.__bkitems_list - def get_text_doc_list(self): - """ Return the list of text document generator plugins. """ - return self.__textdoc_list - - def get_draw_doc_list(self): - """ Return the list of graphical document generator plugins. """ - return self.__drawdoc_list - - def get_book_doc_list(self): - """ Return the list of book document generator plugins. """ - return self.__bookdoc_list - def get_cl_list(self): """ Return the list of command line report plugins. """ return self.__cl_list @@ -288,6 +275,8 @@ class PluginManager(gen.utils.Callback): self.__import_plugins.append(plugin) elif isinstance(plugin, gen.plug.ExportPlugin): self.__export_plugins.append(plugin) + elif isinstance(plugin, gen.plug.DocGenPlugin): + self.__docgen_plugins.append(plugin) elif isinstance(plugin, gen.plug.Plugin): self.__general_plugins.append(plugin) @@ -308,7 +297,15 @@ class PluginManager(gen.utils.Callback): @return: [gen.plug.ExportPlugin] (a list of ExportPlugin instances) """ return self.__export_plugins - + + def get_docgen_plugins(self): + """ + Get the list of docgen plugins. + + @return: [gen.plug.DocGenPlugin] (a list of DocGenPlugin instances) + """ + return self.__docgen_plugins + def register_tool(self, name, category, tool_class, options_class, modes, translated_name, status=_("Unknown"), description=_UNAVAILABLE, author_name=_("Unknown"), @@ -461,59 +458,6 @@ class PluginManager(gen.utils.Callback): self.__cl_list.append( (name, category, report_class, options_class, translated_name, unsupported, require_active) ) - def register_text_doc(self, name, classref, paper, style, ext, clname=''): - """ - Register a text document generator. - """ - del_index = -1 - for i in range(0, len(self.__textdoc_list)): - val = self.__textdoc_list[i] - if val[0] == name: - del_index = i - if del_index != -1: - del self.__textdoc_list[del_index] - - if not clname: - clname = ext[1:] - - self.__textdoc_list.append( (name, classref, paper, style, - ext, clname) ) - self.__mod2text[classref.__module__] = name - - def register_book_doc(self, name, classref, paper, style, ext, clname=''): - """ - Register a text document generator. - """ - del_index = -1 - for i in range(0, len(self.__bookdoc_list)): - val = self.__bookdoc_list[i] - if val[0] == name: - del_index = i - if del_index != -1: - del self.__bookdoc_list[del_index] - - if not clname: - clname = ext[1:] - self.__bookdoc_list.append( (name, classref, paper, style, ext, - clname) ) - - def register_draw_doc(self, name, classref, paper, style, ext, clname=''): - """ - Register a drawing document generator. - """ - del_index = -1 - for i in range(0, len(self.__drawdoc_list)): - val = self.__drawdoc_list[i] - if val[0] == name: - del_index = i - if del_index != -1: - del self.__drawdoc_list[del_index] - if not clname: - clname = ext[1:] - self.__drawdoc_list.append( (name, classref, paper, style, ext, - clname) ) - self.__mod2text[classref.__module__] = name - def register_quick_report(self, name, category, run_func, translated_name, status=_("Unknown"), description=_UNAVAILABLE, author_name=_("Unknown"), @@ -595,6 +539,8 @@ class PluginManager(gen.utils.Callback): if item.get_module_name() not in failed_module_names ][:] self.__import_plugins[:] = [ item for item in self.__import_plugins if item.get_module_name() not in failed_module_names ][:] + self.__docgen_plugins[:] = [ item for item in self.__docgen_plugins + if item.get_module_name() not in failed_module_names ][:] self.__tool_list[:] = [ item for item in self.__tool_list if item[0].__module__ not in failed_module_names ][:] self.__cli_tool_list[:] = [ item for item in self.__cli_tool_list @@ -608,12 +554,6 @@ class PluginManager(gen.utils.Callback): if item[2].__module__ not in failed_module_names ][:] self.__cl_list[:] = [ item for item in self.__cl_list if item[2].__module__ not in failed_module_names ][:] - self.__textdoc_list[:] = [ item for item in self.__textdoc_list - if item[1].__module__ not in failed_module_names ][:] - self.__bookdoc_list[:] = [ item for item in self.__bookdoc_list - if item[1].__module__ not in failed_module_names ][:] - self.__drawdoc_list[:] = [ item for item in self.__drawdoc_list - if item[1].__module__ not in failed_module_names ][:] def register_relcalc(self, relclass, languages): """ diff --git a/src/plugins/BookReport.py b/src/plugins/BookReport.py index c97adaa2c..c25abd527 100644 --- a/src/plugins/BookReport.py +++ b/src/plugins/BookReport.py @@ -58,6 +58,7 @@ except: # #------------------------------------------------------------------------- import gtk +import gobject from gtk import glade from gtk import RESPONSE_OK @@ -78,7 +79,6 @@ import ManagedWindow # Import from specific modules in ReportBase from ReportBase import CATEGORY_BOOK, book_categories -from ReportBase._BookFormatComboBox import BookFormatComboBox from ReportBase._ReportDialog import ReportDialog from ReportBase._DocReportDialog import DocReportDialog from ReportBase._CommandLineReport import CommandLineReport @@ -1039,6 +1039,45 @@ class BookItemDialog(ReportDialog): def parse_target_frame(self): """Target frame is not used.""" return 1 + +#------------------------------------------------------------------------- +# +# _BookFormatComboBox +# +#------------------------------------------------------------------------- +class _BookFormatComboBox(gtk.ComboBox): + + def __init__(self, active): + + gtk.ComboBox.__init__(self) + + pmgr = PluginManager.get_instance() + self.__bookdoc_plugins = [] + for plugin in pmgr.get_docgen_plugins(): + if plugin.get_text_support() and plugin.get_draw_support(): + self.__bookdoc_plugins.append(plugin) + + self.store = gtk.ListStore(gobject.TYPE_STRING) + self.set_model(self.store) + cell = gtk.CellRendererText() + self.pack_start(cell, True) + self.add_attribute(cell, 'text', 0) + + index = 0 + active_index = 0 + for plugin in self.__bookdoc_plugins: + name = plugin.get_name() + self.store.append(row=[name]) + if plugin.get_extension() == active: + active_index = index + index = index + 1 + self.set_active(active_index) + + def get_active_plugin(self): + """ + Get the plugin represented by the currently active selection. + """ + return self.__bookdoc_plugins[self.get_active()] #------------------------------------------------------------------------ # @@ -1053,6 +1092,7 @@ class BookReportDialog(DocReportDialog): """ def __init__(self, dbstate, uistate, book, options): + self.format_menu = None self.options = options self.page_html_added = False DocReportDialog.__init__(self, dbstate, uistate, options, @@ -1117,8 +1157,7 @@ class BookReportDialog(DocReportDialog): """Build a menu of document types that are appropriate for this text report. This menu will be generated based upon whether the document requires table support, etc.""" - self.format_menu = BookFormatComboBox() - self.format_menu.set(self.doc_type_changed, None, active) + self.format_menu = _BookFormatComboBox( active ) def make_document(self): """Create a document of the type requested by the user.""" diff --git a/src/plugins/docgen/AsciiDoc.py b/src/plugins/docgen/AsciiDoc.py index dfcce4a65..517318721 100644 --- a/src/plugins/docgen/AsciiDoc.py +++ b/src/plugins/docgen/AsciiDoc.py @@ -2,8 +2,8 @@ # Gramps - a GTK+/GNOME based genealogy program # # Copyright (C) 2000-2006 Donald N. Allingham -# Copyright (C) 2007-2008 Brian G. Matherly -# Copyright (C) 2009 Benny Malengier +# Copyright (C) 2007-2009 Brian G. Matherly +# Copyright (C) 2009 Benny Malengier # # 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 @@ -35,7 +35,7 @@ from gettext import gettext as _ # #------------------------------------------------------------------------ import BaseDoc -from gen.plug import PluginManager +from gen.plug import PluginManager, DocGenPlugin import Errors import Utils @@ -365,10 +365,21 @@ class AsciiDoc(BaseDoc.BaseDoc,BaseDoc.TextDoc): #------------------------------------------------------------------------ # -# Register the document generator with the GRAMPS plugin system +# register_plugin # #------------------------------------------------------------------------ -print_label = None -pmgr = PluginManager.get_instance() -pmgr.register_text_doc(_("Plain Text"), AsciiDoc, 1, 1, ".txt") - +def register_plugin(): + """ + Register the document generator with the GRAMPS plugin system. + """ + pmgr = PluginManager.get_instance() + plugin = DocGenPlugin(name = _("Plain Text"), + description = _("Generates documents in plain text " + "format (.txt)."), + basedoc = AsciiDoc, + paper = True, + style = True, + extension = "txt" ) + pmgr.register_plugin(plugin) + +register_plugin() diff --git a/src/plugins/docgen/GtkPrint.py b/src/plugins/docgen/GtkPrint.py index bf5c3e61f..aa349d13b 100644 --- a/src/plugins/docgen/GtkPrint.py +++ b/src/plugins/docgen/GtkPrint.py @@ -1,8 +1,8 @@ # # Gramps - a GTK+/GNOME based genealogy program # -# Copyright (C) 2007 Zsolt Foldvari -# Copyright (C) 2008 Brian G. Matherly +# Copyright (C) 2007 Zsolt Foldvari +# Copyright (C) 2008-2009 Brian G. Matherly # # 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 @@ -44,7 +44,7 @@ import os #------------------------------------------------------------------------ import BaseDoc from CairoDoc import CairoDoc -from gen.plug import PluginManager +from gen.plug import PluginManager, DocGenPlugin import Errors #------------------------------------------------------------------------ @@ -613,13 +613,24 @@ class GtkPrint(CairoDoc): context.set_cairo_context(cr, PRINTER_DPI, PRINTER_DPI) return True + +#------------------------------------------------------------------------ +# +# register_plugin +# +#------------------------------------------------------------------------ +def register_plugin(): + """ + Register the document generator with the GRAMPS plugin system + """ + pmgr = PluginManager.get_instance() + plugin = DocGenPlugin(name = _('Print...'), + description = _("Generates documents and prints them " + "directly."), + basedoc = GtkPrint, + paper = True, + style = True, + extension = "" ) + pmgr.register_plugin(plugin) -#------------------------------------------------------------------------ -# -# Register the document generator with the GRAMPS plugin system -# -#------------------------------------------------------------------------ -pmgr = PluginManager.get_instance() -pmgr.register_text_doc(_('Print...'), GtkPrint, 1, 1, "") -pmgr.register_draw_doc(_('Print...'), GtkPrint, 1, 1, "") -pmgr.register_book_doc(_('Print...'), GtkPrint, 1, 1, "") +register_plugin() diff --git a/src/plugins/docgen/HtmlDoc.py b/src/plugins/docgen/HtmlDoc.py index dbb96f2a1..662f7e29b 100644 --- a/src/plugins/docgen/HtmlDoc.py +++ b/src/plugins/docgen/HtmlDoc.py @@ -2,8 +2,8 @@ # Gramps - a GTK+/GNOME based genealogy program # # Copyright (C) 2000-2006 Donald N. Allingham -# Copyright (C) 2007-2008 Brian G. Matherly -# Copyright (C) 2009 Benny Malengier +# Copyright (C) 2007-2009 Brian G. Matherly +# Copyright (C) 2009 Benny Malengier # # 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 @@ -37,7 +37,7 @@ from gettext import gettext as _ # GRAMPS modules # #------------------------------------------------------------------------ -from gen.plug import PluginManager +from gen.plug import PluginManager, DocGenPlugin import ImgManip import tarfile import const @@ -472,8 +472,21 @@ class HtmlDoc(BaseDoc.BaseDoc,BaseDoc.TextDoc): #------------------------------------------------------------------------ # -# Register the document generator with the GRAMPS plugin system +# register_plugin # #------------------------------------------------------------------------ -pmgr = PluginManager.get_instance() -pmgr.register_text_doc(_('HTML'), HtmlDoc, 0, 1, ".html") +def register_plugin(): + """ + Register the document generator with the GRAMPS plugin system. + """ + pmgr = PluginManager.get_instance() + plugin = DocGenPlugin(name = _('HTML'), + description = _("Generates documents in HTML " + "format."), + basedoc = HtmlDoc, + paper = False, + style = True, + extension = "html" ) + pmgr.register_plugin(plugin) + +register_plugin() diff --git a/src/plugins/docgen/LaTeXDoc.py b/src/plugins/docgen/LaTeXDoc.py index 4e9cab1ab..50c1ad053 100644 --- a/src/plugins/docgen/LaTeXDoc.py +++ b/src/plugins/docgen/LaTeXDoc.py @@ -2,7 +2,7 @@ # Gramps - a GTK+/GNOME based genealogy program # # Copyright (C) 2000-2006 Donald N. Allingham -# Copyright (C) 2007-2008 Brian G. Matherly +# Copyright (C) 2007-2009 Brian G. Matherly # Copyright (C) 2008 Raphael Ackermann # 2002-2003 Donald A. Peterson # 2003 Alex Roitman @@ -40,7 +40,7 @@ from gettext import gettext as _ # #------------------------------------------------------------------------ import BaseDoc -from gen.plug import PluginManager +from gen.plug import PluginManager, DocGenPlugin import ImgManip import Errors import Utils @@ -637,11 +637,23 @@ class LaTeXDoc(BaseDoc.BaseDoc,BaseDoc.TextDoc): self.f.write('\\end{verbatim}') self.end_paragraph() - #------------------------------------------------------------------------ # -# Register plugins +# register_plugin # #------------------------------------------------------------------------ -pmgr = PluginManager.get_instance() -pmgr.register_text_doc(_('LaTeX'), LaTeXDoc, 1, 0, ".tex") +def register_plugin(): + """ + Register the document generator with the GRAMPS plugin system. + """ + pmgr = PluginManager.get_instance() + plugin = DocGenPlugin(name = _('LaTeX'), + description = _("Generates documents in LaTeX " + "format."), + basedoc = LaTeXDoc, + paper = True, + style = False, + extension = "tex" ) + pmgr.register_plugin(plugin) + +register_plugin() diff --git a/src/plugins/docgen/ODFDoc.py b/src/plugins/docgen/ODFDoc.py index e7f2947f7..5297e01d4 100644 --- a/src/plugins/docgen/ODFDoc.py +++ b/src/plugins/docgen/ODFDoc.py @@ -3,7 +3,7 @@ # # Copyright (C) 2000-2006 Donald N. Allingham # Copyright (C) 2005-2006 Serge Noiraud -# Copyright (C) 2007-2008 Brian G. Matherly +# Copyright (C) 2007-2009 Brian G. Matherly # # 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 @@ -46,7 +46,7 @@ from xml.sax.saxutils import escape #------------------------------------------------------------------------- import BaseDoc import const -from gen.plug import PluginManager +from gen.plug import PluginManager, DocGenPlugin from ReportBase import ReportUtils import ImgManip import FontScale @@ -1138,12 +1138,23 @@ class ODFDoc(BaseDoc.BaseDoc, BaseDoc.TextDoc, BaseDoc.DrawDoc): self.cntnt.write('') self.cntnt.write('\n') -#-------------------------------------------------------------------------- +#------------------------------------------------------------------------ # -# Register plugins +# register_plugin # -#-------------------------------------------------------------------------- -pmgr = PluginManager.get_instance() -pmgr.register_text_doc(_('Open Document Text'), ODFDoc, 1, 1, ".odt") -pmgr.register_book_doc(_("Open Document Text"), ODFDoc, 1, 1, ".odt") -pmgr.register_draw_doc(_("Open Document Text"), ODFDoc, 1, 1, ".odt") +#------------------------------------------------------------------------ +def register_plugin(): + """ + Register the document generator with the GRAMPS plugin system. + """ + pmgr = PluginManager.get_instance() + plugin = DocGenPlugin(name = _('Open Document Text'), + description = _("Generates documents in Open " + "Document Text format (.odt)."), + basedoc = ODFDoc, + paper = True, + style = True, + extension = "odt" ) + pmgr.register_plugin(plugin) + +register_plugin() diff --git a/src/plugins/docgen/PSDrawDoc.py b/src/plugins/docgen/PSDrawDoc.py index b7a713f18..4a7fa7996 100644 --- a/src/plugins/docgen/PSDrawDoc.py +++ b/src/plugins/docgen/PSDrawDoc.py @@ -2,7 +2,7 @@ # Gramps - a GTK+/GNOME based genealogy program # # Copyright (C) 2000-2006 Donald N. Allingham -# Copyright (C) 2007-2008 Brian G. Matherly +# Copyright (C) 2007-2009 Brian G. Matherly # # 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 @@ -32,7 +32,7 @@ from gettext import gettext as _ #Gramps modules #------------------------------------------------------------------------- from ReportBase import ReportUtils, run_print_dialog, get_print_dialog_app -from gen.plug import PluginManager +from gen.plug import PluginManager, DocGenPlugin import BaseDoc import Errors @@ -343,5 +343,23 @@ class PSDrawDoc(BaseDoc.BaseDoc,BaseDoc.DrawDoc): self.f.write("(%s) show\n" % lines[i]) self.f.write('grestore\n') -pmgr = PluginManager.get_instance() -pmgr.register_draw_doc(_("PostScript"), PSDrawDoc, 1, 1, ".ps") +#------------------------------------------------------------------------ +# +# register_plugin +# +#------------------------------------------------------------------------ +def register_plugin(): + """ + Register the document generator with the GRAMPS plugin system. + """ + pmgr = PluginManager.get_instance() + plugin = DocGenPlugin(name = _("PostScript"), + description = _("Generates documents in postscript " + "format (.ps)."), + basedoc = PSDrawDoc, + paper = True, + style = True, + extension = "ps" ) + pmgr.register_plugin(plugin) + +register_plugin() diff --git a/src/plugins/docgen/PdfDoc.py b/src/plugins/docgen/PdfDoc.py index 8b9b266da..0d81d4b86 100644 --- a/src/plugins/docgen/PdfDoc.py +++ b/src/plugins/docgen/PdfDoc.py @@ -37,7 +37,7 @@ from gettext import gettext as _ # #------------------------------------------------------------------------ from CairoDoc import CairoDoc -from gen.plug import PluginManager +from gen.plug import PluginManager, DocGenPlugin import Utils #------------------------------------------------------------------------ @@ -126,19 +126,24 @@ class PdfDoc(CairoDoc): # load the result into an external viewer if self.open_req: Utils.open_file_with_default_application(self._filename) - -#------------------------------------------------------------------------ -# -# Functions -# -#------------------------------------------------------------------------ -def register_docgen(): - """Register the docgen with the GRAMPS plugin system. - """ - doc_name = _('PDF document') - pmgr = PluginManager.get_instance() - pmgr.register_text_doc(doc_name, PdfDoc, 1, 1, ".pdf") - pmgr.register_draw_doc(doc_name, PdfDoc, 1, 1, ".pdf") - pmgr.register_book_doc(doc_name, PdfDoc, 1, 1, ".pdf") -register_docgen() \ No newline at end of file +#------------------------------------------------------------------------ +# +# register_plugin +# +#------------------------------------------------------------------------ +def register_plugin(): + """ + Register the document generator with the GRAMPS plugin system. + """ + pmgr = PluginManager.get_instance() + plugin = DocGenPlugin(name = _('PDF document'), + description = _("Generates documents in PDF " + "format (.pdf)."), + basedoc = PdfDoc, + paper = True, + style = True, + extension = "pdf" ) + pmgr.register_plugin(plugin) + +register_plugin() diff --git a/src/plugins/docgen/RTFDoc.py b/src/plugins/docgen/RTFDoc.py index e105965b2..85d31733a 100644 --- a/src/plugins/docgen/RTFDoc.py +++ b/src/plugins/docgen/RTFDoc.py @@ -2,7 +2,7 @@ # Gramps - a GTK+/GNOME based genealogy program # # Copyright (C) 2000-2006 Donald N. Allingham -# Copyright (C) 2007-2008 Brian G. Matherly +# Copyright (C) 2007-2009 Brian G. Matherly # Copyright (C) 2009 Gary Burton # # This program is free software; you can redistribute it and/or modify @@ -35,7 +35,7 @@ from gettext import gettext as _ # #------------------------------------------------------------------------ import BaseDoc -from gen.plug import PluginManager +from gen.plug import PluginManager, DocGenPlugin import ImgManip import Errors import Utils @@ -434,8 +434,21 @@ class RTFDoc(BaseDoc.BaseDoc,BaseDoc.TextDoc): #------------------------------------------------------------------------ # -# Register the document generator with the GRAMPS plugin system +# register_plugin # #------------------------------------------------------------------------ -pmgr = PluginManager.get_instance() -pmgr.register_text_doc(_('RTF document'), RTFDoc, 1, 1, ".rtf") +def register_plugin(): + """ + Register the document generator with the GRAMPS plugin system. + """ + pmgr = PluginManager.get_instance() + plugin = DocGenPlugin(name = _('RTF document'), + description = _("Generates documents in Rich Text " + "format (.rtf)."), + basedoc = RTFDoc, + paper = True, + style = True, + extension = "rtf" ) + pmgr.register_plugin(plugin) + +register_plugin() diff --git a/src/plugins/docgen/SvgDrawDoc.py b/src/plugins/docgen/SvgDrawDoc.py index aa1c725cc..4ec4b8939 100644 --- a/src/plugins/docgen/SvgDrawDoc.py +++ b/src/plugins/docgen/SvgDrawDoc.py @@ -2,7 +2,7 @@ # Gramps - a GTK+/GNOME based genealogy program # # Copyright (C) 2000-2006 Donald N. Allingham -# Copyright (C) 2007-2008 Brian G. Matherly +# Copyright (C) 2007-2009 Brian G. Matherly # # 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 @@ -34,7 +34,7 @@ import StringIO # Gramps modules # #------------------------------------------------------------------------- -from gen.plug import PluginManager +from gen.plug import PluginManager, DocGenPlugin import BaseDoc import Errors @@ -257,11 +257,23 @@ class SvgDrawDoc(BaseDoc.BaseDoc,BaseDoc.DrawDoc): def units(val): return (val[0]*35.433, val[1]*35.433) -#------------------------------------------------------------------------- +#------------------------------------------------------------------------ # -# Register document generator +# register_plugin # -#------------------------------------------------------------------------- -pmgr = PluginManager.get_instance() -pmgr.register_draw_doc(_("SVG (Scalable Vector Graphics)"), SvgDrawDoc, 1, 1, - ".svg") +#------------------------------------------------------------------------ +def register_plugin(): + """ + Register the document generator with the GRAMPS plugin system. + """ + pmgr = PluginManager.get_instance() + plugin = DocGenPlugin(name = _("SVG (Scalable Vector Graphics)"), + description = _("Generates documents in Scalable " + "Vector Graphics format (.svg)."), + basedoc = SvgDrawDoc, + paper = True, + style = True, + extension = "svg" ) + pmgr.register_plugin(plugin) + +register_plugin()