Skinning Tips - Codeschnipsel

  • [h1=Tools]Skinschnipsel[/h1]

    Hier kommen einige Beispiele und Codeblöcke die vielleicht für den einen oder anderen nützlich sind.

    Jeder der mag kann hier welche Anhängen. Wenn möglich den Thread bitte sauber halten und nur Antworten wenn Ihr einen Tip habt.
    Sonst lieber eine neue Diskussion öffnen.
    Dann könnt Ihr mit dieser Titelzeile eure Tips ins Inhaltsverzeichnis Pinnen.

    Code
    [h2=SubToolsxxx]Titel[/h2]

    Subtoolsxxx wäre dann die Nummer des Beitrages Leider sieht man hier im Forum nicht mehr die Postnummer (oder ging das nie, keine Ahnung).
    Damit es leichter ist würde ich die Nummer vielleicht dazuschreiben. Mal sehen wie es klappt wenn überhaut was kommt.

  • [h2=SubTools1]Tip 1 - Artworkdownloader nach DB Update[/h2]

    Was recht simples wenn man mal draufgekommen ist.
    Es war ja mal in der mache per Skript.
    Hier eine Skinvariante die eigentlich überall gehen sollte, solang ihr darauf achtet das die Custom ID nicht schon verwended wird.
    Es ist eigentlich nur ein leeres Window als Dialog..

    Dafür nutzen wir nun ein visible das die Sichtbarkeit des Fensters an die Condition hängt.

    Code
    <visible>Library.IsScanningVideo</visible>

    Das leere Fenster ist also immer sichtbar wenn ein DB Update läuft. Wer es Kontrollieren will,
    einfach irgendeinen Käse zwischen die Controlls einfügen damit was da ist zum Anzeigen.
    Da das Fenster nur sichtbar ist während eines Updates, ist es logischerweise auch nicht sichtbar
    wenn nicht. Das nutzen wir nun indem wir im Header des Windows beim schließen des Fensters
    das Script ausführen.

    Code
    <onunload>XBMC.RunScript(script.artwork.downloader)</onunload>


    Dabei wird mal angenommen man will alles was in den Settings des Addons
    eingestellt ist, es sind also keinen Optionen im Script notig.
    Das wars eigentlich schon, ohne großes Gefrikel oder Anpassen.

    Grüße

  • Mehr durch Zufall draufgekommen.. Visibles als Steuerung für Custom Windows hatte ich für was anderes entdeckt.
    Da war der Schritt nicht mehr allzu weit..
    Nur haben wirs nicht geschafft hier nur Tips zu Sammeln ;) .
    Aber egal, da ich erst nachher sah das die Postnummer eh niergends steht muss man es eben mit Tip1,2,3 oben im Inhalt weiterführen.

    Grüße

  • Ist doch OK.. Solange das mit dem Inhalt klappt ist es ja nicht wild.. Nur zuviel Ausschweifen stört auf Dauer vielleicht dann etwas wenn man dann 10 Posts überblättern muss um zum nächsten Tip zu kommen.
    Das hat mich bei den alten Tips etwas gestört..
    Da wäre es sinnvoller falls es bei etwas zu klären gibt, wenn man nicht dazwischen 3 Seitenlang hin und her schreibt bis es weiter geht.

    Grüße

  • [h2=SubTools1]Tip 2 - Im OSD Anzeigen was als nächsten in der Playliste läuft (video)[/h2]

    Hab mir ja ewig gewünscht das es mal ein Offset wie bei Musik gibt für das video OSD.
    Soweit ich gesehen hab gehts ja immer noch nicht. Das Addon Nextepisode meldet soweit ichs kapiert
    hab ja nicht das nächste in der Abspielreihenfolge sondern das nächste der laufenden Episode wenn sie
    noch nicht gesehen wurde.

    Für Leute wie uns, die mehrheitlich Serien sehen mit ab hier Abspielen und erst mit einer Staffel Beginnen
    wenn sie komplett vorliegt, eigentlich nutzlos..
    Als gimik kann man sich aber mit dieser Variante am Ende Anzeigen lassen was als nächstes kommt.


    Als erstes brauchen wir einen Content:

    Code
    <variable name="NPPlaylist">
        <value condition="!Window.IsVisible(1199)">playlistvideo://</value>
    </variable>

    Im Anhang ein Custom Refresh.. Das war mal ein Tip von Black, macht nix anderes als durch ein Property das leere Fenster anzustoßen damit die Liste aktualisiert wird.
    Schadet nichts, ob es nun gebraucht wird oder nicht. Sicher ist sicher.

    Fensteraufbau der Anzeige

    Jetzt können wir in einem zweiten Custom Window eine Anzeige Bauen:
    Da die Layouts eh nicht stimmen mal nur das Prinzip:
    Erst mal im onload des Fenster müssen wir das Property setzen damit die Playliste auch ja aktualisiert wird

    Code
    <onload>SetProperty(RefreshList3,1)</onload>

    Dann brauchen wir einen Vergleichscontainer und zwei labels dafür.

    Zwei labels, unsichtbar. Eins mit dem Videoplayer Titel und eins mit dem label aus dem Content.
    Das lassen wir jetzt solang scrollen bis die beiden nicht mehr "ungleich sind".
    Damit hätten wir den aktuelle Laufenden Titel.
    Ich hab es auch mit einem Container versucht der mit 1 pixel überall quasi unsichtbar war, Lustigerweise klappte das aber nicht.
    Ich nehm mal an das Scrollen greift dann nicht.

    Nun kann man, mit was auch immer in einem Label das nächste in der Liste mit dem Offset abgreifen.

    Code
    <control type="label">
    <align>right</align>
                <width>auto</width>
                <aligny>center</aligny>
                <width>1200</width>
                <height>60</height>
                <label>Als nächstes: $INFO[Container(222).ListItem(1).TVShowTitle,, - ]$INFO[Container(222).ListItem(1).Season, Season , ]$VAR[CustomEnumeration]$INFO[Container(222).ListItem(1).Episode,Episode , - ]$INFO[Container(222).ListItem(1).Title]</label>
                <visible>Stringcompare(Control.GetLabel(111),Control.GetLabel(112))</visible>
            </control>

    Ich weiß nicht mehr ganz warum, aber es funktionierte nur mit dieser Version sicher. Nur den Content zu verwenden klappte nie bei mir.
    Weil man nicht weiß was gerade läuft..
    In einer Gruppe könnte man sich das nun mit etwas wie

    Code
    !IntegerGreaterThan(Player.TimeRemaining,120)

    in den letzten zwei Minuten anzeigen lassen.


    Grüße

  • Ihr beide habt jetzt vollzugriff im Skindev-Bereich.
    Dürft also Themen löschen, zusammenfügen ... all das halt, um es ordentlich zu halten.

    Super, Dank dir.. Mit dem Inhalts scheints aber recht gut zu klappen..
    Wenns aber mal längere Klärungsdisskussionen gibt sicher nützlich zum Aufräumen.
    Sonst müssen wir immer nach dir schreien :)

    Grüße

  • [h2=SubTools1]Tip 3 - Scriptsettings die eingeblendet sind aber nur aktiv wenn das Addon vorhanden ist[/h2]

    Hier mal eine Variante wie man ein Script per Setting in einem Skin auswählbar machen kann.
    Das Problem ist ja das man teilweise nicht alle Script als "Notwendig" im Skin aufführen will.
    Nur wie soll man nun Kenntlich machen was überhaupt alles möglich ist oder wäre?

    Hier mal ein Beispiel

    XML
    <control type="radiobutton" id="100020"><!-- global search -->
    				<label>Globale Suche</label>
    				<onclick condition="System.HasAddon(script.globalsearch) + Skin.HasSetting(SidebarGlobalsearch)">Skin.SetBool(SidebarGlobalsearch)</onclick>
    				<onclick condition="System.HasAddon(script.globalsearch) + !Skin.HasSetting(SidebarGlobalsearch)">Skin.reset(SidebarGlobalsearch)</onclick>
    				<onclick condition="!System.HasAddon(script.globalsearch)">Notification(Das Addon ist nicht installiert!,Fehler)</onclick>
    				<selected>Skin.HasSetting(SidebarGlobalsearch)</selected>
    			</control>

    Ist das Addon vorhanden, kann der Radiobutton an und abgeschalten werden.

    Dabei wird dann ein Bool gesetzt oder geleert wenns gesetzt ist.
    Ist es nicht vorhanden wird eine KaiToast Meldung generiert.

    Der normale Weg wäre ja mit einem Visible das Setting auszublenden.
    Dann weiß man aber eigentlich gar nicht mehr was alles möglich ist wenns keinen Knopf mehr gibt.

    Etwas ähnliches wurde auch im Org Forum schon Diskutiert.
    Dort machen sie es mit Runscript..
    Geht eigentlich auch, nur haben das ja nicht alle Addons so und ob da alle einen Fehler bringen
    weiß ich nicht.

    Denkbar wäre auch noch eine Weiterleitung zu den Addons.

    Hinweis
    Jetzt kann es natürlich auch noch den Fall geben das das Setting gesetzt wurde, aber danach das Addon deinstalliert wurde.
    Für diesen fall hab ich ich den Skinsettings im onload und onunload jeweils ein


    XML
    <onload condition="!System.HasAddon(script.globalsearch)">Skin.reset(SidebarGlobalsearch)</onload><!-- Globalsearch reset -->

    gesetzt, damit das Setting auf alle Fälle immer dem Systemstand entspricht.


    Grüße

  • [h2=SubTools1]Tip 4 - Audiosprache nach ISO639 als Text - ab Jarvis[/h2]

    Lässt sich zwar nicht übersetzen, aber hier mal eine Variable mit der man sich den ISO639-2 Code (die 3 Buchstaben) als Text anzeigen lassen kann.
    Seit Jarvis geht das ja ohne Script. Nur ist das in der Info, mal vorrausgesetzt man hat eher nur 2 oder 3, nicht gerade schön wenn man es als Text will.
    Die Variable im Anhang kann man kopieren und .1 durch .2 ersetzen für Sprache 2, und sich Beliebig viele erstellen - 6 sind bisher angelegt.
    Die VAR ist recht lang, es sind aber auch alle ISO Sprachen drin die ich gefunden habe. Man könnte die auch aussortieren, aber lieber zuviel als zuwenig.

    Grüße

  • [h2=SubTools1]Tip 5 - Audiosprache als Icons für Ansichten[/h2]

    Und hier noch als Icons Nutzbare Sprachenflaggen für Ansichten nach Labels wie bei Genre im Format (128x128).
    Falls man sich die Länderflaggen beim Scrollen in der DB Kategorie Jahre anzeigen lassen will.
    Größere hab ich leider nicht gefunden.

    Im Anhang eine Variante als Variable, die man dann mit
    $VAR[ISO-LangIcon]
    anzeigen kann (Pfad aus der Variable muss allerdings stimmen)

    Wird haben zu zweit die Namen soweit abgeglichen das es bei uns passte.
    Allerdings kommen die Infos ja von diversen Scrappern.
    Es muss eine Variable sein, sonst bekommt man Probleme mit Sonderzeichen wie "&"..

    Grüße

Jetzt mitmachen!

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