XBMC Skin Support in V7
(this was a post from the private forums that I've moved here to explain this feature in more detail on a technical level)
The general feature is that you can open a skin.xml file from an XBMC skin with SageTV (just like you'd open an STV .xml file) and it will work with some limitations. It's recommended to have XBMC installed as part of this as it needs the Language files in XBMC to resolve the text references (otherwise you'll see a lot of numbers where text should be). The MediaStream, Confluence and Aeon Stark skins are the ones we've tested against the most. I'd recommend trying MediaStream or Confluence first as they work the best. The translator also handles the PVR-type menus; but you'd need to get that skin from the XBMC SVN skin repository on the pvr branch which takes some know-how to do. You also need to have all the image files resident in the media subfolder of the skin (so if they're inside a Textures.xpr/xbt file you'll need to extract them or just download all the images from the SVN respository directly).
The main difference between XBMC skins and SageTV STVs is that the XBMC skins are much more of a UI template then definitions of actual UI functionality. This means there's lots of things defined in an STV that are not defined in an XBMC skin (such as what to do when a media item is selected; or what data goes in a table). XBMC uses 'control IDs' in their templates that then have a predefined way for how that control should behave. We've mapped a large portion of these; but we did not completely fill out all of the functionality for them. For example; there are no additional options when you select a media item; they will simply play. A merge of an existing STV with the translated XBMC skin can then be created which replaces that missing functionality with something comparative that is defined in an STV already; that would need to be linked together though. Many of the XBMC dialogs are also not linked into the UI in any way; although their translation is performed and they will be in the DIALOG ORGANIZER theme widget. Many of the XBMC dialogs and some of the menus don't have any parallel usage in SageTV either.
Some of this default functionality is also defined in the XBMCBase.xml file which is imported into the translated skin file. The XBMCBase.xml file can be edited before doing a translation in order to change some of this behavior.
There's also a some things in the XBMC API which do not translate to existing functionality in SageTV; and those API translations are simply converted to strings. The Last.fm and Audioscrobbler API calls in XBMC are an example of this; as well as the ones that related specifically to XBOX hardware.
There's also some rules for interpreting their skin definitions which we don't follow exactly for various reasons. The ones we are aware of are:
1) Conditional includes dependent upon properties that can change dynamically. The include directives in XBMC skin files are normally processed every time a menu is loaded in XBMC. And these directives can have conditionality applied to them (like #ifdef). SageTV does the conversion of the whole thing at once and uses the currently defined property values to do this. There are very few instances in XBMC skins where this actually makes a difference; but one example is in the Movies/TV views in the Aeon Auriga skin. It sets a property on the main menu depending upon which item is selected and the can conditionally include things for the video menu based on that property. These issues can be worked around by changing the XBMC skins to not depend on includes like that; or by modifying the translated STV to deal with it.
2) The Control.IsVisible API call in XBMC defines conditionality for when another component is visible. This maps correctly with one exception. If an Effect has a delayed fade in or an image is delayed being displayed due to background loading; then in XBMC it would not be considered visible. This is not true in SageTV; SageTV will consider these two extra cases and just relies on the conditionality that controls the visibility of components. This also only affects a few things in translated skins; the main one being coverflow animations. But there is a minor modification that can be done to the translated skin to fix this issue; I'll be more than happy to share it if anyone asks.
3) Certain XBMC controls were not implemented; but these are rarely used: selectbutton, multiselect, slider, sliderex, fixedlist (uses wraplist instead), rss, mover, resizer, fadelabel (uses a label instead)
4) Certain behaviors of other controls were not implemented, specifically: automatic text scrolling in labels, multiple images for the multiimage control, angle for text, camera, list & panel item preloading, textbox paging & scrolling, pulse on select
(definitely check your log file if you have problems loading a skin.xml file; sometimes there's syntax errors in the XML files used in the XBMC skin that need to be corrected for the Java XML parser to be happy....and if you don't see any images then check the media folder to make sure they've been extracted from the Textures.xpr bundle...those are the 2 most common things that'll cause issues when loading an XBMC skin)
Founder of SageTV
|Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)|
|Thread Tools||Search this Thread|
|Thread||Thread Starter||Forum||Replies||Last Post|
|Importing XBMC Skins||dbone1026||SageTV v7 Customizations||7||05-21-2010 02:44 PM|
|XBMC SageTv Plugin||mikwilli||SageTV Customizations||95||04-30-2010 12:50 PM|
|Sage becoming XBMC?||LehighBri||General Discussion||126||01-07-2009 06:58 AM|
|XBMC Script||Coolwave||SageTV Customizations||18||03-01-2006 12:44 PM|