v20 Changes to the skinning engine for Kodi Nexus
#1
Below you'll find an up-to-date list of all changes made to the skinning engine since the release of Kodi Matrix.


SettingsScreenCalibration.xml
  • Improvements to screen calibration window (details)


new window

changed controls NOTE: This will break your skin's SettingsScreenCalibration.xml unless you add movingspeed to your controls.
Estuary example here.

new features

removed boolean

new boolean
  • System.Setting(hideunwatchedepisodethumbs) (details)
  • Player.HasPerformedSeek(interval) (details)


new infolabels

new path
  • addons://default_binary_addons_source/ (details)


changed infolabels
  • Integer.* (details)
  • bordertexture (details)
  • ListItem.DateAdded (details)
  • Player.Editlist was introduced to remove old Player.Cutlist (details)
  • Added Player.Cuts (details)
  • Added Player.Process(videoscantype) (details)
  • Added Player.HasSceneMarkers infobool and Player.SceneMarkers infolabel (details)


DialogKeyboard.xml

new dialog

new controls

new builtin

Containers
  • infoupdate attribute for itemlayout / focusedlayout (details)


Windows/Dialogs
  •  Allow skinners to define custom dialogs with modal type modality (details)

New game dialogs
  • In-game port setup dialog (20505 (PR))
  • In-game and out-of-game savestate dialog (20913 (PR))

addon.xml

Please keep this thread clean. It should be an easy overview for skinners who are updating their skin for Kodi.
For discussions / feature requests / bug reports, please find (or create) the appropriate thread in the skin development forum.
Do not PM or e-mail Team-Kodi members directly asking for support.
Always read the Forum rules, Kodi online-manual, FAQ, Help and Search the forum before posting.
Reply
#2
changes for older kodi versions can be found here:
 
Do not PM or e-mail Team-Kodi members directly asking for support.
Always read the Forum rules, Kodi online-manual, FAQ, Help and Search the forum before posting.
Reply
#3
2021-07-05 new addon:// path

on some platforms, binary addons can be installed from our addon repository.
on other platforms, binary addons come preinstalled with kodi.

to make it easy for skinners to create a shortcut to the right location (either 'my add-ons' or 'install from repository')
we've created a shortcut path that will take you there:
  • addons://default_binary_addons_source/

