Kodi Community Forum
Release script.skinshortcuts - Printable Version

+- Kodi Community Forum (https://forum.kodi.tv)
+-- Forum: Development (https://forum.kodi.tv/forumdisplay.php?fid=32)
+--- Forum: Skinning (https://forum.kodi.tv/forumdisplay.php?fid=12)
+---- Forum: Skin helper addons (https://forum.kodi.tv/forumdisplay.php?fid=300)
+---- Thread: Release script.skinshortcuts (/showthread.php?tid=178294)



RE: script.skinshortcuts - jurialmunkey - 2017-07-22

(2017-07-22, 06:19)jdig4240 Wrote: Question, read the Wiki. I see it says "Shared Menus: Your custom menus are shared between skins." Which doesnt seem practical for different skins. Is it possible for two skins on the same profile NOT to share the same menu, but rather have separate skin shortcuts menus?? I know i can use separate profiles, but want to use two skins that use Skin Shortcuts on the same profile with independent menu shortcuts. Is this not possible?
I would like to be able to switch skins on the same profile with separate menus.

Settings > System > Add-ons > Manage Dependencies (need to be at Expert setting level).
Find Skin Shortcuts, press info or use context menu to get to its settings.
Turn off "Share menu between compatible skins". Hit OK.


RE: script.skinshortcuts - jdig4240 - 2017-07-22

(2017-07-22, 11:08)jurialmunkey Wrote:
(2017-07-22, 06:19)jdig4240 Wrote: Question, read the Wiki. I see it says "Shared Menus: Your custom menus are shared between skins." Which doesnt seem practical for different skins. Is it possible for two skins on the same profile NOT to share the same menu, but rather have separate skin shortcuts menus?? I know i can use separate profiles, but want to use two skins that use Skin Shortcuts on the same profile with independent menu shortcuts. Is this not possible?
I would like to be able to switch skins on the same profile with separate menus.

Settings > System > Add-ons > Manage Dependencies (need to be at Expert setting level).
Find Skin Shortcuts, press info or use context menu to get to its settings.
Turn off "Share menu between compatible skins". Hit OK.

OMG, now I feel stupid. Spent so much time editing the userdata and didnt even think of that. Thank You!! Lol


RE: script.skinshortcuts - jdig4240 - 2017-07-22

(2017-07-22, 11:08)jurialmunkey Wrote:
(2017-07-22, 06:19)jdig4240 Wrote: Question, read the Wiki. I see it says "Shared Menus: Your custom menus are shared between skins." Which doesnt seem practical for different skins. Is it possible for two skins on the same profile NOT to share the same menu, but rather have separate skin shortcuts menus?? I know i can use separate profiles, but want to use two skins that use Skin Shortcuts on the same profile with independent menu shortcuts. Is this not possible?
I would like to be able to switch skins on the same profile with separate menus.

Settings > System > Add-ons > Manage Dependencies (need to be at Expert setting level).
Find Skin Shortcuts, press info or use context menu to get to its settings.
Turn off "Share menu between compatible skins". Hit OK.

Is it possible you can help me with one more thing?? https://forum.kodi.tv/showthread.php?tid=318610


RE: script.skinshortcuts - Jeroen - 2017-07-26

My widgets are all horizontal (wrap)lists inside vertical grouplist. Say I have four widgets underneath eachother, and the third widget's container has no items at that time. When scrolling vertically from the second widget it will jump to the fourth widget which is perfect. However it leaves a blank space where the third widget would be if ti contained items. This is something I would like to prevent.

I expected a simple

Code:
Integer.IsGreater(Container(1000$SKINSHORTCUTS[id]).NumItems,0)

As a visibility condition on my widget template would do the trick but sadly it doesn't. It actually prevents the vertical grouplist to be accessible at all. Probably because
I'm not addressing the container properly? Just not sure how I would have to though...

Snippet from my template:

PHP Code:
<other include="widget_Regular">
    <
condition tag="property" attribute="name|widgetPath"></condition>
    <
propertyGroup>widget_Commons</propertyGroup>
    <
property name="height" tag="property" attribute="name|widgetLayout" value="fullscreen">1080</property>
    <
property name="height" tag="property" attribute="name|widgetLayout" value="wide">810</property>
    <
property name="height" tag="property" attribute="name|widgetLayout" value="landscape">370</property>
    <
property name="height" tag="property" attribute="name|widgetLayout" value="thumbnail">370</property>
    <
property name="height" tag="property" attribute="name|widgetLayout" value="portrait">566</property>
    <
property name="height" tag="property" attribute="name|widgetLayout" value="square">384</property>
    <
property name="height" tag="property" attribute="name|widgetLayout" value="banner">190</property>
    <
controls>
        <
control type="list" id="1000$SKINSHORTCUTS[id]">
            <
width>1920</width>
            <
height>$SKINSHORTCUTS[height]</height>
            <
onleft>9000</onleft>
            <
onback>9000</onback>
            <
orientation>horizontal</orientation>
            <
preloaditems>2</preloaditems>
            <include>
global_Scrolltime</include>
            <include>
fadeinout</include>
            <
visible>Integer.IsGreater(Container(1000$SKINSHORTCUTS[id]).NumItems,0)</visible>
            <include 
content="widget_Layout">
                <
param name="ID" value="1000$SKINSHORTCUTS[id]"/>
                ...
            </include>
            <
content target="$SKINSHORTCUTS[target]sortby="$SKINSHORTCUTS[sortmethod]sortorder="$SKINSHORTCUTS[sortdirection]">$SKINSHORTCUTS[path]</content>
        </
control>
    </
controls>
</
other

Hopefully someone has any ideas? Cheers


RE: script.skinshortcuts - mikeSiLVO - 2017-07-27

Hello all.

I am wondering if there is a way to specify an other include in the template file to not automatically build if it doesn't match any menu items?

A lot of my other includes are VARs that are only built when they are needed and I only have 4 skinshortcuts-template includes that need to be built to avoid log errors. Only asking to satisfy my need to keep that file as clean as I can (OCD?), not even sure if an empty include with only a description tag effects anything...

Thanks.


RE: script.skinshortcuts - jurialmunkey - 2017-07-28

(2017-07-26, 22:19)Jeroen Wrote: I expected a simple

Code:
Integer.IsGreater(Container(1000$SKINSHORTCUTS[id]).NumItems,0)

As a visibility condition on my widget template would do the trick but sadly it doesn't. It actually prevents the vertical grouplist to be accessible at all. Probably because
I'm not addressing the container properly? Just not sure how I would have to though...

It is because the container always starts with 0 items, so your container is never visible and so it never loads any items.
What Estuary does is adds the Container.IsUpdating as a condition
e.g.
PHP Code:
<visible>Integer.IsGreater(Container(1000$SKINSHORTCUTS[id]).NumItems,0) | Container(1000$SKINSHORTCUTS[id]).IsUpdating</visible

Though I'm having problems even with that in Horizon.
I had to add a hidden button control in the focusedlayout of my main menu (I know, naughty naughty not supposed to do that) that sets a property and then uses an alarmclock with time at 00:00 to immediately unset the property and I have that in the condition

e.g.

PHP Code:
<visible>Integer.IsGreater(Container(1000$SKINSHORTCUTS[id]).NumItems,0) | Container(1000$SKINSHORTCUTS[id]).IsUpdating String.IsEmpty(Window(Home).Property(WidgetLoading))</visible

And then in my focusedlayout of home menu:
PHP Code:
<control type="button">
    <
animation effect="fade" end="0" condition="true">Conditional</animation>
    <
onfocus>ClearProperty(WidgetLoading,Home)</onfocus>
    <
onfocus>AlarmClock(SetLoad,SetProperty(WidgetLoading,1,Home),00:00,silent)</onfocus>
</
control



RE: script.skinshortcuts - BobCratchett - 2017-07-30

(2017-07-27, 18:54)mikeSiLVO Wrote: Hello all.

I am wondering if there is a way to specify an other include in the template file to not automatically build if it doesn't match any menu items?

A lot of my other includes are VARs that are only built when they are needed and I only have 4 skinshortcuts-template includes that need to be built to avoid log errors. Only asking to satisfy my need to keep that file as clean as I can (OCD?), not even sure if an empty include with only a description tag effects anything...

Thanks.

Templates shouldn't build at all unless they match a menu item - otherwise there isn't any information to build the templates from (which is to say, any $SKINSHORTCUTS[] properties don't have anything to get a value from). If you're finding that isn't the case, please open an issue on git - so I don't forget it which, if it's only here and my limited time I have at the moment I will otherwise - with some sample code which demonstrates the issue, and I'll look at it when I have chance Smile


RE: script.skinshortcuts - Jeroen - 2017-07-30

(2017-07-28, 05:09)jurialmunkey Wrote:
(2017-07-26, 22:19)Jeroen Wrote: I expected a simple

Code:
Integer.IsGreater(Container(1000$SKINSHORTCUTS[id]).NumItems,0)

As a visibility condition on my widget template would do the trick but sadly it doesn't. It actually prevents the vertical grouplist to be accessible at all. Probably because
I'm not addressing the container properly? Just not sure how I would have to though...

It is because the container always starts with 0 items, so your container is never visible and so it never loads any items.
What Estuary does is adds the Container.IsUpdating as a condition
e.g.
PHP Code:
<visible>Integer.IsGreater(Container(1000$SKINSHORTCUTS[id]).NumItems,0) | Container(1000$SKINSHORTCUTS[id]).IsUpdating</visible

Though I'm having problems even with that in Horizon.
I had to add a hidden button control in the focusedlayout of my main menu (I know, naughty naughty not supposed to do that) that sets a property and then uses an alarmclock with time at 00:00 to immediately unset the property and I have that in the condition

e.g.

PHP Code:
<visible>Integer.IsGreater(Container(1000$SKINSHORTCUTS[id]).NumItems,0) | Container(1000$SKINSHORTCUTS[id]).IsUpdating String.IsEmpty(Window(Home).Property(WidgetLoading))</visible

And then in my focusedlayout of home menu:
PHP Code:
<control type="button">
    <
animation effect="fade" end="0" condition="true">Conditional</animation>
    <
onfocus>ClearProperty(WidgetLoading,Home)</onfocus>
    <
onfocus>AlarmClock(SetLoad,SetProperty(WidgetLoading,1,Home),00:00,silent)</onfocus>
</
control

Smart, that worked like a charm. Thanks!


RE: script.skinshortcuts - jurialmunkey - 2017-07-30

@Jeroen - Out of interest, did you have success with just adding the Container.IsUpdating condition, or did you have to also add the window property?


RE: script.skinshortcuts - Jeroen - 2017-07-30

Just adding the Container.IsUpdating seems to do the trick. Actually it works better without the window property in my case.

In the home menu layout the widgets are hidden until focused. Using the window property results in focus being taken away from the grouplist the widgets are in back to the home menu when I scroll to the widget with no items. When I leave out the window property the space allocated to the widget in question is "collapsed" when the condition kicks in.

So in both cases I briefly see the space being removed so to speak, but I can live with that Smile


RE: script.skinshortcuts - jurialmunkey - 2017-07-30

(2017-07-30, 07:47)Jeroen Wrote: Just adding the Container.IsUpdating seems to do the trick. Actually it works better without the window property in my case.

In the home menu layout the widgets are hidden until focused. Using the window property results in focus being taken away from the grouplist the widgets are in back to the home menu when I scroll to the widget with no items. When I leave out the window property the space allocated to the widget in question is "collapsed" when the condition kicks in.

So in both cases I briefly see the space being removed so to speak, but I can live with that Smile

Ah ok. Yeah definitely better without the property if it works as it means you don't have to use a fake button in the list. I was just interested as I have absolutely no idea why it works with only Container.IsUpdating in every skin except my own! I've managed to figure out a solution that doesn't rely on a the fake button using Container.OnNext and Container.OnPrevious, but it is very odd that I even need these extra conditions at all.


RE: script.skinshortcuts - jurialmunkey - 2017-07-30

@BobCratchett - Was the fix for submenu widgets never pushed to the official repo? I've had a few reports of this not working and after looking into it, it seems the bug is still present in the repo version -- The version from git works perfectly. I'm wondering if there is anyway this can be pushed as without it (fuse)neue is pretty broken with the default setup.


RE: script.skinshortcuts - mikeSiLVO - 2017-08-02

(2017-07-30, 01:48)BobCratchett Wrote: Templates shouldn't build at all unless they match a menu item - otherwise there isn't any information to build the templates from (which is to say, any $SKINSHORTCUTS[] properties don't have anything to get a value from). If you're finding that isn't the case, please open an issue on git - so I don't forget it which, if it's only here and my limited time I have at the moment I will otherwise - with some sample code which demonstrates the issue, and I'll look at it when I have chance Smile

Sorry Bob, I missed your reply. I will try to explain as best as I can.

I have many other includes that are variables and I only want to build them if the info panel is enabled so I have these conditions:
Code:
<condition tag="property" attribute="name|widgetPath" />
<condition tag="property" attribute="name|widgetPanelInfo">Enabled</condition>

When there is no match this results in this:
Code:
<include name="skinshortcuts-template-WidgetInfo1.2">
    <description>This include was built automatically as the template didn't match any menu items</description>
</include>

I was just wondering if there was a way to specify that certain <other includes did not build automatically. IIRC this was added to get rid of log errors for includes used in a skin that were showing as undefined since they were not built for whatever reason.

I only have 4 skinshortcuts-template includes that need to built to avoid log errors. For my 3 Widget setup there are 23 "empty" ones that are not needed to be built automatically.

Here is an example of one:
Code:
<other include="WidgetInfo1.2">
    <condition tag="property" attribute="name|widgetPath.2" />
    <condition tag="property" attribute="name|widgetPanelInfo.2">Enabled</condition>
    <property name="id" tag="mainmenuid" />
    <property name="idprefix">8021</property>
    <variables>
        LONG VARIABLE GOES HERE ;)
    </variables>
</other>

If you need more info, I will provide anything I can. If you want to see it in action in a skin the Git versions of mine in either master for Leia or krypton branches are HERE.

Thanks Smile


RE: script.skinshortcuts - Jeroen - 2017-08-07

This might not be a skin shortcuts specific question perse, but regardless this seems to be the best place to ask for ideas.

I have the following grouplist, simplified:

PHP Code:
<control type="grouplist" id="9100">
    <
orientation>vertical</orientation>
    <include>
home_menu</include>
    <include>
skinshortcuts-template-widget</include>
</
control

I want my home menu and the widgets to be in one grouplist, so that when this combined exceeds the screen height, the home menu eventually goes out of sight. The problem is I need to be able to move focus from the home menu to whatever widget comes below, depending on the configuration of course.

I am afraid it isn't possible for a list container within a grouplist to initiate scrolling to the next container within that same grouplist. I tried Control.Move, a PARAM using the template's ID, but to no avail.

I also tried a construction like this

PHP Code:
<control type="grouplist" id="9000">
    <
orientation>vertical</orientation>
    <include>
home_menu</include>
        <
control type="grouplist">
        <include>
skinshortcuts-template-widget</include>
        </
control>
</
control

But as ID 9000 is not aware of the height of the widgets configured, again dependant on the user's configuration, it will leave an empty space below the last widget to fill up the screen, which is unwanted.

Anybody have any ideas how to tackle this?


RE: script.skinshortcuts - jurialmunkey - 2017-08-07

@Jeroen - I'm not sure if I misunderstanding what you are trying to do, but the Estuary home screen is a good example of list containers inside a vertical grouplist. As long as every item in your grouplist has a unique ID and your list containers are on the lowest level (i.e. not inside a group control) then you should be able to move from one list to the next automatically in the grouplist.

Or is the problem that the list containers are vertical rather than horizontal so they wrap around ondown rather than moving to the next grouplist item?

If you had the following you would be able to scroll up and down through the containers -- obviously the separate widgets can all be in one template include, but they all need to be on the lowest level of the grouplist like this and each have a unique id.
Code:
<control type="grouplist" id="9000">
    <orientation>vertical</orientation>
    <control type="list" id="9001">
        <orientation>horizontal</orientation>
        <include>HomeList</include>
    </control>
    <control type="list" id="9002">
        <orientation>horizontal</orientation>
        <include>WidgetTemp1</include>
    </control>
    <control type="list" id="9003">
        <orientation>horizontal</orientation>
        <include>WidgetTemp2</include>
    </control>
</control>