Kodi Community Forum

Full Version: script.skinshortcuts
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
(2022-01-18, 22:05)Bumpaneer Wrote: [ -> ]think this is the same issue I've been tracking down as well: https://github.com/mikesilvo164/script.s.../issues/80

@Bumpaneer , thanks for opening a GitHub issue, and that you have the python skills to point @anxdpanic to a possible solution.

Regards,

Bart
How to make different menu items for skins: Arctic Zephyr 2 and Eminence 2 mod? I installed them but they used same menu items from skinshortcuts.
Disable "ShareMenu over different Skins" in Skinshortcuts-Settings.
I don't know the exact naming, but I'm sure you know which setting it is, when you see it Wink
Thank you so much , it works! Don't know how i miss that setting when i was checking.
I found a old reply in this thread.

https://forum.kodi.tv/showthread.php?tid...pid2546915

Is this still the case regarding path substitutions?
Can anyone help me with two things I'm a bit confused about integrating skin shortcuts into my skin please?

1. When it creates a custom select dialog, how do I reference that window in my skin? Window.IsVisible(selectdialog) doesn't work and the window name in debuggin info is shown as the full path (on windows it's C:\Users\QuizKid\AppData\Roaming\Kodi\addons\skin.copacetic\16x9\DialogSelect.xml) rather than a window id or name. I need to change the visibility of the some underling windows when this custom window is displayed

2. Currently, for my homescreen background artwork, I use a list to populate a multiimage. The content path for the list is a variable like so:

xml:

    <variable name="Slideshow_Path">
        <value condition="Skin.HasSetting(Home_Background_Override_Enabled) + Skin.String(Home_Background_Override)">$INFO[Skin.String(Home_Background_Override)]</value>
        <value condition="String.Contains(Container(9000).ListItem.Property(path),music)">musicdb://artists/?albumartistsonly=true</value>
        <value condition="String.Contains(Container(9000).ListItem.Property(path),tv)">videodb://tvshows/titles/</value>
        <value condition="String.Contains(Container(9000).ListItem.Property(path),sets)">library://video/movies/sets.xml</value>
        <value condition="String.Contains(Container(9000).ListItem.Property(path),recentlyaddedmovies)">library://video/movies/recentlyaddedmovies.xml</value>
        <value condition="String.Contains(Container(9000).ListItem.Property(path),kids)">special://skin/extras/playlists/kids_movies.xsp</value>
        <value condition="String.Contains(Container(9000).ListItem.Property(path),4k)">special://skin/extras/playlists/4k_movies.xsp</value>
        <value condition="Library.HasContent(Movies)">videodb://movies/titles/</value>
        <value condition="Library.HasContent(TVShows)">videodb://tvshows/titles/</value>
        <value condition="Library.HasContent(Music)">musicdb://artists/?albumartistsonly=true</value>
    </variable>

Instead of hardcoding these paths and playlistts, I want to give the user the ability to choose their own path or playlist for each item in their menu. I think I need to do this using a customproperty, but I got a bit lost in the documentation: https://github.com/mikesilvo164/script.s...perties.md

Can anyone give me any indication of how to do this? 

Thanks!
Help, I'm trying to manage an 'other menu' not linked to my main menu as per: https://github.com/BigNoid/script.skinsh...submenu.md

It works fine when it fallsback to shortcuts/shutdownmenu.DATA.xml but if I make any edits to the menu, then the relevant include (skinshortcuts-group-shutdownmenu) appears to just disappear from my script.skinshortcuts-includes.xml file. 

The xml build line I'm using is: 
xml:
RunScript(script.skinshortcuts,type=buildxml&mainmenuID=9000&group=mainmenu|shutdownmenu)

I'm a bit stumped why the menu is being deleted from the skinshortcuts includes file when it is updated by a user.
Hey guys im new and getting an error on my kodi anyone able to help
Hi i too am seeing this error on Kodi 20.1 
Quote:2023-03-22 15:30:25.983 T:1430    error <general>: Traceback (most recent call last):
                                                   
