Noch the Skin Frage - Wie im MediaPlayer je nach Konfiguration einen anderen SKIN aus "skin_user.xml" laden?

  • An die Dream Skin Spezialisten,


    wie kann ich je nach Konfiguration des MediaPlayers einen anderen Skin aus "skin_user.xml" laden?

    Das geht doch bestimmt.


    Zusatzfrage:


    Wie kann man in einem Config Menu zusätzlich zwischen zwei Settingszeilen einen Trennstrich einbauen?

    Bisher leider kein Beispiel in den Sources gefunden


    Hat da jemand einen hilfreichen Tipp für mich?


    /Willi/

  • Wie kann man in einem Config Menu zusätzlich zwischen zwei Settingszeilen einen Trennstrich einbauen?

    Bisher leider kein Beispiel in den Sources gefunden

    Du kannst "leere" Zeilen einfügen (also Zeilen ohne config)


    self.list.append(getConfigListEntry("", ))

    self.list.append(getConfigListEntry("-----------------------------------", ))


    Die erste Zeile wäre eine Leerzeile, die zweite eine Trennlinie, wobei DreamOS bei Zeilen mit Text aber ohne config automatisch eine Trennlinie daruntersetzt.


    Du kannst dir also dein Setup auch in Rubriken/Bereiche (Überschriften) aufteilen:

    (also zwischen die betreffenden Setup-Optionen einfach eine Rubrik/Überschrift dazwischenschieben)

    ...

    self.list.append(getConfigListEntry("meine Rubrik", ))

    ...

    Gruß Sven (aka Dreamy)


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

  • Danke an alle - funktioniert alles.


    Aber noch ein paar Fragen:


    Gibt es eine Plugin lokale "skin.xml"? Heißt eine die aus dem selben Ordner gelesen wird in der auch die "plugin.py" steht?

    Eine "keymap.xml" wird aus dem "plugin.py" Ordner gelesen. Eine "skin.xml" dagegen nicht (anderer Datei Name?).


    Gibt es eine Screen Restartmöglichkeit innerhalb eines Programms, so das der neue SKIN gelesen wird und dann auch angezeigt wird?


    /Willi/

  • Ein automatisches Verwenden einer skin.xml aus dem Plugin-Ordner gibt es nicht.


    Du kannst aus lokalen xml-Dateien gezielt einen Screen im __init__ des Screens nachladen.

    (da darf in der xml aber nur der eine screen enthalten sein)

    Code
    with open("pfad_name.xlm"), 'r') as f:
        self.skin = f.read()

    Eine ganze skin-Datei mit mehreren Screens und Farbdefinitionen usw. kannst du so bei Pluginstart nachladen:

    Python
    from skin import loadSkin 
    loadSkin("pfad_name.xml") 

    Den Screen live neu laden ist grundsätzlich nicht vorgesehen.

    Du kannst ihn aber einfach nochmal öffnen und den eigentlichen dann schließen.

    Code
    ...
    self.session.open(MeinScreenClassName)
    self.close()

    Das kann aber je nach Anwendungsfall auch Probleme bereiten, so dass es nur ein Workaround ist.

    Bei den meisten Plugins kommt dann eine Meldung, dass eine Skin-Änderung erst bei Neustart des Plugins erfolgt.

    Gruß Sven (aka Dreamy)


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

  • Hallo Sven,


    wie immer vielen Dank für Deine ausführliche Hilfe.


    Ich habs das jetzt wie folgt gelöst:


    Die persönliche SKIN Definition einfach mit in den Code aufgenommen.

    Durch Setzen von "self.skinName" auf einen unbenutzten Namen wird der dann auch

    genutzt. Notfalls kann der dann wieder über einen Eintrag in "skin_user.xml" überschrieben

    werden.


    Das Screen Reload habe ich gestrichen. Dann muss ich das Programm bei entsprechender Konfi-

    gurations Änderung halt neu starten. Nicht so ganz befriedigend - aber OK!


    /Willi/