pluginhider: initial checkin
[enigma2-plugins.git] / pluginhider / src / plugin.py
1 # Plugin definition
2 from Plugins.Plugin import PluginDescriptor
3
4 from Components.PluginComponent import PluginComponent
5 from Components.config import config, ConfigSubsection, ConfigSet
6
7 from PluginHiderSetup import PluginHiderSetup
8
9 config.plugins.pluginhider = ConfigSubsection()
10 config.plugins.pluginhider.hideextensions = ConfigSet(choices=[])
11 config.plugins.pluginhider.hideplugins = ConfigSet(choices=[])
12
13 def PluginComponent_getPlugins(self, where):
14         if not isinstance(where, list):
15                 where = [ where ]
16
17         res = []
18         if PluginDescriptor.WHERE_EXTENSIONSMENU in where:
19                 hideextensions = config.plugins.pluginhider.hideextensions.value
20                 res.extend((x for x in self.plugins.get(PluginDescriptor.WHERE_EXTENSIONSMENU, []) if x.name not in hideextensions))
21                 where.remove(PluginDescriptor.WHERE_EXTENSIONSMENU)
22
23         if PluginDescriptor.WHERE_PLUGINMENU in where:
24                 hideplugins = config.plugins.pluginhider.hideplugins.value
25                 res.extend((x for x in self.plugins.get(PluginDescriptor.WHERE_PLUGINMENU, []) if x.name not in hideplugins))
26                 where.remove(PluginDescriptor.WHERE_PLUGINMENU)
27
28         if where:
29                 res.extend(PluginComponent.pluginHider_baseGetPlugins(self, where))
30         res.sort(key=lambda x:x.weight)
31         return res
32
33 def autostart(reason, *args, **kwargs):
34         if reason == 0:
35                 PluginComponent.pluginHider_baseGetPlugins = PluginComponent.getPlugins
36                 PluginComponent.getPlugins = PluginComponent_getPlugins
37         else:
38                 PluginComponent.getPlugins = PluginComponent.pluginHider_baseGetPlugins
39
40 def main(session, *args, **kwargs):
41         session.open(PluginHiderSetup)
42
43 def menu(menuid):
44         if menuid != "system":
45                 return []
46         return [(_("Hide Plugins"), main, "pluginhider_setup", None)]
47
48 def Plugins(**kwargs):
49         return [
50                 PluginDescriptor(
51                         where=PluginDescriptor.WHERE_AUTOSTART,
52                         fnc=autostart,
53                         needsRestart=False,
54                 ),
55                 PluginDescriptor(
56                         where=PluginDescriptor.WHERE_MENU,
57                         fnc=menu,
58                         needsRestart=False,
59                 ),
60         ]