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 print "NOT CALLABLE?!"
12 getNameFunc = lambda x: getNameFunc
13 self.getNameFunc = getNameFunc
15 if not isinstance(getPagesFunc, Callable):
16 print "NOT CALLABLE EITHER?!"
17 getPagesFunc = lambda x: getPagesFunc
18 self.getPagesFunc = getPagesFunc
20 self.additionalSkin = additionalSkin
22 def __getattr__(self, attr):
23 if attr == "name": return self.getNameFunc()
24 elif attr == "pages": return self.getPagesFunc()
25 return object.__getattr__(self, attr)
27 def open(self, session):
28 session.open(MPHelp, self.pages, title=self.name, additionalSkin=self.additionalSkin)
30 def openWithCallback(self, session, callback):
31 assert isinstance(callback, Callable), "callback has to be callable!"
32 session.openWithCallback(callback, MPHelp, self.pages, title=self.name, additionalSkin=self.additionalSkin)
34 def registerHelp(getNameFunc, getPagesFunc, additionalSkin=""):
35 curName = getNameFunc()
39 x = PluginHelp(getNameFunc, getPagesFunc, additionalSkin=additionalSkin)
43 def showHelp(session, curName, callback=None):
47 x.openWithCallback(session, callback)
53 def Plugins(**kwargs):
57 __all__ = ['Plugins', 'registerHelp', 'showHelp']