2016-07-22, 15:32
It has a way to gather together the helper services backgrounds Skin Helper's docs.
<widgettype-groupings>
<node label="40084">
<content>widgets</content>
</node>
</widgettype-groupings>
<widget-groupings>
<shortcut label="40085" icon="DefaultFolder.png" condition="System.HasAddon(script.skin.helper.service)">||BROWSE||script.skin.helper.service/?action=widgets&path=skinplaylists,librarydataprovider,scriptwidgets,extendedinfo,smartshortcuts,pvr,smartishwidgets</shortcut>
<shortcut label="32107" type="32021" icon="DefaultAddon.png" condition="!System.HasAddon(script.skin.helper.service)">::INSTALL::script.skin.helper.service</shortcut>
<node label="32030">
<content>video</content>
<node label="32040">
<content>playlist-video</content>
</node>
<node label="32010">
<content>addon-video</content>
</node>
<node label="32075">
<content>videosources</content>
</node>
</node>
<node label="32031">
<content>music</content>
<node label="32040">
<content>playlist-audio</content>
</node>
<node label="32011">
<content>addon-audio</content>
</node>
<node label="32075">
<content>musicsources</content>
</node>
</node>
<node label="32020">
<content>picturesources</content>
</node>
<node label="32007">
<node label="32009">
<content>addon-program-plugin</content>
</node>
<node label="32010">
<content>addon-video</content>
</node>
<node label="32011">
<content>addon-audio</content>
</node>
<node label="32012">
<content>addon-image</content>
</node>
<shortcut label="10001" type="32021" icon="DefaultAddonProgram.png" widget="addon" widgetType="program" widgetTarget="programs">addons://sources/executable</shortcut>
<shortcut label="20244" type="32021" icon="DefaultAddonProgram.png" widget="addon" widgetType="program" widgetTarget="programs" condition="System.Platform.Android">androidapp://sources/apps</shortcut>
<shortcut label="1037" type="32014" icon="DefaultAddonVideo.png" widget="addon" widgetType="video" widgetTarget="video">addons://sources/video</shortcut>
<shortcut label="1038" type="32019" icon="DefaultAddonMusic.png" widget="addon" widgetType="music" widgetTarget="music">addons://sources/audio</shortcut>
<shortcut label="1039" type="32020" icon="DefaultAddonPicture.png" widget="addon" widgetType="picture" widgetTarget="pictures">addons://sources/image</shortcut>
</node>
</widget-groupings>
(2016-07-26, 21:28)BobCratchett Wrote: No, there's no additional custom groupings for widgets, just the ability to customise the <widget-groupings />. This is because it actually needs quite significant code refactoring to allow this - the different behaviours when using the widget groupings ('Use as widget' label, no choice of action for playlists and sources, etc) are based on it being the widget grouping, not conditional on it being a widget grouping...
The <node /> and <shortcut /> elements support the condition attribute, though - so you could set/clear a window property before sending the click to 312 and have the nodes that are displayed conditional on that.
<onclick condition="IsEmpty(Container(211).ListItem.Property(widgetPath))">ClearProperty(CustomPropertyForVisibility,10000)</onclick>
<onclick condition="!IsEmpty(Container(211).ListItem.Property(widgetPath))">SetProperty(CustomPropertyForVisibility,True,10000)</onclick>
<onclick>SendClick(312)</onclick>
<widget-groupings>
<!-- Nodes that are visibile when there is no widget set -->
<node label="..." condition="IsEmpty(Window(10000).Property(CustomPropertyForVisibility))">
...
</node>
...
<!-- Nodes that are visible when there is a widget set -->
<node label="..." condition="!IsEmpty(Window(10000).Property(CustomPropertyForVisibility))">
...
</node>
...
</widget-groupings>
<control type="button" id="312">
<width>1256</width>
<include>DefaultSettingButton</include>
<label>$VAR[Label_SkinSetting_WidgetLabel]</label>
<label2>$VAR[Label_SkinSetting_Widget]</label2>
<visible>String.IsEqual(Window.Property(groupname),mainmenu) | String.StartsWith(Window.Property(groupname),x11)</visible>
<visible>!String.IsEqual(Container(211).ListItem.Label,OpenELEC) + !String.IsEqual(Container(211).ListItem.Label,LibreELEC)</visible>
</control>
<control type="button" id="1452">
<width>1256</width>
<include>DefaultSettingButton</include>
<label>$ADDON[script.skinshortcuts 32044] 1</label>
<label2>$VAR[MoviesWidget1Label2Var]</label2>
<onclick>SetProperty(widgetID, movies1)</onclick>
<onclick>SendClick(312)</onclick>
<visible>String.IsEqual(Window.Property(groupname),mainmenu)</visible>
<visible>String.IsEqual(Container(211).ListItem.Property(widget),MoviesWidget)</visible>
</control>
<control type="button" id="1453">
<width>1256</width>
<include>DefaultSettingButton</include>
<label>$ADDON[script.skinshortcuts 32044] 2</label>
<label2>$VAR[MoviesWidget2Label2Var]</label2>
<onclick>SetProperty(widgetID, movies2)</onclick>
<onclick>SendClick(312)</onclick>
<visible>String.IsEqual(Window.Property(groupname),mainmenu)</visible>
<visible>String.IsEqual(Container(211).ListItem.Property(widget),MoviesWidget)</visible>
</control>
<control type="button" id="1454">
<width>1256</width>
<include>DefaultSettingButton</include>
<label>$ADDON[script.skinshortcuts 32044] 3</label>
<label2>$VAR[MoviesWidget3Label2Var]</label2>
<onclick>SetProperty(widgetID, movies3)</onclick>
<onclick>SendClick(312)</onclick>
<visible>String.IsEqual(Window.Property(groupname),mainmenu)</visible>
<visible>String.IsEqual(Container(211).ListItem.Property(widget),MoviesWidget)</visible>
</control>
<control type="button" id="1455">
<width>1256</width>
<include>DefaultSettingButton</include>
<label>$ADDON[script.skinshortcuts 32044] 4</label>
<label2>$VAR[MoviesWidget4Label2Var]</label2>
<onclick>SetProperty(widgetID, movies4)</onclick>
<onclick>SendClick(312)</onclick>
<visible>String.IsEqual(Window.Property(groupname),mainmenu)</visible>
<visible>String.IsEqual(Container(211).ListItem.Property(widget),MoviesWidget)</visible>
</control>
<onclick>SetProperty(ARandomPropertyName,True)</onclick>
<onclick>SendClick(312)</onclick>
<onclick>ClearProperty(ARandomPropertyName,True)</onclick>
<onclick>SendClick(312)</onclick>
<node label="..." condition="!IsEmpty(Window.Property(ARandomPropertyName))>
<content>widgets</content>
</node>
<control type="button" id="312">
<width>1256</width>
<include>DefaultSettingButton</include>
<label>$VAR[Label_SkinSetting_WidgetLabel]</label>
<label2>$VAR[Label_SkinSetting_Widget]</label2>
<onclick>SetProperty(WidgetVisibility,True)</onclick>
<visible>String.IsEqual(Window.Property(groupname),mainmenu) | String.StartsWith(Window.Property(groupname),x11)</visible>
<visible>!String.IsEqual(Container(211).ListItem.Label,OpenELEC) + !String.IsEqual(Container(211).ListItem.Label,LibreELEC)</visible>
</control>
<control type="button" id="1452">
<width>1256</width>
<include>DefaultSettingButton</include>
<label>$ADDON[script.skinshortcuts 32044] 1</label>
<label2>$VAR[MoviesWidget1Label2Var]</label2>
<onclick>SetProperty(widgetID, movies1)</onclick>
<onclick>ClearProperty(WidgetVisibility,True)</onclick>
<onclick>SendClick(312)</onclick>
<visible>String.IsEqual(Window.Property(groupname),mainmenu)</visible>
<visible>String.IsEqual(Container(211).ListItem.Property(widget),MoviesWidget)</visible>
</control>
<widget-groupings>
<node label="40084" condition="!String.IsEmpty(Window.Property(WidgetVisibility))">
<content>widgets</content>
</node>
<shortcut label="40085" icon="DefaultFolder.png" condition="String.IsEmpty(Window.Property(WidgetVisibility))">||BROWSE||script.skin.helper.service/?action=widgets&path=skinplaylists,librarydataprovider,scriptwidgets,extendedinfo,smartshortcuts,pvr,smartishwidgets</shortcut>
</widget-groupings>