TVGuideNG und Skindesigner 0.3.0 - Advanced Plugin Interface

  • Moin,


    wie bereits angekündigt war mein Ziel, den TVGuide "Skindesignerfähig" zu machen...und das habe ich nun endlich fertig ;) Es war zwar aufwändiger als ursprünglich naiv erwartet, aber ich musste den TVGuide in einigen Teilen komplett neu schreiben, da sich die komplette "Ausgabeschicht" geändert hat. Herausgekommen ist ein neues Plugin TVGuideNG.


    Wer es testen möchte, geht wie folgt vor:


    - skindesigner 0.3.0 installieren
    - WICHTIG: weatherforcast Plugin (falls vorhanden) auf Version 0.0.3 upgraden
    - TVGuideNG Plugin installieren:

    Code
    git clone git://projects.vdr-developer.org/vdr-plugin-tvguideng.git


    oder
    http://projects.vdr-developer.…n-tvguideng-0.0.2.tar.bz2


    Das Plugin hat keine Startoptionen.


    WICHTIG: Das Plugin funktioniert nur mit Skindesigner Skins, die auch die passenden Templates zur Verfügung stellen. Die mitgelieferten Skins beinhalten natürlich entsprechende Templates.


    TVGuideNG benutzt das "advanced Plugin Interface"...aktuell müssen Plugins, die das benutzen wollen, das Verzeichnis "libskindesigner" aus dem Skindesigner Git in ihr Pluginverzeichnis kopieren und die Dateien daraus in ihrer OBJS Variable im Makefile aufnehmen...wie das ganze funktioniert, kann man sich im TVGuideNG Plugin bei Bedarf ansehen...read the source luke. Ich werde dazu aber auch noch eine Doku im Wiki hinterlegen, das ist in Arbeit. Wenn es Fragen gibt (Chris scheint ja mit seinem Plex Plugin schon in den Startlöchern zu stehen ;) ), als her damit. Mittelfristig möchte ich auch die libskindesigner in eine eigene Lib auslagern, wie es Lars schon vorgemacht hat. Aber alles zu seiner Zeit.


    Jo...testet bitte mal schön, da sind sicherlich noch einige Bugs versteckt ;D Als Appetizer zwei Screenshots...


    TVGuide MetrixHD
    TVGuide Blackhole


    Ciao Louis

  • Darf man davon ausgehen, dass tvguideng tvguide ersetzt? (Direkter Nachfolger)


    WICHTIG: Das Plugin funktioniert nur mit Skindesigner Skins, die auch die passenden Templates zur Verfügung stellen. Die mitgelieferten Skins beinhalten natürlich entsprechende Templates.


    Kommt da noch ein Fallback?

  • Moin,


    Kommt da noch ein Fallback?


    Fallback ist das TVGuide Plugin ;) Ich habe mich dazu entschieden, das nicht zu vermischen, da der Code im TVGuideNG wesentlich schmaler ist, da die ganze OSD Ausgabe komplett über die Skindesigner API abgebildet ist. Wer also einen nicht Skindesigner Skin benutzt, muss also das "alte" TvGuide Plugin benutzen. Bei den Skindesigner Skins gehe ich doch mal schwer davon aus, dass die Skinner nachziehen und Templates für den TVGuide zur Verfügung stellen :D


    Um dem Wiki mal vorauszugreifen: es gibt ein "basic" Skindesigner Interface, das benutzt z.B. das Weatherforecast Plugin. Damit kann man aber nur die vorgegebenen VDR Menüs ein bisschen aufhübschen. Dieses Interface beinhaltet ja ein Fallback. Das "advanced" Skindesigner Plugin Interface, das vom TVGuideNG benutzt wird und das es ja erlaubt, das OSD komplett selbst zu gestalten, kann keinen Fallback anbieten, das macht keinen Sinn. Wohin soll es denn zurückfallen? ;) Es ist natürich jedem Pluginentwickler selbst überlassen, im Plugin ein Fallback anzubieten. Dazu muss man dann eben die OSD Ausgabe selbst programmieren.


    Ciao Louis

  • Gut, man benötigt also unbedingt skindesigner umd tvguideNG zu nutzen. Das kann ich ja noch irgendwo akzeptieren.


    Könnte man nicht auf einen Default-Skin in skindesigner zurückfallen, wenn kein skindesigner-Skin verwendet wird, oder einer ohne Unterstützung für das Plugin?

  • Könnte man nicht auf einen Default-Skin in skindesigner zurückfallen, wenn kein skindesigner-Skin verwendet wird, oder einer ohne Unterstützung für das Plugin?


    Da beisst sich die Katze ein bisschen in den Schwanz...wenn kein Skindesigner Skin verwendet wird, warum sollte dann das Skindesigner Plugin gestartet sein? Das Skindesigner Plugin ist zwingend notwendig, damit TVGuideNG funktionieren kann.


    Ich finde den Aufwand einfach unverhältnismäßig. Klar ist es nicht ganz optimal, aber wenn jemand zwischen verschiedenen Skins wechseln will, muss er eben bei denen, mit denen TVGuideNG nicht funktioniert, auf das TVGuide Plugin wechseln.


    Ciao Louis

  • Was ich übrigens vergessen habe: im Git von TVGuideNG liegen im Verzeichnis "templates" Skeletons für die drei benötigten Templates. Wer seinen Skin um TVGuide erweitern will, einfach die Vorlagen in das passende Skinverzeichnis kopieren. Bei den mitgelieferten Skins ein bisschen Spicken schadet sicherlich bei der Implementierung auch nicht ;)


    Ciao Louis

  • Da beisst sich die Katze ein bisschen in den Schwanz...wenn kein Skindesigner Skin verwendet wird, warum sollte dann das Skindesigner Plugin gestartet sein? Das Skindesigner Plugin ist zwingend notwendig, damit TVGuideNG funktionieren kann.


    Naja ich wollte das für VDR4Arch jetzt wie folgt ändern.


    skindesigner-skins werden abhängig von vdr-skindesigner.
    vdr-tvguideng wird ebenfalls abhängig von vdr-skindesigner.


    vdr-skindesigner stelle ich so um, dass es im Gegensatz zu allen anderen Plugins immer gestartet wird, wenn es installiert wird.

  • So wie es aussieht baut der neue skindesigner nicht mehr mit der libcairo (1.10.2-6.1ubuntu3) aus Ubuntu Precise:

    Code
    g++ -g -O3 -Wall -Werror=overloaded-virtual -Wno-parentheses -fPIC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -c -DPLUGIN_NAME_I18N='"skindesigner"'  -I/usr/include/libxml2 -DSCRIPTFOLDER='"/usr/lib/vdr/plugins/skindesigner/scripts"' -I/usr/include/freetype2   -pthread -I/usr/include/librsvg-2.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/cairo -I/usr/include/libpng12 -I/usr/include/pixman-1 -I/usr/include/freetype2   -ljpeg -o libcore/cairoimage.o libcore/cairoimage.c
    libcore/cairoimage.c: In member function 'void cCairoImage::InitCairoImage(int, int)':
    libcore/cairoimage.c:21:29: error: 'CAIRO_ANTIALIAS_BEST' was not declared in this scope
    make[1]: *** [libcore/cairoimage.o] Error 1

    Mit Ubuntu Trusty klappe es da ist aber auch libcairo in der Version 1.13.0 vorhanden.

    Gruß
    Frodo

  • Danke, jetzt baut es wieder :]

    Gruß
    Frodo

  • Da beisst sich die Katze ein bisschen in den Schwanz...wenn kein Skindesigner Skin verwendet wird, warum sollte dann das Skindesigner Plugin gestartet sein? Das Skindesigner Plugin ist zwingend notwendig, damit TVGuideNG funktionieren kann.


    Und damit haben wir genau die doofe Situation die ich schon die ganze Zeit befürchte? :§$%


    Wird deine "libskindesigner" später soweit eigenständig sein, dass davon abhängige Plugins selber Skins parsen können?


    Ich stelle mir das in Etwa so vor, dass ein Plugin wie der "TVGuideNG" selber eine Handvoll XMLs mitliefert um ein Basis-OSD selber darstellen zu können. Damit wäre der auch lauffähig wenn jemand z.B. den LCARS-Skin von Klaus auswählt.


    Im Idealfall könnten Skindesigner-Skin-Entwickler diese "Basis-OSD-Vorlage" dann einfach in ihren Skin kopieren und anpassen.


    Wenn ein Skindesigner-Skin Support für das Plugin hat, dann übersteuert das das mitgelieferte "Basis-OSD".

  • Wird deine "libskindesigner" später soweit eigenständig sein, dass davon abhängige Plugins selber Skins parsen können?


    Nein, das wird es nicht geben. Die Template Engine bleibt im Skindesigner, alles andere macht aus Designsicht keinen Sinn.


    Jedem Pluginentwickler, der die libskindesigner nutzen will, ist es freigestellt, ein Fallback in sein Plugin einzubauen. Dafür werden dann aber keine Templates benutzt, das ist dann "oldschool hardcoded" ;) Schau dir den Code vom TVGuideNG einfach mal an, dort wirst du keine Zeile finden, die sich mit irgendwelchen OSD, Pixmap oder sonstigen Ausgabesachen herumschlagen muss...


    Ciao Louis

  • Selbst wenn du die Template-Engine im Skindesigner lässt: Wäre es nicht machbar, dass das Skindesigner-Plugin auch dann tätig wird, und OSD zeichnet, wenn es für den "Hauptskin" garnicht zuständig ist?


    Also das OSD selbst wird z.B. vom LCARS-Skin aufgebaut, der Skindesigner erwacht aber dennoch zum Leben wenn ein Plugin seine Dienste einfordert, nutzt dann aber ein vom Plugin selbst mitgliefertes Template für die Darstellung?


    Ich finde das einfach etwas zu kurz gedacht "native Skins" einfach auszuschließen.


    Nachtrag: Dieses vom Plugin mitgelieferte Template könnte auch dann genutzt werden, wenn ein Skindesigner-Skin für das spezielle Plugin kein Template mitbringt. Denn der Tag wird definitiv kommen wo auch Skindesigner-Skins ungepflegt sind und sich keiner mehr darum kümmert Support für ein weiteres Plugin einzubauen. Oder ein Skin-Entwickler hat schlicht kein Interesse am Support für ein bestimmtes Plugin.

  • Ich finde das einfach etwas zu kurz gedacht "native Skins" einfach auszuschließen.


    Native Skins sind doch gar nicht ausgeschlossen. Wenn der Plugin Entwickler eine "native Ausgabe" einbauen will, dann ist ihm das selbst überlassen. Wie schon geschrieben funktioniert das dann eben nicht über Templates, sondern das Plugin muss in diesem Fall - genau wie ohne den Skindesigner - das OSD einfach komplett selbst zeichnen. Wenn ein Plugin das nicht möchte, dann ist das die Entscheidung des Plugin Entwicklers.


    Ciao Louis

  • Das beantwortet aber meine Frage nicht.


    Was wäre so problematisch daran im Skindesigner im Fall, dass kein Skindesigner-Skin gewählt ist, einfach ein vom nutzenden Plugin genanntes "Vorlangen-Template" zu nehmen?


    Davon würden auch Skindesigner-Skins profitieren, denn die Zeit wird kommen wo man eben nicht pauschal, nur weil man ein Skindesigner-Skin nutzt, sagen kann, dass das ganze auch mit Plugin X funktioniert.


    Eigentlich haben wir den Fall sogar jetzt schon, denn die wenigsten, der mittlerweile verfügbaren Skindesigner-Skins, dürften diese neue Schnittstelle unterstützen.


    So, und nur so, könnte man sich als Plugin-Entwickler ohne Bedenken für ein "100% auf libskindesigner basiertes" Plugin entscheiden.

  • Ich bin gerade mit kleineren Änderungen für unsere Gewohnheiten an tvguideng fertig und da Blackhole unser Main-Skin ist, passt tvguide jetzt extrem gut dazu...
    Ist mal wieder ein fettes Dankeschön fällig - Louis ! :tup


    [Blockierte Grafik: http://pruesch.dyndns.org/galerie/albums/auction/1_G_001.sized.jpg]

Jetzt mitmachen!

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