[gelöst] Probleme in "displaymenudefault.xml" mit Token {pluginname} mit vdr-plugin-devstatus

  • Ich habe diese Woche das Update in yavdr-0.6 gemacht um zum einen KODI-17.x zu bekommen und auch endlich das aktualisierte skindesigner-1.2.3
    Im Prinzip verwende ich dazu den Skin "simplex", den ich noch auf meine Bedürfnisse etwas abgewandelt habe, da ich einen 65"-TV habe und nicht den ganzen Bilschirm für das OSD verwenden möchte.


    Nach dem Update auf skindesigner-1.2.3 von vorher skindesigner-0.7.2 habe ich nun ein paar Probleme bei der Darstellung.
    Speziell bei der Anzeige des Menüs für den Gerätestatus über das vdr-plugin-devstatus.
    Für die Darstellungen in der "displaymenudefault.xml" gibt es ja die Möglichkeit, einen Token zu nutzen, der durch den Pluginname gebildet wird:

    Code
    If a plugin is running, a token called as the name of the plugin is set to true
            {pluginname}                is set to true


    Mit z. B. dem systeminfo-Plugin funktioniert das z. B. auch einwandfrei, nur eben nicht mit dem Plugin "devstatus".
    Ich setze den Token ein, um bei der Anzeige vom Systeminfo und auch beim Gerätestatus z. B. die Anzeige von "item_menu.svg" zu unterdrücken.
    Der Abschnitt in der "displaymenudefault.xml" sieht bei mir folgendermaßen aus:

    Code
    <listelement>
                <area x="0" width="{areawidth}" layer="2">
                    <fill condition="not{current}" color="{clrTransparent}" />
                    <drawimage condition="{current} ++not{systeminfo} ++not{devstatus}" x="0" y="0" width="100%" height="100%" imagetype="skinpart" path="item_menu"/>
                    <drawimage condition="{separator} ++not{devstatus}" x="0" y="0" width="100%" height="100%" imagetype="skinpart" path="item_separator" />
                </area>


    Bei der Anzeige des Menüs "systeminfo" wird das "item_menu" wie gewollt nicht angezeigt!
    Aber beim "devstatus" wirkt das nicht, denn die Anzeige der "item_menu" und auch "item_separator" wird nicht unterdrückt.


    Genau diese Konfiguration hat beim "alten" skindesigner einwandfrei funktioniert, nur jetzt beim neuen skindesigner-Plugin geht es nicht mehr!
    Allerdings bin ich hier mit meinem Latein am Ende, denn ich weiß nicht, was ich noch tun soll, damit es wieder funktioniert.
    Bin ich der einzige mit dem Problem, oder wo ist der Fehler?


    Paul

    Einmal editiert, zuletzt von Paulaner ()

  • Moin,


    im "alten" Skindesigner wurden die Tokens für die Plugins generisch erzeugt, das hat nicht mehr zum Konzept gepasst, deshalb werden ab Skindesigner 1.0.0 die Tokens nur für definierte Plugins erzeugt.


    Um das devstatus Plugin zu erkennen, musst du den Skindesigner wie folgt patchen:


    Datei coreengine/definitions.h Zeile 814:

    Code
    ...
        remoteosd,
        filebrowser,
        epgsearch,
    +   devstatus,	
        count	
    };


    Datei coreengine/listelements.c Zeile 306:

    Code
    ...
        tokenContainer->DefineIntToken("{remoteosd}", (int)eLeMenuDefaultIT::remoteosd);
        tokenContainer->DefineIntToken("{filebrowser}", (int)eLeMenuDefaultIT::filebrowser);
        tokenContainer->DefineIntToken("{epgsearch}", (int)eLeMenuDefaultIT::epgsearch);
    +   tokenContainer->DefineIntToken("{devstatus}", (int)eLeMenuDefaultIT::devstatus);
        InheritTokenContainer();
    }


    Datei coreengine/listelements.c Zeile 433:

    Code
    ...
        } else if (!strcmp(plugName, "filebrowser")) {
            tokenContainer->AddIntToken((int)eLeMenuDefaultIT::filebrowser, 1);
        } else if (!strcmp(plugName, "epgsearch")) {
            tokenContainer->AddIntToken((int)eLeMenuDefaultIT::epgsearch, 1);
    -   }
    +   } else if (!strcmp(plugName, "devstatus")) {
    +       tokenContainer->AddIntToken((int)eLeMenuDefaultIT::devstatus1);
    +   }
    }


    Ciao Louis

  • Um das devstatus Plugin zu erkennen, musst du den Skindesigner wie folgt patchen:
    ...


    Du machst es einem als yaVDR-User wirklich nicht leicht, wo ich doch immer nur die "fertigen" Pakete einspiele! 8)
    Ich hoffe einfach mal, dass Du den Patch in einer der kommenden Versionen mit aufnimmst und alle User das dann nutzen können! :D
    Immerhin wissen wir jetzt, wo der Schuh drückt und wie wir das Problemchen beheben können.


    Paul

  • Code
    ...
        } else if (!strcmp(plugName, "filebrowser")) {
            tokenContainer->AddIntToken((int)eLeMenuDefaultIT::filebrowser, 1);
        } else if (!strcmp(plugName, "epgsearch")) {
            tokenContainer->AddIntToken((int)eLeMenuDefaultIT::epgsearch, 1);
    -   }
    +   } else if (!strcmp(plugName, "devstatus")) {
    +       tokenContainer->AddIntToken((int)eLeMenuDefaultIT::devstatus1);
    +   }
    }


    Fehlt da nicht ein Komma in der vorletzten Zeile?

    Code
    ...
        } else if (!strcmp(plugName, "filebrowser")) {
            tokenContainer->AddIntToken((int)eLeMenuDefaultIT::filebrowser, 1);
        } else if (!strcmp(plugName, "epgsearch")) {
            tokenContainer->AddIntToken((int)eLeMenuDefaultIT::epgsearch, 1);
    -   }
    +   } else if (!strcmp(plugName, "devstatus")) {
    +       tokenContainer->AddIntToken((int)eLeMenuDefaultIT::devstatus, 1);
    +   }

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Ein skindesigner-Paket mit dem Patch baut gerade für stable-vdr.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Super, dann werde ich das heute Abend mal testen, falls ich mal ungestört an den VDR komme! :D


    Paul

  • So, getestet und für gut befunden. :tup
    Läuft jetzt einwandfrei mit dem Token {devstatus}! Die Anzeige ist wieder bestens, ohne die störenden "item_menu" :D
    Ich habe auch noch eine separate Einstellung für die Anzeige vom Gerätestatus gemacht, da bei mir sonst die 1. Zeile "--- Gerät x --- (Gerät hat ... ) " teilweise abgeschnitten war.


    Vielen Dank an louis und @seahawk für ihre super Arbeit!
    Wenn jetzt noch die beiden anderen von mir gefundenen Bugs im aktuellen Skindesigner gefixt werden, dann wäre das super!


    Paul

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!