Hallo,
ritzMo hat hier vor vielen Jahren mal einen Codeschnipsel gepostet:
Open plugin from your own menu in E2
Da der Thread sehr alt ist wollte ich den jetzt nicht wiederbeleben und habe daher hier einen neuen aufgemacht, ich hoffe das ist OK so.
Basierend auf seinem Code habe ich ein mini Plugin gebastelt, welches es mir erlauben soll ein Plugin dass diese Funktion selbst nicht mitbringt aus dem Hautpmenü aufzurufen. Im konkreten Falle EMC, aber auch andere.
from Plugins.Plugin import PluginDescriptor
from Screens.Screen import Screen
class PluginOpener(Screen):
skin = """
<screen position="0,0" size="1,1" title="" >
</screen>
"""
def __init__(self, session, args = None):
Screen.__init__(self, session)
self.onShown.append(self.openPlugin)
def openPlugin(self):
# Import Main-Function (could be dynamic but this would make this a lot more complicated)
from Plugins.Extensions.EnhancedMovieCenter.plugin import recordingsOpen as emc_recordingsOpen
# Call main Function
emc_recordingsOpen(self.session)
# Close this helper
self.close()
def main(session, **kwargs):
session.open(PluginOpener)
def menu_main(menuid, **kwargs):
if menuid == "mainmenu":
return [(_("Enhanced Movie Center"), main, "enhancedmoviecenter", 46)]
return []
def Plugins(**kwargs):
descriptors = []
descriptors.append( PluginDescriptor(name = "EnhancedMovieCenter_to_Menu", description = "Adds EMC to Menu", where = [PluginDescriptor.WHERE_MENU], fnc = menu_main))
return descriptors
Alles anzeigen
Das klappt auch alles soweit und für manche Plugins ohne Probleme. Leider gibt es aber gerade beim EMC ein Problem sobald man eine Aufnahme abspielen möchte. Dann schließt sich das Plugin einfach und auf der Shell meldet E2:
EMC: [showMoviesCallback] exception:
modal open are allowed only from a screen which is modal!18:26:39.1164 Plugins/Extensions/EnhancedMovieCenter/EMCTasker.py:43 emcDebugOut
18:26:39.1165 Plugins/Extensions/EnhancedMovieCenter/EMCTasker.py:46 emcDebugOut Unexpected error: <type 'exceptions.RuntimeError'>
18:26:39.1166 Traceback (most recent call last):
18:26:39.1167 File "/usr/lib/enigma2/python/Plugins/Extensions/EnhancedMovieCenter/plugin.py", **** 508, in showMoviesCallback
18:26:39.1173 gSession.openWithCallback(playerCallback, EMCMediaCenter, *args)
18:26:39.1173 File "/usr/lib/enigma2/python/mytest.py", **** 317, in openWithCallback
18:26:39.1179 dlg = self.open(screen, *arguments, **kwargs)
18:26:39.1180 File "/usr/lib/enigma2/python/mytest.py", **** 323, in open
18:26:39.1181 raise RuntimeError("modal open are allowed only from a screen which is modal!")
18:26:39.1181 RuntimeError: modal open are allowed only from a screen which is modal!
18:26:39.1197 Screens/Screen.py:151 show [SCREENNAME] ['menu_mainmenu', 'Menu']
Alles anzeigen
Meine Python und Plugin Kenntnisse sind sehr begrenzt, ich würde mich daher freuen wenn mir hier jemand weiterhelfen könnte.
Vielleicht gibt es so etwas ja auch schon fertig?
Danke !