pluginhider: add eventinfo support and rework setup dialog
[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 config.plugins.pluginhider.hideeventinfo = ConfigSet(choices=[])
13
14 def PluginComponent_getPlugins(self, where):
15         if not isinstance(where, list):
16                 where = [ where ]
17
18         res = []
19         if PluginDescriptor.WHERE_EXTENSIONSMENU in where:
20                 hide = config.plugins.pluginhider.hideextensions.value
21                 res.extend((x for x in self.plugins.get(PluginDescriptor.WHERE_EXTENSIONSMENU, []) if x.name not in hide))
22                 where.remove(PluginDescriptor.WHERE_EXTENSIONSMENU)
23
24         if PluginDescriptor.WHERE_PLUGINMENU in where:
25                 hide = config.plugins.pluginhider.hideplugins.value
26                 res.extend((x for x in self.plugins.get(PluginDescriptor.WHERE_PLUGINMENU, []) if x.name not in hide))
27                 where.remove(PluginDescriptor.WHERE_PLUGINMENU)
28
29         if PluginDescriptor.WHERE_EVENTINFO in where:
30                 hide = config.plugins.pluginhider.hideeventinfo.value
31                 res.extend((x for x in self.plugins.get(PluginDescriptor.WHERE_EVENTINFO , []) if x.name not in hide))
32                 where.remove(PluginDescriptor.WHERE_EVENTINFO)
33
34         if where:
35                 res.extend(PluginComponent.pluginHider_baseGetPlugins(self, where))
36         res.sort(key=lambda x:x.weight)
37         return res
38
39 def autostart(reason, *args, **kwargs):
40         if reason == 0:
41                 PluginComponent.pluginHider_baseGetPlugins = PluginComponent.getPlugins
42                 PluginComponent.getPlugins = PluginComponent_getPlugins
43         else:
44                 PluginComponent.getPlugins = PluginComponent.pluginHider_baseGetPlugins
45
46 def main(session, *args, **kwargs):
47         session.open(PluginHiderSetup)
48
49 def menu(menuid):
50         if menuid != "system":
51                 return []
52         return [(_("Hide Plugins"), main, "pluginhider_setup", None)]
53
54 def Plugins(**kwargs):
55         return [
56                 PluginDescriptor(
57                         where=PluginDescriptor.WHERE_AUTOSTART,
58                         fnc=autostart,
59                         needsRestart=False,
60                 ),
61                 PluginDescriptor(
62                         where=PluginDescriptor.WHERE_MENU,
63                         fnc=menu,
64                         needsRestart=False,
65                 ),
66         ]