Kodi Community Forum

Full Version: Q: use predefined label and set skin.string via dialogselect
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi , is there any way to make use of predefinded textlabels to chosse from dialogselect,
which set a skin.string(foo) after selecting,
if i dont want use script.skinshortcuts ,or did i really need to go in touch of it and use it as a dependencie.

Background : i want to use custom string values for

Actual i tend to use Skin.SetFile, Skin.SetNumeric, Skin.SetPath
I use folder and fakefiles (e.g. videos.target, where filename indicates target, and extension is abused as filter for dialogselect )

txt:
- target Skin.SetFile(widget_id00,.target,special://skin/fakestrings)
- limit * Skin.SetNumeric(widget_id00_limit)
- sortby Skin.SetFile(widget_id00,.sortby,special://skin/fakestrings)
- sortorder Skin.SetFile(widget_id00,.sortorder,special://skin/fakestrings)

- content Skin.SetPath(widget_id00_contentpath,special://skin/fakestrings/paths)
...
Usage :
xml:
<content target="$VAR[$PARAM[widgetid]target" limit="$VAR[$PARAM[widgetid]limit]" sortby="$VAR[$PARAM[widgetid]sortby]" sortorder="$VAR[$PARAM[widgetid]sortby]">$VAR[$PARAM[widgetid]content</content>
contra
- need use variable to get rid of specialprotocolpath + extension, and return just values
- inconvenient code, espeacially for contentpaths
- not user friendly ( e.g. - click ok in empty folderpath to choose content)
I've made something like this in Embuary. But it's a little complex. 

xml:

>
    <include name="CustomWidgetConfigTemplate">
        <control type="button" id="101">
            <include>SettingsButton</include>
            <onclick>Skin.SetString(UserWidget$PARAM[nr]_name)</onclick>
            <label>$LOCALIZE[21864]</label>
            <label2>$INFO[Skin.String(UserWidget$PARAM[nr]_name)]</label2>
        </control>
        <control type="button" id="102">
            <include>SettingsButton</include>
            <onclick>SetProperty(Dialog.1.Label,$LOCALIZE[3])</onclick>
            <onclick>SetProperty(Dialog.1.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_target,videos)||Skin.SetString(UserWidget$PARAM[nr]_target.label,$LOCALIZE[3]))</onclick>
            <onclick>SetProperty(Dialog.2.Label,$LOCALIZE[2])</onclick>
            <onclick>SetProperty(Dialog.2.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_target,music)||Skin.SetString(UserWidget$PARAM[nr]_target.label,$LOCALIZE[2]))</onclick>
            <onclick>SetProperty(Dialog.3.Label,$LOCALIZE[1])</onclick>
            <onclick>SetProperty(Dialog.3.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_target,pictures)||Skin.SetString(UserWidget$PARAM[nr]_target.label,$LOCALIZE[1]))</onclick>
            <onclick>SetProperty(Dialog.4.Label,$LOCALIZE[29921])</onclick>
            <onclick>SetProperty(Dialog.4.BuiltIn,Skin.Reset(UserWidget$PARAM[nr]_target)||Skin.SetString(UserWidget$PARAM[nr]_target.label,$LOCALIZE[29921]))</onclick>
            <onclick>RunScript(script.embuary.helper,action=createselect,header=$LOCALIZE[467])</onclick>
            <label>$LOCALIZE[467]</label>
            <label2>$INFO[Skin.String(UserWidget$PARAM[nr]_target.label)]</label2>
        </control>
        <control type="button" id="103">
            <include>SettingsButton</include>
            <onclick>SetProperty(Dialog.1.Label,$LOCALIZE[20021])</onclick>
            <onclick>SetProperty(Dialog.1.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_layout,HomePosterWidget)||Skin.SetString(UserWidget$PARAM[nr]_layout.label,$LOCALIZE[20021]))</onclick>
            <onclick>SetProperty(Dialog.2.Label,$LOCALIZE[31004])</onclick>
            <onclick>SetProperty(Dialog.2.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_layout,HomeWideWidget)||Skin.SetString(UserWidget$PARAM[nr]_layout.label,$LOCALIZE[31004]))</onclick>
            <onclick>SetProperty(Dialog.3.Label,$LOCALIZE[31005])</onclick>
            <onclick>SetProperty(Dialog.3.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_layout,HomeSquareWidget)||Skin.SetString(UserWidget$PARAM[nr]_layout.label,$LOCALIZE[31005]))</onclick>
            <onclick>RunScript(script.embuary.helper,action=createselect,header=$LOCALIZE[31101])</onclick>
            <label>$LOCALIZE[31101]</label>
            <label2>$INFO[Skin.String(UserWidget$PARAM[nr]_layout.label)]</label2>
        </control>
        <control type="radiobutton" id="104">
            <include>SettingsButton</include>
            <onclick>Skin.ToggleSetting(UserWidget$PARAM[nr]_forceIcon)</onclick>
            <label>$LOCALIZE[31344]</label>
            <selected>Skin.HasSetting(UserWidget$PARAM[nr]_forceIcon)</selected>
        </control>
        <control type="button" id="105">
            <include>SettingsButton</include>
            <label>$LOCALIZE[581]</label>
            <onclick>SetProperty(Dialog.1.Label,$LOCALIZE[571])</onclick>
            <onclick>SetProperty(Dialog.1.BuiltIn,Skin.Reset(UserWidget$PARAM[nr]_sortby))</onclick>
            <onclick>SetProperty(Dialog.2.Label,Label)</onclick>
            <onclick>SetProperty(Dialog.2.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortby,label))</onclick>
            <onclick>SetProperty(Dialog.3.Label,Title)</onclick>
            <onclick>SetProperty(Dialog.3.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortby,title))</onclick>
            <onclick>SetProperty(Dialog.4.Label,TVShowTitle)</onclick>
            <onclick>SetProperty(Dialog.4.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortby,tvshowtitle))</onclick>
            <onclick>SetProperty(Dialog.5.Label,SortTitle)</onclick>
            <onclick>SetProperty(Dialog.5.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortby,sorttitle))</onclick>
            <onclick>SetProperty(Dialog.6.Label,Artist)</onclick>
            <onclick>SetProperty(Dialog.6.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortby,artist))</onclick>
            <onclick>SetProperty(Dialog.7.Label,Album)</onclick>
            <onclick>SetProperty(Dialog.7.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortby,album))</onclick>
            <onclick>SetProperty(Dialog.8.Label,Random)</onclick>
            <onclick>SetProperty(Dialog.8.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortby,random))</onclick>
            <onclick>SetProperty(Dialog.9.Label,Year)</onclick>
            <onclick>SetProperty(Dialog.9.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortby,year))</onclick>
            <onclick>SetProperty(Dialog.10.Label,DateAdded)</onclick>
            <onclick>SetProperty(Dialog.10.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortby,dateadded))</onclick>
            <onclick>SetProperty(Dialog.11.Label,LastPlayed)</onclick>
            <onclick>SetProperty(Dialog.11.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortby,lastplayed))</onclick>
            <onclick>SetProperty(Dialog.12.Label,PlayCount)</onclick>
            <onclick>SetProperty(Dialog.12.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortby,playcount))</onclick>
            <onclick>SetProperty(Dialog.13.Label,Season)</onclick>
            <onclick>SetProperty(Dialog.13.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortby,season))</onclick>
            <onclick>SetProperty(Dialog.14.Label,Episode)</onclick>
            <onclick>SetProperty(Dialog.14.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortby,episode))</onclick>
            <onclick>SetProperty(Dialog.15.Label,TrackNumber)</onclick>
            <onclick>SetProperty(Dialog.15.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortby,tracknumber))</onclick>
            <onclick>RunScript(script.embuary.helper,action=createselect,header=$LOCALIZE[581])</onclick>
            <label2>$INFO[Skin.String(UserWidget$PARAM[nr]_sortby),',']</label2>
        </control>
        <control type="button" id="106">
            <include>SettingsButton</include>
            <label>$LOCALIZE[580]</label>
            <onclick>SetProperty(Dialog.1.Label,$LOCALIZE[571])</onclick>
            <onclick>SetProperty(Dialog.1.BuiltIn,Skin.Reset(UserWidget$PARAM[nr]_sortorder))</onclick>
            <onclick>SetProperty(Dialog.2.Label,$LOCALIZE[584])</onclick>
            <onclick>SetProperty(Dialog.2.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortorder,ascending))</onclick>
            <onclick>SetProperty(Dialog.3.Label,$LOCALIZE[585])</onclick>
            <onclick>SetProperty(Dialog.3.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortorder,descending))</onclick>
            <onclick>RunScript(script.embuary.helper,action=createselect,header=$LOCALIZE[580])</onclick>
            <label2>$INFO[Skin.String(UserWidget$PARAM[nr]_sortorder),',']</label2>
        </control>
        <control type="button" id="107">
            <include>SettingsButton</include>
            <label>$LOCALIZE[21427]</label>
            <onclick>Skin.SetNumeric(UserWidget$PARAM[nr]_limit)</onclick>
            <label2>$INFO[Skin.String(UserWidget$PARAM[nr]_limit)]</label2>
        </control>
    </include>

