1
0

generalize plugins to all guis

This commit is contained in:
ThomasV
2013-09-23 16:14:28 +02:00
parent 7d3234f591
commit 404c1f84d2
11 changed files with 287 additions and 202 deletions

View File

@@ -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: