X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/b56bcb6768ce0fdb7124e02d2fd6a531b4068505..307b1a3a29f51944baf8866292f6150f6aa8ca62:/lib/python/Plugins/Plugin.py diff --git a/lib/python/Plugins/Plugin.py b/lib/python/Plugins/Plugin.py index 3a79e396..6df4fce7 100644 --- a/lib/python/Plugins/Plugin.py +++ b/lib/python/Plugins/Plugin.py @@ -1,4 +1,7 @@ -from enigma import loadPNG +from Components.config import ConfigSubsection, config +from Tools.LoadPixmap import LoadPixmap + +config.plugins = ConfigSubsection() class PluginDescriptor: """An object to describe a plugin.""" @@ -19,13 +22,13 @@ class PluginDescriptor: WHERE_PLUGINMENU = 2 # argument: session, serviceref (currently selected) WHERE_MOVIELIST = 3 - # ... - WHERE_SETUP = 4 + # argument: menuid. Fnc must return list with menuitems (4-tuple of name, fnc to call, entryid or None, weight or None) + WHERE_MENU = 4 # reason (0: start, 1: end) WHERE_AUTOSTART = 5 - # start as wizard. In that case, fnc must be a screen class! + # start as wizard. In that case, fnc must be tuple (priority,class) with class being a screen class! WHERE_WIZARD = 6 # like autostart, but for a session. currently, only session starts are @@ -35,8 +38,20 @@ class PluginDescriptor: # start as teletext plugin. arguments: session, serviceref WHERE_TELETEXT = 8 - def __init__(self, name = "Plugin", where = [ ], description = "", icon = None, fnc = None): + # file-scanner, fnc must return a list of Scanners + WHERE_FILESCAN = 9 + + # fnc must take an interface name as parameter and return None if the plugin supports an extended setup + # or return a function which is called with session and the interface name for extended setup of this interface + WHERE_NETWORKSETUP = 10 + + # show up this plugin (or a choicebox with all of them) for long INFO keypress + # or return a function which is called with session and the interface name for extended setup of this interface + WHERE_EVENTINFO = 11 + + def __init__(self, name = "Plugin", where = [ ], description = "", icon = None, fnc = None, wakeupfnc = None, internal = False): self.name = name + self.internal = internal if type(where) is list: self.where = where else: @@ -49,13 +64,18 @@ class PluginDescriptor: else: self.icon = icon + self.wakeupfnc = wakeupfnc + self.__call__ = fnc def updateIcon(self, path): if type(self.iconstr) is str: - self.icon = loadPNG(path + "/" + self.iconstr) + self.icon = LoadPixmap(path + "/" + self.iconstr) else: self.icon = None + def getWakeupTime(self): + return self.wakeupfnc and self.wakeupfnc() or -1 + def __eq__(self, other): return self.__call__ == other.__call__