Kodi Community Forum

Full Version: Post v1.1 skin changes
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
hi all,

just a place for us to collect together the post 1.1 skin changes for skinners to track. hopefully there'll be a date and the particular feature for you to look for.

2004-10-31: new tag <allowoverlay> added to all skin files to allow you guys to specify whether or not the music + video overlays are displayed on a particular window. valid settings are yes or no. if it's not used in a particular window, then it'll default to what the parent or previous window was using.
2004-10-24: new spin controls (ids 4,5,6) added to settingsslideshow.xml. the labels are 13308->13310.
2004-10-20: filemanager added. filemanager.xml replaces myfiles.xml.
2004-10-20: context menu added. dialogcontextmenu.xml is needed. it requires a single button template (id 1000) and 3 background textures (id 997->999). id 997 and 998 are the top and bottom textures respectively. id 999 is the middle texture, and this is scaled as more buttons are added. the bottom texture (998) is moved down appropriately.
2004-10-20: checkbox for hide parent folder items to settingsgeneral.xml (id 25)
2004-10-20: checkbox for hide track number for music to settingsmymusic.xml (id 18).


2004-10-24 added:   settings for the new slideshow

2004-10-26 added:   music osd timeout settings

2004-10-28 fixed:    thumbpanels have a fixed size now (not depending on screen calibration settings anymore)

2004-10-31 added:   <allowoverlay> tag for all windows (add <allowoverlay>yes</allowoverlay> to all screens! change to <allowoverlay>no</allowoverlay> where you dont want it)

2004-11-03 changed: the pgrogessbar can have an overlay texture now

2004-11-04 added:   randomize button in my pictures
2004-11-04 added:   cdg settings

2004-11-10 changed:   new invite dialog for kai
2004-11-10 added:   speex/chat button to kai client

2004-11-11 added:   2 channel pcm passtrough in audio options

2004-11-13 added:   new kai settings
2004-11-13 added:   "toast" dialog for kai
2004-11-13 added:   changed all kai ids (fixes probems with the virtual keyboard - just add 3000 to all important ids -> 35 = 3035)
2004-11-13 added:   user avatar to kai client

2004-11-17 added:   kai host dialog

2004-11-21 added:   keyboard chat to the kai client

2004-11-23 added:   text 'edit' control to kai client (to type with an usb keyboard)

2004-11-27 added:   tabs to the kai client ( navigate with mouse ot l+r triggers )

2004-11-30 added: kai server (engine) ip settings
2004-11-30 added: playtime to the imdb screens

2004-12-02 changed: reorganized settings (major change!!Wink

2004-12-06 added: kai quicklink in the home screen (only shows up if kai is enabled)

2004-11-10: major addition to the homepage. a new control <buttonscroller>

here's the info:

the xml file looks like this:

<description>button scroller</description>

most of them are self-explainatory. the scroller will be made of <numbuttons> buttons each having the specified <width> and <height>, seperated by a distance <buttongap>. it will be positioned at <posx>,<posy> and will be orientated according to <orientation> (either vertically or horizontally). buttons will use the <texturenofocus> texture, and the <font>, <textoffset*> and <align*> denote how the labels will be drawn.

the cursor (which uses the <texturefocus> texture) will initially be placed in position <defaultbutton>, and will be able to move a distance <movement> in either direction. if you try and move more (assuming that there is sufficient buttons) then the buttons will scroll through 1 position. they will wrap around if <wraparound> is set to yes or true. the scrolling will be smooth if <smoothscrolling> is enabled, else the buttons will jump from position to position as needed (same for the cursor).

lastly, if the skinner wants, the buttons on either end of the button scroller will be faded out from the movement range to the specified <alpha> transparency. <alpha>100</alpha> is fully transparent on the edge. all buttons within the <movement> range will not be touched by the transparency code. obviously, you are welcome to include transparency in the textures as well.

each button can have a number of images associated with it - up to 3 depending on what options you use. each button has an <icon> tag with it denoting the id of the background image that should be displayed when that button is selected. (eg icon value of 103 is my music iirc). these icon values are bounded between 101 and 120. currently only 102-109 are used, excluding 108.

additionally, the skinner is free to define a set of images to use in place of the standard button textures defined in <texturefocus> and <texturenofocus>. the no focus textures should be given ids in the range 121-140. each corresponds to the background image id plus 20. (eg 123 would be the id of the music texture).

if the skinner wishes to have separate focus textures as well (which you will want, unless your <texturefocus> bar is a color/alpha combo that just changes the tint on your button) then they take ids 141-160, with each corresponding to the <icon> settings plus 40. (eg 143 would be the id of the music focused texture). this will only work if <smoothscrolling> is turned off. you can't have both, as under smooth scrolling, the buttons scroll, but the cursor does not. note that all the location settings (posx, posy, width, height) of the images you define for these purposes are overridden by the settings in the buttonscroller.

you must always keep in mind that the user has full control over the buttons that they want displayed, and the order in which they appear. while this does give a restriction, imo it's not a major one. the users buttons are defined in xboxmediacenter.xml, and they have the possibility to change them from within the gui. they can alter the default button, reorder the buttons, and delete buttons they no longer want. they can only add buttons from the .xml file at present (like shares, it's not a simple process to develop a gui for.)

the layout is pretty simple:

<label>my music</label>


