add missing __init__.py
[vuplus_dvbapp] / lib / python / Components / PluginComponent.py
1 import os
2
3 from Tools.Directories import *
4 from Screens.Menu import menuupdater
5
6 class PluginComponent:
7         def __init__(self):
8                 self.plugins = []
9                 self.setPluginPrefix("Plugins.")
10                 self.menuEntries = []
11                 
12         def setPluginPrefix(self, prefix):
13                 self.prefix = prefix
14
15         def getPluginList(self):
16                 list = []
17                 dir = os.listdir(resolveFilename(SCOPE_PLUGINS))
18                 self.menuDelete()
19                 self.menuEntries = []
20
21                 for x in dir:
22                         path = resolveFilename(SCOPE_PLUGINS, x) + "/"
23                         try:
24                                 if os.path.exists(path):
25                                         if fileExists(path + "plugin.py"):
26                                                 pluginmodule = self.prefix + x + ".plugin"
27                                                 print "trying to import " + pluginmodule
28                                                 exec "import " + pluginmodule
29                                                 plugin = eval(pluginmodule)
30                                                 picturepath = plugin.getPicturePath()
31                                                 pluginname = plugin.getPluginName()
32                                                 try:
33                                                         for menuEntry in plugin.getMenuRegistrationList():
34                                                                 self.menuEntries.append([menuEntry, pluginmodule])
35                                                 except:
36                                                         pass
37                 
38                                                 list.append((picturepath, pluginname , x))
39                         except:
40                                 print "Directory", path, "contains a faulty plugin"
41                 self.menuUpdate()
42                 return list
43         
44         def menuDelete(self):
45                 for menuEntry in self.menuEntries:
46                         menuupdater.delMenuItem(menuEntry[0][0], menuEntry[0][2], menuEntry[1], menuEntry[0][3])
47
48         def menuUpdate(self):
49                 for menuEntry in self.menuEntries:
50                         menuupdater.addMenuItem(menuEntry[0][0], menuEntry[0][2], menuEntry[1], menuEntry[0][3])
51         
52         def runPlugin(self, plugin, session):
53                 try:
54                         exec "import " + self.prefix + plugin[2] + ".plugin"
55                         eval(self.prefix + plugin[2] + ".plugin").main(session)
56                 except:
57                         print "exec of plugin failed!"
58
59 plugins = PluginComponent()