Skinning-Frage

  • Ich möchte gern ein Widget in einem Skin hinzufügen... Die Auswahl des neuen Widgets und der Content funktionieren auch schon...
    Nun ist das Layout Widgetübergreifend in den Skin...
    Der content wird durch includes realisiert was ich alles noch nachvollziehen kann.

    Ich möchte nun ein <control type="image"> hinzufügen aber nur für ein bestimmtes include... Eigentlich dachte ich mir das mit <visible> lösen kann nur weiß ich nicht wie zum Ausdruck bringen kann das es nur für ein bestimmtes include gelten soll...

    Ich hoffe das war verständlich...

    Odroid N2+ 4GB 16GB eMMC CE
    TVHeadend Server/Client

  • Ich möchte nun ein <control type="image"> hinzufügen aber nur für ein bestimmtes include... Eigentlich dachte ich mir das mit <visible> lösen kann nur weiß ich nicht wie zum Ausdruck bringen kann das es nur für ein bestimmtes include gelten soll...

    Ich hoffe das war verständlich...

    nicht wirklich :) .

    Hast ein Stück code dazu falls es noch aktuell ist?

    In der Regel macht man das anhand des Focus des Homemenüs fest in der Art Container(9000).HasFocus(2), man kann es aber auch in x anderen Varianten machen.

    Grüße

  • ich mir natürlich einen Skin ausgesucht, der von vorn bis hinten verschachtelt ist...

    Der Skin ist Aeon Madnox.Ich habe folgendes in der Include_Widget1.xml hinzugefügt:


    Das Layout befindet sich in der Includes_WidgetLayout.xml -> <include name="5010list"</include>
    -> <itemlayout width="399" height="340" condition="Substring(Control.GetLabel(4321),panelcoverepisode)">
    unter <content> dann das Iclude aus der Include_Widget1.xml einbinden

    XML
    <itemlayout width="399" height="340" condition="Substring(Control.GetLabel(4321),panelcoverepisode)">

    Dann werden die informationen im Widget "Neuste Episoden" in der Tafel-Ansicht, hinter den Episoden angezeigt...

    Externer Inhalt i.imgur.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.

    ich hatte es auch schon mal mit


    Code
    <visible>Substring(Control.GetLabel(4321),tvhighlight)</visible>

    trennen können aber irgendwo hab ich einen Fehler gemacht, denn das geht nicht mehr...


    Mein Hauptproblem ist das ich die meisten Label (bspw. "Substring(Control.GetLabel(4321),tvhighlight)") nicht finde also nicht hinbekomme mein Widget hinzuzufügen... Esgint ja noch einige mehr die ich einfach nicht finde...


    Code
    condition="Substring(Control.GetLabel(4321),...)"
    Substring(Skin.String(widgetlist),...)
    Substring(Skin.String(WidgetType),...)

    bspw. Substring(Skin.String(widgetlist),randomtvpanel)


    Ich hoffe das verdeutlicht ein wenig mein Problem....

    Odroid N2+ 4GB 16GB eMMC CE
    TVHeadend Server/Client

  • Also den Fehler kann ich dir leider auch nicht sagen, dazu bräuchte man den ganzen skin.. Gibts denn das Label 4321 irgendwo wenn nach ID="4321" suchst überhaupt in einem include oder direkt im home wennd anach suchst?
    Wenns mehr wird kann das durchaus in einem include verbaut sein. Wir haben da an die 40 Stück drin, wird einfach übersichtlicher im Home wenns dann in einem Include hast.


    Generell ist die Schwierigkeit bei variablen Homes ja immer das dein Widget auf jedem Platz sein kann, man es also nicht an eine ID festmachen kann.
    Das kann schon recht tricky werden wie du merkst..


    Blende dir doch mal irgendwo im Home in einem Label das $INFO[Control.GetLabel(4321)] ein und schau mal was da überhaupt auftaucht bei den einzelnen Menüplätzen
    und speziell bei dem betreffenden..

    Die Dinger sind leider mittlerweile so komplex das man wirklich mit den teilen verbandelt sein muss um da dahinterzukommen wer was wie gemacht hat.
    "tvhighlight" als Wert kann ja so vieles sein..

    Grüße

  • Gibts denn das Label 4321 irgendwo wenn nach ID="4321" suchst überhaupt in einem include oder direkt im home wennd anach suchst?


    ja, gibt es in der Includes_MainMenu.xml

    Code
    <include name="MainMenuCommonContent">
    		<control type="group">
    			<control type="label" id="4321">
    				<label>$VAR[WidgetTypeVar]</label>
    				<include>HiddenObject</include>
    			</control>


    also hab ich mal nach der WidgetTyp Variable gesucht

    Code
    <variable name="WidgetTypeLabelVar">
    	<value condition="Window.IsActive(1122)">$INFO[Skin.String(ItemToEdit.WidgetTitle)]</value>
    	<value>$INFO[Container(9000).ListItem.Property(WidgetTitle)]</value>
    </variable>


    und der container 9000


    und so such ich mich durch alle xml Datein...

    Odroid N2+ 4GB 16GB eMMC CE
    TVHeadend Server/Client

  • soweit sieht ja alles korrekt aus..

    Du hast dann schon ein setting eingebaut das tvhighlight als Widgetauswahl schreibt?
    Du hast also höchstwahrscheinlich in diesem include einen zusätzlichen Punkt eingebaut?

    <include condition="Window.IsActive(1124)">MainMenuListContent1124</include>


    Das wäre ja der erste Schritt..
    Genauer hab ich diese Art hier mal bei Farben erklärt..
    Skinning Tips - Verwendung von Propertys für komplexe Auswahlbelegungen


    Jetzt solltest mal diese VAR

    Code
    <label>$VAR[WidgetTypeVar]</label>

    mal in ein sichtbares label packen und irgendwo im Home an eine sichtbare stelle am Ende des ganzen Home codes einfügen,
    am besten mit fast festem drin wie xxx damit man sieht das es da ist..

    Beim Scrollen sollte ja nun über dem Punkt wo das Widget haben willst "tvhighlight" stehen.
    An diesem textwert orientieren sich die widgets.. Heißt die VAR wird von deinem Menü mit irgendetwas gefüttert damit dort dein gespeichertes Widget steht.
    Das kann nun tvhighlight sein oder Episodesinprogress oder sonst was, je nachdem wie der skinner es nennt..


    Das ist Notwendig weil du ja auf jeden Punkt ein Widget setzen könntest - Filmwidget ist als nicht sichtbar auf Platz 3 sondern wenn du es auswählst.

    Ansonsten müsstest mir den ganzen Code schicken damit ich dem genauer auf den grund gehen kann.

    Grüße

  • Du hast dann schon ein setting eingebaut das tvhighlight als Widgetauswahl schreibt?


    ich habe in der Custom_1133_WidgetChooser.xml folgendes eingebaut.

    XML
    <!-- start TVHighLight -->
    <item>
       <label>TVHighLights</label>
       <onclick>SetProperty(CustomYesNoDialog,highlightslist,1124)</onclick>
    <onclick>Skin.SetString(ItemToEdit.$INFO[Window(1124).Property(WidgetSelection)]Title,TVHighLights)</onclick>
       <onclick>RunScript(plugin.program.tvhighlights)</onclick>
       <onclick>ActivateWindow(1137)</onclick>
       <visible>System.HasAddon(plugin.program.tvhighlights)</visible>
    </item>
    		<!-- ende TVHighLight -->


    und folgende Änderung in der Custem_1137_WidgetLayoutDialog.xml

    das führt zu folgendem Ergebnis...

    Externer Inhalt i.imgur.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.

    Externer Inhalt i.imgur.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.


    <include condition="Window.IsActive(1124)">MainMenuListContent1124</include>

    also bewusst habe ich das nicht gemacht...

    Odroid N2+ 4GB 16GB eMMC CE
    TVHeadend Server/Client

  • also bewusst habe ich das nicht gemacht...

    Denk schon :) .

    Ich würde mal annehmen das include ist dein Menü das du dort siehst - sieht quasi als fake aus wie das im Home, ist aber mit anderen includes gefüllt damit du siehst was frei ist und was wie belegt.
    Sonst würde die "X" ja auch in deinem Home Screen kommen..

    Wenn nun deine VAR irgendwo mal ins home setzt - hier links oben, müsste dort immer der Titel deiner auswahl auftauchen und damit kann man dann prüfen ob beim Punkt wo du
    dein neues Widget TVHighLights gesetzt hast, überhaupt der Text richtig geschrieben wurde..
    Steht dort nicht TVHighLights dann geht ja schon was bei deinem neuen Button schief..

    Code
    <control type="label">
    								<left>50</left>
    								<top>50</top>
    								<width>1230</width>
    								<height>80</height>
    								<align>center</align>
    								<aligny>center</aligny>
    								<label>Widgettitel $VAR[WidgetTypeVar]</label>
    							</control>


    Du merkst schon das man das erst mal eingrenzen muss, jeder macht es anders, überall heißt es anders.. Sämtliche VAR´s, Strings oder Propertys in dem Ding sind Erfindungen des Erstellers.
    Als Unbeteiligter stehst da erst mal vorm Problem rauszufinden was eigentlich was macht..

    Grüße

  • Also erst mal muß ich mich nochmal bedanken, dass Du dir die Zeit nimmst und mir das Mysterium Skinning näher bringst...

    Also verstehe ich das richtig, das ich dein Laber, in mein hauptmenü einbaue und dann angezeigt bekomme welche WidgetTypeVar gerade gewählt ist?

    Das ganze sollte dan in der Home.xml zu finden sein...

    dieses include sollte die Home MenüPunkte beinhalten

    Code
    <include>MainMenuCommonContent</include>

    also würde ich dein Label darunter hinzufügen...


    und hier wird der inhalt von Widget1 definiert wenn ich das richtig verstehe...

    Odroid N2+ 4GB 16GB eMMC CE
    TVHeadend Server/Client

  • Es sollte den Titel dann Anzeiegen, ja..


    Da du ja diese zeile hast:


    1. <control type="label" id="4321">
    2. <label>$VAR[WidgetTypeVar]</label>
    3. <include>HiddenObject</include>
    4. </control>

    die mach nix anderes nur eben als hidden object irgendwo unsichtbar..

    Nur seh ich ja nun nicht ob da überhaut dein TVHightlight irgendwie schon ankommt..

    zur Kontrolle temporär das irgendwo sichtbar anzuzeigen wäre erst mal mein erster schritt..

    Code
    <control type="label">
    								<left>50</left>
    								<top>50</top>
    								<width>1230</width>
    								<height>80</height>
    								<align>center</align>
    								<aligny>center</aligny>
    								<label>Widgettitel $VAR[WidgetTypeVar]</label>
    							</control>

    genauso ginge es mit

    $INFO[Container(9000).ListItem.Property(WidgetTitle)]

    irgendwie müssen wir ja erst mal schauen ob dein klick auf deinen Punkt tVHighlight überhaupt was macht..

    Am besten du schickst mir einfach mal den Skin.. Mit nur Teilen ist das echt schwer :) .
    Dann schau ich die tage mal rein - bin nur ziemlich eingespannt grad..

    Grüße

  • das hat schon mal geklappt... :rolleyes:

    das Label wird angezeigt! Es fadet zwar weg aber mann kann es kurz erkennen...

    Externer Inhalt i.imgur.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.

    "Widgettitel highlightslistdefault"

    Odroid N2+ 4GB 16GB eMMC CE
    TVHeadend Server/Client

  • Hey,

    Klar, pack einfach dein

    Control.GetLabel(4321) als $INFO[Control.GetLabel(4321)] in ein label..
    Oder suche nach id="4321" und schau was im label steht - wird ja ne Variable sein oder sowas, und pack die selbe in dein "Kontrolllabel"

    Weg faden sollte es eigentlich nicht, wenns ans Ende deiner Home setzt müsste es über allem kommen - außer du hast direkt im label ne Animation drin oder so..
    Die Skin XML Dateien sind immer von oben nach unten aufgebaut - alle teile die weiter unten kommen überlagern die vorherigen.

    Wie mir scheint wird beim setzen des strings der noch erweitert um dein Layout 1-3..

    Grüße

  • Klar, pack einfach dein

    Control.GetLabel(4321) als $INFO[Control.GetLabel(4321)] in ein label..
    Oder suche nach id="4321" und schau was im label steht - wird ja ne Variable sein oder sowas, und pack die selbe in dein "Kontrolllabel"


    das Label tauch 4x in den xml Datein auf...

    Externer Inhalt i.imgur.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.


    ich denke mal das es die Includes_MainMenu.xml

    XML
    <include name="MainMenuCommonContent">
    		<control type="group">
    			<control type="label" id="4321">
    				<label>$VAR[WidgetTypeVar]</label>
    				<include>HiddenObject</include>
    			</control>


    mein jetziges Problem is ja, dass die "Bilder" des TVHighLight Addon an das Widget LastEpisodes angehangen wird...
    ursprünglich wollte ich mit einem visible lösen aber dank deiner Erklärungen denke ich , dass eine "condition=...." die bessere wahl wäre.

    das Include für das latest Episod sieht so aus:

    und das <visible>Substring(Control.GetLabel(4321),recenttv) + !IsEmpty(Window(Home).Property(RecentEpisode.1.Title))</visible>
    sollten doch dafür sorgen, das die darüberstehenden Propertys nur zur Verfügung stehen wenn das lable 4321 recent TV ist und das erste label nicht leer ist...
    darum meine Überlegung wenn ich das entsprechende visible setze werden die Daten nicht mehr durcheinander gebracht....


    Wie mir scheint wird beim setzen des strings der noch erweitert um dein Layout 1-3..


    ist mir auch aufgefallen und macht jetzt auch Sinn für mich, damit wird gesteuert, welches Layout das widgetpanel hat (was ja auch wiederum nur ein include ist)

    Odroid N2+ 4GB 16GB eMMC CE
    TVHeadend Server/Client

Jetzt mitmachen!

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