Fragen zu MenuList in Plugin

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Fragen zu MenuList in Plugin

      Ich habe mir ein Plugin gebaut, welches eine Liste mit Menübefehlen aufbaut und diese dann über MenuList anzeigt.

      Source Code

      1. list = []
      2. list.append(("1 - ...", "com_1"))
      3. list.append(("2 - ...", "com_2"))
      4. ...
      5. list.append((_("0 - Ende"), "exit"))
      6. Screen.__init__(self, session)
      7. self["myMenu"] = MenuList(list)
      8. self["myActionMap"] = ActionMap(["SetupActions"],
      Funktioniert auch alles. 2 Dinge würde ich gerne noch ändern. Gibt es eine Möglichkeit, beim Anzeigen der Liste gleich auf einen bestimmten Eintrag zu springen (Defaultwert). Und 2. kann ich über der Liste eine Überschrift anzeigen oder muss ich die in die Liste mit integrieren. Danke im Voraus.
    • Eine Überschrift über der Liste ist ein eigenes Widget, hat mit der Liste selbst nichts zu tun. Die Anzeige ist vom Skin abhängig.

      Kannst es mal mit den Titel versuchen.

      Python Source Code

      1. def __INIT__
      2. self.onLayoutFinish.append(self.onLayout)
      3. def onLayout(self):
      4. self.setTitle("Überschrift")


      Innerhalb der Liste kannst einen "Blanko" Eintrag setzen

      Source Code

      1. self.list.append(getConfigListEntry(_(" (Infotext)")))


      Selektieren kannst so:

      Python Source Code

      1. self["myMenu"].setCurrentIndex(Index)
      Rechtschreibfehler sind beabsichtigt, sie fördern ein genaueres Lesen
      Debug Log aktivieren Putty Telnet Screenshots erstellen
    • Habe das mit dem Index jetzt ausprobiert, leider schmiert mir das Plugin jetzt ab. Ist der Index die Variable aus der Liste (z.B. com_1) oder der Index innerhalb der Liste (z.B. 2). Bei der 2. Lösung schmiert das Plugin nach Aufruf ab. Kommt das self["myMenu"].setCurrentIndex(Index) nach dem self["myMenu"] = MenuList(list), muss ja eigentlich, da es ja sonst noch nicht definiert ist.
    • Hast es dich schon selbst beantwortet.
      Das Setzen vom Index muss natürlich nach der Definition von mylist kommen. Eventuell sogar in „onlayout“

      Der Index ist die Nummer vom Eintag beginnend mit 0
      Rechtschreibfehler sind beabsichtigt, sie fördern ein genaueres Lesen
      Debug Log aktivieren Putty Telnet Screenshots erstellen

      The post was edited 1 time, last by hajeku123 ().

    • bitte sehr...

      Auswahl_233.png
      Display Spoiler


      Python Source Code

      1. #!/usr/bin/env python
      2. # -*- coding: utf-8 -*-
      3. from Plugins.Plugin import PluginDescriptor
      4. from Components.config import config,ConfigSubsection,ConfigInteger,ConfigSelection,ConfigYesNo,getConfigListEntry,ConfigText
      5. from Components.ConfigList import ConfigListScreen
      6. from Screens.Screen import Screen
      7. from Components.Sources.StaticText import StaticText
      8. from Components.ActionMap import NumberActionMap,ActionMap
      9. from Screens.MessageBox import MessageBox
      10. import traceback
      11. import sys
      12. config.plugins.xtest = ConfigSubsection()
      13. config.plugins.xtest.onoff = ConfigSelection(default = "on", choices = [("on", _("on")), ("off", _("off"))])
      14. config.plugins.xtest.e1 = ConfigText(default = "Eintrag 1", fixed_size = False)
      15. config.plugins.xtest.e2 = ConfigText(default = "Eintrag 2", fixed_size = False)
      16. config.plugins.xtest.e3 = ConfigInteger(default = 1, limits = (1, 999))
      17. config.plugins.xtest.e4= ConfigYesNo(default = True)
      18. config.plugins.xtest.none = ConfigSelection(default = " ", choices = [(" ", _(" "))])
      19. class xtest_config(ConfigListScreen,Screen):
      20. def __init__(self, session):
      21. try:
      22. print "[XTEST] xtest_config"
      23. Screen.__init__(self, session)
      24. self.session=session
      25. self.skinName = ["XTEST", "Setup"]
      26. self.onChangedEntry = [ ]
      27. self.list = []
      28. self['key_red'] = StaticText(_('Cancel'))
      29. self['key_green'] = StaticText(_('OK'))
      30. self.createsetup()
      31. self['actions'] = NumberActionMap(["ColorActions","SetupActions"],
      32. {'cancel': self.keyCancel,
      33. 'green': self.ok,
      34. 'ok': self.ok
      35. }, -1)
      36. ConfigListScreen.__init__(self, self.list, session = session, on_change = self.changedEntry )
      37. self.onLayoutFinish.append(self.onLayout)
      38. print "[XTEST] /xtest_config"
      39. except:
      40. print "[XTEST] ERROR", sys.exc_info()[0],sys.exc_info()[1]
      41. traceback.print_exc()
      42. def keyCancel(self):
      43. try:
      44. for x in self["config"].list:
      45. if len(x)>1:
      46. x[1].cancel()
      47. self.close()
      48. except:
      49. print "[XTEST] ERROR", sys.exc_info()[0],sys.exc_info()[1]
      50. traceback.print_exc()
      51. def onLayout(self):
      52. try:
      53. self.setTitle("Überschrift")
      54. self["config"].setCurrentIndex(5)
      55. except:
      56. print "[XTEST] ERROR", sys.exc_info()[0],sys.exc_info()[1]
      57. traceback.print_exc()
      58. def createsetup(self):
      59. try:
      60. index=len(self.list)-1
      61. while index>=0:
      62. del self.list[index]
      63. index-=1
      64. self.list.append(getConfigListEntry(_(" (Infotext)")))
      65. self.list.append(getConfigListEntry(_(" ")))
      66. self.list.append(getConfigListEntry(_("Eintrag 1"),config.plugins.xtest.e1))
      67. self.list.append(getConfigListEntry(_("Eintrag 2"),config.plugins.xtest.onoff))
      68. if config.plugins.xtest.onoff.value == "on":
      69. self.list.append(getConfigListEntry(_(" Eintrag 2"),config.plugins.xtest.e2))
      70. self.list.append(getConfigListEntry(_("Eintrag 3"),config.plugins.xtest.e3))
      71. self.list.append(getConfigListEntry(_("OK drücken"),config.plugins.xtest.none))
      72. self.list.append(getConfigListEntry(_("Eintrag 4"),config.plugins.xtest.e4))
      73. except:
      74. print "[XTEST] ERROR", sys.exc_info()[0],sys.exc_info()[1]
      75. traceback.print_exc()
      76. def changedEntry(self):
      77. try:
      78. print "[XTEST] changedEntry"
      79. self.createsetup()
      80. cur = self["config"].getCurrent()
      81. self["config"].setList(self.list)
      82. if cur and cur is not None:
      83. self["config"].updateConfigListView(cur)
      84. except:
      85. print "[XTEST] ERROR", sys.exc_info()[0],sys.exc_info()[1]
      86. traceback.print_exc()
      87. def ok(self):
      88. try:
      89. if self['config'].getCurrent()[0] == "OK drücken":
      90. self.session.open(MessageBox, _("OK gedrückt\n\nDieses Fenster schließt automatich..."), MessageBox.TYPE_INFO, timeout = 10)
      91. else:
      92. for x in self["config"].list:
      93. if len(x)>1:
      94. print "[XTEST] Save: " + str(x[0]) + "=" + str(x[1].value)
      95. x[1].save()
      96. self.close()
      97. except:
      98. print "[XTEST] ERROR", sys.exc_info()[0],sys.exc_info()[1]
      99. traceback.print_exc()
      100. def main(session, **kwargs):
      101. try:
      102. session.open(xtest_config)
      103. except:
      104. print "[XTEST] ERROR", sys.exc_info()[0],sys.exc_info()[1]
      105. traceback.print_exc()
      106. def Plugins(path,**kwargs):
      107. list = []
      108. list.append(PluginDescriptor(name="XTEST", description=_("XTEST"), where = PluginDescriptor.WHERE_PLUGINMENU, fnc=main))
      109. return list
      Display All
      Rechtschreibfehler sind beabsichtigt, sie fördern ein genaueres Lesen
      Debug Log aktivieren Putty Telnet Screenshots erstellen
    • Hallo hajeku123,

      wie kann ich hier den Wert

      config.plugins.xtest.e3 = ConfigInteger(default = 1, limits = (1, 999))

      in der MessageBox anzeigen?

      self.session.open(MessageBox, _("OK gedrückt %s \n\nDieses Fenster schließt automatich...%s ") % (self.xtest.e3) , MessageBox.TYPE_INFO, timeout = 10)

      oder wie komme ich an den Wert ran?

      PiT
    • self.session.open(MessageBox, _("OK gedrückt \n\nDieses Fenster
      schließt automatich..." + str(config.plugins.xtest.e3.value)) , MessageBox.TYPE_INFO,
      timeout = config.plugins.xtest.e3.value)
      Rechtschreibfehler sind beabsichtigt, sie fördern ein genaueres Lesen
      Debug Log aktivieren Putty Telnet Screenshots erstellen

      The post was edited 1 time, last by hajeku123 ().