Kompatibilität mit "VDR-Standard"

  • Nach dem Lesen des ganzen threads bin ich der Ansicht, dass der eigentliche Fehler in skindesigner liegt.
    Das Plugin sollte eben nicht mehr Infos verwenden als vdr selbst mit seinen mitgelieferten Skins benutzt und sich 100% kompatibel verhalten.


    Andrerseits ist der patch trivial und tut nicht weh, also warum nicht einfach in wirbelscan ergänzen.
    Das ändert aber nichts daran, dass dieses skindesigner Plugin dann beim nächsten Plugin wieder auf die Nase fällt.



    Hallo Louis,


    mich hats auch getroffen.
    Ich habe für eine kleine Datenbankapplikation ein Plugin zur Anzeige über Infos zu meinen Aufnahmen geschrieben. Dabei habe ich noch das klassische (Basis) Erzeugen von Menus und Menuitems nach den Methoden abgeleitet

    Code
    class myFilmeDetailListMenu: public cOsdMenu {
    ...


    Code
    class myFilmeDetailListItem: public cOsdItem {
    ...


    Menuitems werden dabei mit Text gefüllt und orientieren sich an den gesetzten Tabs und sind entweder "selectable" oder "nonSelectable".
    Das funktioniert auch hevorragend unter den klassischen Skins des VDR (Klassik, LCARS) und gib ein gut lesbares formatiertes Bild wieder.


    Wenn ich jetzt allerdings deine Skins "metrixhd" (M) oder "estuary4vdr" (E) nehme, passieren hier Dinge, die zu dem "VDR-Standard" nicht kompatibel sind und mir das Menu total "verhauen".


    1. NonSelectable Zeilen:
    (M) linksbündig, aber nur der Inhalt bis "\t"
    (E) mittiger Text des Inhaltes bis "\t"
    erwartetes Verhalten: Darstellung Spaltenweise (evtl anderer Background oder Schriftfarbe).


    2. Selectable Zeilen:
    Darstellung ist Spaltenweise aber immer nur bis zum nächsten TAB
    erwartetes Verhalten: Wenn Text z.B. nur im ersten TAB ausgegeben wird sollte dieser, wenn kein weiterer Text in anderen Spalten steht, weitergeschrieben werden bis Zeilenende. D.h. Die TABs geben nur den Textbegin an aber nicht das Textende der vorhergehenden Spalte wieder.


    Denk doch mal darüber nach ob du nicht für die Menucategorien "mcUnkown" und "mcUndefined" versuchen kannst, hier wieder das "VDR-Standard"-Verhalten herzustellen. Andere Pluginentwickler werden's dir eventuell danken.


    Gruß
    msv

  • Seit wann gibt’s beim VDR Fähnchen?


    SCNR


    ;-D

    Blog


    VDR1 (Server): Gigabyte Z87-HD3, Intel(R) Core(TM) i7-4770S CPU @ 3.10GHz, 16GB RAM, NVIDIA GT 640 (Zotac), Digital Devices Cine V7, OrigenAE S21T, yavdr ansible an Röhre mit vga2scart

    VDR2 (Client): AsRock ION 330, yavdr-ansible auf Ubuntu 18.04 an Panasonic Beamer (HDMI)

  • Moin,


    was passiert denn, wenn du (am besten im Konstruktor deines Menüs)


    Code
    SetMenuCategory(mcPlugin);


    setzt?


    Ciao Louis

  • Das hat nichts geändert.


    Ich mache das so:


    Code
    myFilmeDetailMenu::myFilmeDetailMenu() :
            cOsdMenu(tr("Details")) {
            SetMenuCategory(mcPlugin);
            SetCols(25);
            Display();
            Set();
    }



    Hier fülle ich dann z.B. eine Zeile mit Inhalt:


    Ich halte mich nicht für den großen C++ Programmierer aber es funktionierte bisher gut


    gruß
    msv

  • Das hat nichts geändert.


    Ich mache das so:


    Code
    myFilmeDetailMenu::myFilmeDetailMenu() :
            cOsdMenu(tr("Details")) {
            SetMenuCategory(mcPlugin);
            SetCols(25);
            Display();
            Set();
    }



    Hier fülle ich dann z.B. eine Zeile mit Inhalt:


    Ich halte mich nicht für den großen C++ Programmierer aber es funktionierte bisher gut


    gruß
    msv

  • Hi,


    nachdem ich dein Eingangspost nochmal gelesen habe glaube ich, dass wir wohl aneinander vorbei reden ;)


    Kannst du einfach mal Screenshots machen? Am besten einen mit einen Skindesigner Skin und einem mit einem "Standard Skin".


    Ciao Louis

  • Moin,


    hm, um ehrlich zu sein, so wie du die Listenansicht verwendest, ist schon etwas "anders" ;) Eigentlich ist das ganze ja so gedacht, dass es feste Spalten mit festen Spaltenbreiten gibt. Du mischt aber zweispaltige Ausgabe (z.B. bei den Schauspielern) mit einer einspaltigen Ausgabe (z.B. Lang- und Kurztext). Ich habe den Skindesigner so angelegt, dass er von festen Spalten ausgeht, das funktioniert bei deinem Anwendungsfall so natürlich nicht.


    Ich möchte die Logik beim Skindesigner auch nicht ändern, da ansonsten die Ansichten anderer Plugins kaputt gehen. Ohne jetzt zu tief ins Detail zu gehen habe ich mir schon ziemlich einen abgebrochen, dass einigermaßen generisch hinzubekommen. Ich musste einen Kompromiss finden zwischen der Einflußnahme des Skinners über die XML Syntax und der Art und Weise, wie der VDR diese Menüs behandelt.


    Um dein konkretes Problem nun zu lösen, gibt es verschiedene Möglichkeiten:


    - du setzt per SetCols() die Spaltenbreite der ersten Spalte über den ganzen Bildschrim. Dann wird zumindest alles angezeigt. Dann musst du aber die zweispaltige Ausgabe bei den Schauspielern auch einspaltig machen. Wenn du dann noch die Anzeige der Separatoren im XML File (weiter unten verlinkt) entsprechend anpasst, sollte das Ergebnis analog zu den Standard Skins sein.
    - du benutzt DisplayMenu()->SetText(text) anstelle der Ausgabe in einer Liste. Aus meiner Sicht wäre das das sinnvollste. Damit kannst du deinen Text in einer Textbox ausgeben (so wie z.B. in der EPG Detailansicht oder bei der Ausgabe der Logs über "Commands")
    - du sagst mir wie das Plugin heisst, dann kann ich einen entsprechenden Token einbauen, damit du im Skindesigner XML File für das Default Menü (dieses hier z.B. für estuary4vdr) das Verhalten genau für dein Plugin anpassen. Wie du an dem verlinkten XML File siehst, wird da z.B. speziell auf das neutrinoepg Plugin eingegangen, um die Progress Bars in diesem Plugin hübsch zu zeichnen.
    - du benutzt keinen Skindesigner Skin ;)


    Ciao Louis

  • Hi,


    Schade, dann wohl erstmal ohne Skindesigner. Sieht zwar toll aus, aber ich habe schon zu viele Plugins den Jordan runter gehen gesehen um jetzt mein Plugin von der geänderten Funktionalität eines anderen Plugins abhängig zu machen.


    Für mich ist hier das Standard API des VDR die Messlatte und da wurden TABS in Menuitems wie in einer Textverarbeitung implementiert, d.h. ich kann mit einem "\t" zur nächsten Spalte springen, aber ich kann den Text auch einfach bis zum Zeilenende laufen lassen. Diese Funktionalität hast du ja nun leider gegen ein anderes Construct getauscht, ohne die alte Funktionsweise alternativ bestehen zu lassen. Ebenso hast du die Formatierung und das Tab-handling von nicht selektierbaren Menuitems so verändert, daß sie eigentlich nicht mehr für normalen Text in solch einem Menu zu gebrauchen sind. Auch hier wieder alternativ los zum "klassischen VDR". Vielleicht fällt dir hierzu ja noch irgendwann eine Lösung ein...


    Aber wie gesagt, ich glaube, daß du den richtigen Weg eingeschlagen hast, dem VDR ein schöneres Gesicht zu geben. Denn die neuen Skins sehen einfach klasse aus. Aber der Hauptzweck des VDRs ist es, Live-TV und Aufnahmen wiederzugeben. Und wenn ich mir überlege, wie das zeitliche Verhältnis zwischen dem Anschauen von TV Inhalten und dem Erfreuen an schönen OSD Skins ist, schlägt das Pendel doch zu Gunsten des TV-Inhaltes aus. Also irgend ein Skin ( und wenn es LCARS ist) wirds schon tun.


    Trotzdem Danke für die Tipps
    msv

Jetzt mitmachen!

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