getmusicbee.com

Support => Tips and Tricks => Topic started by: Rotem K. on March 19, 2011, 01:20:39 PM

Title: Skinning Guide - Part 5 - Dependent Skins
Post by: Rotem K. on March 19, 2011, 01:20:39 PM
Explanation:
Dependent Skins allow your skin to inherit all color, image and settings(?) elements from a parent skin.

Okay.. but what is it good for?
- If you're using a skin you really like but wantt just a small thing changed, using a dependency is the way to go.
- Dependent skins enjoys updates done in the parent skin.

Syntax:
   <?xml version="1.0" encoding="utf-8"?>
   <root dependsOn="PARENT SKIN NAME">
   <colours id="Default">
       ELEMENTS GOS HERE
   </colours>
   <images id="Default">
       ELEMENTS GOS HERE
   </images>
   </root>


A Dependent Skin For Example:
(http://i.imgur.com/xPerks.jpg) (http://imgur.com/xPerk)
Blinghound's Pop Blue
depends on my Pop Pink
Skin File (http://www.mediafire.com/?3g5rdpeaokte1u2)
 
If you still have any questions about dependent skins, or skins in general, ask away, I'll try and do my best to help.
Title: Re: Skinning Guide - Part 5 - Dependent Skins
Post by: Greb on March 19, 2011, 02:49:53 PM
One small addition: in case of 'overwriting' an element that has properties, thos properties have to be in the dependant skin too, even if they don't change.

For example: imagine you want to 'overwrite' this element in the dependant skin:

<element id="Content[Artwork]" bg="X,X,X" fg="X,X,X" bdr="X,X,X" />

That case you should include those elements  in the depedant skin too, even if they share the same values in the dependant and the original skin:

<element id="Content[Artwork].HeaderControl.Default" bg="X,X,X" fg="X,X,X" bdr="X,X,X"/>
<element id="Content[Artwork].Body.Default" bg="X,X,X" fg="X,X,X" bdr="X,X,X" />

Until I realized that it gave me some problems!!!  ;D

Title: Re: Skinning Guide - Part 5 - Dependent Skins
Post by: Steven on March 19, 2011, 03:02:45 PM
they should be the only two elements that cause problems because of the way they have been implemented. When i get some time i'll see if i can figure out a solution
Title: Re: Skinning Guide - Part 5 - Dependent Skins
Post by: Greb on March 19, 2011, 03:09:04 PM
Well, once you know it's not a big problem, since you only have to copy those two lines from the original skin to the dependant one.

Another issue: I was not able to overwrite the element 'Panel.ChildBody.Default' using dependant skins.
Title: Re: Skinning Guide - Part 5 - Dependent Skins
Post by: VX on March 19, 2011, 09:13:18 PM
Greb, you probably found the reason why I didn't succeed in creating iBee Dark dependent skin.
I used free Win Merge tool (http://winmerge.org/) to compare the two iBee skin files.
Then I removed all identical lines form the dependent skin file leaving the different ones and retaining the syntax presented by Rotem above. A a result I got dependent skin but with the bug presented below:

(http://i.imgur.com/20GeB.png) (http://imgur.com/20GeB)

I know that creation of dependent skins is not as easy as customization of certain colour elements with slider and colour palette as one can do with AIMP or Quintessential Media Player (see the screenshot below), but I did exactly what was described in the forum and got the above error. So I guess there is a bug.

(http://i.imgur.com/L29I5.png) (http://imgur.com/L29I5)

Steven, is it possible to use a dependent skin with different root skins so that every time a dependent skin is selected, the pop up menu appears: 'Choose the root skin to apply the changes'  ???

To use a dependent skin with different root skin I follow Greb's tip:
Quote
A very easy way: I renamed the NEW NAME as Basic. So it's only needed to name the folder as the original skin and to place the skin inside with the name 'Basic.xml'. It works automatically.
That would be the case with Spotify Black, for example: http://www.mediafire.com/?99nn26v2r294he8
But you can use the skin you want as long as the folder has the name of the skin and the skin is named as 'Basic'

I like the solution, but I hope there is another way to achieve this that won't duplicate dependent skin files in different folders to use with different root skins. Thanks for considering  :)


Title: Re: Skinning Guide - Part 5 - Dependent Skins
Post by: Sarge on March 20, 2011, 12:00:17 AM

I know that creation of dependent skins is not as easy as customization of certain colour elements with slider and colour palette as one can do with AIMP or Quintessential Media Player (see the screenshot below),

I hope MB never goes the route of that boxy cookie cutter lookin soul less program QMP  (my opinion)
Title: Re: Skinning Guide - Part 5 - Dependent Skins
Post by: Roadrunner on April 04, 2011, 10:41:16 AM
Is it possible to refer to a skin out of another subfolder?
Title: Re: Skinning Guide - Part 5 - Dependent Skins
Post by: Rotem K. on April 04, 2011, 10:47:51 AM
Works for me.

Wasn't sure it can work so I just tried it on Pop Blue, entering the entire path after the "dependsOn".
<root dependsOn="C:\Program Files\MusicBee\Skins\New folder\Pop Pink">
Title: Re: Skinning Guide - Part 5 - Dependent Skins
Post by: Steven on April 04, 2011, 11:00:51 AM
anyone doing skins for a public release skin should not put any path dependencies in.
the way MB works is it will first try and open the dependent skin in the folder of the parent skin and if not found then the looks in the root skin folder
Title: Re: Skinning Guide - Part 5 - Dependent Skins
Post by: Roadrunner on April 04, 2011, 05:36:08 PM
Thank you both for the fast answers!

@RotemK: I'm going to try this, thx!

@Steven: My thought was to make a "MyFavorits" folder with very small improvements for my favorit exisiting skins, not worth to spread it all over the world. So, I wouldn't risk to loose my changes by replacing all other subfolders and I hadn't to copy and update the original file too.
Even more: This way I could have a dependent skin with no changes to the original skins, just to keep my favorits all together ::)
Title: Re: Skinning Guide - Part 5 - Dependent Skins
Post by: Roadrunner on April 05, 2011, 06:20:11 PM
<root dependsOn="C:\Program Files\MusicBee\Skins\New folder\Pop Pink">

I've just figured out that relative paths are possible too, your example could be shortened to:

   <root dependsOn="New folder\Pop Pink">

But as far as I understand Steven, it was not the intention, that this works, so use it at your own risk and not for public skins...