config-keyName eines Config-Elements ermitteln

  • Hallo


    Man kann ja im ConfigListScreen im changed der config-List abfragen, welches Config-Element da geändert wurde.

    Code
        def changed(self):
            current = self["config"].getCurrent()
            if current[1] == config.plugins.testplugin.testKey:
                #mache irgendwas
                ...

    Da kann ich ja dann das current[1] mit einem bestimmten Config-Element prüfen und dann im Code unterschiedliche Dinge machen je nach Config-Element.


    Gibt es nun aber eine Möglichkeit, wie ich von current[1] (config.plugins.testplugin.testKey) auf den Keynamen "testKey" des Config-Elements komme ?

    Solche Sachen gehen da leider nicht:

    Code
    current[1].__name__
    current[1].__keyname__

    Im .__dict__ und .__class__.__dict__ ist leider auch nichts zu finden. :thinking_face:

    Gruß Sven (aka Dreamy)


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

    Einmal editiert, zuletzt von Sven H ()

  • pos = current[1].rfind(.)

    key = current[1][pos:]


    Grundsätzlich ist der Key immer der komplette "String", da testKey nicht unique ist. Daher kannst du wohl auch nicht darauf zugreifen.

    Gruss
    Dre


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

  • dre

    Danke für die Idee - hatte kurz Hoffnung :winking_face:

    imho ist current[1] ein objekt... daher wird das mit string funktionen nicht funktionieren.

    So sieht es wohl aus :frowning_face:

    current[1] ist ja das Config-Element.


    folgender Code:

    Code
    current = self["config"].getCurrent()
    print "===", current[1]
    pos = current[1].rfind(".")

    ergibt das hier:

    Code
    === <Components.config.ConfigSelectionNumber object at 0xa4015810>
    Traceback (most recent call last):
    File "....py", line 201, in changed
    pos = current[1].rfind(".")
    AttributeError: 'ConfigSelectionNumber' object has no attribute 'rfind'

    Gruß Sven (aka Dreamy)


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

  • Das macht so ja auch Sinn, weil du es dann genau wie das originale benutzen kannst :smiling_face:


    Du kannst dir aber selber relativ leicht eine getCurrentName machen :thinking_face:

  • Du kannst dir aber selber relativ leicht eine getCurrentName machen :thinking_face:

    Klingt gut. :thumbs_up:

    Kannst du mir mal einen Denkanstoß geben ?

    Grüble da ja schon ne Weile rum und finde einfach keinen neuen Ansatz mehr :winking_face:


    Edit:

    aktuell gebe ich im getConfigListEntry noch einen 3. Parameter als String mit, den ich dann im changed mit current[2] auswerte.

    Wenn ich aber aus dem Config-Objekt auch den Namen als String zurückbekomme, könnte ich mir das sparen :winking_face:

    Gruß Sven (aka Dreamy)


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

    2 Mal editiert, zuletzt von Sven H ()

  • So :winking_face:


    Einmal editiert, zuletzt von CMikula ()