def __init__(self, dbstate, uistate, track): self.uistate = uistate self.dbstate = dbstate self._show_builtins = None self._show_hidden = None self.options = PluginManagerOptions('pluginmanager') #tool.Tool.__init__(self, dbstate, options_class, 'pluginmanager') self.options.load_previous_values() self.options_dict = self.options.handler.options_dict self.window = Gtk.Dialog(title=TITLE) ManagedWindow.__init__(self, uistate, track, self.__class__) self.set_window(self.window, None, TITLE, None) self._pmgr = GuiPluginManager.get_instance() self._preg = PluginRegister.get_instance() #obtain hidden plugins from the pluginmanager self.hidden = self._pmgr.get_hidden_plugin_ids() self.setup_configs('interface.pluginstatus', 750, 400) help_btn = self.window.add_button( # pylint: disable=no-member _("_Help"), Gtk.ResponseType.HELP) update_btn = self.window.add_button( # pylint: disable=no-member _("Check for updated addons now"), UPDATE_RES) btn_box = help_btn.get_parent() btn_box.set_child_non_homogeneous(update_btn, True) if __debug__: # Only show the "Reload" button when in debug mode # (without -O on the command line) reload_btn = self.window.add_button( # pylint: disable=no-member _("Reload"), RELOAD_RES) btn_box.set_child_non_homogeneous(reload_btn, True) self.window.add_button(_('_Close'), Gtk.ResponseType.CLOSE) labeltitle, widget = self.registered_plugins_panel(None) self.window.vbox.pack_start(widget, True, True, 0) sep = Gtk.Separator.new(Gtk.Orientation.HORIZONTAL) self.window.vbox.pack_start(sep, False, False, 3) self.restart_needed = False self.window.connect('response', self.done) self.show() self.__populate_reg_list()
def __init__(self, dbstate, uistate, track): self.uistate = uistate self.dbstate = dbstate self._show_builtins = None self._show_hidden = None self.options = PluginManagerOptions('pluginmanager') #tool.Tool.__init__(self, dbstate, options_class, 'pluginmanager') self.options.load_previous_values() self.options_dict = self.options.handler.options_dict self.window = Gtk.Dialog(title=TITLE) ManagedWindow.__init__(self, uistate, track, self.__class__) self.set_window(self.window, None, TITLE, None) self._pmgr = GuiPluginManager.get_instance() self._preg = PluginRegister.get_instance() # obtain hidden plugins from the pluginmanager self.hidden = self._pmgr.get_hidden_plugin_ids() self.setup_configs('interface.pluginstatus', 750, 400) help_btn = self.window.add_button( # pylint: disable=no-member _("_Help"), Gtk.ResponseType.HELP) self.btn_box = help_btn.get_parent() self.btn_box.set_child_non_homogeneous(help_btn, True) # filter input box self.filter_entry = Gtk.SearchEntry() self.filter_entry.set_tooltip_text( _("Enter search words to filter the addons.\n" "All the words must be present somewhere in the row or\n" "the addon filename to be included in the search.\n" "Word case and order is ignored.")) self.filter_entry.set_placeholder_text(_("Search...")) self.btn_box.pack_start(self.filter_entry, True, True, 0) #self.btn_box.set_child_non_homogeneous(self.filter_entry, True) self.filter_entry.connect('search-changed', self.filter_str_changed) update_btn = self.window.add_button( # pylint: disable=no-member _("Check for updated addons now"), UPDATE_RES) self.btn_box.set_child_non_homogeneous(update_btn, True) if __debug__: # Only show the "Reload" button when in debug mode # (without -O on the command line) reload_btn = self.window.add_button( # pylint: disable=no-member _("Reload"), RELOAD_RES) self.btn_box.set_child_non_homogeneous(reload_btn, True) _w0, _wx_ = reload_btn.get_preferred_width() else: _w0 = 0 cls_btn = self.window.add_button(_('_Close'), Gtk.ResponseType.CLOSE) self.btn_box.set_child_non_homogeneous(cls_btn, True) _w1, dummy = help_btn.get_preferred_width() _w2, dummy = cls_btn.get_preferred_width() _w3, dummy = update_btn.get_preferred_width() #_wa, dummy = self.window.get_size() _we = 790 - _w0 - _w1 - _w2 - _w3 - 60 self.filter_entry.set_size_request(_we, -1) labeltitle, widget = self.registered_plugins_panel(None) self.window.vbox.pack_start(widget, True, True, 0) sep = Gtk.Separator.new(Gtk.Orientation.HORIZONTAL) self.window.vbox.pack_start(sep, False, False, 3) self.restart_needed = False self.window.connect('response', self.done) self.show() self.__populate_reg_list()
def __init__(self, dbstate, uistate, track=[]): self.dbstate = dbstate self.__uistate = uistate self.title = _("Plugin Manager") ManagedWindow.__init__(self, uistate, track, self.__class__) self.__pmgr = GuiPluginManager.get_instance() self.__preg = PluginRegister.get_instance() self.set_window( Gtk.Dialog("", uistate.window, Gtk.DialogFlags.DESTROY_WITH_PARENT, (Gtk.STOCK_CLOSE, Gtk.ResponseType.CLOSE)), None, self.title) self.window.set_size_request(750, 400) self.window.connect('response', self.close) notebook = Gtk.Notebook() #first page with all registered plugins vbox_reg = Gtk.VBox() scrolled_window_reg = Gtk.ScrolledWindow() self.list_reg = Gtk.TreeView() # model: plugintype, hidden, pluginname, plugindescr, pluginid self.model_reg = Gtk.ListStore(GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING) self.selection_reg = self.list_reg.get_selection() self.list_reg.set_model(self.model_reg) self.list_reg.set_rules_hint(True) self.list_reg.connect('button-press-event', self.button_press_reg) col0_reg = Gtk.TreeViewColumn(_('Type'), Gtk.CellRendererText(), text=0) col0_reg.set_sort_column_id(0) col0_reg.set_resizable(True) self.list_reg.append_column(col0_reg) col = Gtk.TreeViewColumn(_('Status'), Gtk.CellRendererText(), markup=1) col.set_sort_column_id(1) self.list_reg.append_column(col) col2_reg = Gtk.TreeViewColumn(_('Name'), Gtk.CellRendererText(), text=2) col2_reg.set_sort_column_id(2) col2_reg.set_resizable(True) self.list_reg.append_column(col2_reg) col = Gtk.TreeViewColumn(_('Description'), Gtk.CellRendererText(), text=3) col.set_sort_column_id(3) col.set_resizable(True) self.list_reg.append_column(col) self.list_reg.set_search_column(2) scrolled_window_reg.add(self.list_reg) vbox_reg.pack_start(scrolled_window_reg, True, True, 0) hbutbox = Gtk.HButtonBox() hbutbox.set_layout(Gtk.ButtonBoxStyle.SPREAD) self.__info_btn = Gtk.Button(_("Info")) hbutbox.add(self.__info_btn) self.__info_btn.connect('clicked', self.__info, self.list_reg, 4) # id_col self.__hide_btn = Gtk.Button(_("Hide/Unhide")) hbutbox.add(self.__hide_btn) self.__hide_btn.connect('clicked', self.__hide, self.list_reg, 4, 1) # list, id_col, hide_col if __debug__: self.__edit_btn = Gtk.Button(_("Edit")) hbutbox.add(self.__edit_btn) self.__edit_btn.connect('clicked', self.__edit, self.list_reg, 4) # id_col self.__load_btn = Gtk.Button(_("Load")) hbutbox.add(self.__load_btn) self.__load_btn.connect('clicked', self.__load, self.list_reg, 4) # id_col vbox_reg.pack_start(hbutbox, False, False, 0) notebook.append_page( vbox_reg, tab_label=Gtk.Label(label=_('Registered Plugins'))) #second page with loaded plugins vbox_loaded = Gtk.VBox() scrolled_window = Gtk.ScrolledWindow() self.list = Gtk.TreeView() self.model = Gtk.ListStore(GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING, object, GObject.TYPE_STRING, GObject.TYPE_STRING) self.selection = self.list.get_selection() self.list.set_model(self.model) self.list.set_rules_hint(True) self.list.connect('button-press-event', self.button_press) self.list.connect('cursor-changed', self.cursor_changed) col = Gtk.TreeViewColumn(_('Loaded'), Gtk.CellRendererText(), markup=0) col.set_sort_column_id(0) col.set_resizable(True) self.list.append_column(col) col1 = Gtk.TreeViewColumn(_('File'), Gtk.CellRendererText(), text=1) col1.set_sort_column_id(1) col1.set_resizable(True) self.list.append_column(col1) col = Gtk.TreeViewColumn(_('Status'), Gtk.CellRendererText(), markup=5) col.set_sort_column_id(5) self.list.append_column(col) col2 = Gtk.TreeViewColumn(_('Message'), Gtk.CellRendererText(), text=2) col2.set_sort_column_id(2) col2.set_resizable(True) self.list.append_column(col2) self.list.set_search_column(1) scrolled_window.add(self.list) vbox_loaded.pack_start(scrolled_window, True, True, 0) hbutbox = Gtk.HButtonBox() hbutbox.set_layout(Gtk.ButtonBoxStyle.SPREAD) self.__info_btn = Gtk.Button(_("Info")) hbutbox.add(self.__info_btn) self.__info_btn.connect('clicked', self.__info, self.list, 4) # id_col self.__hide_btn = Gtk.Button(_("Hide/Unhide")) hbutbox.add(self.__hide_btn) self.__hide_btn.connect('clicked', self.__hide, self.list, 4, 5) # list, id_col, hide_col if __debug__: self.__edit_btn = Gtk.Button(_("Edit")) hbutbox.add(self.__edit_btn) self.__edit_btn.connect('clicked', self.__edit, self.list, 4) # id_col self.__load_btn = Gtk.Button(_("Load")) self.__load_btn.set_sensitive(False) hbutbox.add(self.__load_btn) self.__load_btn.connect('clicked', self.__load, self.list, 4) # id_col vbox_loaded.pack_start(hbutbox, False, False, 5) notebook.append_page(vbox_loaded, tab_label=Gtk.Label(label=_('Loaded Plugins'))) #third page with method to install plugin install_page = Gtk.VBox() scrolled_window = Gtk.ScrolledWindow() self.addon_list = Gtk.TreeView() # model: help_name, name, ptype, image, desc, use, rating, contact, download, url self.addon_model = Gtk.ListStore( GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING) self.addon_list.set_model(self.addon_model) self.addon_list.set_rules_hint(True) #self.addon_list.connect('button-press-event', self.button_press) col = Gtk.TreeViewColumn(_('Addon Name'), Gtk.CellRendererText(), text=1) col.set_sort_column_id(1) self.addon_list.append_column(col) col = Gtk.TreeViewColumn(_('Type'), Gtk.CellRendererText(), text=2) col.set_sort_column_id(2) self.addon_list.append_column(col) col = Gtk.TreeViewColumn(_('Description'), Gtk.CellRendererText(), text=4) col.set_sort_column_id(4) self.addon_list.append_column(col) self.addon_list.connect('cursor-changed', self.button_press_addon) install_row = Gtk.HBox() install_row.pack_start(Gtk.Label(label=_("Path to Addon:")), False, True, 0) self.install_addon_path = Gtk.Entry() button = Gtk.Button() img = Gtk.Image() img.set_from_stock(Gtk.STOCK_OPEN, Gtk.IconSize.BUTTON) button.add(img) button.connect('clicked', self.__select_file) install_row.pack_start(self.install_addon_path, True, True, 0) install_row.pack_start(button, False, False, 0) scrolled_window.add(self.addon_list) install_page.pack_start(scrolled_window, True, True, 0) #add some spce under the scrollbar install_page.pack_start(Gtk.Label(label=''), False, False, 0) #path to addon path line install_page.pack_start(install_row, False, False, 0) hbutbox = Gtk.HButtonBox() hbutbox.set_layout(Gtk.ButtonBoxStyle.SPREAD) self.__add_btn = Gtk.Button(_("Install Addon")) hbutbox.add(self.__add_btn) self.__add_btn.connect('clicked', self.__get_addon_top) self.__add_all_btn = Gtk.Button(_("Install All Addons")) hbutbox.add(self.__add_all_btn) self.__add_all_btn.connect('clicked', self.__get_all_addons) self.__refresh_btn = Gtk.Button(_("Refresh Addon List")) hbutbox.add(self.__refresh_btn) self.__refresh_btn.connect('clicked', self.__refresh_addon_list) install_page.pack_start(hbutbox, False, True, 5) # notebook.append_page(install_page, # tab_label=Gtk.Label(label=_('Install Addons'))) #add the notebook to the window self.window.get_content_area().pack_start(notebook, True, True, 0) if __debug__: # Only show the "Reload" button when in debug mode # (without -O on the command line) self.__reload_btn = Gtk.Button(_("Reload")) self.window.action_area.add(self.__reload_btn) self.__reload_btn.connect('clicked', self.__reload) #obtain hidden plugins from the pluginmanager self.hidden = self.__pmgr.get_hidden_plugin_ids() self.window.show_all() self.__populate_lists() self.list_reg.columns_autosize()
def __init__(self, dbstate, uistate, track=[]): self.dbstate = dbstate self.__uistate = uistate self.title = _("Plugin Manager") ManagedWindow.__init__(self, uistate, track, self.__class__) self.__pmgr = GuiPluginManager.get_instance() self.__preg = PluginRegister.get_instance() self.set_window(Gtk.Dialog("", uistate.window, Gtk.DialogFlags.DESTROY_WITH_PARENT, (_('_Close'), Gtk.ResponseType.CLOSE)), None, self.title) self.window.set_size_request(750, 400) self.window.connect('response', self.close) notebook = Gtk.Notebook() #first page with all registered plugins vbox_reg = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) scrolled_window_reg = Gtk.ScrolledWindow() self.list_reg = Gtk.TreeView() # model: plugintype, hidden, pluginname, plugindescr, pluginid self.model_reg = Gtk.ListStore(GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING) self.selection_reg = self.list_reg.get_selection() self.list_reg.set_model(self.model_reg) self.list_reg.connect('button-press-event', self.button_press_reg) col0_reg = Gtk.TreeViewColumn(_('Type'), Gtk.CellRendererText(), text=0) col0_reg.set_sort_column_id(0) col0_reg.set_resizable(True) self.list_reg.append_column(col0_reg) col = Gtk.TreeViewColumn(_('Status'), Gtk.CellRendererText(), markup=1) col.set_sort_column_id(1) self.list_reg.append_column(col) col2_reg = Gtk.TreeViewColumn(_('Name'), Gtk.CellRendererText(), text=2) col2_reg.set_sort_column_id(2) col2_reg.set_resizable(True) self.list_reg.append_column(col2_reg) col = Gtk.TreeViewColumn(_('Description'), Gtk.CellRendererText(), text=3) col.set_sort_column_id(3) col.set_resizable(True) self.list_reg.append_column(col) self.list_reg.set_search_column(2) scrolled_window_reg.add(self.list_reg) vbox_reg.pack_start(scrolled_window_reg, True, True, 0) hbutbox = Gtk.ButtonBox() hbutbox.set_layout(Gtk.ButtonBoxStyle.SPREAD) self.__info_btn = Gtk.Button(label=_("Info")) hbutbox.add(self.__info_btn) self.__info_btn.connect('clicked', self.__info, self.list_reg, 4) # id_col self.__hide_btn = Gtk.Button(label=_("Hide/Unhide")) hbutbox.add(self.__hide_btn) self.__hide_btn.connect('clicked', self.__hide, self.list_reg, 4, 1) # list, id_col, hide_col if __debug__: self.__edit_btn = Gtk.Button(label=_("Edit")) hbutbox.add(self.__edit_btn) self.__edit_btn.connect('clicked', self.__edit, self.list_reg, 4) # id_col self.__load_btn = Gtk.Button(label=_("Load")) hbutbox.add(self.__load_btn) self.__load_btn.connect('clicked', self.__load, self.list_reg, 4) # id_col vbox_reg.pack_start(hbutbox, False, False, 0) notebook.append_page(vbox_reg, tab_label=Gtk.Label(label=_('Registered Plugins'))) #second page with loaded plugins vbox_loaded = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) scrolled_window = Gtk.ScrolledWindow() self.list = Gtk.TreeView() self.model = Gtk.ListStore(GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING, object, GObject.TYPE_STRING, GObject.TYPE_STRING) self.selection = self.list.get_selection() self.list.set_model(self.model) self.list.connect('button-press-event', self.button_press) self.list.connect('cursor-changed', self.cursor_changed) col = Gtk.TreeViewColumn(_('Loaded'), Gtk.CellRendererText(), markup=0) col.set_sort_column_id(0) col.set_resizable(True) self.list.append_column(col) col1 = Gtk.TreeViewColumn(_('File'), Gtk.CellRendererText(), text=1) col1.set_sort_column_id(1) col1.set_resizable(True) self.list.append_column(col1) col = Gtk.TreeViewColumn(_('Status'), Gtk.CellRendererText(), markup=5) col.set_sort_column_id(5) self.list.append_column(col) col2 = Gtk.TreeViewColumn(_('Message'), Gtk.CellRendererText(), text=2) col2.set_sort_column_id(2) col2.set_resizable(True) self.list.append_column(col2) self.list.set_search_column(1) scrolled_window.add(self.list) vbox_loaded.pack_start(scrolled_window, True, True, 0) hbutbox = Gtk.ButtonBox() hbutbox.set_layout(Gtk.ButtonBoxStyle.SPREAD) self.__info_btn = Gtk.Button(label=_("Info")) hbutbox.add(self.__info_btn) self.__info_btn.connect('clicked', self.__info, self.list, 4) # id_col self.__hide_btn = Gtk.Button(label=_("Hide/Unhide")) hbutbox.add(self.__hide_btn) self.__hide_btn.connect('clicked', self.__hide, self.list, 4, 5) # list, id_col, hide_col if __debug__: self.__edit_btn = Gtk.Button(label=_("Edit")) hbutbox.add(self.__edit_btn) self.__edit_btn.connect('clicked', self.__edit, self.list, 4) # id_col self.__load_btn = Gtk.Button(label=_("Load")) self.__load_btn.set_sensitive(False) hbutbox.add(self.__load_btn) self.__load_btn.connect('clicked', self.__load, self.list, 4) # id_col vbox_loaded.pack_start(hbutbox, False, False, 5) notebook.append_page(vbox_loaded, tab_label=Gtk.Label(label=_('Loaded Plugins'))) #third page with method to install plugin install_page = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) scrolled_window = Gtk.ScrolledWindow() self.addon_list = Gtk.TreeView() # model: help_name, name, ptype, image, desc, use, rating, contact, download, url self.addon_model = Gtk.ListStore(GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING) self.addon_list.set_model(self.addon_model) #self.addon_list.connect('button-press-event', self.button_press) col = Gtk.TreeViewColumn(_('Addon Name'), Gtk.CellRendererText(), text=1) col.set_sort_column_id(1) self.addon_list.append_column(col) col = Gtk.TreeViewColumn(_('Type'), Gtk.CellRendererText(), text=2) col.set_sort_column_id(2) self.addon_list.append_column(col) col = Gtk.TreeViewColumn(_('Description'), Gtk.CellRendererText(), text=4) col.set_sort_column_id(4) self.addon_list.append_column(col) self.addon_list.connect('cursor-changed', self.button_press_addon) install_row = Gtk.Box() install_row.pack_start(Gtk.Label(label=_("Path to Addon:")), False, True, 0) self.install_addon_path = Gtk.Entry() button = Gtk.Button() img = Gtk.Image() img.set_from_icon_name('document-open', Gtk.IconSize.BUTTON) button.add(img) button.connect('clicked', self.__select_file) install_row.pack_start(self.install_addon_path, True, True, 0) install_row.pack_start(button, False, False, 0) scrolled_window.add(self.addon_list) install_page.pack_start(scrolled_window, True, True, 0) #add some spce under the scrollbar install_page.pack_start(Gtk.Label(label=''), False, False, 0) #path to addon path line install_page.pack_start(install_row, False, False, 0) hbutbox = Gtk.ButtonBox() hbutbox.set_layout(Gtk.ButtonBoxStyle.SPREAD) self.__add_btn = Gtk.Button(label=_("Install Addon")) hbutbox.add(self.__add_btn) self.__add_btn.connect('clicked', self.__get_addon_top) self.__add_all_btn = Gtk.Button(label=_("Install All Addons")) hbutbox.add(self.__add_all_btn) self.__add_all_btn.connect('clicked', self.__get_all_addons) self.__refresh_btn = Gtk.Button(label=_("Refresh Addon List")) hbutbox.add(self.__refresh_btn) self.__refresh_btn.connect('clicked', self.__refresh_addon_list) install_page.pack_start(hbutbox, False, True, 5) # notebook.append_page(install_page, # tab_label=Gtk.Label(label=_('Install Addons'))) #add the notebook to the window self.window.get_content_area().pack_start(notebook, True, True, 0) if __debug__: # Only show the "Reload" button when in debug mode # (without -O on the command line) self.__reload_btn = Gtk.Button(label=_("Reload")) self.window.action_area.add(self.__reload_btn) self.__reload_btn.connect('clicked', self.__reload) #obtain hidden plugins from the pluginmanager self.hidden = self.__pmgr.get_hidden_plugin_ids() self.window.show_all() self.__populate_lists() self.list_reg.columns_autosize()
def build_report_set(): reports = [] ################################################################## # Load plugins ################################################################## dbstate = DbState() climanager = CLIManager(dbstate, setloader = True, user = None) climanager.do_reg_plugins(dbstate, uistate = None) gpr = PluginRegister.get_instance() PLUGMAN = BasePluginManager.get_instance() CSS = PLUGMAN.process_plugin_data('WEBSTUFF') ################################################################## # GRAMPS native plugins ################################################################## # GRPH_FMT = ['odt', 'ps', 'pdf', 'svg'] GRPH_FMT = ['pdf', 'svg'] # GRPH_FMT = ['svg'] GRPH_REP = [ { 'report': 'ancestor_chart', 'options': { 'scale_tree': 2, 'maxgen': 6, 'pid': 'I0006', }, }, { 'report': 'descend_chart', 'options': { 'scale_tree': 2, 'maxgen': 6, 'pid': 'I0104', }, }, { 'report': 'family_descend_chart', 'options': { 'scale_tree': 2, 'maxgen': 6, 'pid': 'I0104', }, }, { 'report': 'fan_chart', 'options': { 'scale_tree': 2, 'maxgen': 6, 'pid': 'I0006', }, }, { 'report': 'statistics_chart', 'options': { 'scale_tree': 2, 'maxgen': 6, }, }, { 'report': 'timeline', 'options': { 'scale_tree': 2, 'maxgen': 6, }, }, { 'report': 'calendar', 'options': { 'scale_tree': 2, 'maxgen': 6, }, }, { 'report': 'familylines_graph', 'options': { 'scale_tree': 2, 'maxgen': 6, 'gidlist': 'I0104 I0045', 'limitchildren': True, 'maxchildren': 20, }, }, { 'report': 'hourglass_graph', 'options': { 'scale_tree': 2, 'maxgen': 6, 'pid': 'I0044', 'maxascend': 2, 'maxdescend': 2, }, }, { 'report': 'rel_graph', 'options': { 'scale_tree': 2, 'maxgen': 6, 'pid': 'I0044', 'filter': 3, 'event_choice': 2, }, }, ] # TEXT_FMT = ['ps', 'pdf', 'html', 'odt', 'tex', 'rtf', 'txt'] TEXT_FMT = ['html', 'pdf', 'txt'] # TEXT_FMT = ['html', 'txt'] TEXT_REP = [ { 'report': 'ancestor_report', 'options': { 'maxgen': 6, 'pid': 'I0006', }, }, { 'report': 'descend_report', 'options': { 'pid': 'I0104', }, }, { 'report': 'det_ancestor_report', 'options': { 'pid': 'I0006', }, }, { 'report': 'det_descendant_report', 'options': { 'pid': 'I0104', }, }, { 'report': 'family_group', 'options': { 'family_id': 'F0017', }, }, { 'report': 'birthday_report', 'options': {}, }, { 'report': 'endofline_report', 'options': { 'pid': 'I0006', }, }, { 'report': 'indiv_complete', 'options': {}, }, { 'report': 'kinship_report', 'options': { 'pid': 'I0044', }, }, { 'report': 'tag_report', 'options': { 'tag': 'ToDo', }, }, { 'report': 'number_of_ancestors', 'options': { 'pid': 'I0006', }, }, { 'report': 'place_report', 'options': { 'places': 'P1678 P1679 P1680', }, }, { 'report': 'summary', 'options': {}, }, { 'report': 'records', 'options': {}, }, { 'report': 'notelinkreport', 'options': {}, }, ] # Single run with all native reports (except web) in all formats for (rep_list, formats) in [ (TEXT_REP, TEXT_FMT), (GRPH_REP, GRPH_FMT), ]: for rep_info in TEXT_REP: report = rep_info['report'] options = rep_info['options'] plugin = gpr.get_plugin(report) if not plugin: print('Unknown plugin: %s' % report) continue for fmt in TEXT_FMT: of = os.path.join(GRAMPS_REP_DIR, report + '.' + fmt) new_options = { 'name': report, 'off': fmt, 'of': of, # 'show': 'all', } new_options.update(options) reports.append({ 'title': '"%s" in format "%s"' % (plugin.name, fmt), 'name': plugin.name, 'result': of, 'type': 'Native', 'category': plugin.category, 'version': plugin.version, 'options': new_options, }) ################################################################## # GRAMPS native web reports ################################################################## full_options = { 'linkhome': True, 'showdeath': True, 'showpartner': True, 'showparents': True, 'showhalfsiblings': True, 'inc_families': True, 'inc_repository': True, 'inc_gendex': True, 'inc_addressbook': True, 'placemappages': True, 'familymappages': True, } for (i, (css, full)) in enumerate([ ['default', False], ['Mainz', True], ]): report = 'navwebpage' plugin = gpr.get_plugin(report) opts = { 'name': report, 'target': os.path.join(GRAMPS_REP_DIR, 'example_NAVWEB%i' % i), 'css': CSS[css]['id'], 'living': _INCLUDE_LIVING_VALUE, } if (full): opts.update(full_options) reports.append({ 'title': '"%s" report example %i' % (plugin.name, i), 'name': report, 'result': os.path.join(GRAMPS_REP_DIR, 'example_NAVWEB%i' % i, 'index.html'), 'type': 'Native', 'category': plugin.category, 'version': VERSION, 'options': opts, }) full_options = { 'alive': False, 'fullyear': True, 'makeoneday': True, 'link_to_narweb': True, } for (i, (css, full)) in enumerate([ ['default', False], ['Mainz', True], ]): report = 'WebCal' plugin = gpr.get_plugin(report) opts = { 'name': report, 'target': os.path.join(GRAMPS_REP_DIR, 'example_WebCal%i' % i), 'css': CSS[css]['id'], 'home_link': '../../example_NAVWEB%i/index.html' % i, 'prefix': '../../example_NAVWEB%i/' % i, } page = 'January.html' if (full): opts.update(full_options) page = 'fullyearlinked.html' reports.append({ 'title': '"%s" report example %i' % (plugin.name, i), 'name': report, 'result': os.path.join(GRAMPS_REP_DIR, 'example_WebCal%i' % i, str(Today().get_year()), page), 'type': 'Native', 'category': plugin.category, 'version': VERSION, 'options': opts, }) ################################################################## # GRAMPS addons reports ################################################################## addons=[] ########## AncestorFill for fmt in TEXT_FMT: of = os.path.join(ADDONS_REP_DIR, 'AncestorFill.' + fmt) addons.append({ 'title': '"%%s" in format "%s"' % fmt, 'result': of, 'i': 'AncestorFill', 'options': { 'off': fmt, 'of': of, }, }) ########## d3-ancestralcollapsibletree addons.append({ 'title': '"%s" report example', 'result': os.path.join(ADDONS_REP_DIR, 'd3-ancestralcollapsibletree', 'index.html'), 'i': 'd3-ancestralcollapsibletree', 'options': { 'dest_path': os.path.join(ADDONS_REP_DIR, 'd3-ancestralcollapsibletree'), 'dest_file': 'index.html', 'pid': 'I0006', 'maxgen': 6, }, }) ########## d3-ancestralfanchart addons.append({ 'title': '"%s" report example', 'result': os.path.join(ADDONS_REP_DIR, 'd3-ancestralfanchart', 'index.html'), 'i': 'd3-ancestralfanchart', 'options': { 'dest_path': os.path.join(ADDONS_REP_DIR, 'd3-ancestralfanchart'), 'dest_file': 'index.html', 'pid': 'I0006', 'maxgen': 6, }, }) ########## d3-descendantindentedtree addons.append({ 'title': '"%s" report example', 'result': os.path.join(ADDONS_REP_DIR, 'd3-descendantindentedtree', 'index.html'), 'i': 'd3-descendantindentedtree', 'options': { 'dest_path': os.path.join(ADDONS_REP_DIR, 'd3-descendantindentedtree'), 'dest_file': 'index.html', 'pid': 'I0104', 'max_gen': 6, 'inc_private': True, 'inc_living': _INCLUDE_LIVING_VALUE, }, }) ########## denominoviso for (i, (mode, type, dir, pid, full)) in enumerate([ [0, 0, 0, 'I0001', True], [0, 3, 2, 'I0001', False], [0, 4, 2, 'I0001', False], [1, 0, 0, 'I0044', True], [1, 1, 0, 'I0044', False], ]): addons.append({ 'title': '"%%s" report example %i' % i, 'result': os.path.join(ADDONS_REP_DIR, 'DenominoViso%i.xhtml' % i), 'i': 'denominoviso', 'options': { 'DNMfilename': os.path.join(ADDONS_REP_DIR, 'DenominoViso%i.xhtml' % i), 'DNMchart_mode': mode, 'DNMpid': pid, 'DNMchart_type': type, 'DNMinc_attributes_m': '"True, "', 'DNMinc_addresses': full, 'DNMinc_notes': full, 'DNMinc_url': full, 'DNMinc_url_desc': full, 'DNMinc_sources': full, 'DNMinc_img': full, 'DNMcopy_img_m': '"%s, %s%i"' % (str(full), os.path.join(ADDONS_REP_DIR, 'DenominoViso'), i), }, }) ########## DescendantBook for fmt in TEXT_FMT: of = os.path.join(ADDONS_REP_DIR, 'DescendantBook.' + fmt) addons.append({ 'title': '"%%s" in format "%s"' % fmt, 'result': of, 'i': 'DescendantBook', 'options': { 'off': fmt, 'of': of, }, }) for fmt in TEXT_FMT: of = os.path.join(ADDONS_REP_DIR, 'DetailedDescendantBook.' + fmt) addons.append({ 'title': '"%%s" in format "%s"' % fmt, 'result': of, 'i': 'DetailedDescendantBook', 'options': { 'off': fmt, 'of': of, }, }) ########## Descendants Lines for fmt in GRPH_FMT: of = os.path.join(ADDONS_REP_DIR, 'DescendantsLines.' + fmt) addons.append({ 'title': '"%%s" in format "%s"' % fmt, 'result': of, 'i': 'Descendants Lines', 'options': { 'off': fmt, 'of': of, 'pid': 'I0006', }, }) ########## database-differences-report for fmt in ['html']: of = os.path.join(ADDONS_REP_DIR, 'database-differences-report.' + fmt) addons.append({ 'title': '"%%s" in format "%s"' % fmt, 'result': of, 'i': 'database-differences-report', 'options': { 'off': fmt, 'of': of, 'filename': os.path.join(os.environ['GRAMPS_RESOURCES'], 'example', 'gramps', 'example.gramps'), }, }) ########## DynamicWeb addons.extend(report_set_DynamicWeb.addon_set()) ########## FamilyTree for fmt in GRPH_FMT: of = os.path.join(ADDONS_REP_DIR, 'FamilyTree.' + fmt) addons.append({ 'title': '"%%s" in format "%s"' % fmt, 'result': of, 'i': 'FamilyTree', 'options': { 'off': fmt, 'of': of, 'pid': 'I0006', 'max_ancestor_generations': 3, 'max_descendant_generations': 3, 'papero': 1, 'protect_private': False, 'color': 1, }, }) ########## LastChangeReport for fmt in ['html']: of = os.path.join(ADDONS_REP_DIR, 'LastChangeReport.' + fmt) addons.append({ 'title': '"%%s" in format "%s"' % fmt, 'result': of, 'i': 'LastChangeReport', 'options': { 'off': fmt, 'of': of, 'what_types': '"True,True,True,True,True,True"' }, }) ########## LinesOfDescendency for fmt in ['html']: of = os.path.join(ADDONS_REP_DIR, 'LinesOfDescendency.' + fmt) addons.append({ 'title': '"%%s" in format "%s"' % fmt, 'result': of, 'i': 'LinesOfDescendency', 'options': { 'off': fmt, 'of': of, 'pid': 'I0006', 'ancestor': 'I0104', }, }) ########## ListeEclair for fmt in TEXT_FMT: of = os.path.join(ADDONS_REP_DIR, 'ListeEclair.' + fmt) addons.append({ 'title': '"%%s" in format "%s"' % fmt, 'result': of, 'i': 'ListeEclair', 'options': { 'off': fmt, 'of': of, }, }) ########## PedigreeChart for fmt in GRPH_FMT: of = os.path.join(ADDONS_REP_DIR, 'PedigreeChart.' + fmt) addons.append({ 'title': '"%%s" in format "%s"' % fmt, 'result': of, 'i': 'PedigreeChart', 'options': { 'off': fmt, 'of': of, 'maxgen': 6, 'pid': 'I0006', }, }) ########## PersonEverythingReport for fmt in TEXT_FMT: of = os.path.join(ADDONS_REP_DIR, 'PersonEverythingReport.' + fmt) addons.append({ 'title': '"%%s" in format "%s"' % fmt, 'result': of, 'i': 'PersonEverythingReport', 'options': { 'off': fmt, 'of': of, }, }) ########## Repositories Report for fmt in TEXT_FMT: of = os.path.join(ADDONS_REP_DIR, 'RepositoriesReportOptions.' + fmt) addons.append({ 'title': '"%%s" in format "%s"' % fmt, 'result': of, 'i': 'Repositories Report Options', 'options': { 'off': fmt, 'of': of, }, }) for fmt in TEXT_FMT: of = os.path.join(ADDONS_REP_DIR, 'RepositoriesReport.' + fmt) addons.append({ 'title': '"%%s" in format "%s"' % fmt, 'result': of, 'i': 'Repositories Report', 'options': { 'off': fmt, 'of': of, }, }) ########## TodoReport reports=[] addons=[] for fmt in TEXT_FMT: of = os.path.join(ADDONS_REP_DIR, 'TodoReport.' + fmt) addons.append({ 'title': '"%%s" in format "%s"' % fmt, 'result': of, 'i': 'TodoReport', 'options': { 'off': fmt, 'of': of, 'tag': 'ToDo', }, }) ########## Check if addon exists in the addons listings for addon in addons: plugin = gpr.get_plugin(addon['i']) if not plugin: print('Unknown plugin: %s' % addon['i']) continue addon['options'].update({ 'name': addon['i'], }) addon.update({ 'title': addon['title'] % plugin.name, 'name': plugin.name, 'type': 'Addon', 'category': plugin.category, 'version': plugin.version, }) del addon['i'] reports.append(addon) return reports
def __init__(self, dbstate, uistate, track): self.uistate = uistate self.dbstate = dbstate self._show_builtins = None self._show_hidden = None self.options = PluginManagerOptions('pluginmanager') #tool.Tool.__init__(self, dbstate, options_class, 'pluginmanager') self.options.load_previous_values() self.options_dict = self.options.handler.options_dict self.window = Gtk.Dialog(title=TITLE) ManagedWindow.__init__(self, uistate, track, self.__class__) self.set_window(self.window, None, TITLE, None) self._pmgr = GuiPluginManager.get_instance() self._preg = PluginRegister.get_instance() # obtain hidden plugins from the pluginmanager self.hidden = self._pmgr.get_hidden_plugin_ids() self.setup_configs('interface.pluginstatus', 750, 400) help_btn = self.window.add_button( # pylint: disable=no-member _("_Help"), Gtk.ResponseType.HELP) self.btn_box = help_btn.get_parent() self.btn_box.set_child_non_homogeneous(help_btn, True) # filter input box self.filter_entry = Gtk.SearchEntry() self.filter_entry.set_tooltip_text( _("Enter search words to filter the addons.\n" "All the words must be present somewhere in the row or\n" "the addon filename to be included in the search.\n" "Word case and order is ignored.")) self.filter_entry.set_placeholder_text(_("Search...")) self.btn_box.pack_start(self.filter_entry, True, True, 0) #self.btn_box.set_child_non_homogeneous(self.filter_entry, True) self.filter_entry.connect('search-changed', self.filter_str_changed) update_btn = self.window.add_button( # pylint: disable=no-member _("Check for updated addons now"), UPDATE_RES) self.btn_box.set_child_non_homogeneous(update_btn, True) if __debug__: # Only show the "Reload" button when in debug mode # (without -O on the command line) reload_btn = self.window.add_button( # pylint: disable=no-member _("Reload"), RELOAD_RES) self.btn_box.set_child_non_homogeneous(reload_btn, True) _w0, _wx_ = reload_btn.get_preferred_width() else: _w0 = 0 cls_btn = self.window.add_button(_('_Close'), Gtk.ResponseType.CLOSE) self.btn_box.set_child_non_homogeneous(cls_btn, True) _w1, dummy = help_btn.get_preferred_width() _w2, dummy = cls_btn.get_preferred_width() _w3, dummy = update_btn.get_preferred_width() _wa, dummy = self.window.get_size() _we = _wa - _w0 - _w1 - _w2 - _w3 - 63 self.filter_entry.set_size_request(_we, -1) labeltitle, widget = self.registered_plugins_panel(None) self.window.vbox.pack_start(widget, True, True, 0) sep = Gtk.Separator.new(Gtk.Orientation.HORIZONTAL) self.window.vbox.pack_start(sep, False, False, 3) self.restart_needed = False self.window.connect('response', self.done) self.show() self.__populate_reg_list()
def build_report_set(): reports = [] ################################################################## # Load plugins ################################################################## dbstate = DbState() climanager = CLIManager(dbstate, setloader=True, user=None) climanager.do_reg_plugins(dbstate, uistate=None) gpr = PluginRegister.get_instance() PLUGMAN = BasePluginManager.get_instance() CSS = PLUGMAN.process_plugin_data('WEBSTUFF') ################################################################## # GRAMPS native plugins ################################################################## # GRPH_FMT = ['odt', 'ps', 'pdf', 'svg'] GRPH_FMT = ['pdf', 'svg'] # GRPH_FMT = ['svg'] GRPH_REP = [ { 'report': 'ancestor_chart', 'options': { 'scale_tree': 2, 'maxgen': 6, 'pid': 'I0006', }, }, { 'report': 'descend_chart', 'options': { 'scale_tree': 2, 'maxgen': 6, 'pid': 'I0104', }, }, { 'report': 'family_descend_chart', 'options': { 'scale_tree': 2, 'maxgen': 6, 'pid': 'I0104', }, }, { 'report': 'fan_chart', 'options': { 'scale_tree': 2, 'maxgen': 6, 'pid': 'I0006', }, }, { 'report': 'statistics_chart', 'options': { 'scale_tree': 2, 'maxgen': 6, }, }, { 'report': 'timeline', 'options': { 'scale_tree': 2, 'maxgen': 6, }, }, { 'report': 'calendar', 'options': { 'scale_tree': 2, 'maxgen': 6, }, }, { 'report': 'familylines_graph', 'options': { 'scale_tree': 2, 'maxgen': 6, 'gidlist': 'I0104 I0045', 'limitchildren': True, 'maxchildren': 20, }, }, { 'report': 'hourglass_graph', 'options': { 'scale_tree': 2, 'maxgen': 6, 'pid': 'I0044', 'maxascend': 2, 'maxdescend': 2, }, }, { 'report': 'rel_graph', 'options': { 'scale_tree': 2, 'maxgen': 6, 'pid': 'I0044', 'filter': 3, 'event_choice': 2, }, }, ] # TEXT_FMT = ['ps', 'pdf', 'html', 'odt', 'tex', 'rtf', 'txt'] TEXT_FMT = ['html', 'pdf', 'txt'] # TEXT_FMT = ['html', 'txt'] TEXT_REP = [ { 'report': 'ancestor_report', 'options': { 'maxgen': 6, 'pid': 'I0006', }, }, { 'report': 'descend_report', 'options': { 'pid': 'I0104', }, }, { 'report': 'det_ancestor_report', 'options': { 'pid': 'I0006', }, }, { 'report': 'det_descendant_report', 'options': { 'pid': 'I0104', }, }, { 'report': 'family_group', 'options': { 'family_id': 'F0017', }, }, { 'report': 'birthday_report', 'options': {}, }, { 'report': 'endofline_report', 'options': { 'pid': 'I0006', }, }, { 'report': 'indiv_complete', 'options': {}, }, { 'report': 'kinship_report', 'options': { 'pid': 'I0044', }, }, { 'report': 'tag_report', 'options': { 'tag': 'ToDo', }, }, { 'report': 'number_of_ancestors', 'options': { 'pid': 'I0006', }, }, { 'report': 'place_report', 'options': { 'places': 'P1678 P1679 P1680', }, }, { 'report': 'summary', 'options': {}, }, { 'report': 'records', 'options': {}, }, { 'report': 'notelinkreport', 'options': {}, }, ] # Single run with all native reports (except web) in all formats for (rep_list, formats) in [ (TEXT_REP, TEXT_FMT), (GRPH_REP, GRPH_FMT), ]: for rep_info in TEXT_REP: report = rep_info['report'] options = rep_info['options'] plugin = gpr.get_plugin(report) if not plugin: print('Unknown plugin: %s' % report) continue for fmt in TEXT_FMT: of = os.path.join(GRAMPS_REP_DIR, report + '.' + fmt) new_options = { 'name': report, 'off': fmt, 'of': of, # 'show': 'all', } new_options.update(options) reports.append({ 'title': '"%s" in format "%s"' % (plugin.name, fmt), 'name': plugin.name, 'result': of, 'type': 'Native', 'category': plugin.category, 'version': plugin.version, 'options': new_options, }) ################################################################## # GRAMPS native web reports ################################################################## full_options = { 'linkhome': True, 'showdeath': True, 'showpartner': True, 'showparents': True, 'showhalfsiblings': True, 'inc_families': True, 'inc_repository': True, 'inc_gendex': True, 'inc_addressbook': True, 'placemappages': True, 'familymappages': True, } for (i, (css, full)) in enumerate([ ['default', False], ['Mainz', True], ]): report = 'navwebpage' plugin = gpr.get_plugin(report) opts = { 'name': report, 'target': os.path.join(GRAMPS_REP_DIR, 'example_NAVWEB%i' % i), 'css': CSS[css]['id'], 'living': _INCLUDE_LIVING_VALUE, } if (full): opts.update(full_options) reports.append({ 'title': '"%s" report example %i' % (plugin.name, i), 'name': report, 'result': os.path.join(GRAMPS_REP_DIR, 'example_NAVWEB%i' % i, 'index.html'), 'type': 'Native', 'category': plugin.category, 'version': VERSION, 'options': opts, }) full_options = { 'alive': False, 'fullyear': True, 'makeoneday': True, 'link_to_narweb': True, } for (i, (css, full)) in enumerate([ ['default', False], ['Mainz', True], ]): report = 'WebCal' plugin = gpr.get_plugin(report) opts = { 'name': report, 'target': os.path.join(GRAMPS_REP_DIR, 'example_WebCal%i' % i), 'css': CSS[css]['id'], 'home_link': '../../example_NAVWEB%i/index.html' % i, 'prefix': '../../example_NAVWEB%i/' % i, } page = 'January.html' if (full): opts.update(full_options) page = 'fullyearlinked.html' reports.append({ 'title': '"%s" report example %i' % (plugin.name, i), 'name': report, 'result': os.path.join(GRAMPS_REP_DIR, 'example_WebCal%i' % i, str(Today().get_year()), page), 'type': 'Native', 'category': plugin.category, 'version': VERSION, 'options': opts, }) ################################################################## # GRAMPS addons reports ################################################################## addons = [] ########## AncestorFill for fmt in TEXT_FMT: of = os.path.join(ADDONS_REP_DIR, 'AncestorFill.' + fmt) addons.append({ 'title': '"%%s" in format "%s"' % fmt, 'result': of, 'i': 'AncestorFill', 'options': { 'off': fmt, 'of': of, }, }) ########## d3-ancestralcollapsibletree addons.append({ 'title': '"%s" report example', 'result': os.path.join(ADDONS_REP_DIR, 'd3-ancestralcollapsibletree', 'index.html'), 'i': 'd3-ancestralcollapsibletree', 'options': { 'dest_path': os.path.join(ADDONS_REP_DIR, 'd3-ancestralcollapsibletree'), 'dest_file': 'index.html', 'pid': 'I0006', 'maxgen': 6, }, }) ########## d3-ancestralfanchart addons.append({ 'title': '"%s" report example', 'result': os.path.join(ADDONS_REP_DIR, 'd3-ancestralfanchart', 'index.html'), 'i': 'd3-ancestralfanchart', 'options': { 'dest_path': os.path.join(ADDONS_REP_DIR, 'd3-ancestralfanchart'), 'dest_file': 'index.html', 'pid': 'I0006', 'maxgen': 6, }, }) ########## d3-descendantindentedtree addons.append({ 'title': '"%s" report example', 'result': os.path.join(ADDONS_REP_DIR, 'd3-descendantindentedtree', 'index.html'), 'i': 'd3-descendantindentedtree', 'options': { 'dest_path': os.path.join(ADDONS_REP_DIR, 'd3-descendantindentedtree'), 'dest_file': 'index.html', 'pid': 'I0104', 'max_gen': 6, 'inc_private': True, 'inc_living': _INCLUDE_LIVING_VALUE, }, }) ########## denominoviso for (i, (mode, type, dir, pid, full)) in enumerate([ [0, 0, 0, 'I0001', True], [0, 3, 2, 'I0001', False], [0, 4, 2, 'I0001', False], [1, 0, 0, 'I0044', True], [1, 1, 0, 'I0044', False], ]): addons.append({ 'title': '"%%s" report example %i' % i, 'result': os.path.join(ADDONS_REP_DIR, 'DenominoViso%i.xhtml' % i), 'i': 'denominoviso', 'options': { 'DNMfilename': os.path.join(ADDONS_REP_DIR, 'DenominoViso%i.xhtml' % i), 'DNMchart_mode': mode, 'DNMpid': pid, 'DNMchart_type': type, 'DNMinc_attributes_m': '"True, "', 'DNMinc_addresses': full, 'DNMinc_notes': full, 'DNMinc_url': full, 'DNMinc_url_desc': full, 'DNMinc_sources': full, 'DNMinc_img': full, 'DNMcopy_img_m': '"%s, %s%i"' % (str(full), os.path.join(ADDONS_REP_DIR, 'DenominoViso'), i), }, }) ########## DescendantBook for fmt in TEXT_FMT: of = os.path.join(ADDONS_REP_DIR, 'DescendantBook.' + fmt) addons.append({ 'title': '"%%s" in format "%s"' % fmt, 'result': of, 'i': 'DescendantBook', 'options': { 'off': fmt, 'of': of, }, }) for fmt in TEXT_FMT: of = os.path.join(ADDONS_REP_DIR, 'DetailedDescendantBook.' + fmt) addons.append({ 'title': '"%%s" in format "%s"' % fmt, 'result': of, 'i': 'DetailedDescendantBook', 'options': { 'off': fmt, 'of': of, }, }) ########## Descendants Lines for fmt in GRPH_FMT: of = os.path.join(ADDONS_REP_DIR, 'DescendantsLines.' + fmt) addons.append({ 'title': '"%%s" in format "%s"' % fmt, 'result': of, 'i': 'Descendants Lines', 'options': { 'off': fmt, 'of': of, 'pid': 'I0006', }, }) ########## database-differences-report for fmt in ['html']: of = os.path.join(ADDONS_REP_DIR, 'database-differences-report.' + fmt) addons.append({ 'title': '"%%s" in format "%s"' % fmt, 'result': of, 'i': 'database-differences-report', 'options': { 'off': fmt, 'of': of, 'filename': os.path.join(os.environ['GRAMPS_RESOURCES'], 'example', 'gramps', 'example.gramps'), }, }) ########## DynamicWeb addons.extend(report_set_DynamicWeb.addon_set()) ########## FamilyTree for fmt in GRPH_FMT: of = os.path.join(ADDONS_REP_DIR, 'FamilyTree.' + fmt) addons.append({ 'title': '"%%s" in format "%s"' % fmt, 'result': of, 'i': 'FamilyTree', 'options': { 'off': fmt, 'of': of, 'pid': 'I0006', 'max_ancestor_generations': 3, 'max_descendant_generations': 3, 'papero': 1, 'protect_private': False, 'color': 1, }, }) ########## LastChangeReport for fmt in ['html']: of = os.path.join(ADDONS_REP_DIR, 'LastChangeReport.' + fmt) addons.append({ 'title': '"%%s" in format "%s"' % fmt, 'result': of, 'i': 'LastChangeReport', 'options': { 'off': fmt, 'of': of, 'what_types': '"True,True,True,True,True,True"' }, }) ########## LinesOfDescendency for fmt in ['html']: of = os.path.join(ADDONS_REP_DIR, 'LinesOfDescendency.' + fmt) addons.append({ 'title': '"%%s" in format "%s"' % fmt, 'result': of, 'i': 'LinesOfDescendency', 'options': { 'off': fmt, 'of': of, 'pid': 'I0006', 'ancestor': 'I0104', }, }) ########## ListeEclair for fmt in TEXT_FMT: of = os.path.join(ADDONS_REP_DIR, 'ListeEclair.' + fmt) addons.append({ 'title': '"%%s" in format "%s"' % fmt, 'result': of, 'i': 'ListeEclair', 'options': { 'off': fmt, 'of': of, }, }) ########## PedigreeChart for fmt in GRPH_FMT: of = os.path.join(ADDONS_REP_DIR, 'PedigreeChart.' + fmt) addons.append({ 'title': '"%%s" in format "%s"' % fmt, 'result': of, 'i': 'PedigreeChart', 'options': { 'off': fmt, 'of': of, 'maxgen': 6, 'pid': 'I0006', }, }) ########## PersonEverythingReport for fmt in TEXT_FMT: of = os.path.join(ADDONS_REP_DIR, 'PersonEverythingReport.' + fmt) addons.append({ 'title': '"%%s" in format "%s"' % fmt, 'result': of, 'i': 'PersonEverythingReport', 'options': { 'off': fmt, 'of': of, }, }) ########## Repositories Report for fmt in TEXT_FMT: of = os.path.join(ADDONS_REP_DIR, 'RepositoriesReportOptions.' + fmt) addons.append({ 'title': '"%%s" in format "%s"' % fmt, 'result': of, 'i': 'Repositories Report Options', 'options': { 'off': fmt, 'of': of, }, }) for fmt in TEXT_FMT: of = os.path.join(ADDONS_REP_DIR, 'RepositoriesReport.' + fmt) addons.append({ 'title': '"%%s" in format "%s"' % fmt, 'result': of, 'i': 'Repositories Report', 'options': { 'off': fmt, 'of': of, }, }) ########## TodoReport reports = [] addons = [] for fmt in TEXT_FMT: of = os.path.join(ADDONS_REP_DIR, 'TodoReport.' + fmt) addons.append({ 'title': '"%%s" in format "%s"' % fmt, 'result': of, 'i': 'TodoReport', 'options': { 'off': fmt, 'of': of, 'tag': 'ToDo', }, }) ########## Check if addon exists in the addons listings for addon in addons: plugin = gpr.get_plugin(addon['i']) if not plugin: print('Unknown plugin: %s' % addon['i']) continue addon['options'].update({ 'name': addon['i'], }) addon.update({ 'title': addon['title'] % plugin.name, 'name': plugin.name, 'type': 'Addon', 'category': plugin.category, 'version': plugin.version, }) del addon['i'] reports.append(addon) return reports