2023-03-22 15:30:25.983 T:1430    error <general>: 
2023-03-22 15:30:25.983 T:1430    error <general>:   File "/storage/.kodi/addons/script.skinshortcuts/resources/lib/library.py", line 971, in playlists
                                                       for line in xmldata.getiterator():
                                                                   ^^^^^^^^^^^^^^^^^^^
                                                   
2023-03-22 15:30:25.983 T:1430    error <general>: 
2023-03-22 15:30:25.983 T:1430    error <general>: AttributeError: 'xml.etree.ElementTree.Element' object has no attribute 'getiterator'
                                                   
2023-03-22 15:30:25.983 T:1430    error <general>: 
2023-03-22 15:30:25.983 T:1430    error <general>: Traceback (most recent call last):
                                                   
2023-03-22 15:30:25.983 T:1430    error <general>: 
2023-03-22 15:30:25.983 T:1430    error <general>:   File "/storage/.kodi/addons/script.skinshortcuts/resources/lib/library.py", line 971, in playlists
                                                       for line in xmldata.getiterator():
                                                                   ^^^^^^^^^^^^^^^^^^^
                                                   
2023-03-22 15:30:25.983 T:1430    error <general>: 
2023-03-22 15:30:25.983 T:1430    error <general>: AttributeError: 'xml.etree.ElementTree.Element' object has no attribute 'getiterator'
Is it possible home widget for the custom menu?

---
Added a new menu item to the home menu.
Normally, the action in the settings is onclick, but I want to show the content of the new menu item as a widget when the home menu is focused, like the Kodi default skin.
---

Here is my code
xml:

<control type="group" id="4000">
<visible>String.IsEqual(Container(9000).ListItem.Property(kenProperty),ken)</visible>
<include content="WidgetListPoster" condition="Library.HasContent(movies)">
                            <param name="content_path" value="HuhHuhHuh?"/> <- I don't know!!!
                            <param name="widget_header" value="KEN-TEST1"/>
                            <param name="widget_target" value="videos"/>
                            <param name="list_id" value="4100"/>
</include>
When I add new main menu, it generates automatically @script-skinshortcuts-includes.xml
xml:

<item id="4">
            <property name="id">$NUMBER[4]</property>
            <label>KEN-1</label>
            <label2>VIDEO ADDON</label2>
            <icon>special://skin/extras/icons/addtile.png</icon>
            <thumb>D:\KODI\user_movie_icon.png</thumb>
            <property name="labelID">ken-1</property>
            <property name="defaultID" />
            <property name="kenProperty">ken</property>
            <property name="translatedPath">ActivateWindow(Videos,"library://video/Plex-4/4_all.xml",return)</property>
            <onclick>ActivateWindow(Videos,"library://video/Plex-4/4_all.xml",return)</onclick>
            <property name="path">ActivateWindow(Videos,"library://video/Plex-4/4_all.xml",return)</property>
            <property name="list">library://video/Plex-4/4_all.xml</property>
            <visible>String.IsEqual(System.ProfileName,Master user)</visible>
            <property name="submenuVisibility">ken-1</property>
            <property name="group">mainmenu</property>
            <property name="hasSubmenu">False</property>
</item>
I don't know how to get contents path "<property name="list">library://video/Plex-4/4_all.xml</property> from <item id="4">  and put <param name="content_path" value="?"/> into 
Can someone let me know?
Does anyone else maintain this plugin?
I often get this error when kodi loading. Version 1.1.5 works stably without problems, with version 2.0.0 there are really a lot of problems, I wrote on github but no one answers. I would really like the developer to respond or anyone who has anything to do with this plugin. Thanks.

