1 #from Plugins.Plugin import PluginDescriptor
2 from MPHelp import MPHelp
4 from collections import Callable
8 class PluginHelp(object):
9 def __init__(self, getNameFunc, getPagesFunc, additionalSkin=""):
10 if not isinstance(getNameFunc, Callable):
11 getNameFunc = lambda x: getNameFunc
12 self.getNameFunc = getNameFunc
14 if not isinstance(getPagesFunc, Callable):
15 getPagesFunc = lambda x: getPagesFunc
16 self.getPagesFunc = getPagesFunc
18 self.additionalSkin = additionalSkin
20 def __getattr__(self, attr):
21 if attr == "name": return self.getNameFunc()
22 elif attr == "pages": return self.getPagesFunc()
23 return object.__getattr__(self, attr)
25 def open(self, session):
26 session.open(MPHelp, self.pages, title=self.name, additionalSkin=self.additionalSkin)
28 def openWithCallback(self, session, callback):
29 assert isinstance(callback, Callable), "callback has to be callable!"
30 session.openWithCallback(callback, MPHelp, self.pages, title=self.name, additionalSkin=self.additionalSkin)
32 def registerHelp(getNameFunc, getPagesFunc, additionalSkin=""):
33 curName = getNameFunc()
37 x = PluginHelp(getNameFunc, getPagesFunc, additionalSkin=additionalSkin)
41 def showHelp(session, curName, callback=None):
45 x.openWithCallback(session, callback)
51 def Plugins(**kwargs):
55 __all__ = ['Plugins', 'registerHelp', 'showHelp', 'PluginHelp']