generalize plugins to all guis
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user