Author Topic: tool: excel sheet to compare all elements of two different xml skin files  (Read 37071 times)

jistme

  • Guest
With so many different skin xml's floating around, it is hard to know if the skin you are working on is maybe missing elements you'd like to be aware of.

My own active skinning days are probably mostly over, but this part has often been a big and very time consuming challenge for me.
To help with that I created an excel sheet with some macros in it, and now streamlined it for some possible public use.

You can paste the (messy) content of two different xml's in it, and get a cleaned-up result with a good overview and comparison of possible missing elements, duplicate entries, and even differences in rgb coloring attributes.
A 'master sheet' is pre-loaded. You can match your xml against that one.
You could also copy resulting cleaned-up output to e.g. notepad++ and use it's features like it's 'compare' plugin.

This all should be helpful to get a fast and manageable way to view and handle possible problems and missing elements.


Prerequisites are some minor Excel knowledge and the use of notepad++ and probably it's 'compare' function.
The work sheet contains a tab with a quick guide.

It was meant for personal use, so it might still be a little buggy and unsophisticated, but I thought to share it since it might be helpful to others too.
Testers welcome, suggestions for improvement welcome, copy the good bits and create and publish your own improved version is also fine by me.

As I mentioned, there is a 'master sheet' pre-loaded in the sheet. It's objective is to be complete, correct and up-to-date. (it probably isn't though)
Feel free to respond here if you find any errors or omissions in it.




edit:
project is closed
too much effort to maintain
Last Edit: February 03, 2016, 05:46:21 PM by hiccup

redwing

  • Guest
Thanks for sharing this, jistme!

Not sure what I'm doing wrong, but the macro key ctrl+R doesn't work properly for me. It leaves only a few lines at the beginning legible. BTW you might want to change the macro key ctrl+C to another since most people would use that to copy things.

jistme

  • Guest
Thnx for the feedback redwing.
I'll change the ctr-c.
Can you tell me which xml's you used that fail?
 


redwing

  • Guest
Now it's working great. Thanks!

- FYI, the followings are some elements reported as missing from "master" tab:

<element id="Controls.ScrollBarThumb.Highlight"
<element id="NowPlayingPanel.SpectrumVisualiser"
<element id="PlayerFlat.MetroButton.Default"
<element id="PlayerFlat.MetroButton.Highlight"
<element id="PlayingTrack"
<element id="PlayingTrackInTab"
<element id="ShowNowPlayingTabsBorder"
<element id="WaitIndicator"

- There are lots of "#VALUE!" lines in B & E column under "Clean" tab to be copied. I'd like to see the macro cleans them up too.

- My biggest wish would be doing the same job only with notepad++ (you might get help from boroda74 or other members for regular expressions).

But still this is doing a great job! Never knew I have missed so many elements! Lots of things to experiment for now. Thanks again!

jistme

  • Guest
- FYI, the followings are some elements reported as missing from "master" tab:

<element id="Controls.ScrollBarThumb.Highlight"
<element id="NowPlayingPanel.SpectrumVisualiser"
<element id="PlayerFlat.MetroButton.Default"
<element id="PlayerFlat.MetroButton.Highlight"
<element id="PlayingTrack"
<element id="PlayingTrackInTab"
<element id="ShowNowPlayingTabsBorder"
<element id="WaitIndicator"

I'll add them, do you happen to know the allowed parameters for those?
such as fg, bg, yes, no etc...
The last four are image elements I guess?

redwing

  • Guest
ShowNowPlayingTabsBorder is a settings element for True or False.
Use this wiki table for attributes (Ctrl-F to find elements in the table):

http://musicbee.wikia.com/wiki/Skinning_Elements

redwing

  • Guest
- What about the "defunct" elements you reported before? Are they included in master tab?

- And here are two more from comparing with dummy skin:

<element id="AutoHideMenu"
<element id="InputScrollBarMargin"
Last Edit: September 15, 2013, 04:22:56 PM by redwing

jistme

  • Guest
Let's take it one step at a time ;-)

What you see at this moment in the xlsm as 'master' is just my Sophisticated Bee skin xml.
I used that one since it's one of the more complete skins I created. (and my favorite ;-)

I believe I have the comment 'defunct?' trailing a few elements there.
Also I use rgb value "0,255,0" for all parameter positions I believe not to be functional (anymore?).

I will remove base64 code etc from it, and transform it in some sort of master xml other skinners then can then shoot at, and help to get as complete and correct as possible?

I agree it would be even better to have a tool like this in notepad++, but I wouldn't know where to start, and as I said, my most active skinning days are pretty much over. So learning such new tricks and investing lots of time in that is not something I'm looking out for.

jistme

  • Guest
Use this wiki table for attributes (Ctrl-F to find elements in the table):
http://musicbee.wikia.com/wiki/Skinning_Elements

Quite some content on that page came from me ;-)
The new elements you mention I believe are not there yet?

redwing

  • Guest
I will remove base64 code etc from it, and transform it in some sort of master xml other skinners then can then shoot at, and help to get as complete and correct as possible?

Great idea! It should be "master."

I believe I have the comment 'defunct?' trailing a few elements there.
Also I use rgb value "0,255,0" for all parameter positions I believe not to be functional (anymore?).

So currently there are no attributes copied to notepad++ and users have to go back to master tab to figure out what attributes are supported and they are functional or not for each element, right?

I agree it would be even better to have a tool like this in notepad++, but I wouldn't know where to start, and as I said, my most active skinning days are pretty much over. So learning such new tricks and investing lots of time in that is not something I'm looking out for.

That was just my wish. Of course you're not obligated to. If you take some break from skinning, you might feel doing it again later.

Use this wiki table for attributes (Ctrl-F to find elements in the table):
http://musicbee.wikia.com/wiki/Skinning_Elements

Quite some content on that page came from me ;-)
The new elements you mention I believe are not there yet?

Didn't know that :D

jistme

  • Guest
So currently there are no attributes copied to notepad++ and users have to go back to master tab to figure out what attributes are supported and they are functional or not for each element, right?

Yep, I really intended it as just a helping tool to check completeness. Not an attempt to automate creating 'perfect' xml's or something.
Everybody seems to have it's own preference or habit in how their xml is build.
Some people added new elements every time they came out at the bottom of the file, others made categories, maybe some try doing it as alphabetically as possible, etc. etc.
Maybe some useful standard will come out of all this. We'll see.

redwing

  • Guest
It's already good enough. Thanks again.

BTW about the order of elements, you might want to show a standard order in master tab since as you know wrong order could make some elements dysfunctional.

jistme

  • Guest
BTW about the order of elements, you might want to show a standard order in master tab since as you know wrong order could make some elements dysfunctional.

I'll try to keep the order as much as it is now. It seems to be working alright in A Sophisticated Bee.
Better suggestions will be welcome of course.
Also, the tab 'master' is not being erased by running the 'clean-up' macro. So anybody can store their own 'master' in that tab sheet.

redwing

  • Guest
anybody can store their own 'master' in that tab sheet.

That's a good idea. Yet I'd prefer to have a "custom" tab along with your "un-erasable" master tab to be able to check. Then another macro key would be needed to copy the content of the new tab to A column of input tab.