Suche Hilfe bei Skript für Enigma-Skin ... wieder mal ;-)

  • Hi!


    Da ich mich leider nie so wirklich mit dem ganzen Skripting befasst habe, wollte ich fragen ob sich jemand erbarmt und mir hier mit ein paar Codezeilen unter die Arme greifen könnte.


    Ich möchte in Enigma gerne einbauen, dass an der Unterseite nur noch Buttons angezeigt werden und dabei aber sowohl die horizontale als auch die vertikale Skalierbarkeit erhalten bleibt. Dadurch habe ich das Problem dass text2skin da am Ende ist, denn ich müsste sozusagen von <linker Rand> bis <linker Rand> + <OSD-Breite> / 4 den ersten Button anordnen usw.


    Deshalb möchte ich gerne ein kleines Skript mitliefern, das in einem Skintemplate die jeweiligen Dummies gegen die richtigen Koordinaten austauscht.


    Ich bräuchte also ein Skript das in etwa so aufgebaut ist:


    Setupteil, wo man die Pfade usw. einstellt:

    Code
    SKIN = "/etc/vdr/plugins/text2skin/Enigma/"
    CONFIG = "/etc/vdr/"


    Dann müsste aus der setup.conf in CONFIG die OSD-Breite ausgelesen werden. Daraus müsste man eben die Koordinaten errechenen und dann z.B. die Dummies (z.B. "%RED_LEFT%", "%RED_RIGHT%" usw.) aus Enigma.skin.template in SKIN gegen die konkreten Koordinaten ausgetauscht werden und in Enigma.skin geschrieben werden.


    Ich denke das sind nur ein paar grundsätzliche Befehle die man da für das ganze zeugs braucht. Wäre nett wenn mir da jemand ev. einen Kick-Off schreiben könnte.


    Gruß,
    Brougs78

    - -- --- ================================================================ --- -- -
    Antec Fusion, Intel E5200, Asus P5N7A-VM (VDPAU), DD CineS2 v6 + DD DuoFlex CI // yavdr-0.6.1
    - -- --- ================================================================ --- -- -

    3 Mal editiert, zuletzt von Brougs78 ()

  • dann müßte das script aber jedesmal ausgeführt werden wenn man die Einstellung der OSDbreite ändert - ansonsten würde es nur durch ändern des Skins bzw. durch Neustart des VDR upgedated werden?


    Gruß Christian

    CKone: yavdr-ansible/18.04 LTS/2.4.1/kodi18 auf Intel DH67BL, Intel Celeron G540, 2x 2GB Kingston DDR3, Zotac GT630 1GB, S2-1600, Ocz Agility 3 60GB, LG GH24NS DVD, 15.6" Selbstbau TFT, Harmony 665, CIR Selbstbau - das Ganze im Silverstone SST-SG03B
    CKtwo: yavdr-ansible/18.04 LTS/2.4.1/kodi18 auf Intel DH67BL, Intel Celeron G1610, 2x 2GB Corsair DDR3, Zotac GT630 1GB, TT S2-1600, Ocz Vertex 2 50 GB, 92 Kanal Seduatmo, Harmony 665, atric USB
    CKthree: yavdr-ansible/22.04 LTS/2.6.1/kodi19.3 auf Intel NUC, Celeron J4005, UHD Graphics 600, 4GB Crucial DDR4, Ocz Vertex2 50 GB, Harmony 350

    PowerEdge: Ubuntu Server 16.04 LTS / VDR 2.4.1 auf Dell PowerEdge T20, Xeon E3-1225 v3, 16GB ECC DDR3, 2x Cine S2 V6 mit Duoflex, Samsung 840 EVO 120GB, 3x WD White WD80EZAZ 8TB in SW Raid5



  • Hi!


    Ja das ist richtig, aber wie oft ändert man die OSD-Breite schon?
    Wer das wirklich öfters ändern will, könnte das ganze dann natürlich auch noch ein runvdr reinschreiben, dann ist alles nach einem Neustart aktuell.


    Gruß,
    Brougs78

    - -- --- ================================================================ --- -- -
    Antec Fusion, Intel E5200, Asus P5N7A-VM (VDPAU), DD CineS2 v6 + DD DuoFlex CI // yavdr-0.6.1
    - -- --- ================================================================ --- -- -

  • Keiner nen Tipp für mich?

    - -- --- ================================================================ --- -- -
    Antec Fusion, Intel E5200, Asus P5N7A-VM (VDPAU), DD CineS2 v6 + DD DuoFlex CI // yavdr-0.6.1
    - -- --- ================================================================ --- -- -

  • Hi,


    Zitat

    Original von Brougs78
    Keiner nen Tipp für mich?


    so ein ganz grober Vorschlag:



    Grüße
    sundin


    my VDR: Asus AT3IONT-I deluxe, Digital Devices Cine S2 (dual DVB-S2 V5.5), yavdr 0.4, VDR 1.7.21
    OSD-Calender: PIM Plugin

  • Hi sundin!


    Danke für das Skript. Werde ich gleich mal einbauen.


    Gruß,
    Brougs78

    - -- --- ================================================================ --- -- -
    Antec Fusion, Intel E5200, Asus P5N7A-VM (VDPAU), DD CineS2 v6 + DD DuoFlex CI // yavdr-0.6.1
    - -- --- ================================================================ --- -- -

  • Hi!


    Also da das ganze ja jetzt wunderbar funktioniert würde ich noch mal um eine Erweiterung bitten. Dann könnte ich diverse Patches für text2skin optional im Skin unterstützen ohne immer drei Skins warten zu müssen.


    Ich würde gerne konfigurierbare Codeteile einbauen. Ich habe mir das so vorgestellt dass es ein bestimmtes Schlagwort gibt (z.B. #P1# und analog dazu #!P1#). Das ganze möchte ich dann irgendwie im Script einstellen, dass ich z.B. P1 = true setzten kann bzw. P1 = false.
    Das ganze sollte dann irgendwie ausgewertet werden, dass bei P1 = true die Codeteile, mit #P1# am Anfang der Zeile, übernommen werden (wobei #P1# entfernt wird); wenn P1 = false sollen diese Zeilen nicht im Skin landen. Bei #!P1# entsprechend negiert.


    Ich bräuchte also so was ähnliches wie #ifdef usw.


    Lässt sich sowas relativ einfach lösen? Könnte mir da bitte wieder jemand helfen. ?(


    Gruß und Danke schon mal,
    Brougs78

    - -- --- ================================================================ --- -- -
    Antec Fusion, Intel E5200, Asus P5N7A-VM (VDPAU), DD CineS2 v6 + DD DuoFlex CI // yavdr-0.6.1
    - -- --- ================================================================ --- -- -

    Einmal editiert, zuletzt von Brougs78 ()

  • Hi!


    Hilfe! :D *rumnerv* ;D


    Gruß,
    Brougs78

    - -- --- ================================================================ --- -- -
    Antec Fusion, Intel E5200, Asus P5N7A-VM (VDPAU), DD CineS2 v6 + DD DuoFlex CI // yavdr-0.6.1
    - -- --- ================================================================ --- -- -

  • Hallo,


    du könntest evtl. mit dem GNU-Makroprozessor m4 arbeiten
    (sollte bei jedem Linux dabei sein).


    Das ginge dann ungefähr so:


    Eingabedatei:


    Code
    ksltuf@manni:~ $ cat skin.template
    ifelse(VER,1, 1 Code for version 1 -> 0)
    ifelse(VER,1, 2 Code for version 1 -> 1)
    ifelse(VER,2, 3 Code for version 2 -> 0)
    ifelse(VER,1, 4 Code for version 1 -> 2)
    ifelse(VER,1,, 5 Code for not version 1)
    Code for all versions


    Aufruf für Version 1


    Code
    ksltuf@manni:~ $ m4 -DVER=1 skin.template
    1 Code for version 1 -> 0
    2 Code for version 1 -> 1
    
    
    4 Code for version 1 -> 2
    
    
    Code for all versions


    Aufruf für Version 2


    Code
    ksltuf@manni:~ $ m4 -DVER=2 skin.template
    
    
    
    
    3 Code for version 2 -> 0
    
    
    5 Code for not version 1
    Code for all versions


    Mit einem kleinen sed können dann auch noch unnötige Leerzeilen entfernt werden


    Code
    m4 -DVER=1 skin.template | sed -e '/^$/d'


    Ist vielleicht nicht die schönste Lösung, aber geht flott :)


    sundin


    my VDR: Asus AT3IONT-I deluxe, Digital Devices Cine S2 (dual DVB-S2 V5.5), yavdr 0.4, VDR 1.7.21
    OSD-Calender: PIM Plugin

  • Hi!


    Danke sundin für die Lösung. Ist ja ein Wahnsinn wieviele Tools in Linux gibt von denen ich absolut keine Ahnung habe. ;D
    Das ganze funzt wirklich wie erwartet, bis auf ne Kleinigkeit. Ich muss aufpassen, dass ich keine Beistriche verwende, da das ja Trennzeichen für die Argumente sind ... aber das lässt sich ja weg-SEDen. ;)


    Gruß,
    Brougs78

    - -- --- ================================================================ --- -- -
    Antec Fusion, Intel E5200, Asus P5N7A-VM (VDPAU), DD CineS2 v6 + DD DuoFlex CI // yavdr-0.6.1
    - -- --- ================================================================ --- -- -

  • Hi!


    Ich hätte mal wieder eine Script-spezifische Frage. Ev. kann mir ja wieder jemand helfen. sundin? ;D
    Ich möchte gerne für Enigma eine "Binary-Version" machen. Also eine die ohne UpdateEnigma.sh auskommt und für Distris und von Distri-Nutzern verwendet werden kann. Dabei ist die horizontale Variabilität nicht mehr möglich. Ich müsste also in den Enigma-Zeilen nach x1="-x" bzw. x2="-x" suchen und x durch z.B. 600 - x ersetzen. Also z.B.:


    <window x1="-216" x2="-93" y1="0" y2="89" bpp="4"/>


    durch


    <window x1="384" x2="507" y1="0" y2="89" bpp="4"/>


    ersetzen.


    Ich habe mich schon ein wenig mit awk gespielt aber ich komme da nicht so recht weiter. Vielleicht geht das ja auch garnicht mehr vernünftig damit und braucht Perl oder so. Hättest jemand ne Idee?


    Mit


    cat test.skin.template | awk '{c=split($0, s); for(n=1; n<=c; ++n) if (substr(s[n],1,5)=="x1=\"-") print s[n] }'


    bekomme ich z.B. schon mal die ganzen x1="-x", aber wie kann ich dann die x durch 600 - x ersetzen und dann das ganze wieder zusammenbauen?


    Vielen Dank schon mal an alle die sich das durchgelesen haben und ev. hat ja einer von euch ne Idee.


    Gruß,
    Brougs78

    - -- --- ================================================================ --- -- -
    Antec Fusion, Intel E5200, Asus P5N7A-VM (VDPAU), DD CineS2 v6 + DD DuoFlex CI // yavdr-0.6.1
    - -- --- ================================================================ --- -- -

  • Hallo,


    hat Dir inzwischen jemand geholfen? Ich war ein paar Wochen nicht im Lande und hab's jetzt erst gelesen.


    Grüße
    sundin


    my VDR: Asus AT3IONT-I deluxe, Digital Devices Cine S2 (dual DVB-S2 V5.5), yavdr 0.4, VDR 1.7.21
    OSD-Calender: PIM Plugin

  • Hi!


    Leider noch nicht. Viking - der mich wie du sehr bei den Skripten unterstützt hat - wollte sich das auch mal ansehen, aber er hat schon geschrieben dass er sehr wenig Zeit dafür hat ...
    Also falls du eine Idee hast wie man das umsetzen kann, wäre ich dir sehr dankbar. Das ganze hat keine wirkliche Eile, also muss es natürlich nicht gleich sein. Ich werde sowieso noch einige Zeit brauchen, bis v0.4 final wird.


    Danke für das Feedback. Gruß,
    Brougs78

    - -- --- ================================================================ --- -- -
    Antec Fusion, Intel E5200, Asus P5N7A-VM (VDPAU), DD CineS2 v6 + DD DuoFlex CI // yavdr-0.6.1
    - -- --- ================================================================ --- -- -

  • hi,


    so sollte es gehen:



    <edit>der code funzt aber nur, wenn x1 bzw. x2 nur_einmal_ pro zeile vorkommt ! habe gerade gesehen, dass machmal 2x ein rectangle-block in einer zeile steht ?(</edit>


    <edit2>einfach die in der zeile "for pattern in x1 x2" nochmal "x1 x2" ergänzen reicht für diesen fall</edit2>



    gruesse


    herbsl

  • Hi!


    Oh, Vielen Dank. Werde ich mal das WE testen.


    EDIT: Hab den Skin jetzt nicht zur Hand, aber eigentlich sollten x1 und x2 doch nur ein Mal pro Zeile vorkommen ... muss ich nochmal checken.


    Gruß,
    Brougs78

    - -- --- ================================================================ --- -- -
    Antec Fusion, Intel E5200, Asus P5N7A-VM (VDPAU), DD CineS2 v6 + DD DuoFlex CI // yavdr-0.6.1
    - -- --- ================================================================ --- -- -

    Einmal editiert, zuletzt von Brougs78 ()

  • Hi!


    Danke nochmal. Funzt wirklich wunderbar. Ich musste nur noch "x" hinzufügen, da es das auch noch neben "x1" und "x2" gibt. Aber zwei Mal brauchte ich "x1 x2" nicht ... habe keine Zeile mit zwei dieser Einträge gefunden.


    Gruß,
    Brougs78

    - -- --- ================================================================ --- -- -
    Antec Fusion, Intel E5200, Asus P5N7A-VM (VDPAU), DD CineS2 v6 + DD DuoFlex CI // yavdr-0.6.1
    - -- --- ================================================================ --- -- -

Jetzt mitmachen!

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