Feature #2393: Allow the use of user-defined (mega)-widgets by MD Nauta; added register_option()

svn: r11861
This commit is contained in:
Doug Blank 2009-02-05 02:23:46 +00:00
parent fc5dcee88b
commit ef066a3b6a
2 changed files with 25 additions and 0 deletions

View File

@ -1415,6 +1415,8 @@ def make_gui_option(option, tooltips, dbstate, uistate, track):
""" """
widget = None widget = None
label = True label = True
pmgr = gen.plug.PluginManager.get_instance()
external_options = pmgr.get_external_opt_dict()
if tooltips == None: if tooltips == None:
tooltips = gtk.Tooltips() tooltips = gtk.Tooltips()
elif type(tooltips) == type(""): elif type(tooltips) == type(""):
@ -1455,6 +1457,9 @@ def make_gui_option(option, tooltips, dbstate, uistate, track):
tooltips) tooltips)
elif isinstance(option, gen.plug.menu.PlaceListOption): elif isinstance(option, gen.plug.menu.PlaceListOption):
widget = GuiPlaceListOption(option, dbstate, uistate, track, tooltips) widget = GuiPlaceListOption(option, dbstate, uistate, track, tooltips)
elif option.__class__ in external_options:
widget = external_options[option.__class__](option, dbstate, uistate,
track, tooltips)
else: else:
raise AttributeError( raise AttributeError(
"can't make GuiOption: unknown option type: '%s'" % option) "can't make GuiOption: unknown option type: '%s'" % option)

View File

@ -106,6 +106,7 @@ class PluginManager(gen.utils.Callback):
self.__bkitems_list = [] self.__bkitems_list = []
self.__cl_list = [] self.__cl_list = []
self.__cli_tool_list = [] self.__cli_tool_list = []
self.__external_opt_dict = {}
self.__success_list = [] self.__success_list = []
self.__relcalc_class = Relationship.RelationshipCalculator self.__relcalc_class = Relationship.RelationshipCalculator
@ -269,6 +270,10 @@ class PluginManager(gen.utils.Callback):
""" Return the list of command line tool plugins. """ """ Return the list of command line tool plugins. """
return self.__cli_tool_list return self.__cli_tool_list
def get_external_opt_dict(self):
""" Return the dictionary of external options. """
return self.__external_opt_dict
def get_module_description(self, module): def get_module_description(self, module):
""" Given a module name, return the module description. """ """ Given a module name, return the module description. """
return self.__mod2text.get(module, '') return self.__mod2text.get(module, '')
@ -563,6 +568,21 @@ class PluginManager(gen.utils.Callback):
self.__mod2text[mapservice.__module__] = tooltip self.__mod2text[mapservice.__module__] = tooltip
def register_option(self, option, guioption):
"""
Register an external option.
Register a mapping from option to guioption for an option
that is not native to Gramps but provided by the plugin writer.
This should typically be called during initialisation of a
ReportOptions class.
@param option: the option class
@type option: class that inherits from gen.plug.menu.Option
@param guioption: the gui-option class
@type guioption: class that inherits from gtk.Widget.
"""
self.__external_opt_dict[option] = guioption;
def __purge_failed(self): def __purge_failed(self):
""" """
Purge the failed plugins from the corresponding lists. Purge the failed plugins from the corresponding lists.