xml:


    <include name="W_Custom_Template">
        <include condition="!Skin.HasSetting(UserWidget$PARAM[nr]_forceIcon) + [String.IsEqual(Skin.String(UserWidget$PARAM[nr]_layout),HomePosterWidget) | String.IsEmpty(Skin.String(UserWidget$PARAM[nr]_layout))]" content="PosterWidget">
            <param name="visible" value="!String.IsEmpty(Skin.String(UserWidget$PARAM[nr]_path))"/>
            <param name="id" value="$PARAM[id]"/>
            <param name="onup" value="$PARAM[onup]"/>
            <param name="ondown" value="$PARAM[ondown]"/>
            <param name="headline" value="$INFO[Skin.String(UserWidget$PARAM[nr]_name)]"/>
            <param name="widget_target" value="$INFO[Skin.String(UserWidget$PARAM[nr]_target)]"/>
            <param name="sortby" value="$INFO[Skin.String(UserWidget$PARAM[nr]_sortby)]"/>
            <param name="sortorder" value="$INFO[Skin.String(UserWidget$PARAM[nr]_sortorder)]"/>
            <param name="limit" value="$INFO[Skin.String(UserWidget$PARAM[nr]_limit)]"/>
            <param name="content" value="$VAR[CWidgetReloadPath$PARAM[nr]]"/>
        </include>
        <include condition="!Skin.HasSetting(UserWidget$PARAM[nr]_forceIcon) + String.IsEqual(Skin.String(UserWidget$PARAM[nr]_layout),HomeWideWidget)" content="WideWidget">
            <param name="visible" value="!String.IsEmpty(Skin.String(UserWidget$PARAM[nr]_path))"/>
            <param name="id" value="$PARAM[id]"/>
            <param name="onup" value="$PARAM[onup]"/>
            <param name="ondown" value="$PARAM[ondown]"/>
            <param name="headline" value="$INFO[Skin.String(UserWidget$PARAM[nr]_name)]"/>
            <param name="widget_target" value="$INFO[Skin.String(UserWidget$PARAM[nr]_target)]"/>
            <param name="sortby" value="$INFO[Skin.String(UserWidget$PARAM[nr]_sortby)]"/>
            <param name="sortorder" value="$INFO[Skin.String(UserWidget$PARAM[nr]_sortorder)]"/>
            <param name="limit" value="$INFO[Skin.String(UserWidget$PARAM[nr]_limit)]"/>
            <param name="content" value="$VAR[CWidgetReloadPath$PARAM[nr]]"/>
        </include>
        <include condition="!Skin.HasSetting(UserWidget$PARAM[nr]_forceIcon) + String.IsEqual(Skin.String(UserWidget$PARAM[nr]_layout),HomeSquareWidget)" content="SquareWidget">
            <param name="visible" value="!String.IsEmpty(Skin.String(UserWidget$PARAM[nr]_path))"/>
            <param name="id" value="$PARAM[id]"/>
            <param name="onup" value="$PARAM[onup]"/>
            <param name="ondown" value="$PARAM[ondown]"/>
            <param name="headline" value="$INFO[Skin.String(UserWidget$PARAM[nr]_name)]"/>
            <param name="widget_target" value="$INFO[Skin.String(UserWidget$PARAM[nr]_target)]"/>
            <param name="sortby" value="$INFO[Skin.String(UserWidget$PARAM[nr]_sortby)]"/>
            <param name="sortorder" value="$INFO[Skin.String(UserWidget$PARAM[nr]_sortorder)]"/>
            <param name="limit" value="$INFO[Skin.String(UserWidget$PARAM[nr]_limit)]"/>
            <param name="content" value="$VAR[CWidgetReloadPath$PARAM[nr]]"/>
        </include>
        <include condition="Skin.HasSetting(UserWidget$PARAM[nr]_forceIcon) + [String.IsEqual(Skin.String(UserWidget$PARAM[nr]_layout),HomePosterWidget) | String.IsEmpty(Skin.String(UserWidget$PARAM[nr]_layout))]" content="PosterWidget">
            <param name="visible" value="!String.IsEmpty(Skin.String(UserWidget$PARAM[nr]_path))"/>
            <param name="id" value="$PARAM[id]"/>
            <param name="onup" value="$PARAM[onup]"/>
            <param name="ondown" value="$PARAM[ondown]"/>
            <param name="headline" value="$INFO[Skin.String(UserWidget$PARAM[nr]_name)]"/>
            <param name="widget_target" value="$INFO[Skin.String(UserWidget$PARAM[nr]_target)]"/>
            <param name="sortby" value="$INFO[Skin.String(UserWidget$PARAM[nr]_sortby)]"/>
            <param name="sortorder" value="$INFO[Skin.String(UserWidget$PARAM[nr]_sortorder)]"/>
            <param name="limit" value="$INFO[Skin.String(UserWidget$PARAM[nr]_limit)]"/>
            <param name="icon" value="$VAR[CWidgetDefaultIcon]"/>
            <param name="content" value="$VAR[CWidgetReloadPath$PARAM[nr]]"/>
        </include>
        <include condition="Skin.HasSetting(UserWidget$PARAM[nr]_forceIcon) + String.IsEqual(Skin.String(UserWidget$PARAM[nr]_layout),HomeWideWidget)" content="WideWidget">
            <param name="visible" value="!String.IsEmpty(Skin.String(UserWidget$PARAM[nr]_path))"/>
            <param name="id" value="$PARAM[id]"/>
            <param name="onup" value="$PARAM[onup]"/>
            <param name="ondown" value="$PARAM[ondown]"/>
            <param name="headline" value="$INFO[Skin.String(UserWidget$PARAM[nr]_name)]"/>
            <param name="widget_target" value="$INFO[Skin.String(UserWidget$PARAM[nr]_target)]"/>
            <param name="sortby" value="$INFO[Skin.String(UserWidget$PARAM[nr]_sortby)]"/>
            <param name="sortorder" value="$INFO[Skin.String(UserWidget$PARAM[nr]_sortorder)]"/>
            <param name="limit" value="$INFO[Skin.String(UserWidget$PARAM[nr]_limit)]"/>
            <param name="icon" value="$VAR[CWidgetDefaultIcon]"/>
            <param name="content" value="$VAR[CWidgetReloadPath$PARAM[nr]]"/>
        </include>
        <include condition="Skin.HasSetting(UserWidget$PARAM[nr]_forceIcon) + String.IsEqual(Skin.String(UserWidget$PARAM[nr]_layout),HomeSquareWidget)" content="SquareWidget">
            <param name="visible" value="!String.IsEmpty(Skin.String(UserWidget$PARAM[nr]_path))"/>
            <param name="id" value="$PARAM[id]"/>
            <param name="onup" value="$PARAM[onup]"/>
            <param name="ondown" value="$PARAM[ondown]"/>
            <param name="headline" value="$INFO[Skin.String(UserWidget$PARAM[nr]_name)]"/>
            <param name="widget_target" value="$INFO[Skin.String(UserWidget$PARAM[nr]_target)]"/>
            <param name="sortby" value="$INFO[Skin.String(UserWidget$PARAM[nr]_sortby)]"/>
            <param name="sortorder" value="$INFO[Skin.String(UserWidget$PARAM[nr]_sortorder)]"/>
            <param name="limit" value="$INFO[Skin.String(UserWidget$PARAM[nr]_limit)]"/>
            <param name="icon" value="$VAR[CWidgetDefaultIcon]"/>
            <param name="content" value="$VAR[CWidgetReloadPath$PARAM[nr]]"/>
        </include>
    </include>
