From 903ca0511080fb48add2fe5ceb8f963ee18265b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sat, 31 May 2008 17:03:08 +0200 Subject: [PATCH] Import plugins at startup to allow to modify/add widgets or any other stuff --- tryton/gui/main.py | 2 +- tryton/plugin.py | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/tryton/gui/main.py b/tryton/gui/main.py index 4c375240be..ed21bb37c8 100644 --- a/tryton/gui/main.py +++ b/tryton/gui/main.py @@ -15,6 +15,7 @@ from tryton.gui.window import FilesActions import re import base64 import tryton.translate as translate +import tryton.plugin _ = gettext.gettext @@ -718,7 +719,6 @@ class Main(object): except_id=except_id) def sig_plugin_execute(self, widget): - import tryton.plugin page = self.notebook.get_current_page() datas = { 'model': self.pages[page].model, diff --git a/tryton/plugin.py b/tryton/plugin.py index 9db0c3beeb..be93faecba 100644 --- a/tryton/plugin.py +++ b/tryton/plugin.py @@ -3,18 +3,24 @@ import os import imp PLUGINS_PATH = os.path.join(os.path.dirname(__file__), 'plugins') +MODULES = [] + +for plugin in os.listdir(PLUGINS_PATH): + module = os.path.splitext(plugin)[0] + try: + module = imp.load_module(module, *imp.find_module(module, [PLUGINS_PATH])) + MODULES.append(module) + except Exception, exception: + continue def execute(datas, parent): result = {} - for plugin in os.listdir(PLUGINS_PATH): - module = os.path.splitext(plugin)[0] + for module in MODULES: try: - module = imp.load_module(module, *imp.find_module(module, [PLUGINS_PATH])) for name, func in module.get_plugins(datas['model']): result[name] = func except Exception, exception: - print exception continue if not result: common.message(_('No available plugin for this resource!'), parent)