Zwei 'MenuList' in einem Screen

  • Zwei 'MenuList' in einem Screen

    Hallo,

    ich habe einen Screen mit 2 MenuList-Objekte; der Screen ist horizontal verteil.
    Wie kann ich die Selection(Kontrolle) von einer List zur anderen übertragen( z.B beim Drucken auf 'ok' oder 'right' Buttons)? ?(


    Brainfuck-Quellcode

    1. <screen position="%d,%d" size="%d,%d" title="%s" >
    2. <widget name="wPagesList" position="0,0" size="%d,%d" scrollbarMode="showOnDemand" />
    3. <widget name="entrieslist" position="%d,%d" size="%d,%d" scrollbarMode="showOnDemand" />
    4. ..............................
  • Hi,

    das ist eigentlich ganz einfach (achtung unvollständiger Beispielcode):

    Python-Quellcode

    1. def __init_(self, session):
    2. Screen.__init__(self, session)
    3. self.focusPages = True
    4. def changeFocus(self):
    5. self.focusPages = not self.focusPages
    6. self["wPagesList"].selectionEnabled(self.focusPages)
    7. self["entriesList"].selectionEnabled(not self.focusPages)
    8. def up(self):
    9. if self.focusPages:
    10. self["wPagesList"].up()
    11. else:
    12. self["entrieslist"].up()
    Alles anzeigen



    focusPages setzt du dann für die entsprechend andere Taste um.
    Ich empfehle dir beim legen des Focus in der Liste die gerad jeweils nicht den Focus hat die Methode MenuList.selectionEnabled(False) zu nutzen (und für die aktuell aktive Liste natürlich mit True wieder zu aktivieren).

    Dann kann der Nutzer sofort erkennen in welcher Liste sich was bewegt wenn er eine taste drückt ;)
    Falls du wissen möchtest welche Methoden so eine MenuList bietet kannst du das hier nachlesen: e2devel.com/apidoc/enigma2/db/…MenuList_1_1MenuList.html
    mfg ,
    Reichi
  • Reichi schrieb:

    focusPages setzt du dann für die entsprechend andere Taste um.
    Ich empfehle dir beim legen des Focus in der Liste die gerad jeweils nicht den Focus hat die Methode MenuList.selectionEnabled(False) zu nutzen (und für die aktuell aktive Liste natürlich mit True wieder zu aktivieren).

    Danke das funktioniert problemlos :thumbsup:

    Doch leider die Navigation bleibt bei der ersten MenuList :(

    Habe folgendes probiert:

    Quellcode

    1. def Up(self):
    2. if self.Pagesfocus:
    3. self["wPagesList"].up()
    4. else:
    5. self["entrieslist"].up()


    und hier meine Actionmap:

    Quellcode

    1. self["testActionMap"] = ActionMap(["ListboxActions", "ColorActions"],
    2. {
    3. "green":self.toggleList,
    4. "moveUp": self.Up,
    5. }, -1)


    Wenn ich die Taste 'up' drücke, sollte eigentlich die Funktion self.Up gerufen werden und genau hier ist das Problem. Die Funktion self.Up wird überhaupt nicht gerufen ?(
  • heißt deine Variable wirklich self.Pagesfocus?
    Im Beispiel heißt die ja self.focusPages

    ergänz doch mal deine Up(self) methode wie folgt:

    Quellcode

    1. def Up(self):
    2. print "[xyz].Up, focus is %s" %self.Pagesfocus
    3. if self.Pagesfocus:
    4. self["wPagesList"].up()
    5. else:
    6. self["entrieslist"].up()


    dann kannst du enigma2 auf der Konsole starten (via telnet/ssh anmelden, dann: init 5 dann: enigma2 zurück zu normal geht es dann mit init 3) und dir die Ausgabe ansehen.
    mfg ,
    Reichi
  • [gelöst] Danke für die Unterstützung :)

    Reichi schrieb:

    dann kannst du enigma2 auf der Konsole starten (via telnet/ssh anmelden, dann: init 5 dann: enigma2 zurück zu normal geht es dann mit init 3) und dir die Ausgabe ansehen.

    Das habe ich getan(ich benutze e2log.log...ist irgendwie komfortabler ;) ). Die Funktion self.Up wurde wirklich nicht gerufen.

    Das Problem war in der Actionmap, 'ListboxActions' musste duch 'WizardActions' ersetzt werden. So sieht meine Actionmap jetzt:

    Quellcode

    1. self["testActionMap"] = ActionMap(["WizardActions", "ColorActions"],
    2. {
    3. "green":self.toggleList,
    4. "up": self.Up,
    5. }, -1)


    Habe noch 2 kurze Fragen(ich weiß nicht ob ich dafür einen neuen Thread öffnen soll):

    1. Welche Bedeutung hat die '-1' am Ende der Actionmap ?
    2. Gibt es einen Möglichkeit, die 'backgroundColorSelected' Eigenschaft einer MenuList dynamisch zu ändern, z.B von #221122 auf #AAAAAA ohne die Plugin neustarten zu müssen?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von mfsmdvb ()