1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
from enigma import loadPNG
class PluginDescriptor:
"""An object to describe a plugin."""
# where to list the plugin. Note that there are different call arguments,
# so you might not be able to combine them.
# supported arguments are:
# session
# servicereference
# reason
# you have to ignore unknown kwargs!
# argument: session
WHERE_BLUEMENU = 0
WHERE_MAINMENU = 1
WHERE_PLUGINMENU = 2
# argument: session, serviceref (currently selected)
WHERE_MOVIELIST = 3
# ...
WHERE_SETUP = 4
# reason (0: start, 1: end)
WHERE_AUTOSTART = 5
# start as wizard. In that case, fnc must be a screen class!
WHERE_WIZARD = 6
# like autostart, but for a session. currently, only session starts are
# delivered, and only on pre-loaded plugins
WHERE_SESSIONSTART = 7
# start as teletext plugin. arguments: session, serviceref
WHERE_TELETEXT = 8
def __init__(self, name = "Plugin", where = [ ], description = "", icon = None, fnc = None):
self.name = name
if type(where) is list:
self.where = where
else:
self.where = [ where ]
self.description = description
if type(icon) is str or icon is None:
self.iconstr = icon
self.icon = None
else:
self.icon = icon
self.__call__ = fnc
def updateIcon(self, path):
if type(self.iconstr) is str:
self.icon = loadPNG(path + "/" + self.iconstr)
else:
self.icon = None
def __eq__(self, other):
return self.__call__ == other.__call__
|