def load_plugin(plugin, plugin_globals, plugin_locals): """ Load the given plugin (which is an open file). Return True if the plugin was loaded, or False if it wanted to be ignored. Raise an exception if there was an error. """ try: exec(plugin.read(), plugin_globals, plugin_locals) except ImportError: return False except Exception, e: raise WidgetPluginError("%s: %s" % (e.__class__, str(e)))
def load_plugin(filename, plugin_globals, plugin_locals): """ Load the plugin fom the given file. Return True if the plugin was loaded, or False if it wanted to be ignored. Raise an exception if there was an error. """ plugin = open(filename, 'r') try: exec(plugin.read(), plugin_globals, plugin_locals) except ImportError: return False except Exception as e: raise WidgetPluginError("%s: %s" % (e.__class__, str(e))) finally: plugin.close() return True
def __init__(self, creatorPolicy): self._cpolicy = creatorPolicy self._cwFilters = [] self._modules = [self._cpolicy.createQtGuiWrapper()] # Get the optional plugins. for plugindir in widgetPluginPath: try: plugins = os.listdir(plugindir) except: plugins = [] for filename in plugins: if not filename.endswith('.py'): continue filename = os.path.join(plugindir, filename) plugin_globals = { "MODULE": MODULE, "CW_FILTER": CW_FILTER, "MATCH": MATCH, "NO_MATCH": NO_MATCH } plugin_locals = {} if load_plugin(open(filename, 'rU'), plugin_globals, plugin_locals): pluginType = plugin_locals["pluginType"] if pluginType == MODULE: modinfo = plugin_locals["moduleInformation"]() self._modules.append( self._cpolicy.createModuleWrapper(*modinfo)) elif pluginType == CW_FILTER: self._cwFilters.append(plugin_locals["getFilter"]()) else: raise WidgetPluginError("Unknown plugin type of %s" % filename) self._customWidgets = self._cpolicy.createCustomWidgetLoader() self._modules.append(self._customWidgets)