(2019-09-18, 07:43)sualfred Wrote: [ -> ]I've made something like this in Embuary. But it's a little complex. 

xml:

>
    <include name="CustomWidgetConfigTemplate">
        <control type="button" id="101">
            <include>SettingsButton</include>
            <onclick>Skin.SetString(UserWidget$PARAM[nr]_name)</onclick>
            <label>$LOCALIZE[21864]</label>
            <label2>$INFO[Skin.String(UserWidget$PARAM[nr]_name)]</label2>
        </control>
        <control type="button" id="102">
            <include>SettingsButton</include>
            <onclick>SetProperty(Dialog.1.Label,$LOCALIZE[3])</onclick>
            <onclick>SetProperty(Dialog.1.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_target,videos)||Skin.SetString(UserWidget$PARAM[nr]_target.label,$LOCALIZE[3]))</onclick>
            <onclick>SetProperty(Dialog.2.Label,$LOCALIZE[2])</onclick>
            <onclick>SetProperty(Dialog.2.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_target,music)||Skin.SetString(UserWidget$PARAM[nr]_target.label,$LOCALIZE[2]))</onclick>
            <onclick>SetProperty(Dialog.3.Label,$LOCALIZE[1])</onclick>
            <onclick>SetProperty(Dialog.3.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_target,pictures)||Skin.SetString(UserWidget$PARAM[nr]_target.label,$LOCALIZE[1]))</onclick>
            <onclick>SetProperty(Dialog.4.Label,$LOCALIZE[29921])</onclick>
            <onclick>SetProperty(Dialog.4.BuiltIn,Skin.Reset(UserWidget$PARAM[nr]_target)||Skin.SetString(UserWidget$PARAM[nr]_target.label,$LOCALIZE[29921]))</onclick>
            <onclick>RunScript(script.embuary.helper,action=createselect,header=$LOCALIZE[467])</onclick>
            <label>$LOCALIZE[467]</label>
            <label2>$INFO[Skin.String(UserWidget$PARAM[nr]_target.label)]</label2>
        </control>
        <control type="button" id="103">
            <include>SettingsButton</include>
            <onclick>SetProperty(Dialog.1.Label,$LOCALIZE[20021])</onclick>
            <onclick>SetProperty(Dialog.1.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_layout,HomePosterWidget)||Skin.SetString(UserWidget$PARAM[nr]_layout.label,$LOCALIZE[20021]))</onclick>
            <onclick>SetProperty(Dialog.2.Label,$LOCALIZE[31004])</onclick>
            <onclick>SetProperty(Dialog.2.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_layout,HomeWideWidget)||Skin.SetString(UserWidget$PARAM[nr]_layout.label,$LOCALIZE[31004]))</onclick>
            <onclick>SetProperty(Dialog.3.Label,$LOCALIZE[31005])</onclick>
            <onclick>SetProperty(Dialog.3.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_layout,HomeSquareWidget)||Skin.SetString(UserWidget$PARAM[nr]_layout.label,$LOCALIZE[31005]))</onclick>
            <onclick>RunScript(script.embuary.helper,action=createselect,header=$LOCALIZE[31101])</onclick>
            <label>$LOCALIZE[31101]</label>
            <label2>$INFO[Skin.String(UserWidget$PARAM[nr]_layout.label)]</label2>
        </control>
        <control type="radiobutton" id="104">
            <include>SettingsButton</include>
            <onclick>Skin.ToggleSetting(UserWidget$PARAM[nr]_forceIcon)</onclick>
            <label>$LOCALIZE[31344]</label>
            <selected>Skin.HasSetting(UserWidget$PARAM[nr]_forceIcon)</selected>
        </control>
        <control type="button" id="105">
            <include>SettingsButton</include>
            <label>$LOCALIZE[581]</label>
            <onclick>SetProperty(Dialog.1.Label,$LOCALIZE[571])</onclick>
            <onclick>SetProperty(Dialog.1.BuiltIn,Skin.Reset(UserWidget$PARAM[nr]_sortby))</onclick>
            <onclick>SetProperty(Dialog.2.Label,Label)</onclick>
            <onclick>SetProperty(Dialog.2.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortby,label))</onclick>
            <onclick>SetProperty(Dialog.3.Label,Title)</onclick>
            <onclick>SetProperty(Dialog.3.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortby,title))</onclick>
            <onclick>SetProperty(Dialog.4.Label,TVShowTitle)</onclick>
            <onclick>SetProperty(Dialog.4.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortby,tvshowtitle))</onclick>
            <onclick>SetProperty(Dialog.5.Label,SortTitle)</onclick>
            <onclick>SetProperty(Dialog.5.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortby,sorttitle))</onclick>
            <onclick>SetProperty(Dialog.6.Label,Artist)</onclick>
            <onclick>SetProperty(Dialog.6.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortby,artist))</onclick>
            <onclick>SetProperty(Dialog.7.Label,Album)</onclick>
            <onclick>SetProperty(Dialog.7.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortby,album))</onclick>
            <onclick>SetProperty(Dialog.8.Label,Random)</onclick>
            <onclick>SetProperty(Dialog.8.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortby,random))</onclick>
            <onclick>SetProperty(Dialog.9.Label,Year)</onclick>
            <onclick>SetProperty(Dialog.9.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortby,year))</onclick>
            <onclick>SetProperty(Dialog.10.Label,DateAdded)</onclick>
            <onclick>SetProperty(Dialog.10.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortby,dateadded))</onclick>
            <onclick>SetProperty(Dialog.11.Label,LastPlayed)</onclick>
            <onclick>SetProperty(Dialog.11.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortby,lastplayed))</onclick>
            <onclick>SetProperty(Dialog.12.Label,PlayCount)</onclick>
            <onclick>SetProperty(Dialog.12.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortby,playcount))</onclick>
            <onclick>SetProperty(Dialog.13.Label,Season)</onclick>
            <onclick>SetProperty(Dialog.13.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortby,season))</onclick>
            <onclick>SetProperty(Dialog.14.Label,Episode)</onclick>
            <onclick>SetProperty(Dialog.14.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortby,episode))</onclick>
            <onclick>SetProperty(Dialog.15.Label,TrackNumber)</onclick>
            <onclick>SetProperty(Dialog.15.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortby,tracknumber))</onclick>
            <onclick>RunScript(script.embuary.helper,action=createselect,header=$LOCALIZE[581])</onclick>
            <label2>$INFO[Skin.String(UserWidget$PARAM[nr]_sortby),',']</label2>
        </control>
        <control type="button" id="106">
            <include>SettingsButton</include>
            <label>$LOCALIZE[580]</label>
            <onclick>SetProperty(Dialog.1.Label,$LOCALIZE[571])</onclick>
            <onclick>SetProperty(Dialog.1.BuiltIn,Skin.Reset(UserWidget$PARAM[nr]_sortorder))</onclick>
            <onclick>SetProperty(Dialog.2.Label,$LOCALIZE[584])</onclick>
            <onclick>SetProperty(Dialog.2.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortorder,ascending))</onclick>
            <onclick>SetProperty(Dialog.3.Label,$LOCALIZE[585])</onclick>
            <onclick>SetProperty(Dialog.3.BuiltIn,Skin.SetString(UserWidget$PARAM[nr]_sortorder,descending))</onclick>
            <onclick>RunScript(script.embuary.helper,action=createselect,header=$LOCALIZE[580])</onclick>
            <label2>$INFO[Skin.String(UserWidget$PARAM[nr]_sortorder),',']</label2>
        </control>
        <control type="button" id="107">
            <include>SettingsButton</include>
            <label>$LOCALIZE[21427]</label>
            <onclick>Skin.SetNumeric(UserWidget$PARAM[nr]_limit)</onclick>
            <label2>$INFO[Skin.String(UserWidget$PARAM[nr]_limit)]</label2>
        </control>
    </include>

