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. :/

    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

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

  • 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
    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 DMM)

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


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

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


    Edited once, last by CMikula ().