3986: Interface for running code not associated with a plugin type: this passes dbstate and uistate to a load_on_reg function/class if a library has it, and it is marked as load_on_reg

svn: r15454
This commit is contained in:
Doug Blank 2010-05-23 11:44:13 +00:00
parent 8ca80428a5
commit 4ce41d4656
3 changed files with 11 additions and 8 deletions

View File

@ -282,12 +282,13 @@ class CLIManager(object):
RecentFiles.recent_files(filename, name)
self.file_loaded = True
def do_reg_plugins(self):
def do_reg_plugins(self, dbstate, uistate):
"""
Register the plugins at initialization time.
"""
self._pmgr.reg_plugins(const.PLUGINS_DIR)
self._pmgr.reg_plugins(const.USER_PLUGINS, append=False)
self._pmgr.reg_plugins(const.PLUGINS_DIR, dbstate, uistate)
self._pmgr.reg_plugins(const.USER_PLUGINS, dbstate, uistate,
append=False)
def startcli(errors, argparser):
"""
@ -312,7 +313,7 @@ def startcli(errors, argparser):
#we need a manager for the CLI session
climanager = CLIManager(dbstate, True)
#load the plugins
climanager.do_reg_plugins()
climanager.do_reg_plugins(dbstate, uistate=None)
# handle the arguments
from arghandler import ArgHandler
handler = ArgHandler(dbstate, argparser, climanager)

View File

@ -96,7 +96,7 @@ class BasePluginManager(object):
self.__registereddir_set = set()
self.__loaded_plugins = {}
def reg_plugins(self, direct, append=True):
def reg_plugins(self, direct, dbstate=None, uistate=None, append=True):
"""
Searches the specified directory, and registers python plugin that
are being defined in gpr.py files.
@ -128,6 +128,8 @@ class BasePluginManager(object):
# load plugins that request to be loaded on startup
for plugin in self.__pgr.filter_load_on_reg():
mod = self.load_plugin(plugin)
if hasattr(mod, "load_on_reg"):
mod.load_on_reg(dbstate, uistate)
def is_loaded(self, pdata_id):
"""

View File

@ -257,7 +257,7 @@ class ViewManager(CLIManager):
self.__build_main_window()
self.__connect_signals()
self.do_reg_plugins()
self.do_reg_plugins(self.dbstate, self.uistate)
#plugins loaded now set relationship class
self.rel_class = Relationship.get_relationship_calculator()
self.uistate.set_relationship_class()
@ -646,14 +646,14 @@ class ViewManager(CLIManager):
self.uistate.push_message(self.dbstate, _('Ready'))
def do_reg_plugins(self):
def do_reg_plugins(self, dbstate, uistate):
"""
Register the plugins at initialization time. The plugin status window
is opened on an error if the user has requested.
"""
# registering plugins
self.uistate.status_text(_('Registering plugins...'))
error = CLIManager.do_reg_plugins(self)
error = CLIManager.do_reg_plugins(self, dbstate, uistate)
# get to see if we need to open the plugin status window
if error and config.get('behavior.pop-plugin-status'):