From 4ce41d46560b29f6d466cdc8f42a4340f34024cd Mon Sep 17 00:00:00 2001 From: Doug Blank Date: Sun, 23 May 2010 11:44:13 +0000 Subject: [PATCH] 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 --- src/cli/grampscli.py | 9 +++++---- src/gen/plug/_manager.py | 4 +++- src/gui/viewmanager.py | 6 +++--- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/cli/grampscli.py b/src/cli/grampscli.py index 2138aeb7b..9b91488bf 100644 --- a/src/cli/grampscli.py +++ b/src/cli/grampscli.py @@ -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) diff --git a/src/gen/plug/_manager.py b/src/gen/plug/_manager.py index 5705b881a..3375d10e8 100644 --- a/src/gen/plug/_manager.py +++ b/src/gen/plug/_manager.py @@ -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): """ diff --git a/src/gui/viewmanager.py b/src/gui/viewmanager.py index b37979608..b63ec8e75 100644 --- a/src/gui/viewmanager.py +++ b/src/gui/viewmanager.py @@ -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'):