xml:


    <include name="W_Custom_Template">
        <include condition="!Skin.HasSetting(UserWidget$PARAM[nr]_forceIcon) + [String.IsEqual(Skin.String(UserWidget$PARAM[nr]_layout),HomePosterWidget) | String.IsEmpty(Skin.String(UserWidget$PARAM[nr]_layout))]" content="PosterWidget">
            <param name="visible" value="!String.IsEmpty(Skin.String(UserWidget$PARAM[nr]_path))"/>
            <param name="id" value="$PARAM[id]"/>
            <param name="onup" value="$PARAM[onup]"/>
            <param name="ondown" value="$PARAM[ondown]"/>
            <param name="headline" value="$INFO[Skin.String(UserWidget$PARAM[nr]_name)]"/>
            <param name="widget_target" value="$INFO[Skin.String(UserWidget$PARAM[nr]_target)]"/>
            <param name="sortby" value="$INFO[Skin.String(UserWidget$PARAM[nr]_sortby)]"/>
            <param name="sortorder" value="$INFO[Skin.String(UserWidget$PARAM[nr]_sortorder)]"/>
            <param name="limit" value="$INFO[Skin.String(UserWidget$PARAM[nr]_limit)]"/>
            <param name="content" value="$VAR[CWidgetReloadPath$PARAM[nr]]"/>
        </include>
        <include condition="!Skin.HasSetting(UserWidget$PARAM[nr]_forceIcon) + String.IsEqual(Skin.String(UserWidget$PARAM[nr]_layout),HomeWideWidget)" content="WideWidget">
            <param name="visible" value="!String.IsEmpty(Skin.String(UserWidget$PARAM[nr]_path))"/>
            <param name="id" value="$PARAM[id]"/>
            <param name="onup" value="$PARAM[onup]"/>
            <param name="ondown" value="$PARAM[ondown]"/>
            <param name="headline" value="$INFO[Skin.String(UserWidget$PARAM[nr]_name)]"/>
            <param name="widget_target" value="$INFO[Skin.String(UserWidget$PARAM[nr]_target)]"/>
            <param name="sortby" value="$INFO[Skin.String(UserWidget$PARAM[nr]_sortby)]"/>
            <param name="sortorder" value="$INFO[Skin.String(UserWidget$PARAM[nr]_sortorder)]"/>
            <param name="limit" value="$INFO[Skin.String(UserWidget$PARAM[nr]_limit)]"/>
            <param name="content" value="$VAR[CWidgetReloadPath$PARAM[nr]]"/>
        </include>
        <include condition="!Skin.HasSetting(UserWidget$PARAM[nr]_forceIcon) + String.IsEqual(Skin.String(UserWidget$PARAM[nr]_layout),HomeSquareWidget)" content="SquareWidget">
            <param name="visible" value="!String.IsEmpty(Skin.String(UserWidget$PARAM[nr]_path))"/>
            <param name="id" value="$PARAM[id]"/>
            <param name="onup" value="$PARAM[onup]"/>
            <param name="ondown" value="$PARAM[ondown]"/>
            <param name="headline" value="$INFO[Skin.String(UserWidget$PARAM[nr]_name)]"/>
            <param name="widget_target" value="$INFO[Skin.String(UserWidget$PARAM[nr]_target)]"/>
            <param name="sortby" value="$INFO[Skin.String(UserWidget$PARAM[nr]_sortby)]"/>
            <param name="sortorder" value="$INFO[Skin.String(UserWidget$PARAM[nr]_sortorder)]"/>
            <param name="limit" value="$INFO[Skin.String(UserWidget$PARAM[nr]_limit)]"/>
            <param name="content" value="$VAR[CWidgetReloadPath$PARAM[nr]]"/>
        </include>
        <include condition="Skin.HasSetting(UserWidget$PARAM[nr]_forceIcon) + [String.IsEqual(Skin.String(UserWidget$PARAM[nr]_layout),HomePosterWidget) | String.IsEmpty(Skin.String(UserWidget$PARAM[nr]_layout))]" content="PosterWidget">
            <param name="visible" value="!String.IsEmpty(Skin.String(UserWidget$PARAM[nr]_path))"/>
            <param name="id" value="$PARAM[id]"/>
            <param name="onup" value="$PARAM[onup]"/>
            <param name="ondown" value="$PARAM[ondown]"/>
            <param name="headline" value="$INFO[Skin.String(UserWidget$PARAM[nr]_name)]"/>
            <param name="widget_target" value="$INFO[Skin.String(UserWidget$PARAM[nr]_target)]"/>
            <param name="sortby" value="$INFO[Skin.String(UserWidget$PARAM[nr]_sortby)]"/>
            <param name="sortorder" value="$INFO[Skin.String(UserWidget$PARAM[nr]_sortorder)]"/>
            <param name="limit" value="$INFO[Skin.String(UserWidget$PARAM[nr]_limit)]"/>
            <param name="icon" value="$VAR[CWidgetDefaultIcon]"/>
            <param name="content" value="$VAR[CWidgetReloadPath$PARAM[nr]]"/>
        </include>
        <include condition="Skin.HasSetting(UserWidget$PARAM[nr]_forceIcon) + String.IsEqual(Skin.String(UserWidget$PARAM[nr]_layout),HomeWideWidget)" content="WideWidget">
            <param name="visible" value="!String.IsEmpty(Skin.String(UserWidget$PARAM[nr]_path))"/>
            <param name="id" value="$PARAM[id]"/>
            <param name="onup" value="$PARAM[onup]"/>
            <param name="ondown" value="$PARAM[ondown]"/>
            <param name="headline" value="$INFO[Skin.String(UserWidget$PARAM[nr]_name)]"/>
            <param name="widget_target" value="$INFO[Skin.String(UserWidget$PARAM[nr]_target)]"/>
            <param name="sortby" value="$INFO[Skin.String(UserWidget$PARAM[nr]_sortby)]"/>
            <param name="sortorder" value="$INFO[Skin.String(UserWidget$PARAM[nr]_sortorder)]"/>
            <param name="limit" value="$INFO[Skin.String(UserWidget$PARAM[nr]_limit)]"/>
            <param name="icon" value="$VAR[CWidgetDefaultIcon]"/>
            <param name="content" value="$VAR[CWidgetReloadPath$PARAM[nr]]"/>
        </include>
        <include condition="Skin.HasSetting(UserWidget$PARAM[nr]_forceIcon) + String.IsEqual(Skin.String(UserWidget$PARAM[nr]_layout),HomeSquareWidget)" content="SquareWidget">
            <param name="visible" value="!String.IsEmpty(Skin.String(UserWidget$PARAM[nr]_path))"/>
            <param name="id" value="$PARAM[id]"/>
            <param name="onup" value="$PARAM[onup]"/>
            <param name="ondown" value="$PARAM[ondown]"/>
            <param name="headline" value="$INFO[Skin.String(UserWidget$PARAM[nr]_name)]"/>
            <param name="widget_target" value="$INFO[Skin.String(UserWidget$PARAM[nr]_target)]"/>
            <param name="sortby" value="$INFO[Skin.String(UserWidget$PARAM[nr]_sortby)]"/>
            <param name="sortorder" value="$INFO[Skin.String(UserWidget$PARAM[nr]_sortorder)]"/>
            <param name="limit" value="$INFO[Skin.String(UserWidget$PARAM[nr]_limit)]"/>
            <param name="icon" value="$VAR[CWidgetDefaultIcon]"/>
            <param name="content" value="$VAR[CWidgetReloadPath$PARAM[nr]]"/>
        </include>
    </include>

