Skin Transparency anpassen um Skripte zu starten ('Advanced Launcher' ersetzen)

  • Hallo Community,

    Hintergrund:
    Im Moment nutze ich noch den Advanced Launcher um Batch Skripte (z.B.: verschiedene NAS starten/stoppen, Laufwerke mappen nach Bedarf, User logoff) in Kodi zu starten.
    In dem wunderbaren Forum sah ich jetzt, dass man das aber auch via Funktion "System.Exec" ausführen kann.

    Testumgebung:
    OS: Windows 7
    Kodi: v16.0
    Skin: Transparency

    Wie soll es aussehen:
    Step 1.: Im Home screen soll ein eigener Button ('Mein Button') vorhanden sein.
    Step 2.: Klick auf 'Mein Button' -> 'Mein Fenster' erscheint, z.B. <onclick>ActivateWindow(Mein-Fenster,Meine-Batch-Skripte,return)</onclick>
    Step 3.: 'Mein Fenster' enthält mehrere Einträge (Batch-Skripte), die man unterschiedlich anzeigen kann (wie z.B. im Fenster Addons).
    Step 4.: Klick auf einen Eintrag -> NAS wird gestartet, z.B. <onclick>XBMC.System.Exec("C:\Batch-Scripte\start_NAS-1.bat")</onclick>

    Zusätzlich: Jedem Eintrag soll ein eigenes Bild und Hintergrund-fanart zugeordnet werden können.

    Hoffe ich hab es halbwegs verständlich beschrieben.
    Es gibt zwar etliche Beispiele im Netz für eigene Buttons im Home Screen aber leider scheitere ich schon an diesem ersten Step, der Button will einfach nicht erscheinen. :(

    Was ich bisher versucht habe:
    Step 1.
    - Zeile 2777: In der Original Datei ist die letzte id 16, so dass ich für meinen Button die nächste Nummer gewählt habe.
    - Zeile 2779: Würde natürlich erstmal ins Leere führen, weil das Fenster noch nicht existiert.
    Datei: ...\Kodi\addons\skin.transparency\720p\Includes_Home.xml

    Gruß,
    JakeB

    Testumgebung - OS: Ubuntu 20.04 LTS | Kodi 19.1 | skin: Rapier 12.2.26 + Transparency! (views Slide und Fanart) | für Datenbank-/ Skin Tests
    Live Umgebung - OS: Ubuntu 16.04.3 LTS | Kodi 17.6 | skin: Transparency! 10.3.0 | TV

  • Hab mir mal die Datei ...\Kodi\userdata\addon_data\skin.transparency\settings.xml
    ... angeschaut und einen Button aus- und wieder eingeblendet. Dabei ist mir aufgefallen das die Zeilen 2422 und 2631 vermutlich falsch sein müssen.
    - 'Menu_Movies' ist falsch, brauche was Eigenes
    - Ausrufezeichen vor Skin hat gefehlt

    Falsch: <include condition="Skin.HasSetting(Menu_Movies)">Home-Befehl-Button</include>
    Richtig: <include condition="!Skin.HasSetting(Menu_Scripte)">Home-Befehl-Button</include>

    Button wird jetzt endlich angezeigt. :rolleyes:

    Werde jetzt den Step 2 angehen und mich bestimmt wieder melden.

    don: Werde dann die komplette 'Includes_Home.xml' posten.

    Testumgebung - OS: Ubuntu 20.04 LTS | Kodi 19.1 | skin: Rapier 12.2.26 + Transparency! (views Slide und Fanart) | für Datenbank-/ Skin Tests
    Live Umgebung - OS: Ubuntu 16.04.3 LTS | Kodi 17.6 | skin: Transparency! 10.3.0 | TV

  • Step 2 - neues Fenster soll erscheinen

    Eine kleine Hilfe war u.a. dieses HOW-TO: Add a new window or dialog via skinning:
    http://kodi.wiki/view/How-to:Ad…og_via_skinning

    Hab eine neue Datei erstellt: ...\Kodi\addons\skin.transparency\720p\custom_1150.xml

    Der <controls> Inhalt stammt aus der MyPrograms.xml. Dadurch wird wenigstens etwas angezeigt.

    Danach habe ich die 'Includes_Home.xml' angepasst (neue Fenster id=1150 einsetzen): <onclick>ActivateWindow(1150)</onclick> <!-- Zeile 2779 neu -->

    Ergebnis (Neues Fenster.jpg):
    [xattach=13431]Neues Fenster.jpg[/xattach]
    Es wird jetzt das bekannte Programme-Fenster angezeigt nur ohne Inhalt.

    Jetzt weiß ich aber nicht was ich aus dem code (<controls>...</controls>) entfernen kann und wie ich Einträge setzen kann.
    Die Einträge die im neuen Fenster erscheinen sollen, können ja ruhig hardcoded in einer xml Datei stehen, etwas Dynamisches ist nicht erforderlich.

    So soll es z.B aussehen:
    1. [xattach=13429]Fenster Addons 1.jpg[/xattach] nach klick auf dem neuen Button erscheint das neue Fenster

    2. [xattach=13430]Fenster Addons 2.jpg[/xattach] z.B. navigieren zum 2. Eintrag

    Könnt ihr weiterhelfen?

    Vielen Dank und Gruß

    [xattach=13433]Includes_Home.xml[/xattach]

    [xattach=13434]MyPrograms.xml[/xattach]

  • Hallo,

    Step 3:

    Habe jetzt einen List Container mit <content> gefüllt. Die zwei Einträge werden jetzt oben links dargestellt.
    Das Layout ist natürlich noch pures Chaos aber das folgende Problem stört mich erstmal am meisten.
    Der code stammt aus dem Kodi Skinning Manual: http://kodi.wiki/view/Skinning_Manual

    Problem:
    'Ansicht: Vorschaubild' (View: Thumbnail) ist nicht vorhanden im linken sidebar menu.

    Datei: ...\Kodi\addons\skin.transparency\720p\custom_1150.xml

    Wo muss man jetzt ansetzen? ?(

    [xattach=13464]Neues Fenster ohne Ansicht: Vorschaubild[/xattach]

    Testumgebung - OS: Ubuntu 20.04 LTS | Kodi 19.1 | skin: Rapier 12.2.26 + Transparency! (views Slide und Fanart) | für Datenbank-/ Skin Tests
    Live Umgebung - OS: Ubuntu 16.04.3 LTS | Kodi 17.6 | skin: Transparency! 10.3.0 | TV

  • Wo muss man jetzt ansetzen?

    also so wirklich hab ich den plan noch nicht kapiert was mit den ausgeklammerten denn noch so vor hast..

    Generell ist es so: eine Sidebar wird es in einem eigenen Fenster nicht geben können die aus Programme oder Addons kopierst..
    Solche Buttons für sortieren, Ansichtwechseln usw. sind Corebuttons die direkt zu bestimmten Funktionen führen die Kodi vorgibt.
    Eigene Fenster können sowas nur mit extremem Aufwand haben. Sortieren und ein Ansicht wechseln wirst auch kaum brauchen.
    Mit dem Manual bis schon auf der richtigen spur. Der Rest ist immer fleisarbeit und erstmal durchwühlen bis man die logik dahinter verstanden hat;).
    Je mehr code man anschaut desto klarer wirds einem dann für was was ist;).

    Generell fällt mir folgendes auf: Die Ansicht "zittert" durch deine höhe und dem autoscroll im container.. sie versucht zu scrollen, es gibt aber keinen inhalt
    dafür (sind ja schon beide sichtbar), und es flakert.
    Container in Kodi enthalten immer ein itemlayout und ein focusedlayout - also Focus und alles was nicht focus ist.
    jede Formatierung des inhaltes den du ja richtig als content drin hast, geschieht dort.
    Die items deines content bringen nur die erforderlichen infos dafür, keine formatierung.
    Textcolor als tag ist hier nicht erlaubt.
    Sprich, wenn in deinen Containerlayout ein ListItem.label oder ein ListItem.Icon verwendet wird, müssen auch die items ein label und einen Icontag haben.
    Willst es schwarz muss der Aufruf in item und focusedlayout, also das label dort mit der textcolor = black formatiert werden. Nicht das item.
    Brauchst du noch ein Fanart für den Hintergrund z.B. kann man sowas als thumb angeben und dann mit Container(ID der Liste).ListItem.Thumb ansprechen.


    Ich denke du willst es in der Art?

    was thumb ist und welche icons du da nimmst, sogut kenn ich den skin nicht.
    Auch was sonst noch willst wie Breadcumbs oder so..

    Grüße

  • Vielen Dank Marc0810 für dein feedback!

    Am linken sidebar menu hatte ich mich nur festgebissen, weil ich dachte, dass dies der normale Weg ist um Einträge (<content>) in der gewünschten Ansicht darzustellen. Aber da ich ohnehin nur die Ansicht: Vorschaubild brauche ist ein Ansichtwechsel nie notwendig.

    Der sporadische Versuch mit <textcolor> innerhalb von <content> war eigentlich nur gedacht um den weißen Text über dem weißen Hintergrund besser sichtbar zu machen auf dem angehängten screenshot. Das war daher erstmal nicht so wichtig als es nicht geklappt hatte.

    Kann es erst am Montag ausprobieren und werde dann Rückmeldung geben. Bin schon mächtig gespannt.

    Gruß,
    JakeB

    Testumgebung - OS: Ubuntu 20.04 LTS | Kodi 19.1 | skin: Rapier 12.2.26 + Transparency! (views Slide und Fanart) | für Datenbank-/ Skin Tests
    Live Umgebung - OS: Ubuntu 16.04.3 LTS | Kodi 17.6 | skin: Transparency! 10.3.0 | TV

  • Hey,

    So rein com aufbau her sollte so schon was kommen.. die ansicht selber müsste man dann noch etwas aufräumen.
    ich hatte die nur kopiert aus dem addonbrowser include, wobei natürlich

    sowas da keinen sinn macht.. vieles in Kodi ist selbsterklärend mit etwas englischkenntnissen wenn man mal hinter die funktionen und das Verhalten des skinenginge gekommen ist.
    Vieles bis beinahe alles in Kodi wird über die visibles gesteuert. Es wird also vieles nur nicht sichtbar gestellt, wie hier der block in der view die ansich egal sein könnte da es nur kommt wenn der
    Fensterinhalt sich als Actor identifiziert, was a.) nicht zutrifft bei dir, und b.) gar nicht zutreffen kann in eigenen Fenstern..

    Wenn das soweit angesehen hast, einfach bescheid sagen was nun mit diesem Thumbpfad passieren soll, was noch drauf soll wie Breadcumb oder sonst was und wie genau die clicks aussehen sollen.
    z.B. wirst du evtl einen Dialog draus machen müssen falls dein Exec ein Fenster aufruft kannst wenn da was nicht klappt den zur Not vorher schließen, was bei Fenstern nicht so einfach geht -
    da immer ein Fenster in Kodi geöffnet sein muss kann man da im prinzip nichts schließen sondern es nur durch ein anderes ersetzen.
    Vielleicht willst aber das beim click auf C:\Batch-Scripte\start_NAS-1.bat auch gleich das fenster geschlossen wird, was als Dialog wieder ginge..


    Grüße

  • Hallo,

    Großartig, das ist genau das was ich suche. Vielen vielen Dank!!!
    Hab in <content> noch mehr <items> angelegt um die Ansicht und Navigation des <panels> zu prüfen. Funktioniert alles tadellos.

    Im Moment bin ich eigentlich ganz zufrieden, was kann man denn noch mit "Breadcrumbs" erreichen?

    Zur Funktion <onclick> stehen Kommentare in der xml-Datei.

    In Sachen background fanart für jedes <item> lauf ich aber mal wieder gegen eine Wand.
    Im <itemlayout> vom <panel> hab ich einen "Container(53).Listitem(1).Thumb" eingesetzt. Vielleicht ist nur die Syntax falsch beim Verweis auf den Pfad der fanart oder es ist totaler Blödsinn.

    Datei: ...\Kodi\addons\skin.transparency\720p\custom_1150.xml (code konnte ich nicht einfügen, da über 20.000 Zeichen)
    [xattach=13565]custom_1150.xml[/xattach]



    Beschreibung: Neues Fenster mit items aber ohne background fanart

    Gruß

    Dateien

    Testumgebung - OS: Ubuntu 20.04 LTS | Kodi 19.1 | skin: Rapier 12.2.26 + Transparency! (views Slide und Fanart) | für Datenbank-/ Skin Tests
    Live Umgebung - OS: Ubuntu 16.04.3 LTS | Kodi 17.6 | skin: Transparency! 10.3.0 | TV

  • Hey,

    Anbei die Datei mit Erklärungen. Hintergrund für dein Panel müsstest dann noch ggf. etwas größer machen wenn die Eintragsmenge bleibt.
    Hab es allerdings ohne skin erstellt, also lieber mal die vorversion aufheben;)..

    Kopfzeile ist drin als Beispiel wie die im Home sein müsste.
    Da könnte man natürlich noch andere Infos verwenden, wie Username oder sonst was.


    Grüße

  • Hallo Marc0810,

    Panelgröße:
    Im Moment passen ja 14 items rauf, dass sollte eigentlich reichen. Falls nicht gelangt man ja schnell auf die 2 Seite.
    Oder wie du schon schreibst könnte man bei Bedarf noch die panel Größe anpassen.

    Kopfzeile:
    Danke für den Beispiel code! Vielleicht nehm ich die Kopfzeile aus dem Program Fenster, da erscheint die Anzahl der items.

    Background Fanart:
    Hab deine custom_1150.xml erstmal 1:1 übernommen. Die Fanart wird für das 1. item "angezeigt" aber nicht als Hintergrundfanart sondern als skaliertes Bildchen auf der "Kachel".
    Siehe auch "<thumb> überschreibt <icon>" in Zeile 6.

    Gruß

    Testumgebung - OS: Ubuntu 20.04 LTS | Kodi 19.1 | skin: Rapier 12.2.26 + Transparency! (views Slide und Fanart) | für Datenbank-/ Skin Tests
    Live Umgebung - OS: Ubuntu 16.04.3 LTS | Kodi 17.6 | skin: Transparency! 10.3.0 | TV

  • Hab deine custom_1150.xml erstmal 1:1 übernommen. Die Fanart wird für das 1. item "angezeigt" aber nicht als Hintergrundfanart sondern als skaliertes Bildchen auf der "Kachel".
    Siehe auch "<thumb> überschreibt <icon>" in Zeile 6.

    Hey,

    Das kann sein..

    Hab ich erstens im visible das negieren vergessen, was aber auch nix bringt wenns als icon verwendet wird.
    Kodi hat da eine etwas merkwürdige Logik. Ein thumb ist ein Icon nur ohne Defaulticon fallback..
    Also quasi dasselbe wie Icon nur ohne das zurückfallen auf ein Defaulticon von Kodi.

    Versuchs mal so als Hintergrund:


    und in deinen items dann als property.
    Die darf man selbstständig einfügen und mit Namen ansprechen.

    <property name="fanartbackground">C:/fanart-1.png</property>

    Der Aufruf erfolg dann immer über ListItem.Property(fanartbackground) im container oder mit ID davor außerhalb des containers der items.

    Damit sollte es gehen.


    Die Anzeige der Anzahl musst aber schauen wie das im Skin implementiert ist.

    Kodi stellt das teilweise als "Corefunktion" für verschiedene Fenster zur Verfügung.
    Dort kann man das dann per Label mit einer ID direkt ohne eigenes Infolabel Darstellen.

    Das geht nicht unbedingt genau so in einem eigenen.
    Dort wirst falls dem so ist dann Container(53).NumItems brauchen was dann die Anzahl in Container ID 53 wäre.


    Grüße

  • Hallo Marc0810,

    einfach genial, fanart background wird jetzt angezeigt. 8o
    Datei: ...\Kodi\addons\skin.transparency\720p\custom_1150.xml



    Neues Fenster: items enthalten jetzt auch die Hintergrundfanart


    Zitat von Marc0810

    ...Der Aufruf erfolgt dann immer über ListItem.Property(fanartbackground) im container...


    Damit ich noch was lerne, wie sieht denn die Variante mit ...

    Zitat von Marc0810

    ...oder mit ID davor außerhalb des containers der items.

    ... aus?


    Danke für die weiteren Hinweise zur Kopfzeile. Werde das mal ausprobieren. Falls es nicht klappt, ist es nicht so schlimm da ja das wichtigste funktioniert.


    In Sachen: <onclick>XBMC.System.Exec("C:\Batch-Scripte\start_NAS-1.bat")</onclick> ...

    Anmerkung: 'start_NAS-1.bat' ist zum Testen nur ein einfaches Mapping, will ja nicht permanent das NAS belästigen :)

    Code
    @echo OFF
    net use X: \\server.xyz\blabla\blabla /persistent:no
    exit


    ... Hab deinen Vorschlag ausprobiert und "<alwaysontop>yes</alwaysontop>" versucht.

    C:\Users\<user_name>\AppData\Roaming\Kodi\userdata\[definition='2','1']advancedsettings[/definition].xml

    Code
    <[definition='2','1']advancedsettings[/definition]>
        <videoscreen>
            <alwaysontop>yes</alwaysontop>
        </videoscreen>
    </[definition='2','1']advancedsettings[/definition]>

    Scheint aber nicht zu helfen (Kodi flackert kurz und kommt dann wieder zurück).
    Wenn man das über den 'Advanced Launcher' ausführt, geht es.
    Im Netz konnte ich bisher noch keine Lösung finden. Werde wohl besser einen extra Thread dafür aufmachen.


    Nochmal vielen Dank für die Unterstützung!!! Ohne die hilfreichen Tipps hätte ich das nie geschafft. :thumbup:

    Gruß

    Testumgebung - OS: Ubuntu 20.04 LTS | Kodi 19.1 | skin: Rapier 12.2.26 + Transparency! (views Slide und Fanart) | für Datenbank-/ Skin Tests
    Live Umgebung - OS: Ubuntu 16.04.3 LTS | Kodi 17.6 | skin: Transparency! 10.3.0 | TV

  • ... aus?

    hey,

    na so wie es jetzt ist;).. die ID des container in dem das Property als content referrenziert ist, brauchst du immer wenn du irgendwas außerhalb dieses containers abgreifen willst.
    Würdest nun das property im container als icon verwenden, müsstest es ohne ID ansprechen..

    Für das flackern findest sicher noch ne Lösung.
    Scripte sind nicht meins, vielleicht musst es als Phython verpacken und ein xbmc.sleep einfügen dafür, aber das wissen die Addonspezies sicher eher.

    Grüße

  • Hallo,

    Auszug aus Datei: ...\Kodi\addons\skin.transparency\720p\custom_1150.xml

    Code
    ...
    <item id="1" description="Start 1. NAS">
        <label>Start NAS-1</label>
        <icon>C:\Thumbnails\NAS-1.jpg</icon>
        <property name="fanartbackground">C:\Fanarts\fanart-1.jpg</property>
        <!-- <onclick>XBMC.System.Exec("C:\Batch-Scripte\start_NAS-1.bat")</onclick> -->
        <!-- <onclick>XBMC.System.ExecWait("C:\Batch-Scripte\start_NAS-1.bat")</onclick> -->
        <onclick>RunScript("C:\Batch-Scripte\start_NAS-1_py.py")</onclick> <!-- Bingo! Kodi is always on top :-) -->
    </item>
    ...

    Zwischen "XBMC.System.Exec" und "XBMC.System.ExecWait" ist kein großer Unterschied zu erkennen. Kodi verschwindet kurz und taucht dann wieder auf.


    Auf dem Umweg über ein Phyton Script bin ich gestern auch zufällig gestoßen, hatte aber erst heute Zeit zum Testen.

    Python Script: C:\Batch-Scripte\start_NAS-1_py.py

    Code
    import os
    os.system("C:/Batch-Scripte/start_NAS-1.bat")

    Läuft wunderbar über den Python Umweg. Kodi wird nicht geschlossen und das Batch Script wird im Hintergrund ausgeführt. :thumbup:
    Den Schlafparameter xbmc.sleep konnte ich noch nicht ins Python Script einbauen. Muss ich mich noch einarbeiten oder ein neues Thema erstellen, von Python hab ich keinen Schimmer. :/

    Dann werd ich mal das Thema auf "erledigt" setzen.

    Gruß und ein schönes Wochenende!

    #############################
    ### Update vom 7. April 2017 ###

    Da sich die Transparency Ordnerstruktur (...\skin.transparency\720p -> ...\skin.transparency\1080p) nach dem Kodi update von 16.x zu 17.0 geändert hatte, musste die custom_1150.xml angepasst werden.
    Die Zeile <onclick>RunScript("C:\Batch-Scripte\<script>")</onclick> wurde auch geändert. Es MUSS ein Phyton Script gestartet werden, ansonsten verliert Kodi den Focus.
    Getestet mit Transparency! v10.3.0

    Datei: ...\Kodi\addons\skin.transparency\1080p\custom_1150.xml


    Python Script: C:\Batch-Scripte\start_NAS-1.py

    Code
    import subprocess
    subprocess.call(r'net use z: \\shared\folder /user:userXYZ password', shell=True)

    Testumgebung - OS: Ubuntu 20.04 LTS | Kodi 19.1 | skin: Rapier 12.2.26 + Transparency! (views Slide und Fanart) | für Datenbank-/ Skin Tests
    Live Umgebung - OS: Ubuntu 16.04.3 LTS | Kodi 17.6 | skin: Transparency! 10.3.0 | TV

    Einmal editiert, zuletzt von JakeB (7. April 2017 um 16:02)

  • Den Schlafparameter xbmc.sleep konnte ich noch nicht ins Python Script einbauen. Muss ich mich noch einarbeiten oder ein neues Thema erstellen, von Python hab ich keinen Schimmer.

    Ich auch nicht.. Mit viel Glück bekomm ich ein Hello World noch hin, dann ist aber auch schon schluss;)..

    Aber schön das es klappt.. Sleep bekommst sicher auch noch raus, und wenns ja eh schon geht müsste dir vielleicht einer der Phyton Leute
    erst mal erklären für was er ist.
    Ich hab da nur geraten weil er mir schon öfters bei einfachen scripts über den weg lief.

    Grüße

Jetzt mitmachen!

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