Code:
2023-07-13 14:24:05.878 T:20208 error <general>: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
Error Type: <class 'xml.etree.ElementTree.ParseError'>
Error Contents: no element found: line 1, column 0
Traceback (most recent call last):
File "C:\Users\marko\AppData\Roaming\Kodi\addons\script.skinshortcuts\resources\lib\entry_point.py", line 16, in <module>
script.route()
File "C:\Users\marko\AppData\Roaming\Kodi\addons\script.skinshortcuts\resources\lib\skinshorcuts\skinshortcuts.py", line 78, in route
route_method()
File "C:\Users\marko\AppData\Roaming\Kodi\addons\script.skinshortcuts\resources\lib\skinshorcuts\skinshortcuts.py", line 83, in route_buildxml
self.xml_func.build_menu(self.MENUID, self.GROUP, self.LEVELS,
File "C:\Users\marko\AppData\Roaming\Kodi\addons\script.skinshortcuts\resources\lib\skinshorcuts\xmlfunctions.py", line 71, in build_menu
tree = ETree.fromstring(contents)
File "C:\Program Files\Kodi\system\python\Lib\xml\etree\ElementTree.py", line 1321, in XML
return parser.close()
xml.etree.ElementTree.ParseError: no element found: line 1, column 0
-->End of Python script error report<--
I have run across a problem where my knowledge has run out.  For completeness I am using a modded version of the wonderful Silvio skin.

In template.xml I need to draw the widget background and then populate that with content.

I have moved the Silvio coding for drawing the background from template.xml into includes_widgets.xml as a function "Draw_WidgetBackground" that function has 2 params, background_width and background_startleft - as the names suggest the parameters are supposed to be the values of the width of the widget background and where the left starting point is (in my mod widgets widths can be set by user, so each widget could have a different width)

I have 2 local variables set up in template.xml:
HomeWidget$SKINSHORTCUTS[idprefix]$SKINSHORTCUTS[id]background_width
HomeWidget$SKINSHORTCUTS[idprefix]$SKINSHORTCUTS[id]background_left.

I use variables so as to test what the number of items to be displayed by the particular widget will be and then assign an appropriate value based on a property to the variable - for example if the number of items to be displayed is 5, HomeWidget$SKINSHORTCUTS[idprefix]$SKINSHORTCUTS[id]background_width takes the value $SKINSHORTCUTS[back_width5].

What I want to do is pass the value of those variables to the Draw_WidgetBackground include but if I do so using <param>$VAR[HomeWidget$SKINSHORTCUTS[idprefix]$SKINSHORTCUTS[id]background_width]</param> it does not work.  Looking at script-shortcuts-includes.xml it seems instead to be passing it as a label "$VAR[HomeWidget$SKINSHORTCUTS[idprefix]$SKINSHORTCUTS[id]background_width]" rather than the value assigned to that variable.

Two questions, am I correct in assuming Skin Shortcuts passes it as label rather than a value and if so is there any way of forcing it to pass the value to the include
Bit more investigation on my problem.

In template.xml I have, as part of normal Silvio Skin, an include named Panel Label.  As part of that include there is a param "LabelLeft" which specifies the left position of the label and is used in the include via <left>$PARAM[LabelLeft]</left>.

Here is the issue.  If I set the param in the includes as <param name="LabelLeft">100</param> it does exactly as you would expect. If I have a variable defined "PanelLabelLeftVar" which takes the value 100 and instead I set the param as <param name="LabelLeft">$VAR[PanelLabelLeftVar]</param> then no matter what I try the include will not accept it as a number and consequently does not shift the label to the left.

So in template.xml how do I ensure that the variable is passed as a number and therefore acted upon?
@justin150

The skinning engine does not accept $VAR or $INFO for coordinates (position/width etc). Coordinates must be constant values (i.e. hard coded as integers).

There's two different approaches you could use here depending on whether or not the positioning is static or dynamic.

For static positioning using different values you can use skinshortcut property rules in the template. See docs for basically exactly what you're attempting:
https://github.com/BigNoid/script.skinsh...e-elements

Because skinshortcuts builds an actual xml file based on the template, for the purposes of the skinning engine the values from the $SKINSHORTCUTS[] property will be hard coded despite allowing you to have what are essentially variable values.

However, if you need dynamic positioning based on a condition (i.e. change the position of an item *after* the window loads) then the only option is to use a conditional slide animation
<animation effect="slide" end="POSX,POSY" condition="CONDITION">Conditional</animation>
Is anyone else having problems where favorites is blank from the submenu section for skin shortcuts 2.1.0, even 2.0.3 same problem as well. just started happening with Omega no such problem on Nexus or matrix maybe something changed within Omega