Thanks,
will take a deeper look later.
at first look

xml:
RunScript(script.embuary.helper,action=createselect,header=foo)

is what i'am looking for.

seems i overread it in your wiki.
@sualfred

Hi, first THANKS. Take a look at your code, has helped alot.

May a bit offtopic, but actual i just didnt want create a new one.

Is there any known 'bug', when using SkinStrings as parameters in includes?

I couldn track down the issue.

In my include, when i use hardcoded text all is fine but using  StinString which is exactlc the same output is failing to work.
xml:
<param name="layout" value="circle" />
<param name="layout" value="landscape" />

Not Working
txt:
$INFO[Skin.String(UserWidget1_layout)] = circle
$INFO[Skin.String(UserWidget2_layout)] = landscape
xml:

<param name="layout" value="$INFO[Skin.String(UserWidget1_layout)]" />
<param name="layout" value="$INFO[Skin.String(UserWidget2_layout)]" />

Video - correct artwork when using hardcoded text, missing artwork when using skinstring(foo)=match previous used hardcoded label



Code used:

xml:
<include content="Universal_Container">
                        <!-- nested -->
                        <param name="type" value="panel" />
                        <param name="id" value="8620" />
                        <param name="type_height" value="350" />
                        
                        <param name="layout_width" value="260" />
                        <param name="layout_height" value="350" />
                        
                        <param name="itemwidth" value="250" />
                        <param name="itemheight" value="250" />
                        
                        <param name="layout" value="$INFO[Skin.String(UserWidget1_layout]" />
                        <param name="circle_visible" value="true" />
                        
                        <param name="visible" value="Integer.IsGreater(Container(8620).NumItems,0) | Container(8620).IsUpdating" />
                        
                        <!-- unnested actions-->
                        <animation effect="fade" start="100" end="0" condition="!Integer.IsGreater(Container(8620).NumItems,0) | Container(8620).IsUpdating">Conditional</animation>
                        <content target="$INFO[Skin.String(UserWidget1_target)]" limit="$INFO[Skin.String(UserWidget1_limit)]" sortorder="$INFO[Skin.String(UserWidget1_sortorder)]" sortby="$INFO[Skin.String(UserWidget1_sortby)]">$INFO[Skin.String(UserWidget1_path)]</content>
                        
                        
                        
                    </include>
                    
                    <include content="Universal_ContainerHeader">
                        <param name="groupid" value="8521" />
                        <param name="id" value="8621" />
                        <param name="label" value="hardcoded=landscape - $INFO[Skin.String(UserWidget2_layout,layout: ,] | $INFO[Skin.String(UserWidget2_sortby),sortby: ,] | $INFO[Skin.String(UserWidget2_target),target: ,] | $INFO[Skin.String(UserWidget2_sortorder),sortorder: ,] | $INFO[Skin.String(UserWidget2_limit),limit: ,]" />
                        <visible>Control.IsVisible(8621)</visible>
                    </include>
                    <include content="Universal_Container">
                        <param name="type" value="panel" />
                        <param name="id" value="8621" />
                        <param name="type_height" value="350" />
                        <param name="layout_width" value="500" />
                        <param name="layout_height" value="350" />
                        <param name="itemwidth" value="480" />
                        <param name="itemheight" value="270" />
                        <param name="layout" value="$INFO[Skin.String(UserWidget2_layout)]" />
                        <param name="ls_overlay_visible" value="true" />
                        <param name="tags_visible" value="true" />
                        <param name="visible" value="Integer.IsGreater(Container(8621).NumItems,0) | Container(8621).IsUpdating" />
                        <animation effect="fade" start="100" end="0" condition="!Integer.IsGreater(Container(8621).NumItems,0) | Container(8621).IsUpdating">Conditional</animation>
                        <content target="$INFO[Skin.String(UserWidget2_target)]" limit="$INFO[Skin.String(UserWidget2_limit)]" sortorder="$INFO[Skin.String(UserWidget2_sortorder)]" sortby="$INFO[Skin.String(UserWidget2_sortby)]">$INFO[Skin.String(UserWidget2_path)]</content>
                    </include>
                    
                    <!-- 1:1 CIRCLE  -->
                    <include content="Universal_ContainerHeader">
                        <param name="groupid" value="8500" />
                        <param name="id" value="8600" />
                        <param name="label" value="CIRCLE videodb://recentlyaddedmovies/" />
                        <visible>Control.IsVisible(8600)</visible>
                    </include>
                    <include content="Universal_Container">
                        <param name="type" value="panel" />
                        <param name="id" value="8600" />
                        <param name="type_height" value="350" />
                        
                        <param name="layout_width" value="260" />
                        <param name="layout_height" value="350" />
                        
                        <param name="itemwidth" value="250" />
                        <param name="itemheight" value="250" />
                        
                        <param name="layout" value="circle" />
                        <param name="circle_visible" value="true" />
                        
                        <param name="visible" value="Integer.IsGreater(Container(8600).NumItems,0) | Container(8600).IsUpdating" />
                        
                        <!-- unnested actions-->
                        <animation effect="fade" start="100" end="0" condition="!Integer.IsGreater(Container(8600).NumItems,0) | Container(8600).IsUpdating">Conditional</animation>
                        <content>videodb://recentlyaddedmovies/</content>
                        
                        
                        
                    </include>
                    
                    
                    <!-- 1:0.5625 , 19:9 fanart-landscape  -->
                    <include content="Universal_ContainerHeader">
                        <param name="groupid" value="8501" />
                        <param name="id" value="8601" />
                        <param name="label" value="LANDSCAPE no tags videodb://recentlyaddedmovies/" />
                        <visible>Control.IsVisible(8601)</visible>
                    </include>
                    <include content="Universal_Container">
                        <param name="type" value="panel" />
                        <param name="id" value="8601" />
                        <param name="type_height" value="350" />
                        
                        <param name="layout_width" value="500" />
                        <param name="layout_height" value="280" />
                        
                        <param name="itemwidth" value="480" />
                        <param name="itemheight" value="270" />
                        
                        <param name="layout" value="landscape" />
                        
                        <param name="ls_overlay_visible" value="true" />
                        
                        <param name="visible" value="Integer.IsGreater(Container(8601).NumItems,0) | Container(8601).IsUpdating" />
                        <animation effect="fade" start="100" end="0" condition="!Integer.IsGreater(Container(8601).NumItems,0) | Container(8601).IsUpdating">Conditional</animation>
                        <content>videodb://recentlyaddedmovies/</content>
                    </include>


