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
    1. def changed(self):
    2. current = self["config"].getCurrent()
    3. if current[1] == config.plugins.testplugin.testKey:
    4. #mache irgendwas
    5. ...

    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
    1. current[1].__name__
    2. current[1].__keyname__

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

    Gruß Sven (aka Dreamy)


    (DM920 mit unstable OE2.5 DMM)

    Edited once, last by 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 ;)

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

    So sieht es wohl aus :(

    current[1] ist ja das Config-Element.


    folgender Code:

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

    ergibt das hier:

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

    Gruß Sven (aka Dreamy)


    (DM920 mit unstable OE2.5 DMM)

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

    Klingt gut. :thumbup:

    Kannst du mir mal einen Denkanstoß geben ?

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


    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 ;)

    Gruß Sven (aka Dreamy)


    (DM920 mit unstable OE2.5 DMM)

    Edited 2 times, last by Sven H ().

  • So ;)