Fragen zur ActionMap

  • hi, hab mal ein paar verstaendnisfragen zur ActionMap.

    die definition sieht ja so aus.

    Code
            self["actions"] = HelpableActionMap(
                self,
                "SomeActions",
                {
                     ... keys and functions ...
                },
                prio=-2
            )

    klar ist mir, dass "SomeActions" mit der definition von "SomeActons" in der keymap.xml korrespondiert.

    aber was ist mit self["actions"]... diese variable scheint beliebig zu sein und mit nichts zu korrespondieren. allerdings muss anscheinend jede ActionMap einen anderen variablennamen haben.

    und last but not least: wozu ist die prio? die scheint von positiv = niedrig bis negativ = hoch definiert zu sein.

    danke.

  • Du kannst theoretisch immer den gleichen Namen nehmen. Dann überlebt einfach nur die letzte HelpableActionMap. Die restlichen werden überschrieben. Wie du erkannt hast, kann der Name frei vergeben werden, wie bei Variablen halt immer. Die Variable hält den Pointer auf die HelpableActionMap und damit kannst du z.B. self["actions"].setEnabled(False) machen, d.h. du kannst Funktionen aus der class aufrufen.

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • Die Prio legt noch fest, in welcher Reihenfolge unterschiedliche ActionMaps mit gleichen Tastenbelegungen umgehen.


    Falls du in einem Plugin eine Taste belegen willst, die aber möglicherweise schon woanders global belegt ist, dann hilft oft die Prio, um der eigenen ActionMap den Vorzug zu gewähren.

    Wobei hier glaub ich der kleinste Wert gewinnt, weshalb man das oft mit -2 verwendet.

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • danke, was mir auch noch aufgefallen ist: wenn ich help aufrufe, dann werden viel mehr tasten angezeigt, als in meinen actionmaps definiert sind. diese zusaetzlichen tasten funktionieren nicht, es kommt das symbol oben rechts, nur der help text wird angezeigt.

    sollte eigentlich nicht sein, oder?

  • wo genau? Bei mir werden in der Hilfe immer genau die Tasten angezeigt, welche in der HelpableActionMap definiert sind.

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • es tritt in meinem plugin auf :smiling_face:

    hier ein screenshot:

    diese gruene taste ist in den actionmaps meines plugins nicht belegt (die anderen farbtasten auch nicht). trotzdem werden sie in help angezeigt.

    wie gesagt, die tasten funktionieren auch nicht, es kommt das geblockt-symbol oben rechts.

    ich vermute, es hat etwas mit den infobar klassen zu tun, die ich als parents in mein plugin hole... aber bin bisher nicht dahinter gekommen, dass die tasten nicht funktionieren (sollen sie auch nicht) aber in help angezeigt werden.

    edit: die ok und die stop-taste fehlen dagegen (funktionieren aber :-))

    Einmal editiert, zuletzt von alpha ()

  • Wenn du in deinem Plugin eine andere class als Basis nutzt und diese erweiterst, dann stehen dir die Funktionen dieser class auch zur Verfügung. Meine Vermutung ist nun, dass du in deinem Plugin die Actions überschreibst, die Liste für die Hilfe aber unverändert bleibt, da du dort ja auch actions aus mehreren HelpableActionMap hinzufügen kannst.

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • ja, das klingt logisch.

    und in einem fall funktioniert es auch. ich verwende InfoBarCueSheetSupport und erbe nextmarker, previousmarker und togglemarker. die funktionieren und tauchen in help auf, ohne dass ich was mache, ausser InfoBarCueSheetSupport.__init__(self).

    wie wuerde ich eine actionmap ueberschreiben?

    ich muesste doch eine deklarieren mit demselben namen, der schon in einer base class verwendet wird. waere dann aber reiner zufall... muss ich checken.

  • also es handelt sich z.B. um die "InfobarSeekActions", die in der /usr/share/enigma/keymap.xml als farbtasten definiert sind... und im help screen auch so angezeigt werden.

    nur funktionieren die seekfunktionen nicht mit den farbtasten sondern mit cursor links, rechts, etc.

    alles sehr merkwuerdig..........

    Einmal editiert, zuletzt von alpha ()

  • glaube, das funktioniert einfach nicht richtig... habe jetzt mal den standard movieplayer ausprobiert, da werden auch dieselben falschen keys angezeigt.

    und im mediaportal wird im player gar kein help angezeigt... wahrscheinlich aus gutem grund.

    werde dann wohl auch ne einfache actionmap ohne help verwenden.

    Einmal editiert, zuletzt von alpha ()