####
<include name="Universal_Container">
    
        <param name="type" default="panel" />
        <param name="type_height" default="400" />
        <param name="type_pos_top" default="50" />
        <param name="orientation" default="horizontal" />
        
        <param name="circle_visible" default="false" />
        <param name="tags_visible" default="false" />
        <param name="ls_overlay_visible" default="false" />
        <param name="banner_overlay_visible" default="false" />
        
        <definition>
        <control type="$PARAM[type]" id="$PARAM[id]">
            <nested />
            <orientation>$PARAM[orientation]</orientation>
            <preloaditems>2</preloaditems>
            <scrolltime tween="quadratic">400</scrolltime>
            
            <height>$PARAM[type_height]</height>
            <top>$PARAM[type_pos_top]</top>
            
            <visible>$PARAM[visible]</visible>
            <itemlayout height="$PARAM[layout_height]" width="$PARAM[layout_width]">
                <control type="group">
                    <width>$PARAM[itemwidth]</width>
                    <height>$PARAM[itemheight]</height>
                    <include content="UniversalLayout">
                        <param name="colordiffuse" value="$VAR[Container_item_nf]" />
                        <param name="artwork" value="$PARAM[layout]" />
                        <param name="get_circle" value="$PARAM[circle_visible]" />
                        <param name="get_tags" value="$PARAM[tags_visible]" />
                        <param name="get_landscapelogo" value="$PARAM[ls_overlay_visible]" />
                        <param name="get_bannerlogo" value="$PARAM[banner_overlay_visible]" />
                        <param name="autoscroll" value="false" />
                        <param name="bordersize_bg" value="6" />
                    </include>
                </control>
            </itemlayout>
            <focusedlayout height="$PARAM[layout_height]" width="$PARAM[layout_width]">
                <control type="group">
                    <width>$PARAM[itemwidth]</width>
                    <height>$PARAM[itemheight]</height>
                    <include>Item_Focus_Animation</include>
                    <control type="group">
                        <include content="UniversalLayout">
                            <param name="colordiffuse" value="$VAR[Container_item_fo]" />
                            <param name="artwork" value="$PARAM[layout]" />
                            <param name="get_circle" value="$PARAM[circle_visible]" />
                            <param name="get_tags" value="$PARAM[tags_visible]" />
                            <param name="get_landscapelogo" value="$PARAM[ls_overlay_visible]" />
                            <param name="get_bannerlogo" value="$PARAM[banner_overlay_visible]" />
                            <param name="autoscroll" value="true" />
                            <param name="bordersize_bg" value="4" />
                        </include>
                        
                        
                    </control>
                </control>            
            </focusedlayout>
        </control>
        </definition>
    </include>

