X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=lib%2Fplugins.py;h=e7687a67e869a220ee3ae570b7d4151e48d08828;hb=404c1f84d2d0d84e30e0be00784da5585fdab6a8;hp=e9e99160f1e802e500ae7015f38d90e0b508d2d8;hpb=7d3234f591df4e275e0d9871d903ff7e18ac93cf;p=electrum-nvc.git diff --git a/lib/plugins.py b/lib/plugins.py index e9e9916..e7687a6 100644 --- a/lib/plugins.py +++ b/lib/plugins.py @@ -1,3 +1,56 @@ +from util import print_error +import traceback, sys +from electrum.util import * +from electrum.i18n import _ + +plugins = [] + + +def init_plugins(self): + import imp, pkgutil, __builtin__, os + global plugins + + if __builtin__.use_local_modules: + fp, pathname, description = imp.find_module('plugins') + plugin_names = [name for a, name, b in pkgutil.iter_modules([pathname])] + plugin_names = filter( lambda name: os.path.exists(os.path.join(pathname,name+'.py')), plugin_names) + imp.load_module('electrum_plugins', fp, pathname, description) + plugin_modules = map(lambda name: imp.load_source('electrum_plugins.'+name, os.path.join(pathname,name+'.py')), plugin_names) + else: + import electrum_plugins + plugin_names = [name for a, name, b in pkgutil.iter_modules(electrum_plugins.__path__)] + plugin_modules = [ __import__('electrum_plugins.'+name, fromlist=['electrum_plugins']) for name in plugin_names] + + for name, p in zip(plugin_names, plugin_modules): + try: + plugins.append( p.Plugin(self, name) ) + except: + print_msg(_("Error: cannot initialize plugin"),p) + traceback.print_exc(file=sys.stdout) + + + +def run_hook(name, *args): + + global plugins + + for p in plugins: + + if not p.is_enabled(): + continue + + f = getattr(p, name, None) + if not callable(f): + continue + + try: + f(*args) + except: + print_error("Plugin error") + traceback.print_exc(file=sys.stdout) + + return + class BasePlugin: