Kodi Community Forum
Important Skinners: Please test PR13754 - 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)
+--- Thread: Important Skinners: Please test PR13754 (/showthread.php?tid=330696)

Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15


RE: Skinners: Please test PR13754 - ksooo - 2019-01-25

(2019-01-25, 08:44)MacGyver Wrote: So it's just me?
Seems like you may be real close to putting out a final release so I'm a little worried that I'm going to have to hide a bunch of stuff to make look right.

You can see it in Estuary if you replace line 253 of Home.xml with:
Code:
<param name="widget_header" value=$INFO[Container(9000).ListItem.Property(widgetType)]/>

You will see that the Addons header is now blank too. Anything in 8000 is unable to see the properties from an object in 9000. 
For this particalur patch, which I could use for debugging, what should the value of the property be if it would work?


RE: Skinners: Please test PR13754 - MacGyver - 2019-01-26

(2019-01-25, 13:20)ksooo Wrote: For this particalur patch, which I could use for debugging, what should the value of the property be if it would work? 

movies, episodes, albums, songs, musicvideos, playlist, pretty much whatever ListItem.Property(widget) should display.

As in:
Code:
    <variable name="GlobalWidgetLabel">
        <value condition="String.IsEqual(Container(9000).ListItem.Property(widgetType), movies)">$INFO[ListItem.Title]$INFO[ListItem.Year, (,)]</value>
        <value condition="String.IsEqual(Container(9000).ListItem.Property(widgetType), episodes)">$INFO[ListItem.TVShowTitle] - $INFO[ListItem.Season]x$INFO[ListItem.Episode,,. ]$INFO[ListItem.Title]</value>
        <value condition="String.IsEqual(Container(9000).ListItem.Property(widgetType), albums)">$INFO[ListItem.Artist] - $INFO[ListItem.Title]$INFO[ListItem.Year, (,)]</value>
        <value condition="String.IsEqual(Container(9000).ListItem.Property(widgetType), songs)">$INFO[ListItem.Artist] - $INFO[ListItem.Title]</value>
        <value condition="String.IsEqual(Container(9000).ListItem.Property(widgetType), musicvideos)">$INFO[ListItem.Artist] - $INFO[ListItem.Title]</value>
        <!-- fixing the playlists content labels -->
        <value condition="String.IsEqual(Container(9000).ListItem.Property(widget), Playlist) + String.IsEmpty(Container(8000).ListItem.TVShowTitle)">$INFO[ListItem.Title]$INFO[ListItem.Year, (,)]</value>
        <value condition="String.IsEqual(Container(9000).ListItem.Property(widget), Playlist) + !String.IsEqual(ListItem.Title, ListItem.TVShowTitle) + !String.IsEmpty(Container(8000).ListItem.TVShowTitle)">$INFO[ListItem.TVShowTitle] - $INFO[ListItem.Season,,x]$INFO[ListItem.Episode,,. ]$INFO[ListItem.Title]</value>
        <!-- default -->
        <value>$INFO[ListItem.Label]</value>
    </variable>

It worked perfectly in Alpha1 and before, then never worked again in Alpha2 and beyond.

If you can point me to some nightlies in between Alpha1 and Alpha2 I'll figure out what commit broke it to give you an exact time.

Thanks for looking into it.


Skinners: Please test PR13754 - ksooo - 2019-01-26

Are you sure there is a property named "widgettype"? I searched both Kodi and Estuary source code for this string - no matches.


RE: Skinners: Please test PR13754 - MacGyver - 2019-01-26

(2019-01-26, 09:45)ksooo Wrote: Are you sure there is a property named "widgettype"? I searched both Kodi and Estuary source code for this string - no matches.
Code:
<visible>[String.IsEqual(Container(9000).ListItem.Property(WidgetType),13) | String.IsEqual(Container(9000).ListItem.Property(WidgetType),1) | String.IsEqual(Container(9000).ListItem.Property(WidgetType),2) | String.IsEqual(Container(9000).ListItem.Property(WidgetType),4) | String.IsEqual(Container(9000).ListItem.Property(WidgetType),5)]</visible>

That is from Aeon Nox 5 (includes_widgets.xml  line 218.  Nebula, Focus, refouc, Mimic, Grid, Adonic, and Metropolis all currently use that property.

Here is a whole bunch of them from github in refocus.

Here is a reference in a thread jurialmunkey is in from 2016 for Artic Zephyr.


Skinners: Please test PR13754 - ksooo - 2019-01-26

Do they use any helper addons etc which Estuary does not use? If I shall dig into this I need something (e.g. a small patch for Estuary) that definitely has to work with Estuary, together with a clear description how to reproduce and test.


RE: Skinners: Please test PR13754 - MacGyver - 2019-01-26

(2019-01-25, 08:44)MacGyver Wrote: So it's just me?
Seems like you may be real close to putting out a final release so I'm a little worried that I'm going to have to hide a bunch of stuff to make look right.

You can see it in Estuary if you replace line 253 of Home.xml with:
Code:
<param name="widget_header" value=$INFO[Container(9000).ListItem.Property(widgetType)]/>

You will see that the Addons header is now blank too. Anything in 8000 is unable to see the properties from an object in 9000. 
 Modify this in Estuary to see it not work.


Skinners: Please test PR13754 - ksooo - 2019-01-26

Not getting a value can have two reasons. First, property not available. Second, bug.

I want to make sure not to waste my time with a patch that CANNOT work with Estuary, because there is no such property in Estuary.


RE: Skinners: Please test PR13754 - jurialmunkey - 2019-01-26

@MacGyver - I tested this in Krypton and it doesn't work there either.

The posts you linked of Arctic Zephyr show code referencing Container(ID).ListItem.Property(Property) in a control **OUTSIDE** of the itemlayout/focusedlayout of the list.

As I stated before, using Window Properties or referencing other containers has never worked **inside** <itemlayout> or <focusedlayout>


RE: Skinners: Please test PR13754 - MacGyver - 2019-01-26

(2019-01-26, 14:28)jurialmunkey Wrote: @MacGyver - I tested this in Krypton and it doesn't work there either.

The posts you linked of Arctic Zephyr show code referencing Container(ID).ListItem.Property(Property) in a control **OUTSIDE** of the itemlayout/focusedlayout of the list.

As I stated before, using Window Properties or referencing other containers has never worked **inside** <itemlayout> or <focusedlayout>
 It did work in every version prior to 18 Alpha2.

Here is the current Metropolis WIP with the gui version changed to 5.13.0  and running on Kodi 18 Alpha 1.
Image

And here is the same current Metropolis WIP with it set back to 5.14.0 and running on Kodi 18 RC 5.
Image

It has behaved this way since Alpha 2.

It is used in a lot of skins in listviews.

Here is a snipit from Aeon Nox includes_widgets.xml (starting at line 512):
Code:
                <control type="list" id="8000">
                        <left>31</left>
                        <top>31</top>
                        <width>360</width>
                        <height>360</height>
                        <onup>8000</onup>
                        <ondown>8000</ondown>
                        <onleft>9000</onleft>
                        <onright>9000</onright>
                        <onback>9000</onback>
                        <viewtype label="535">list</viewtype>
                        <pagecontrol />
                        <orientation>vertical</orientation>
                        <onclick condition="String.IsEqual(Container(9000).ListItem.Property(WidgetType),13)">$INFO[ListItem.FileNameAndPath]</onclick>
                        <scrolltime tween="quadratic" easing="out">200</scrolltime>
                        <visible>!String.IsEmpty(Container(9000).ListItem.Property(Widget))</visible>
          ...
          ...

Here is a link to Aeon Nox's Github repo with it still in use.


Granted it's not being used in a ltemlayout in Aeon Nox, but other skins may still use it the way Metropolis does.

The not displaying is not the issue, it's that the variable portion doesn't work because of the value not being available.

Here is what this code displays (the default value), because the property is no longer available.
Code:
<variable name="GlobalWidgetLabel">
<value condition="String.IsEqual(Container(9000).ListItem.Property(WidgetType),movies)">$INFO[ListItem.Title]$INFO[ListItem.Year, (,)]</value>
<value condition="String.IsEqual(Container(9000).ListItem.Property(WidgetType),episodes)">$INFO[ListItem.TVShowTitle] - $INFO[ListItem.Season]x$INFO[ListItem.Episode,,. ]$INFO[ListItem.Title]</value>
<value condition="String.IsEqual(Container(9000).ListItem.Property(WidgetType),albums)">$INFO[ListItem.Artist] - $INFO[ListItem.Title]$INFO[ListItem.Year, (,)]</value>
<value condition="String.IsEqual(Container(9000).ListItem.Property(WidgetType),songs)">$INFO[ListItem.Artist] - $INFO[ListItem.Title]</value>
<value condition="String.IsEqual(Container(9000).ListItem.Property(WidgetType),musicvideos)">$INFO[ListItem.Artist] - $INFO[ListItem.Title]</value>
<!-- fixing the playlists content labels -->
<value condition="String.IsEqual(Container(9000).ListItem.Property(widget), Playlist) + String.IsEmpty(Container(8000).ListItem.TVShowTitle)">$INFO[ListItem.Title]$INFO[ListItem.Year, (,)]</value>
<value condition="String.IsEqual(Container(9000).ListItem.Property(widget), Playlist) + !String.IsEqual(ListItem.Title, ListItem.TVShowTitle) + !String.IsEmpty(Container(8000).ListItem.TVShowTitle)">$INFO[ListItem.TVShowTitle] - $INFO[ListItem.Season,,x]$INFO[ListItem.Episode,,. ]$INFO[ListItem.Title]</value>
<!-- default -->
<value>$INFO[ListItem.Label]</value>
</variable>

 Kodi 18 RC 5Image

And as you can see in the Alpha1 example, the same code worked perfectly fine and is formatting the movies with the proper year info.
Image


Skinners: Please test PR13754 - ksooo - 2019-01-26

Again, show me how I can reproduce/test with Estuary. Your patch is not appropriate as there is no property widgettype in Estuary and I don't want to mess around with other skins which introduce tons of additional supporting addons and scripts.


RE: Skinners: Please test PR13754 - MacGyver - 2019-01-26

(2019-01-26, 20:51)ksooo Wrote: Again, show me how I can reproduce/test with Estuary. Your patch is not appropriate as there is no property widgettype in Estuary and I don't want to mess around with other skins which introduce tons of additional supporting addons and scripts.
 I'll see what I can do, I'm not very familiar with Estuary's code.


RE: Skinners: Please test PR13754 - MacGyver - 2019-01-27

So I wrote the smallest Home.xml that could show the issue and shoved it into Estuary, what I can say is that you are technically correct. It would appear that a listcontrol does not have access to the properties of another listcontrol. 
However, prior to Alpha 2 conditions inside variables that are used in list controls could. It made it "look" like the list control could use those values, and it worked in everything Alpha 1 and before.

I'm thinking that visibility controls inside list controls also could access them as well, that would make sense for some of the skin issues I see in Metropolis.

It explains why this did work, but no longer does:
Code:
    <variable name="GlobalWidgetLabel">
        <value condition="String.IsEqual(Container(9000).ListItem.Property(widgetType),movies)">$INFO[ListItem.Title]$INFO[ListItem.Year, (,)]</value>
        <value condition="String.IsEqual(Container(9000).ListItem.Property(widgetType), episodes)">$INFO[ListItem.TVShowTitle] - $INFO[ListItem.Season]x$INFO[ListItem.Episode,,. ]$INFO[ListItem.Title]</value>
        <value condition="String.IsEqual(Container(9000).ListItem.Property(widgetType), albums)">$INFO[ListItem.Artist] - $INFO[ListItem.Title]$INFO[ListItem.Year, (,)]</value>
        <value condition="String.IsEqual(Container(9000).ListItem.Property(widgetType), songs)">$INFO[ListItem.Artist] - $INFO[ListItem.Title]</value>
        <value condition="String.IsEqual(Container(9000).ListItem.Property(widgetType), musicvideos)">$INFO[ListItem.Artist] - $INFO[ListItem.Title]</value>
        <!-- fixing the playlists content labels -->
        <value condition="String.IsEqual(Container(9000).ListItem.Property(widget), Playlist) + String.IsEmpty(Container(8000).ListItem.TVShowTitle)">$INFO[ListItem.Title]$INFO[ListItem.Year, (,)]</value>
        <value condition="String.IsEqual(Container(9000).ListItem.Property(widget), Playlist) + !String.IsEqual(ListItem.Title, ListItem.TVShowTitle) + !String.IsEmpty(Container(8000).ListItem.TVShowTitle)">$INFO[ListItem.TVShowTitle] - $INFO[ListItem.Season,,x]$INFO[ListItem.Episode,,. ]$INFO[ListItem.Title]</value>
        <!-- default -->
        <value>$INFO[ListItem.Label]</value>
    </variable>

in this context:
Code:
<control id="8000" type="list">
                <visible>String.IsEqual(Container(9000).ListItem.Property(submenuVisibility),movies)</visible>
                <posx>522</posx>
                <posy>563</posy>
                <width>910</width>
                <height>135</height>
                <onup>8000</onup>
                <ondown>8000</ondown>
                <onleft>9000</onleft>
                <onright>9000</onright>
                <viewtype>list</viewtype>
                <orientation>vertical</orientation>
                <itemlayout width="910" height="27">
                    <control type="label">
                        <posx>10</posx>
                        <posy>-2</posy>
                        <width>500</width>
                        <height>27</height>
                        <align>left</align>
                        <aligny>center</aligny>
                        <font>font14</font>
                        <textcolor>white</textcolor>
                        <label>$VAR[GlobalWidgetLabel]</label>
                        <visible>true</visible>
                    </control>
                </itemlayout>
                <focusedlayout width="910" height="27">
                    <!-- Focus Bar -->
                    <control type="image">
                        <posx>0</posx>
                        <posy>0</posy>
                        <width>510</width>
                        <height>27</height>
                        <aligny>center</aligny>
                        <texture>lists/focus.png</texture>
                        <colordiffuse>blue</colordiffuse>
                        <visible>true</visible>
                    </control>
                    <control type="label">
                        <posx>10</posx>
                        <posy>-2</posy>
                        <width>500</width>
                        <height>27</height>
                        <align>left</align>
                        <aligny>center</aligny>
                        <scrollout>false</scrollout>
                        <pauseatend>600</pauseatend>
                        <scrollspeed>20</scrollspeed>
                        <font>font14</font>
                        <textcolor>white</textcolor>
                       <label>$VAR[GlobalWidgetLabel]</label>
                        <visible>true</visible>
                    </control>
                </focusedlayout>
                <content target="videos">plugin://script.skin.helper.widgets/?action=recent&amp;mediatype=movies&amp;reload=$INFO[Window(home).Property(widgetreload-movies)]</content>
            </control>


Does this make sense? Is this a bug or is it supposed to behave this way. Was the fact that it worked before the error and it has been fixed after Alpha1?

The feature was very useful and I hope that it can work again. (a condition in a variable declaration called from a list control having access to another listcontrol's properties)


RE: Skinners: Please test PR13754 - jurialmunkey - 2019-01-27

FWIW, I agree that it would be useful. The reason you can't do it is for the sake of efficiency:
https://forum.kodi.tv/showthread.php?tid=177612&pid=1547735#pid1547735


RE: Skinners: Please test PR13754 - scott967 - 2019-04-18

MusicPlayer.Position(n).xyz  appears to return MusicPlayer.xyz (ignores the "position" element).  This worked prior to 13754 (tested 18 A1)
MusicPlayer.Offset(n).UserRating returns MusicPlayer.UserRatng (ignores the "offset" element).  This didn't return anything prior to 13754.  However, MusicPlayer.Offset(n).xyz does work (before and after) for any other infolabel than UserRating (tried a few, not all possible).

scott s.
.


RE: Skinners: Please test PR13754 - jasn - 2019-09-21

(2019-04-18, 01:13)scott967 Wrote: MusicPlayer.Position(n).xyz  appears to return MusicPlayer.xyz (ignores the "position" element).  This worked prior to 13754 (tested 18 A1)
MusicPlayer.Offset(n).UserRating returns MusicPlayer.UserRatng (ignores the "offset" element).  This didn't return anything prior to 13754.  However, MusicPlayer.Offset(n).xyz does work (before and after) for any other infolabel than UserRating (tried a few, not all possible).

scott s.
.

@scott967, Has a fix been made for this issue? Would love to see one, as it appears to be an oversight and it greatly improves the application of track ratings for displays/playlists.

Thx in advance for a reply.