##
<include name="UniversalLayout">
        <param name="has_progressbar" default="false" />
        <param name="has_watchedindicator" default="false" />
        <param name="image_fallback_aligny" default="center" />
        
        <definition>
        
        <control type="image">
            <description>bordertexture</description>
            <texture>swan/artworkdiffuse/$PARAM[artwork].png</texture>
            <colordiffuse>$PARAM[colordiffuse]</colordiffuse>
            <bordersize>$PARAM[bordersize_bg]</bordersize>
        </control>
        
        <control type="image">
            <description>kodi default, aspectratio scalediffuse="true" aligny="center" align="center">stretch</description>
            <texture background="true" diffuse="swan/artworkdiffuse/$PARAM[artwork].png" fallback="DefaultVideo.png">$VAR[ImageLayout_$PARAM[artwork]]</texture>
            <bordersize>8</bordersize>
            <visible>!String.IsEmpty(ListItem.Art($PARAM[artwork])) + !String.IsEmpty(ListItem.Art($PARAM[artwork]))</visible>
        </control>
        
        <control type="image">
            <description>Fallback aspect keep</description>
            <texture background="true" diffuse="swan/artworkdiffuse/$PARAM[artwork].png" fallback="DefaultVideo.png">$VAR[ImageLayout_$PARAM[artwork]]</texture>
            <aspectratio scalediffuse="false" aligny="center" align="center">scale</aspectratio>
            <bordersize>8</bordersize>
            <visible>String.IsEmpty(ListItem.Art($PARAM[artwork])) + String.IsEmpty(ListItem.Art($PARAM[artwork]))</visible>
        </control>
        
        <control type="group">
            <visible>$PARAM[get_circle]</visible>
            
            <description>ClearLogo Overlay - also nice on non circle</description>
            <control type="image">
                <visible>
                    [!String.IsEmpty(ListItem.Art(clearlogo)) + !$EXP[IsEpisode]] |
                    [!String.IsEmpty(ListItem.Art(tvshow.clearlogo)) + $EXP[IsEpisode]] |
                    !String.IsEmpty(ListItem.Art(artist.clearlogo)) |
                    !String.IsEmpty(ListItem.Art(albumartist.clearlogo))
                </visible>
                <top>70%</top>
                <height>50%</height>
                <left>10</left>
                <right>10</right>
                <texture background="true">$VAR[ListItemClearLogo]</texture>
                <aspectratio align="center" aligny="center">keep</aspectratio>
            </control>
            <control type="textbox">
                <description>43.3 1 row</description>
                <visible>
                    String.IsEmpty(ListItem.Art(tvshow.clearlogo)) +
                    String.IsEmpty(ListItem.Art(artist.clearlogo)) +
                    String.IsEmpty(ListItem.Art(albumartist.clearlogo)) +
                    String.IsEmpty(ListItem.Art(clearlogo))
                </visible>
                <visible>!String.IsEqual(ListItem.label,..)</visible>
                <autoscroll delay="2000" time="1500" repeat="1500">$PARAM[autoscroll]</autoscroll>
                <top>89%</top>
                <left>10</left>
                <right>10</right>
                <wrapmultiline>true</wrapmultiline>
                <height max="80">auto</height>
                <font>CircleTag_Small</font>
                <align>center</align>
                <aligny>top</aligny>
                <textcolor>$VAR[Container_itemtag]</textcolor>
                <selectedcolor>white</selectedcolor>
                <label>$INFO[ListItem.Label,,]</label>
            </control>
        </control>
        <control type="group">
            <visible>$PARAM[get_landscapelogo]</visible>
            <description>ClearLogo Overlay - fanart</description>
            <control type="image">
                <visible>
                    !String.IsEmpty(ListItem.Episode) |
                    [[$EXP[IsMovie] | $EXP[IsTVShow] | $EXP[IsArtist]] +
                        String.IsEmpty(ListItem.Art(tvshow.landscape)) +
                        String.IsEmpty(ListItem.Art(artist.landscape)) +
                        String.IsEmpty(ListItem.Art(albumartist.landscape)) +
                        String.IsEmpty(ListItem.Art(landscape))]
                </visible>
                <visible>
                    [!String.IsEmpty(ListItem.Art(clearlogo)) + !$EXP[IsEpisode]] |
                    [!String.IsEmpty(ListItem.Art(tvshow.clearlogo)) + $EXP[IsEpisode]] |
                    !String.IsEmpty(ListItem.Art(artist.clearlogo)) |
                    !String.IsEmpty(ListItem.Art(albumartist.clearlogo))
                </visible>
                <bottom>20</bottom>
                <left>10</left>
                <right>10</right>
                <height>50%</height>
                <width>50%</width>
                
                <texture background="true">$VAR[ListItemClearLogo]</texture>
                <aspectratio align="left" aligny="bottom">keep</aspectratio>
            </control>
            
        </control>
        
        <control type="group">
            <visible>$PARAM[get_bannerlogo]</visible>
            <description>ClearLogo Overlay - Banner</description>
            <control type="image">
                <visible>
                    String.IsEmpty(ListItem.Art(tvshow.banner)) +
                    String.IsEmpty(ListItem.Art(artist.banner)) +
                    String.IsEmpty(ListItem.Art(albumartist.banner)) +
                    String.IsEmpty(ListItem.Art(banner))
                </visible>
                <visible>
                    [!String.IsEmpty(ListItem.Art(clearlogo)) + !$EXP[IsEpisode]] |
                    [!String.IsEmpty(ListItem.Art(tvshow.clearlogo)) + $EXP[IsEpisode]] |
                    !String.IsEmpty(ListItem.Art(artist.clearlogo)) |
                    !String.IsEmpty(ListItem.Art(albumartist.clearlogo))
                </visible>
                <bordersize>15</bordersize>
                <aspectratio scalediffuse="false" align="center" aligny="center">keep</aspectratio>
                <texture background="true">$VAR[ListItemClearLogo]</texture>
            </control>
            <control type="label">
                <visible>[String.IsEqual(ListItem.DBTYPE,album) | String.IsEqual(ListItem.DBTYPE,song) | String.IsEqual(ListItem.DBTYPE,episode)]</visible>
                <visible>
                    [!String.IsEqual(ListItem.DBTYPE,album) | !String.IsEqual(ListItem.DBTYPE,song) | !String.IsEqual(ListItem.DBTYPE,episode)] +
                    String.IsEmpty(ListItem.Art(tvshow.banner)) +
                    String.IsEmpty(ListItem.Art(artist.banner)) +
                    String.IsEmpty(ListItem.Art(albumartist.banner)) +
                    String.IsEmpty(ListItem.Art(banner)) +
                    String.IsEmpty(ListItem.Art(tvshow.clearlogo)) +
                    String.IsEmpty(ListItem.Art(artist.clearlogo)) +
                    String.IsEmpty(ListItem.Art(albumartist.clearlogo)) +
                    String.IsEmpty(ListItem.Art(clearlogo))
                </visible>
                <left>5%</left>
                <width>90%</width>
                <height>100%</height>
                <align>center</align>
                <aligny>center</aligny>
                <label>$INFO[ListItem.Label]</label>
                <font>CircleTag</font>
                <textcolor>white</textcolor>
                <shadowcolor>black</shadowcolor>
            </control>    
        </control>
        
        <control type="group">
            <description>ProgressBar No Shadow</description>
            <visible>!$PARAM[get_circle]</visible>
            <visible>[$EXP[IsMovie] | $EXP[IsEpisode]]</visible>
            <left>4%</left>
            <right>4%</right>
            <include content="ProgressBarOverlay" />
        </control>
        
        <control type="group">
            <description>Taglines Bottom, $EXP[forceTags_visible]</description>
            <visible>$PARAM[get_tags] | $EXP[forceTags_visible]</visible>
            
            <control type="textbox">
                <autoscroll delay="2000" time="1500" repeat="1500">$PARAM[autoscroll]</autoscroll>
                <top>101%</top>
                <left>10</left>
                <right>10</right>
                <wrapmultiline>true</wrapmultiline>
                <height>60</height>
                <font>CommonTag</font>
                <align>center</align>
                <aligny>center</aligny>
                <textcolor>$VAR[Container_itemtag]</textcolor>
                <selectedcolor>white</selectedcolor>
                <label>$VAR[Tags_Bottom]</label>
            </control>
        </control>
        
        <control type="group">
            <description>watched indicators top right - num items</description>
            
            <control type="image">
                <top>15</top>
                <right>20</right>
                <width>70</width>
                <height>35</height>
                <texture>swan/overlay/watchedfull.png</texture>
                <colordiffuse>CC000000</colordiffuse>
            </control>
            <control type="image">
                <top>15</top>
                <right>20</right>
                <width>70</width>
                <height>35</height>
                <bordersize>2</bordersize>
                <texture>swan/overlay/watchedfull.png</texture>
                <colordiffuse>orange</colordiffuse>
            </control>
            <control type="label">
                <top>18</top>
                <right>25</right>
                <width>60</width>
                <align>center</align>
                <font>NumItemsTop</font>
                <label>11/25</label>
                <textcolor>black</textcolor>
            </control>
        
        </control>
        </definition>
    </include>


