Proposed changes for skin v2.0
hopefully sometime soon we're gonna be looking to make a new point release, so i'm going to bump the skin version up at the same time.
it's been quite sometime since the last skin bump, and heaps of stuff has been added, so that many 1.3 skins don't function 100% anymore.
i've started adding support for the new system, and have added backwards compatibility support to v1.3 skins as well.
proposed changes to 2.0 currently are as follows:
1. some control ids are changing. this is to make the main media windows more consistent with the id's that need to be there. the changes are:
a) my pictures and my scripts - id of list and thumb controls change from 10,11 to 50,51.
b) my music - id of switch view select button changes from 6 to 5.
c) my programs - id of list and thumb goes from 7,8 to 50,51. id of files label goes from 9 to 12. id of scan button goes from 3 to 6, and the id of the sortby and sortasc buttons goes from 4,5 to 3,4.
in the end, the id's for all the main media windows are:
viewas: 2
sortby: 3
sortasc: 4
switchview: 5
list: 50
thumb: 51
biglist: 52
fileslabel: 12
2. the conditionalbutton control will be removed. this only effects the kai button on home (id 99) which can now be displayed using the conditional visibility system.kaiconnected.
3. the buttonscroller button definition has moved to the skin. see here for more info (http://manual.xboxmediacenter.de/wakka.php?wakka=buttonscroller)
4. the new filebrowser dialog (id 126) is now standard, and will be used more and more throughout xbmc.
testing your skin for compatibility beforehand
the nice thing is, you can test for the above now. simply set your skin version to be 1.8 instead of 1.3, and xbmc will use all the new routines rather than the old ones. pm3 you'll notice is now 1.8 compatible (ie all the above is done).
there is more coming - this is not a complete list (in fact, we're only just getting started).
5. homepage image fading will be removed from the code. this can be handled just as well using the visibility effects code, so the custom code for doing the fading at the moment will be removed as soon as pm3 is updated to allow this to happen.
other stuff that i'm thinking about:
6. redefine references.xml so that it is a storage for not just the default controls (one of each) but can store more than one default for each control (eg 2 thumbpanels, or 2 buttons). this is because i'd like to split the thumbpanel control up into 2 separate ones - one for large thumbs and one for small thumbs.
7. the themes stuff needs to be firmed up, as does the skin settings.
that's all for now - this will be updated when i remember all the other stuff that is needed!
comments/criticisms are most welcome.
cheers,
jonathan
i want to remember you my small request about having volume and seek bar (but also all the dialogs, overlays or osd like "player controls" or "music/video overlays"), in different positions for each screen.
what i'd really like most is that all the controls that are displayed on top of standard screens can be different in size, texture and position for each screen.
as i told you i was able to do it for the "player controls" using buttons with no textures and enabling/disabling different images depending on visibility conditions:
(eg. my stop button)
* *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *-
* * *
* * *
* * *
* * *
* * *
* *
<!-- textures for home screen active -->
* *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* *
<!-- textures for all other screens -->
* *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* *
as you see it become a pain for all the player buttons (togglebuttons most); so how about having the possibility to enable/disable visibility to an entire group of controls, eg something like:
<!-- buttons for home screen active -->
*
*
* *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* *
* *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *music-play-focus.png
* * *music-play-nofocus.png
* * *
* * *
* * *
* * *
* * *
* *
*
<!-- buttons for all other screens -->
*
*
* *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* *
* *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *music-play-focus2.png
* * *music-play-nofocus2.png
* * *
* * *
* * *
* * *
* * *
* *
*
tnx in advance as always, i hope you'll find a solution for me soon :)
cheers, marco.
also i re-read your last post
if you have an object (like the album info and thumb) in the lower right corner but then the user triggers the osd... then the album info and thumb could slide right until it hits the center of the screen, then back again when the osd is turned off.
your only using 2 positions (normal and osd active). this could be accomplished. use startx and starty to position them everything while the osd is active. then use posx/posy tags to position while it is not active. use a conditional that checks which window is active (checking for dialogosd window id).
the entire dialog should fade when not in use due to the visiblity on the entire window
has anyone used the new buttonscroller yet?
can someone confirm that buttonscroller.hasfocus(id) works?
a->a
b->b
c->c
etc...
quicker and easyer (imo) :)
you are doign a great job incorporating user suggestions... i thank you!
this would also help for when i don't have time to work on it someone can update the xml file to make it compatible.
it would be limited but would be alot better than no support at all.
if you want them to slide use buttonscroller.hasfocus(id) and have them slide/fade in and out.
this is my point... there is no way to have a set of images act like the buttonscroller, including text, does today but have separate images for each button.
i gave an example in a previous post.
ill link ya when i clean it up a bit
bpairs
ive already broken the backgrounds up. see my edit if you want the images
my suggestion for v2.0: i always asked myself why the dailogseekbar uses a progressbar ("player.progress") to indicate the progress and the dialogvolumebar use a picture instead. why not make something like "volume.progress" possible.... ???
http://manual.xboxmediacenter.de/wakka.p....s&v=qu5 (http://manual.xboxmediacenter.de/wakka.php?wakka=recentchanges&v=qu5)
i will release a tech demo soon with all stuff open source and in time i could in a few hours put it into pm3. there is a heap of stuff in skin that isnt utilised in cvs. but i can see that the xbox360 skin with sliders is now alot more possible than before and i would like to start on a new skin when v2 is finalised.
a->a
b->b
c->c
etc...
quicker and easyer (imo) :)
buggers up contents of for example tho.
fake example:
within skin.xml...
font12
font12
within home.xml...
font12
... the control uses the attributes from the group and the last attribute setting "wins". the last applied is the local (i.e. on the control itself) settings... so if the attribute is set locally then the attributes on the control take presidence.
this could potentially "slim" down the controls if several controls have the same settings... many buttons have the same height & width, text offset, font, label, etc. you could even use it for
1. can you speculate "%" about how far along your alterations are (in terms of total upgrade).
2. will pmii be redone to use these alterations or will it simply be jacked to work as it. (i wonder if it will be redone and added to cvs).
with the slide effect can you add start / stop coordinates and also make them conditional depending on the current focus?
two thoughts on this...
1) it would be cool to move objects to different locations on the screen depending on the current focus. ie move from left upper corner, to bottom right corner, etc.
2) actually replacing (or integrating sliding into) the current buttonscroller for more flexibility.
create a selectable set of image buttons where each button is assigned a different image (and can have text overlayed or offset.
i'd replace the pm3 static button image and buttonscroller so i could use specific images for each choice. this would make a "flowing" button menu with different images to fit the length of each text label.
quick stolen examples:
http://members.cox.net/affini/scroll-vert.jpg
http://members.cox.net/affini/scroll-hori.jpg
ok! so the thumbnail relative spinposx, spinposy tags work.
but! when it comes to listcontrol the spinposx & spinposy tags are not working relative to posx & posy.
so im thinking its a listcontrol problem not a problem overall.
i could do with the cpp files that are to be amended so i can run a batch and test. the skin may? have slightly different case on the very same tags throughout the skin so it may not change them all 100% i would then need to manually pick them off when/where the skin looks faulty or crashes.
i will supply more info later on, plus a program input etc. to make the changes with a couple of button clicks.
thanks deanrparry for the contribution - your program looks nicer than the one i'm using - did you save the configuration file so that others can use it??
anyway, imo all lower case is a nice easy standard for us all to remember. starting from version 1.85, all tags in the skin are required to be lower case. older skins still work fine.
my next post will detail the changes to version 1.85, and i'll post a config file to make the changes nice and quickly so don't bother going through your skin files yet (unless you're really bored :p)
cheers,
jonathan
:agree: i would be interested in...
thanks for your work
cheers ceomr
xbmc_skin (http://www.konsolenumbau.at/ceomr/ceomr_mediacenter_1_8_beta.rar)
so everybody can see what has changed. instead of reading and searching this topic for changes that has been made so far
works fine try the following
-> buttonscroller *id="102"
* * * *<button id="102">
* * * * *<label>2</label>
* * * * *<execute>xbmc.activatewindow(6)</execute>
* * * *</button>
-> control *hasicon(102)
* * <control>
* * *<type>image</type>
* * *<visible effect="fade" time="200">buttonscroller.hasfocus(102)</visible>
* * *<id>0</id>
* * * *<posx>400</posx>
* * * *<posy>220</posy>
* * *<width>250</width>
* * *<height>200</height>
* * *<texture>home-myvideos.png</texture>
* *</control>
cheers ceomr
p.s. i have had a look at the xml's and it will take some time so i'm happy to get cracking given the go ahead jm.
maybe as simple as
control = xbmcgui.skincontrol('control')
control.set('type', 'image')
control.set('id', '0')
control.set('visible','buttonscroller.hasicon(2)', property = [('effect','fade'),('time',"200")])
window.addcontrol(control)
something along those lines.. i don't care how ugly it is this animation stuff looks great! if you can make the interface hook into the skin xml than it would never need updating :)
not sure about individual visibility on the button scroller buttons - i can see the effect you are trying to accomplish, but am unsure of how to do it effectively from the code point of view. will have a think about it though, but i suspect that this is an effect you'll have to live without for now.
smokehead:
as for the buttonscroller and sliding, have you specified the "allowhiddenfocus" option on it's visibility tag? that should do what you want. if not, please supply the home.xml you are using and i'll take a look.
and yeah, volume control should be handled by the info manager - will add that one in.
cheers,
jonathan
what do i need to do to see these new features in the skins?
rename references.xml to oreferences.xml
? change skin version to 1.8?
great work jm et all - its good to see some development life back into the gui of xbmc again!!!
cheers,
chris
edit: i do build my own xbmc daily.
a quick read of the code indicates that around half (73/140) of the control tags contain upper case characters. this is a fair number (and many of them are widely used such as posx and texturefocus), and i'm not sure whether this exercise is worth it or not. obviously for skinners, a search and replace through multiple files is easy enough, but if you have 73 such search and replaces to do, then it takes a reasonable burden of time.
i can easily add support for both all lower case and the old mixed case stuff with around 13 lines of code, which may be the easiest option long-term. it does slow the code down a bit (an extra function call + search through xml per tag read) though.
i will be changing the startx and starty attributes to startx and starty though in either case. as this has just been added, i don't think it is too much of a burden to the few of you that have used them as yet (just search + replace using a multi-file search and replace tool such as visual studio).
edit: just found a program that can do multiple search and replaces quickly across multiple files. i can set up a data file for it that will auto-convert your skins if you are interested. this will get rid of the time burden, so i think we can move all tags to lower case only for all controls pretty easily.
cheers,
jonathan
the following override references.xml textbox & listcontrol thanks to kraqh3d for the tip.
pal - dialogalbuminfo.xml / line 178
font13
cheers,
jonathan
one example:
if you have an object (like the album info and thumb) in the lower right corner but then the user triggers the osd... then the album info and thumb could slide right until it hits the center of the screen, then back again when the osd is turned off.
there are many more things that would just be sweet for the slide feature.
i'd still like to see the buttonscroller enhanced so that we can set specific images on specific buttons... having only one button image now is very limiting. i'm not even sure if a hack using conditional images would work due to the order images are rendered.
oh bollox! did nt read the edit on jm's post! he's done it already... oh well only 30mins wasted lol
i tried to make my contribution http://www.xboxmediaplayer.de/forums/non-cgi/emoticons/cry.gif
if you want them to slide use buttonscroller.hasfocus(id) and have them slide/fade in and out.
new feature request for 2.0 jm
something like
etc
this would display the currently focused listcontrol item's thumbnail. if implimented some sort of visibility condition listcontrol.thumbnail.default which would return true if the item has no thumbnail (and will use default) would be very useful
also
tag for controls which would set a predetermined amount of alpha (in %?)
the ability to specify if it reaches the % when fully visible for fully faded is key.
something like
.5
where when 'high' the control is invisible when not visible and .5 alpha when visible
when 'low' the control iss .5 visible when hidden and 1 when visible
edit perhaps this is better implimented in the
the list control now displays 14 lines instead of 12, doesn't look bad though.
my files has 13 instead of 11 lines.
that's about all i noticed, same number of icons in big and sm icon view. the dialogs appear to be the same.
edit: i'm using ntsc 4:3
i think one visible tag should be considered "system has network"
better would be "system has internet"
or the possibility to deaktivate them like other buttons with "internet lookups"
because no one needs the weather button without beeing connected...
have made a couple of other changes - just cleanups:
1. removed
2. removed
3. removed
that's most of the changes i wanted to make done. please let me know if there's anything that you guys want done before 2.0 and i'll look into them.
cheers,
jonathan
works fine you have to change the id's
so you've actually tested? hmmm odd mine always return true
ty for testing for me
kotix :
ah, havnt done any window id conditionals so i didnt know they behaved that way. perhaps thats something that should get looked at
texturecheckmarknofocus
textureslidernibfocus
changed the visual tag to:
<visible effect="fade" time="500">!player.hasmedia + buttonscroller.hasfocus(158) | control.hasfocus(158)</visible>
i have one issue for jmarshall. if you start something as not visbile and to slide in to screen at 600msecs. it works perfect but if you have 50 movies in the drive by the time its opened its on screen. i beleieve it has done the transistion as the time is counted from the button press not the first image render. it just that ive got it looking cool with no movies onscreen but the more i add the less the effect on windwo entry. apart from that minor problem the actual way it works is great.
cheers for pics loto but i actually need to rerender everything to do what ive got planned :( will take a bit of time but should be worth it quick mockup i did looked alot better than i thought it would.
cheers
in first i would like to say to you that you makes a great work for xbmc. :)
it is possible to fix all conditionalvisibility
in the block button of the buttonscroller?
example:
<control>
<description>home button scroller</description>
<type>buttonscroller</type>
.....
<visible>!player.hasaudio | ![player.hasaudio + system.idletime(60)]</visible>
<buttons>
<button id="102">
<label>0</label>
<execute>xbmc.activatewindow(myprograms)</execute>
<visible effect="fade" time="100" start="hidden">true</visible>
</button>
<button id="104">
<label>1</label>
<execute>xbmc.activatewindow(mypictures)</execute>
<visible effect="fade" time="300" start="hidden">true</visible>
</button>
<button id="105">
<label>3</label>
<execute>xbmc.activatewindow(myvideos)</execute>
<visible effect="fade" time="500" start="hidden">true</visible>
</button>
<button id="103">
<label>2</label>
<execute>xbmc.activatewindow(mymusic)</execute>
<visible effect="fade" time="700" start="hidden">true</visible>
</button>
<button id="107">
<label>8</label>
<execute>xbmc.activatewindow(weather)</execute>
<visible effect="slide" time="900" startx="0" starty="350" accleration="1" start="hidden">true</visible>
</button>
<button id="109">
<label>5</label>
<execute>xbmc.activatewindow(500)</execute>
<visible effect="fade" time="1100" start="hidden">player.hasaudio</visible>
</button>
.....
</buttons>
</control>
thanks
frost
!player.hasmedia | ![player.hasmedia + system.idletime(5)]
it now works just the way i wanted, ..thanks for helping me out m8.
this (http://members.home.nl/smokehead/xbmc/pdm/web/) is what i have so far (flash, watch your volume level)
edit: i was just removing the conditional button from references.xml, as i'd take a look at the references file from pm3 and noticed that it still uses old id's. maybe it's just me or perhaps i'm using an old pm3 skin, but why isn't the default listcontrol, default thumbnail panel and default listcontrolex changed to the new id's (10,11->50,51) or doesn't it matter at all.
another problem i'm encountering has to do with the home sub-buttons like xlink (id157),scriptspanel (id151),dvd-tray (id158) and the shutdown button (id160). all these buttons have there own backgrounds..but they don't show up when buttons has focus..i'm using the same id's as the buttons, (even not when all id's set to 0). this all worked fine before changes took place at the skin system.
and as bp pointed out, it would also be useful to test internet connectivity to a known destination. but, should it be a dns based test, or an lower level ip based test? to me, they are two completley different tests. weather, in particular, will still work if dns isnt setup correctly because we use some known ip addresses.
affini:
i'll take your suggestion on board. i'm not sure how much it'll simplify things though - i suggest that just extending references.xml so that you can have more than one default control for each control type might do the trick better, as generally the tags that are common among many controls are common due to the fact that they are the same type of control. having 3 different default buttons would help this. i admit, though, that the visibility stuff is getting reasonably complicated, and you often want to turn multiple controls (of differing types) on and off via the same criteria, and the include method you suggested would be better in this scenario.
as for the different scrolling buttons etc - i'm not sure how this differs from the button scroller. remember that you can place it wherever you like in the skin.
smokehead:
a quick reading of your code shows me that when the player isn't playing, main.png is used. once the player starts playing, the first thing that happens is main2.png is displayed. if you have focus on the button scroller, then main.png is displayed as well. if the button scroller slides out, it will still retain focus until a movement is performed, thus main.png is still visible. i suggest that whatever conditions you are using on the buttonscroller you use in place of the control.hasfocus(300) in the main.png visibility condition.
cheers,
jonathan
target control is hidden and contains allowhiddenfocus=true. when selected the visible variable makes this control visible. navigation behaves as if allowhiddenfocus does nothing
control is as follows...
<control>
<description>view as icons button</description>
<type>button</type>
<id>2</id>
<posx>50</posx>
<posy>120</posy>
<label>100</label>
<font>font13</font>
<onleft>50</onleft>
<onright>50</onright>
<onup>300</onup>
<ondown>3</ondown>
<visible effect="slide" time="800" allowhiddenfocus="true" startx="80" starty="-117" accleration="1" indelay="1200">!player.hasaudio | player.hasaudio + ![control.hasfocus(50) | control.hasfocus(51) | control.hasfocus(52)]</visible>
</control>
1. yeah, i know - i missed a bit of code. hopefully it'll be fixed in a couple of hours for 1.3 compatibility.
2. and yeah, i've removed all context menu support as it was too hard to maintain once the content moves to the skin (as the skin may be on a non-writeable partition etc. etc.)
3. that will be fixed when 1 is fixed - sorry about that!
britneyspairs:
the time is counted from when the window is initiated. this is so that we get the control focus correct on window start, but i may be able to get around this as i have added a new thing at loto_bak's request that can possibly take care of it - will look into it tonight. a the very least, i should hopefully be able to take care of timing from first render.
affini:
currently it's restricted to making this visible or invisible. i'm not really sure of the usage of other stuff yet. you can do some hacks to do what you want with multiple controls though i think (eg 1 control to do the movement when a change of focus occurs, another control that comes on in the new location once the movement is complete etc. etc.)
kobazz: yep, no problems with sliding in the videoosd. zoom in/out is probably be doable - unsure how easy rotate is though (we currently only position and scale stuff - there is no facility for altering via a rotation). i don't see the effectiveness of some of that though to be honest (other than just pure wizzbang looks, which get kinda tiresome after a while)
as always, i'm open to suggestions :)
cheers,
jonathan
i ask this because there are several functions that will return an all lowercase string(array of char) and prevent problems with upper and lower case strings. i added this to my xml engine in the editor along time ago as there were problems with some that have the first letter of each word capitalized and others that are all lower caps. seems like a simple thing but can render your whole control useless because of one letter. just a thought.
1 more question- are these new controls going to be added to online manual or posted when the 2.0 version comes out? need to know so i can update the editor.
another problem i have has to do with the home bg's i use (16x9main.png, 16x9main2.png), when player.has.media the buttonscroller will dissapear after 5 seconds and 16x9main2.png will load..cause this bg is more transparent..than 16x9main.png..but this does not seem to work correct, maybe you could take a look @ home.xml, and tell me what's the problem.. thanks in advance
here's the skin info you need:
1. pre v1.8 skins:
these should work fine with your old code. (ie buttons defined in xboxmediacenter.xml just like they are in cvs, and if you want to do conditional textures, either use the "normal" ones (ie the ones in the range 102-120) to have the xbmc home code take care of it, or use the buttonscroller.hasicon(number) to take care of it (numbers are 102 ... 109). the extra images per button are done using the 122-140 and 142-160 id's as before.
2. version 1.8 and above:
buttons are read from the skin. you define the texture focus and no focus in the actual button definition (see online manual info). conditional is buttonscroller.hasfocus(id) where id is the id="" attribute in the
one thing it really needs now is something for when you go to any window, for it to hold the previous image in background if selected so i can just slide stuff in over the top. eg press on music and a panel and buttons slide onto the screen over the home page and for there to be some way i can have a default button delay (eg i want to scroll in thumbpanel this takes 300millisecs) id love to be able to delay the button by 320millisecs so it is on it otherwise i have to press a key before it jumps back to it (if its default). but i have to say this is impressive and its fast it will scroll full screen parts with lots of other parts very quickly.
cheers jmarshal
if you will humor me... take a look at the interface here:
http://www.xlobby.com/forum/viewtopic.php?t=3793
you'll see screenshots of several different menu styles -scrolling horizontally and vertically using purely images and others with images and text.
i'd love to see xbmc have the ability to do these things.
what i actually ment was only changes regarding the skinning part and put them in one list.
edit: i'm having troubles finding the right tags for my skin, maybe someone could help me out with it, that would be great.. the problem: i'm using 2 backgrounds in home.xml (main.png + main2.png), and the idea was that by normal usage only main.png is visible, but when "player.has.media" the buttonscroller slides out after 5 sec. and main.png switches to let's say main2.png because this background is much more transparent than main.png... i do this because sometimes the text of the buttonscroller is not readable because of the music,video bg's behind it and my main.png is much darker on the left (where the buttonscroller is)
the code i have actually works, but half.. it only works perfect when buttonscroller has no focus.
<control>
<description>background overlay image</description>
<type>image</type>
<id>1</id>
<posx>0</posx>
<posy>0</posy>
<width>720</width>
<height>576</height>
<texture>16x9main.png</texture>
<visible effect="fade" time="2000">!player.hasmedia | [player.hasmedia + control.hasfocus(300)]</visible>
</control>
<control>
<description>background overlay image 2</description>
<type>image</type>
<id>1</id>
<posx>0</posx>
<posy>0</posy>
<width>720</width>
<height>576</height>
<texture>16x9main2.png</texture>
<visible effect="fade" time="2000">player.hasmedia</visible>
</control>
i had the same idea for the weather button and i did it already in my skin but i've switched back to normal buttons now ("system has network" is just fine).
i was thinking to do the same for the submenu (scripts) button, is there any scripts that doesn't require a internet connection except the autoexec script?
xbmc/lib/libpython/xbmcmodule/controllist.cpp
change:
self->pcontrolspin->dwposx = self->dwposx + self->dwwidth - 35;
self->pcontrolspin->dwposy = self->dwposy + self->dwheight - 15;
to:
self->pcontrolspin->dwposx = self->dwwidth - 35;
self->pcontrolspin->dwposy = self->dwheight - 15;
and likewise in:
xbmc/lib/libpython/xbmcmodule/controltextbox.cpp
change:
self->pcontrolspin->dwposx = self->dwposx + self->dwwidth - 25;
self->pcontrolspin->dwposy = self->dwposy + self->dwheight - 20;
to
self->pcontrolspin->dwposx = self->dwwidth - 25;
self->pcontrolspin->dwposy = self->dwheight - 20;
please test, and once confirmed fixed, i'll update cvs.
cheers
jonathan
i suggested the grouping a few weeks ago. i also suggested a solution that made it easy to manage.
you define groups and the characteristics, i.e. fades, etc. in a central xml file... like skin.xml or something.
on the object itself you define what group(s) it belongs to. using a
know what i mean?
and we use tinyxml to read the tags. i believe that xml tagnames (and attributes) are case sensitive by spec. as tinyxml does all the xml reading and processing for us, we can't do much about it without actually altering that at the source.
while it would be easy to implement (can do it just in one place as you say), i don't want to implement anything in a nonstandard way.
cheers,
jonathan
the list, thumb, text controls have their spin control coordinates offset from the window position, not the control position, which is a pain when you are trying to skin it manually. i'm going to change them all to be offset from the control position, which seeing as you know the width + height should make things much easier to position. will pop this change in (fully backward compatible to 1.3) to skin version 1.81 when i get the chance.
as for the button scroller visibility per button, this is doable - unsure about how nicely it would work though - transistions will likely be impossible - the buttons just would not be present if the visibility condition returned false (and all other buttons would rearrange themselves). still, it is definitely worth having.
so here's the list so far for me to work on:
1. buttonscroller separate button visibility.
2. a reliable system.hasinternet (perhaps a ping to the ip of google?)
3. info values for player.getvolume (percentage) and player.getvolume (string with db).
4. info conditional for player.ismuted
5. built in function for player.mute
6. info label for listcontrol.getfocusedthumb and whatever else is easily extractable (this requires a bit of code reorganisation)
7. look into the possibility of removing the ntsc folders. i would appreciate if some of you could investigate how well the built in scaling works both in pm3 and in your own skins (just remove references.xml from the ntsc folders for pm3)
let me know if i missed anything out.
cheers,
jonathan
and the strange thing is even if i use the new skineditor its the only control that does not show the scroll images at all.
listcontrol, thumbcontrol fines... textbox no sign of images but they are shown as loaded in the skin editors main page. i'm confused now!
cheers,
jonathan
but! i think there maybe another issue overseen.
eg. the cast info under my video lookup use listcontrol but so does the standard list views under videos, music, pictures etc... so you can only make the co-ords relative to one or the other not both. unless a new listcontrol for cast is created or xbmc resorts back to non relative co-ords.
i changed the textbox spinposy co-ords under references.xml to 190 from the initial 305 so its great for dialog lookups now but may be throwing another textbox elsewhere in xbmc off.
its only a small skin glitche but i think that not uing relative co-ords may be easier and more precise overall.
1. separate
could perhaps work (with the conditions evaluated from top to bottom). trouble is that the conditionals are only really for window.isactive(), so perhaps there's a more efficient way to do it.
2. a "dialog anchor" tag in the window file:
which would set the dialogs origin at (56, 57). the posx and posy tags of the dialog would then be calculated off this, rather than off (0,0) like normal.
there's very likely other techniques that will work (and may well be simpler to understand!) so please let me know if you think of any.
bakman:
the engine already supports this, and a quick look over references.xml in the ntsc and ntsc16x9 folders shows that there is very little different with the pal folders - at most 5 pixels or so difference. running xbmc in ntsc modes with these files removed (ie so that everything other than fonts is handled via the scaling off the pal coordinates) shows that there is no obvious problems as far as i can see - perhaps you guys can try as well?
if so, the proposal will be to just reduce the setup to 2 folders: one for widescreen and one for standard screen. the only difficulty then is font scaling/substitution. this could be handled in a single xml file probably.
i'm interested in all of your thoughts on this.
cheers,
jonathan
thanks and enjoy the holidays.
e.g one only will need to build on one standard, the rest is being handled by the engine ?
(just thinking out of the box)
@ lowercase
these entries are not changed..
textureupfocus
texturedownfocus
imagefolderfocus
cheers ceomr
ps: i am searching for more..
what i would like to be able todo tho is to keep a texture on screen when switching from 1 window to another for ex a homescreen and having another lets say mymusic bg slide in over it.
dunno if thats doable atm it wont work with outtime delay on homescreen tho.
another thing that would be nice if possible would be to be able to group a # of controls together and slide them in together when all textures are loaded and ready to go instead of separately because they all have different intimes + its very individual from user to user and setup how much stuff needs to be slided which makes it hard setting the timings to work for all.
contextmenu has a hardcoded positioning from the selected item which makes it hard to skin.
y axis is floating depending on how many buttons is used and
x axis is locked to selected object which causes problems in filemanager which have 2 separate selective objects.
i would like to be to for ex hide the left buttonmenu and fade in the contextmenu over it but not possible atm.
i like the idea with a hasinternet function what would be nice there is if the ping target was user selectable like for ex using your isps gateway would ensure a good and reliable ping and if no ping no inet ;)
the following is changing:
1. all skin tags are now fully lower case. nothing has changed as far as what they do - just change all the case to lower case.
to do this, go to orbit.org (http://www.orbit.org/replace/) and download their replace utility and install it (you can just extract to a folder if you don't want to fully install).
next, grab this file (http://pike.xboxmediacenter.de/bkrep20_xbmc_stuff.zip) and unzip it into your bk replace folder. it should prompt you to overwrite the groups.bkg file which you should do.
next, run bk replace. it should load in all of the conversions needed to do the skin automatically :) now you need to "add files" - just right click on the "xbmc skin files" entry, and "add file(s)".
settings needed are:
use folder
include file filter: *.xml
browse to your skin folder for the source file / folder path.
turn off backups via the backup tag if you don't want them. you can output to a different folder if you wish.
once done, just hit the "start replacing" button (first on the toolbar) and away it goes.
other changes
2. spin control offsets for listcontrol, listcontrolex, textbox, and thumbpanels are now relative from the posx and posy tags. just search for
3. custom code for the video osd has been removed. all of you should now be using the built in functions (xbmc.playercontrol()) for the main osd, and all the submenus should be using the videosettings dialog. see pm3 videoosd.xml as an example.
4. to help with 3, there's been 4 new built in commands added:
xbmc.playercontrol(bigskipforward)
xbmc.playercontrol(bigskipbackward)
xbmc.playercontrol(smallskipforward)
xbmc.playercontrol(smallskipbackward)
5. old backward compatibility code in the uicalibration and visualisation windows has been removed. for ui calibration, you just need 2 mover controls (top left with id 8, bottom right with id 9), and for the visualisation window you just need a visualisation control (id 2 is preferred, though i will change it so that it doesn't matter)
6. removed the "conditionalbutton" control completely. this was only used for the kai button on home (id 99) and can be done using the conditional visibility along with the appropriate execute action. see pm3 home.xml for details.
that's all for now. happy updating, and let me know if there is anything i missed, or anything that you've always found a pain to skin that can be improved.
i've just finished updating the skinning section of the online manual to suit.
next post will contain other stuff i'm looking in to.
cheers,
jonathan
in the case of the movie info window, it sounds like both the listcontrol (for cast) and the textbox (for plot) will need the tags for the spin control position so as not use the value found in references.xml.
if you've got good values for these post them so i can test them and commit the fix.
listcontrol, thumbcontrol fines... textbox no sign of images but they are shown as loaded in the skin editors main page. i'm confused now!
the textbox is not complete in the skin editor. so you should not see the spin controls in the gui. editor.
1. it's not backward compatible and i had to add buttons in the home.xml
2. pressing white button on pad to show context menu to move buttons or edit label doesn't work anymore
3. images 102,103 etc. associated to scroller buttons doesn't show up anymore
tnx jmarsh :)
before all these latest changes i've tryed to have 2 different positioned osd player for home and other windows but i could not specify the same control id for different windows active.
the only solution i found was to use buttons with no textures and use separated images actived depending on window and player staus condition.
i've tryed to have different volume bar for different screens, but i couldn't find a solution for that, i can have the image loaded right but not the label or the slider.
pratically some of the controls are still dependent from their ids and we cannot use 2 controls with same id even if their visibility is conditioned by windows.
if you like i can post the playercontrols.xml i've arranged.
@loto: buttonscroller yesterday was really a messed up and buttonscroller.hasfocus(id) or buttonscroller.hasicon(id) did not work at all (don't know if i coded wrong or what), i'm waiting for anonim cvs to update.
cheers.
do an info lookup for music and on the dialogalbum screen the spin control has vanished. it works but you cannot see it :)
edit : any lookups video aswell :)
in fact i think it relates to the spinposx & y being relative to the posx, posy co-ords. i see they were amended on the 15-12 the same day jm mentioned the subtraction *of posx, posy from the spin listcontrols etc... so new co-ords need sorting out for cvs for the references.xml (spinpos) tags
as for the context menu, it's like that as it is required in different windows in different locations (depending on context, thus the name). perhaps if i sort out a decent solution for kotix's request of different dialog positions dependent on the base window, then this will be easy to do as well.
grouping controls and have them inherit some common visibility code might be possible, though ideally this is something for a skin editor, rather than for the actual engine itself.
i'm going to see if i can change the timing code to operate after the resources for the controls have been allocated, but i'm not sure how easy that is. that should solve the issues such as large thumb panels not sliding correctly due to resource allocation.
cheers,
jonathan
#If you have any other info about this subject , Please add it free.# |