From b56bcb6768ce0fdb7124e02d2fd6a531b4068505 Mon Sep 17 00:00:00 2001 From: Stefan Pluecken Date: Tue, 8 Aug 2006 19:00:43 +0000 Subject: [PATCH] plugins can appear in the extensions menu now use PluginDescriptor.WHERE_EXTENSIONSMENU and the same parameters as for standard plugins (see the file manager plugin for an example) --- .../Plugins/Extensions/FileManager/plugin.py | 3 ++- lib/python/Plugins/Plugin.py | 2 +- lib/python/Screens/InfoBar.py | 7 ++++--- lib/python/Screens/InfoBarGenerics.py | 20 +++++++++++++++++++ 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/lib/python/Plugins/Extensions/FileManager/plugin.py b/lib/python/Plugins/Extensions/FileManager/plugin.py index 11f75a2b..d2b19719 100644 --- a/lib/python/Plugins/Extensions/FileManager/plugin.py +++ b/lib/python/Plugins/Extensions/FileManager/plugin.py @@ -66,4 +66,5 @@ def main(session, **kwargs): session.open(FileManager) def Plugins(**kwargs): - return PluginDescriptor(name="File-Manager", description="Let's you view/edit files in your Dreambox", where = PluginDescriptor.WHERE_PLUGINMENU, fnc=main) + return [PluginDescriptor(name="File-Manager", description="Let's you view/edit files in your Dreambox", where = PluginDescriptor.WHERE_PLUGINMENU, fnc=main), + PluginDescriptor(name="File-Manager", description="Let's you view/edit files in your Dreambox", where = PluginDescriptor.WHERE_EXTENSIONSMENU, fnc=main)] diff --git a/lib/python/Plugins/Plugin.py b/lib/python/Plugins/Plugin.py index b2808c8e..3a79e396 100644 --- a/lib/python/Plugins/Plugin.py +++ b/lib/python/Plugins/Plugin.py @@ -14,7 +14,7 @@ class PluginDescriptor: # you have to ignore unknown kwargs! # argument: session - WHERE_BLUEMENU = 0 + WHERE_EXTENSIONSMENU = 0 WHERE_MAINMENU = 1 WHERE_PLUGINMENU = 2 # argument: session, serviceref (currently selected) diff --git a/lib/python/Screens/InfoBar.py b/lib/python/Screens/InfoBar.py index ab82db6a..4a1f318a 100644 --- a/lib/python/Screens/InfoBar.py +++ b/lib/python/Screens/InfoBar.py @@ -19,7 +19,7 @@ from Screens.InfoBarGenerics import InfoBarShowHide, \ InfoBarSubserviceSelection, InfoBarTuner, InfoBarShowMovies, InfoBarTimeshift, \ InfoBarServiceNotifications, InfoBarPVRState, InfoBarCueSheetSupport, InfoBarSimpleEventView, \ InfoBarSummarySupport, InfoBarTimeshiftState, InfoBarTeletextPlugin, InfoBarExtensions, \ - InfoBarSubtitleSupport, InfoBarPiP, InfoBarSubtitles + InfoBarSubtitleSupport, InfoBarPiP, InfoBarSubtitles, InfoBarPlugins from Screens.HelpMenu import HelpableScreen, HelpMenu @@ -33,7 +33,7 @@ class InfoBar(InfoBarShowHide, HelpableScreen, InfoBarAdditionalInfo, InfoBarNotifications, InfoBarDish, InfoBarSubserviceSelection, InfoBarTuner, InfoBarTimeshift, InfoBarSeek, InfoBarSummarySupport, InfoBarTimeshiftState, InfoBarTeletextPlugin, InfoBarExtensions, - InfoBarPiP, InfoBarSubtitles, + InfoBarPiP, InfoBarSubtitles, InfoBarPlugins, InfoBarSubtitleSupport, Screen): ALLOW_SUSPEND = True @@ -56,7 +56,8 @@ class InfoBar(InfoBarShowHide, InfoBarEvent, InfoBarServiceName, InfoBarInstantRecord, InfoBarAudioSelection, \ InfoBarAdditionalInfo, InfoBarNotifications, InfoBarDish, InfoBarSubserviceSelection, \ InfoBarTuner, InfoBarTimeshift, InfoBarSeek, InfoBarSummarySupport, InfoBarTimeshiftState, \ - InfoBarTeletextPlugin, InfoBarExtensions, InfoBarPiP, InfoBarSubtitles, InfoBarSubtitleSupport: + InfoBarTeletextPlugin, InfoBarExtensions, InfoBarPiP, InfoBarSubtitles, InfoBarSubtitleSupport, \ + InfoBarPlugins: x.__init__(self) self.helpList.append((self["actions"], "InfobarActions", [("showMovies", _("view recordings..."))])) diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py index f2516c4b..c5018c2f 100644 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -1090,6 +1090,26 @@ class InfoBarExtensions: from Tools.BoundFunction import boundFunction +# depends on InfoBarExtensions +from Components.PluginComponent import plugins + +class InfoBarPlugins: + def __init__(self): + self.addExtension(extension = self.getPluginList, type = InfoBarExtensions.EXTENSION_LIST) + + + def getPluginName(self, name): + return name + + def getPluginList(self): + list = [] + for p in plugins.getPlugins(where = PluginDescriptor.WHERE_EXTENSIONSMENU): + list.append(((boundFunction(self.getPluginName, p.name), boundFunction(self.runPlugin, p), lambda: True), None)) + return list + + def runPlugin(self, plugin): + plugin(session = self.session) + # depends on InfoBarExtensions and InfoBarSubtitleSupport class InfoBarSubtitles: def __init__(self): -- 2.30.2