ChannelSelectionPlus-Plugin mit Template-Funktion für die Kanalliste

  • In Erweiterung des ChannelSelectionPlus aus dem Thread "Kanalliste 2te Information" habe ich der Kanalliste in Version 0.0.9 mal eine Template-Funktion spendiert ;)

    Dabei geht es um das Skinnen der Kanalliste per Templates.

    Über die neue Template-Funktion in Verbindung mit dem ChannelSelection-Screen im Skin gibt es jetzt eigentlich kaum noch Grenzen zur optischen Gestaltung der Kanalliste.

    (im Screenshot ein Template, wo der Fortschrittsbalken als dünner Balken unterhalb der Zeile dargestellt wird)


    Änderungen zum ChannelSelectionPlus 0.0.8:

    - Template-Funktion für die Kanalliste

    - Kanallisten-Vorschau-Funktion im Kanallisten-Setup per Info-Taste (so kann man geänderte Einstellungen sofort ansehen, ohne das Setup zu verlassen)

    - neue Option zum Auswählen des letzten Kanals (lt. Kanal-Hiistory) beim Bouquet-Wechsel

    - im Template-Modus wird das Default-Picon angezeigt, wenn kein passendes Picon gefunden wurde

    - um teilweise leere Kanallisten zu vermeiden, wird jetzt bei nicht vorhandenen EPG-Daten in der Kanalliste bei den Event-Feldern ein default-Text "keine Sendungsinfo" bzw. "no event data" angezeigt


    Hinweise zur Template-Funktion:

    Wenn man das Template direkt in seine skin.xml unter der ServiceList-component einbindet, werden nur noch die dortigen "MODE_FAVOURITES..."-Templates im Kanallisten-Setup angezeigt.

    Die "MODE_FAVOURITES..."_Templates werden zur Anzeige der Sender-Einträge verwendet.

    Das Template "MODE_NORMAL" wird für die Anzeige der Ordner (Satelliten, Anbieter, Favoriten-Liste) verwendet.

    Zur Anzeige der Kanalliste in den All, Satellites und Provider-Listen kann ein optionales "MODE_ALL"-Template verwendet werden (gibt es das Template nicht, wird das aktivierte MODE_FAVOURITES... zur Anzeige verwendet)

    Das "default"-Template muss als pseudo-Template enthalten bleiben - es wird aber nicht verwendet.


    Im Code der Test-Version habe ich zum schnellen Testen bereits einige wählbare Templates integriert.

    Je nach Skin (HD/FHD) werden vorbereitete Templates für die default-Skins bzw. für den Zombi-Shadow-FHD und MetrixStyleHD zur Auswahl angeboten.

    Die Templates ohne enthaltenen Text für den Shadow oder Metrix sind für die default-Skins angepasst.


    PS:

    aktuell sind noch nicht alle verfügbaren Werte/Inhalte aus der Kanalliste im Template verfügbar (aktuell verfügbare Werte siehe unten).

    Sollten hier Werte benötigt werden, bitte hier melden (es könnten theoretisch auch völlig neue Infos zur Verfügung gestellt werden, die die Kanalliste bisher nicht anzeigen konnte).


    Ein Beispiel für den ServiceList-Component-Eintrag in der skin.xml findet man auch am des Codes in der plugin.py.

    Hier ein Beispiel für den Component-Eintrag im Skin (mit 2 verschiedenen Templates für MODE_FAVOURITES..., die dann im Setup auswählbar sind)

    Der template-Eintrag im component-Eintrag der ServiceList ist unschädlich, wenn man das ChannelSelectionPlus-Plugin nicht intstalliert hat - dann wird der Eintrag in der Standard-Darstellung der ServiceList einfach ignoriert.

    Hier die aktuelle Liste der verfügbaren Template-Werte (ist auch im Code der plugin.py enthalten):


    Hinweis zur Installation der Test-Version:

    Den Ordner "ChannelSelectionPlus" (inkl. aller Dateien/Unterordner) aus der Zip hierher auf die Box kopieren /usr/lib/enigma2/python/Plugins/Extensions/ und einen GUI-Neustart machen.

    Dann sollte die neue Setup-Option für die Darstellung im Kanallisten-Setup verfügbar sein.

  • Looks very nice the last list :) Like that much better then the progress bar under the channel names


    Is it possible to get this as a choice in the plugin like you have for Shadow FHD?

    Everything in life that's any fun is either immoral, illegal or fattening

  • Hier noch ein Beispiel, was möglich ist ;)

    (das ist aber nur in Verbindung mit einer Anpassung des list-widgets im ChannelSelection-Screen machbar)


    Ich bin jetzt nicht der Skinner, weshalb man hier bestimmt optisch noch mehr rausholen kann.

    Wie gesagt, es geht ja nur um das Aufzeigen des Möglichen.


    seagen

    Das Plugin stellt lediglich die Template-Funktion für die Kanalliste zur Verfügung.

    Ich habe hier nur ein paar Beispiele aufgezeigt bzw. zum schnellen Testen auch einige Beispiele in das Plugin integriert.

    Wenn ihr da Anpassungen für euch einarbeiten möchtet, könnt ihr das jederzeit über ein eigenes Template in eurer skin.xml oder skin_user.xml realisieren.

    Da könnt ihr euch dann völlig frei austoben ;)


    Wenn ihr weitere Texte als die bisher verfügbaren benötigt, dann müsst ihr euch hier melden.

    Dann kann ich versuchen, diese für die Template-Nutzung zur Verfügung zu stellen.


    PS:
    In den letzten beiden Beispielen hab ich bereits einen zusätzlichen Text "FullDescription" integriert.

  • Wow this is just amazing what you have provide us with. And as a hobby skinner i will boil me a big can of coffy and go banans ^^^^

    Thanks Sven : thumbsup:: thumbsup:: thumbsup:

    Everything in life that's any fun is either immoral, illegal or fattening

  • Hier mal die aktuelle Version 0.0.9-r1, wo jetzt als weiterer Text im Template die FullDescription (text=26) verfügbar ist.

    (Edit: veraltete Anlage entfernt - aktueller Download in Post #1)


    seagen

    Hier mal in der Zip-Anlage eine skin_user.xml speziell für den Shadow FHD, wo diese Big-Variante mal beispielhaft integriert ist.

    (wichtig - bei anderen Skins wird es mit dieser skin_user.xml sehr wahrscheinlich einen GS geben- also diese skin_user.xml nur im Shadow-FHD verwenden)


    Falls du noch keine skin_user.xml hast, dann einfach die xml aus der Zip in /etc/enigma2/ kopieren und einen GUI-Neustart machen.

    Dann im Kanallisten-Setup auf das Template "Shadow-FHD Big" umstellen.


    Falls du bereits eine skin_user.xml hast, dann den Inhalt der xml aus der Zip-Anlage (außer die skin-Tags) in deine skin_user.xml übernehmen.


    PS:

    Aber aufpassen !!

    Wenn man eine skin_user.xml nutzt und dann mal auf einen anderen Skin umschaltet, kann das schnell einen GS geben, wenn dann bestimmte Dinge im anderen Skin nicht definiert wurden.

  • Hab in Post #1 mal die aktuelle Version 0.0.9-r2 hochgeladen ;)


    Änderungen zur 0.0.9-r1:

    • Marker-Icon jetzt als eigenes png skinnbar (png=27) - so kann es anders als das Picon geskinnt werden (zB Größe/Position)
    • Unterstützung eines optionalen "MODE_ALL"-Templates zur Anzeige der Kanalliste in den All, Satellites und Provider-Listen (gibt es das Template nicht, wird das aktivierte MODE_FAVOURITES... zur Anzeige verwendet)
    • um teilweise leere Kanallisten zu vermeiden, wird jetzt bei nicht vorhandenen EPG-Daten in der Kanalliste bei den Event-Feldern ein default-Text "keine Sendungsinfo" bzw. "no event data" angezeigt (siehe Screenshots)
    • fix für fehlerhaften Wechsel der Kanäle/Bouquets bei Nutzung des Grid- bzw. Horizontal-Mode für die "list" im ChannelSelection-Screen
  • Ich habe in Post #1 mal die aktuelle Testversion 0.0.9-r3 hochgeladen ;)


    Änderungen im Vergleich zur 0.0.9-r2:

    • - fix: nextEvent und Kanalnummer jetzt bei Markern nicht mehr sichtbar
    • - im Vorschau-Fenster für die Kanalliste kann jetzt mit rechts/links direkt das Template gewechselt werden (dabei muss beim Öffnen der Preview bereits ein Template ausgewählt sein und es muss mehrere Templates zur Auswahl geben)
    • - neue Template-Optionen zur Steuerung der Optik der Kanalliste direkt über die Templates:

      dazu können am Ende eines Templates folgende Werte angegeben werden:
      ],True,None,{"mode": 1,"itemWidth": 840,"ProgressbarPixmapSize": (665,3),"bgPixmap": "skinpath/image_name.svg","selPixmap": "skinpath/image_name.svg", "pixmapSize": (316,300)})

      1. Wert: True = Option für SelectionEnabled (Wert bereits im DP-Image nutzbar)
      2. Wert: None = ScrollbarMode (Wert bereits im DP-Image nutzbar)
      3. Wert: dict zur direkten Übergabe von Skin-Options für die Kanalliste:
      * mode = Listmode der Kanalliste - 0 = vertical, 1 = horizontal, 2 = grid
      * itemWidth = Breite eines Listeneintrages
      * ProgressbarPixmapSize = Größe des ProgressbarPixmap
      * bgPixmap = Hintergrundbild für die Zeilen (z.B. "bgPixmap": "Zombi-Shadow-FHD/bgPicture.svg")
      * selPixmap = SelectionPixmap für die aktuelle Zeile (z.B. "selPixmap": "Zombi-Shadow-FHD/selPicture.svg")
      * pixmapSize = Größe des bg/selPixmap

    Mit den neuen Template-Optionen lässt sich die Optik der Kanalliste direkt über das Template steuern, ohne dazu eine Anpassung im "list"-widget des ChannelSelection-Screen machen zu müssen.

    Damit sind dann in den einzelnen Ansichten (All, Folder, Favoriten) auch jeweils unterschiedliche List-Modes möglich.

    (also die Favoritenliste in horizontal, die Folder in Grid und die All-Liste als vertical)


    Hinweis:

    Wenn man die Template-Options verwendet, müssen Wert1 (SelectionEnabled) und Wert2 (ScrollbarMode) davor immer zusätzlich angegeben werden, da diese direkt vom DreamOS ausgewertet werden. Daher müssen die Template-Optionen als 3. Wert (dict) übergeben werden.


    Falls hier im Template weitere Skin-Optionen zur Gestaltung des "list"-widgets benötigt werden, bitte ich um eine Info. ;)

    Gruß Sven (aka Dreamy)


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

  • In Post #1 gibt es jetzt eine 0.0.9-r4


    Änderung zur 0.0.9-r3:

    - bei den neuen Template-Optionen wurde eine Option "useWidgetPixmaps" integriert, die alternativ das Verwenden von Pixmaps ermöglicht, welche im "list"-Widget des ChannelSelection-Screens definiert sind.

    Die Erweiterung war erforderlich, um eine Steuerung von Template-Varianten über das Styles-Plugin für Skin-Ersteller zu ermöglichen.


    Das Ganze sieht dann als Beispiel so aus:

    ],True,None,{"mode": 1,"itemWidth": 840,"ProgressbarPixmapSize": (665,3),"useWidgetPixmaps": True, "bgPixmap": "CSP_bgpixmap1","selPixmap": "CSP_selpixmap", "pixmapSize": (316,300)})


    Dabei verwendet das Plugin dann die Grafiken aus dem "list"-Widget des ChannelSelection-Screens, welche dort als "CSP_bgpixmap" und "CSP_selpixmap" als Attribute mit dem jeweiligen Grafik-Pfad hinterlegt sind.

    Gruß Sven (aka Dreamy)


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

  • Hallo SvenH,


    Bei mir sind Kanalnummer in der Infobar eingeschaltet.


    Wenn man jetzt z. B. in die Kanallisteneinstellung geht und dort "Shadow FHD (little EPG) Template" auswählt, ändert sich die Kanalnummer in der Infobar nicht mehr.


    Auf allen Sendern steht die gleiche Nummer.


    Erst nach einem Restart funktioniert es normal.


    Edit: Gilt auch wenn mann wieder die normale Ansicht nach dem Restart einstellt.


    Lieben Gruß Ryu

  • Hmm, ist mir vorher gar nicht aufgefallen ;)

    Beim Umschalten des Modus (normale Ansicht <-> Template Ansicht) wird die Kanalliste sofort neu geladen, was leider der Renderer für die Kanalnummer nicht mitbekommt.


    Hab da im Moment auch keine Idee, wie man den Renderer live wieder reaktivieren kann.

    Alternative wäre, dass die aktualisierte Ansicht der Kanalliste erst sichtbar ist, wenn man die Kanalliste nach dem Setup beendet und wieder neu öffnet.

    Aber das finde ich auch nicht gerade perfekt ;)

    Gruß Sven (aka Dreamy)


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

  • Ryu

    Teste bitte mal diese Version wegen des Problems mit der Kanalnummer in der Infobar


    Edit:

    Dateianhang entfernt - aktueller Download im Post #1

    Gruß Sven (aka Dreamy)


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

    Edited once, last by Sven H ().

  • Du solltest eigentlich den Renderer triggern können. Aber so wie es scheint, hast du schon eine Lösung gefunden.

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • Ja, das Problem hatte ich im SkinReloader auch schon und da zum Glück schon eine "Lösung" drin ;)


    Die ChannelNumber-Renderer laden beim e2-Start die servicelist der Infobar (ChannelSelection):

    from Screens.InfoBar import InfoBar

    MYCHANSEL = InfoBar.instance.servicelist


    im change() des Renderer greifen sie dann auf das geladene MYCHANSEL zurück.


    Da ich im ChannelSelectionPlus zum live-Umschalten der Kanalliste die servicelist in der Infobar (ChannelSelection) neu belege, läuft der Verweis zur servicelist im Renderer dann wohl ins Leere.

    InfoBar.instance.servicelist = InfoBar.instance.session.instantiateDialog(ChannelSelection, zPosition=0)  


    Keine Ahnung, wie man dem Renderer das mitteilen könnte, dass Infobar.instance.servicelist neu belegt wurde :/

    Hab jetzt als Workaraound einfach ein Reload auf den Renderer-Code gemacht, was glücklicherweise funktioniert.

    Vielleicht gibt es da ja auch eine elegantere Lösung ;)

    Gruß Sven (aka Dreamy)


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

  • I have another issue i need help to figure out :)


    Everything works just fine but in the channel list i get the foregroundColorServiceNotAvail color on all channels except the ones on the same transponder when i change templates.

    If i restart Gui all works just fine. This is no big problem


    Dreambox One/Two DP latest experimental image in use and latest version of the plugin with the updated plugin.py file

    Everything in life that's any fun is either immoral, illegal or fattening