Hallo
Da man Menü-Einträge im Erweiterungsmenü (where = [PluginDescriptor.WHERE_EXTENSIONSMENU]) normalerweise nur nach einem GUI-Neustart hinzufügen/entfernen kann, hab ich mir mal eine Lösung gebastelt, um das live im SetupScreen zu erledigen (also ohne GUI-Neustart)
Dazu habe ich im SetupScreen eine Option zum Anzeigen des Plugin im Erweiterungsmenü (config.plugins.updatecheck.show_extmenu.value).
Im keySave (Speichern der Settings) wird dann je nach Einstellung der Menü-Eintrag live im Erweiterungsmenü hinzugefügt bzw. entfernt.
Bisher habe ich keine Einschränkungen bei der Nutzung festgestellt.
Falls es aber doch irgendwo Probleme macht bzw. machen könnte, wäre ich für einen Tipp dankbar.
Hier mal beispielhaft der Code aus meinem UpdateCheck-Plugin:
(die Imports habe ich zum besseren Verständnis mal in die functions gelegt)
def remove_ExtensionsMenu(self):
from Plugins.Plugin import PluginDescriptor
from Components.PluginComponent import plugins
pluginName = _("UpdateCheck")
pdList = [(p) for p in plugins.getPlugins(where = [PluginDescriptor.WHERE_EXTENSIONSMENU]) if p.name== pluginName]
for pd in pdList:
print "=== remove"
plugins.removePlugin(pd)
if not pdList:
print "=== not to remove"
def add_ExtensionsMenu(self):
from plugin import checkupdate #import the fnc-function from plugin.py if setupScreen is an other modul
from Tools.LoadPixmap import LoadPixmap
from Plugins.Plugin import PluginDescriptor
from Components.PluginComponent import plugins
pluginName = _("UpdateCheck")
fnc = checkupdate
pdList = [(p) for p in plugins.getPlugins(where = [PluginDescriptor.WHERE_EXTENSIONSMENU]) if p.name== pluginName]
icon = LoadPixmap("/usr/lib/enigma2/python/Plugins/Extensions/UpdateCheck/UpdateCheck.png")
pd = PluginDescriptor(name = pluginName, where= PluginDescriptor.WHERE_EXTENSIONSMENU, fnc = fnc, needsRestart = False, icon = icon)
if pd not in pdList:
plugins.addPlugin(pd)
print "=== add"
else:
print "=== not to add"
def keySave(self):
self.saveAll()
if config.plugins.updatecheck.show_extmenu.value:
self.add_ExtensionsMenu()
else:
self.remove_ExtensionsMenu()
self.close()
Alles anzeigen