example usage:
xml:
ActivateWindow(addonbrowser,addons://default_binary_addons_source/kodi.pvrclient,return)


pull-request: https://github.com/xbmc/xbmc/pull/19928
commit: https://github.com/xbmc/xbmc/commit/99f8...667e390154
Do not PM or e-mail Team-Kodi members directly asking for support.
Always read the Forum rules, Kodi online-manual, FAQ, Help and Search the forum before posting.
Reply
#4
2021-08-01 DialogKeyboard.xml - new button

Add a button (id="310") to DialogKeyboard.xml which allows the user to show/hide a password.

pull-request: https://github.com/xbmc/xbmc/pull/20000
commit: https://github.com/xbmc/xbmc/commit/5f72...5b7f778f56
Do not PM or e-mail Team-Kodi members directly asking for support.
Always read the Forum rules, Kodi online-manual, FAQ, Help and Search the forum before posting.
Reply
#5
2021-08-07 Changed infolabel
 
  • ListItem.DateAdded

it was previously only available for videos, but now also works for music albums & songs.

pull-request: https://github.com/xbmc/xbmc/pull/20018
commit: https://github.com/xbmc/xbmc/commit/7d6c...7a787aa7a6
Do not PM or e-mail Team-Kodi members directly asking for support.
Always read the Forum rules, Kodi online-manual, FAQ, Help and Search the forum before posting.
Reply
#6
2021-11-27 New attribute for itemlayout / focusedlayout
 
  • infoupdate

specifies the interval in milliseconds for an autoupdate of the layout

this is useful for PVR related content, where a progress control used inside a container wouldn't update.

example:
<focusedlayout width="310" height="500" infoupdate="5000">

pull-request: https://github.com/xbmc/xbmc/pull/20597
commit: https://github.com/xbmc/xbmc/commit/4cae...759f42ada3
Do not PM or e-mail Team-Kodi members directly asking for support.
Always read the Forum rules, Kodi online-manual, FAQ, Help and Search the forum before posting.
Reply
#7
2021-10-16 New dialog / New control
 
  • DialogColorPicker.xml
  • colorbutton
  • xbmc.gui bump to 5.16.0

the colorbutton control is now used in the Kodi settings section to open the DialogColorPicker (DialogColorPicker.xml / id=12008)
it's currently used to allow users to select subtitle colors.

Estuary example of this dialog:
https://github.com/xbmc/xbmc/blob/master...Picker.xml

pull-request: https://github.com/xbmc/xbmc/pull/20169
commit: https://github.com/xbmc/xbmc/commit/c090...904873fd7c
Do not PM or e-mail Team-Kodi members directly asking for support.
Always read the Forum rules, Kodi online-manual, FAQ, Help and Search the forum before posting.
Reply
#8
2021-12-31 New texture attribute "infill"

The new texture attribute infill is available if the border attribute is set. It is a hint for the GUI engine to avoid drawing the center portion of a texture with a border. This is especially useful for bordertexture elements which are completely transparent in the center. The default behavior is the same as before. Only if infill="false" is set, the inner portion will be skipped. See the PR below for additional information.

Example:
<bordertexture border="21" infill="false">overlays/shadow.png</bordertexture>

If used correctly, this might give a performance boost on low powered devices by avoiding overdraw. In static analysis, the default skin Estuary renders up to 15% faster.

Pull-Request: https://github.com/xbmc/xbmc/pull/20754
Reply
#9
2022-01-02 - Added Player.Editlist infolabel to replace old Player.Cutlist

Player.Cutlist not only had a confusing name (it returns all edl edits and not just cuts) but also had a few issues:
- It didn't include EDL mutes
- It incorrectly included EDL cuts (which are not part of the playable timeline)
- If the file had EDL cuts all the other EDL edits were placed in the wrong location on the seekbar.

Player.Editlist was introduced to fix the aforementioned problems. For v20, Player.Cutlist will still be available and will return the exact same values as Player.Editlist. However, we plan to remove Player.Cutlist in v21.

Pull Request: https://github.com/xbmc/xbmc/pull/20768

Please change your Player.Cutlist usage to Player.Editlist.
Reply
#10
2022-01-04 - Added Player.Cuts infolabel

Since Player.Cutlist (now deprecated) and Player.Editlist no longer present cuts on the ranges control, Player.Cuts was introduced as an alternative. Cuts (in estuary and estouchy) are displayed like chapters with small red marks (as the range is effectively removed from the video timeline).

Pull request: https://github.com/xbmc/xbmc/pull/20783

Image
Reply
#11
2022-01-06 - Add Player.Process(videoscantype) infolabel

Returns the scan type identifier of the currently playing video p (for progressive) or i (for interlaced).

Used in Estuary in the VideoProcessInfo window to show the scantype of the video (note the p and i in the below screenshots)

Image

Image

Pull request: https://github.com/xbmc/xbmc/pull/20800
Reply
#12
2022-01-06 - Added Player.HasSceneMarkers infobool and Player.SceneMarkers infolabel

SceneMarkers are EDL edits that behave similar to chapters - as they identify a specific position on video timeline. Users can skip to next scenes using NextScene and PrevScene builtin actions. More generically, PlayerControl(Previous) and PlayerControl(Next) already jump to the next (or previous) points of interest on a timeline, being them chapters or scenemarkers.

In estuary Player.SceneMarkers is being used to display small white boxes on the seekbar using the ranges control identifying the position of scene markers (identical to what already happened before for chapters). Player.HasSceneMarkers is being used to control the visibility of the Next and Previous OSD buttons if the file has scenemarkers (used to be hidden before).

Image

Pull Request: https://github.com/xbmc/xbmc/pull/20799
Reply
#13
2022-01-08 - Added Listitem.HdrType infolabel and VideoPlayer.HdrType infolabel

Kodi can now auto-detect the type of HDR in a file and these two infolabels can be used to display the correct flag.  Current possible values are hdr10, dolbyvision and hlg. SDR content returns an empty string.

Pull request: https://github.com/xbmc/xbmc/pull/19983
Commit: https://github.com/xbmc/xbmc/commit/63c8...5213265d76
Learning Linux the hard way !!
Reply
#14
2022-01-30 - Allow skinners to define custom dialogs with modal type modality

Before v20 any custom dialog defined within a skin which the visibility depended on visible conditions was automatically set as Modeless. If a dialog is modeless it can't catch input as the keystrokes/actions were sent to the underlying window. In v20 skinners now have a way to override this behaviour by setting `modality=modal` in the xml window/dialog definition. If the attribute is not provided or the value is different from "modal" the dialog continues to be modeless as before.

Example:

The following example ilustrates the need, it displays a button whenever a file is playing. Without modality="modal" you can't hit the button of this window

Image

xml:

<?xml version="1.0" encoding="utf-8"?>
<window type="dialog" id="1114" modality="modal">
  <visible>Window.IsActive(fullscreenvideo) + Player.Playing + !Window.IsActive(1109) + !Window.IsActive(videoosd) + !Integer.IsEqual(Window(home).Property(hitclicked),1)</visible>
  <include>Animation_BottomSlide</include>
  <depth>DepthMax</depth>
  <zorder>0</zorder>
  <defaultcontrol always="true">1</defaultcontrol>
  <controls>
     <control type="group">
        <animation effect="fade" start="0" end="100" time="300">VisibleChange</animation>
        <control type="button" id="1">
            <description>Hit me if you can!</description>
            <width>auto</width>
            <bottom>150</bottom>
            <left>200</left>
            <height>110</height>
            <label>Hit me if you can!</label>
            <textoffsetx>40</textoffsetx>
            <onclick>Notification(Ouch, Ouch!)</onclick>
            <onclick>SetProperty(hitclicked,1,home)</onclick>
            <align>center</align>
            <texturefocus border="23" colordiffuse="button_focus">buttons/dialogbutton-fo.png</texturefocus>
            <texturenofocus border="40">buttons/dialogbutton-nofo.png</texturenofocus>
        </control>
     </control>
   </controls>
</window>



Pull-request: https://github.com/xbmc/xbmc/pull/20927
Reply
#15
2022-02-12 New builtin function
 
  • Skin.Setcolor()

this will allow skins to use the builtin color picker functionality of Kodi

the builtin takes 2 to 4 arguments:
  • setting = Name of skin setting.
  • header = Dialog header text.
  • color = Hex value of the preselected color (optional).
  • colormap = XML file containing color definitions (optional).

example: Skin.Setcolor(bgcolor, 31234, FF00AB0C, special://skin/extras/prettycolors.xml)

pull-request: https://github.com/xbmc/xbmc/pull/20916
commit: https://github.com/xbmc/xbmc/commit/a5f1...d762fa628f
Do not PM or e-mail Team-Kodi members directly asking for support.
Always read the Forum rules, Kodi online-manual, FAQ, Help and Search the forum before posting.
Reply

Logout Mark Read Team Forum Stats Members Help
Changes to the skinning engine for Kodi Nexus0