Sadly you have to use conditions.

xml:
<include condition="String.IsEqual(Skin.String(UserWidget1_layout),circle)" content="CircleLayout">
...params...
</include>
<include condition="String.IsEqual(Skin.String(UserWidget1_layout),landscape)" content="LandscapeLayout">
...params...
</include>

I know it's a pita, but look at my example from above.
(2019-09-20, 12:06)sualfred Wrote: [ -> ]Sadly you have to use conditions.

xml:
<include condition="String.IsEqual(Skin.String(UserWidget1_layout),circle)" content="CircleLayout">
...params...
</include>
<include condition="String.IsEqual(Skin.String(UserWidget1_layout),landscape)" content="LandscapeLayout">
...params...
</include>

I know it's a pita, but look at my example from above.

Thanks, as i will move away from an universal layout (which still was interesting for testing), this will be not that hard.

But i found my fault

I cant use $PARAM[foo] which return
$VAR/$INFO/$**[foo]
inside 
- some boolean visible conditions
- attribute tags


working: $PARAM[foo] is harcoded text circle
<visible>String.IsEmpty(ListItem.Art($PARAM[foo]))</visible>
$VAR[ImageLayout_$PARAM[artwork]]
diffuse="swan/artworkdiffuse/$PARAM[artwork].png


is failing: $PARAM[foo] is $VAR/$INFO/$**[foo]
<visible>String.IsEmpty(ListItem.Art($PARAM[foo]))</visible>
$VAR[ImageLayout_$PARAM[artwork]]
diffuse="swan/artworkdiffuse/$PARAM[artwork].png


independend working with booth 'outputs' (if text or$[INFO] doesnt matter)
 <texture>swan/artworkdiffuse/$PARAM[artwork].png</texture>