2004-12-08: my music playlist and my videos playlist, shuffle button is a radiobutton now
as of dec 3rd, the new settings system went in.

most of you will have noticed this by now :p

basically, you now only need settingscategory.xml

look in the project mayhem skin in cvs for the details.

basically, there is a default radiobutton, spincontrolex, and button that are used. you then also have 2 area controls and 2 gap controls. these are just image controls with no textures defined. the area controls are used to determine the position and width of the areas that xbmc fills with the settings options and the categories on the left. the gap controls we currently just use the height to determine the spacing of the controls for the category buttons on the left and the settings controls on the right.

that's it basically. we've reduced the xml count fairly significantly Smile

this morning (9th dec 2004) the skin versioning system went in.

it's pretty simple. there is a version number in skininfo.cpp that should be updated whenever something is done that will break a key functionality in xbmc. it's called skin_min_version.

there is a matching <version> tag in skin.xml

what we do is compare the value of the <version> tag with the value in the code, and only load the skin (or allow it to be selected) if the version no. in the <version> tag exceeds the version number in the code. in the future, we may add a skin_max_version indicating that this build will not work with skins from a later version - haven't decided yet.

xbmc will check on bootup that the current skin is compatible. if it's not, it'll try the default (project mayhem). if project mayhem is not compatible, it'll go into the fatalerrorhandler, thus refusing to load.

if a user really wants to use an old skin, all they need to do is alter the <version> tag to the suitable value.

as of 2004-12-09, the current version is 1.2

ok, the stuff for share locking has been added.

this means 2 new .xml files:


these will hopefully be prettied up in the next week or so and the dialognumeric.xml may have quite a few changes coming, as we plan on making it more like the virtual keyboard and add a '.' character to it so that we can use it for faster ip input etc.

as these are essential for password shares to work, i've incremented the version number to 1.21.

the custom window interface has a new class added - buttonmenu is the <type> to use. i also plan to alter this interface so that you state how many custom windows you want in skin.xml. that way, any custom windows are not needed to be repeated in every resolution directory - they can just be added as usual to the <defaultresolution> directory and will be scaled like all other windows.

the buttonmenu is likely going to be used for a shutdown menu (popup menu on right thumbstick button) to allow other things on the one button. we'll likely introduce an extra .xml file for this, likely dialogbuttonmenu.xml


using the control <buttonscroller> with textures focus and no focus different for every button, i have detected the following bugs:

- when the xbmc begins the <buttonscroller> lapel the different textures until it has passed for all the buttons.
- if it is defined <wraparound> = not, the xbmc crash.

i have test this with the version 2004-12-10.
leonardo: a couple of fixes went in last night - please re-test.

also, note that only non-focus textures can be used for the buttons - the textured focus is only one texture iirc.

it would also be helpful if you could provide example home.xml files so that i can test it out and fix any issues.


last night (12-12-2004) we put the new dialogbuttonmenu into cvs.

it is used (in the default skin) as a popup menu that appears on right thumbstick button press. this activates window id 111 which is the id of dialogbuttonmenu.xml. see keymap.xml for how the activation works, if you haven't seen this feature before.

please have a look at dialogbuttonmenu.xml - it has some nifty <execute> tags, using some of the built-in functions in xbmc.

note that this button menu can be used from anywhere, and you can define new buttonmenus (just like you can define new submenus and windows etc) using the custom window interface. use <type>buttonmenu</type> to get one of these buttonmenus to popup.

the label control id is the only necessary thing (assuming you want button labels!Wink. it has id 3100. if present, the labels from the buttons will be rendered into the label control, rather than rendering in the usual way. this is done by setting <font>-</font> in the button tags, although i'll disable them from the code so that this is not necessary (saves you typing it in).

let me know if there are any questions.


i re-test xbmc 2004-12-13 and the buttonscroller with textures focus and no focus different for every button has the same bugs:

the button scroller can only have one focus texture, defined in <texturefocus>. the idea was that this would either be a purely alpha (or alpha tint) that would indicate the cursor position. it is drawn over the top of the nofocus textures, which can either be all the same (defined in <texturenofocus>) or can be separate (defined as image controls with ids that match the <icon> tag (+20) in the <homebuttons> section of xboxmediacenter.xml)

the nofocused textures for each button can be separate (and thus different) - these are the <icon> referenced in xboxmediacenter.xml.

eg: in xboxmediacenter.xml, we might have:


in your home.xml, you'd have:




then, when displayed on screen, the item in the button scroller would use the image with <id> 123 as it's nofocus texture. it that item happened to be selected, it would first draw the nofocus texture (the one with <id> 123). then, it would draw the focused texture (myfocustexture.png), and lastly the text of the item.

note that if the button is focused, then the other image (the one with <id> 103) would be enabled (like the large icons on the pm skin for instance)

hope this makes it clear.

just a small note:

the id of the background bar in slideshow.xml has been changed from 0 to 1, so that it can be easily enabled/disabled from the code . this was required due to a change in the rendering code to allow for better error flow logic.

also, note that an image control with id 13 has been added for a pause button (used in slideshows)


2004-12-15: an new modeless dialog, dialogmusicscan.xml was added.
used for background music info scanning. disabled by default.(option in settings my music/library/use background scanning to enable)



please you can download the skin hdeetv and test the control buttonscroller to verify if really there is a bug when different textures are in use for every button, or i not to use it.

thank you
Pages: 1 2