aboutsummaryrefslogtreecommitdiff
path: root/Src/resources/data/freeform
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/resources/data/freeform
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/resources/data/freeform')
-rw-r--r--Src/resources/data/freeform/xml/about/BarcodeFont.ttfbin0 -> 19052 bytes
-rw-r--r--Src/resources/data/freeform/xml/about/BarcodeFont.txt26
-rw-r--r--Src/resources/data/freeform/xml/about/about.m146
-rw-r--r--Src/resources/data/freeform/xml/about/about.makibin0 -> 5054 bytes
-rw-r--r--Src/resources/data/freeform/xml/about/about.xml54
-rw-r--r--Src/resources/data/freeform/xml/about/title.pngbin0 -> 2768 bytes
-rw-r--r--Src/resources/data/freeform/xml/about/wasabi.pngbin0 -> 5656 bytes
-rw-r--r--Src/resources/data/freeform/xml/checkbox/checkbox.xml61
-rw-r--r--Src/resources/data/freeform/xml/combobox/combobox.xml43
-rw-r--r--Src/resources/data/freeform/xml/dropdownlist/dropdownlist.xml43
-rw-r--r--Src/resources/data/freeform/xml/guiobjects.xml6
-rw-r--r--Src/resources/data/freeform/xml/historyeditbox/historyeditbox.m33
-rw-r--r--Src/resources/data/freeform/xml/historyeditbox/historyeditbox.makibin0 -> 1633 bytes
-rw-r--r--Src/resources/data/freeform/xml/historyeditbox/historyeditbox.xml59
-rw-r--r--Src/resources/data/freeform/xml/menubutton/menubutton.m21
-rw-r--r--Src/resources/data/freeform/xml/menubutton/menubutton.makibin0 -> 1102 bytes
-rw-r--r--Src/resources/data/freeform/xml/menubutton/menubutton.xml26
-rw-r--r--Src/resources/data/freeform/xml/msgbox/msgbox.xml19
-rw-r--r--Src/resources/data/freeform/xml/pathpicker/pathpicker.xml27
-rw-r--r--Src/resources/data/freeform/xml/popupmenu/popupitem.m110
-rw-r--r--Src/resources/data/freeform/xml/popupmenu/popupitem.makibin0 -> 2690 bytes
-rw-r--r--Src/resources/data/freeform/xml/popupmenu/popupmenu.xml39
-rw-r--r--Src/resources/data/freeform/xml/statusbar/statusbar.xml25
-rw-r--r--Src/resources/data/freeform/xml/tabsheet/buttons.pngbin0 -> 293 bytes
-rw-r--r--Src/resources/data/freeform/xml/tabsheet/tabsheet.xml133
-rw-r--r--Src/resources/data/freeform/xml/titlebox/titlebox.xml134
-rw-r--r--Src/resources/data/freeform/xml/tooltips/tooltips-elements.pngbin0 -> 142 bytes
-rw-r--r--Src/resources/data/freeform/xml/tooltips/tooltips-elements.xml12
-rw-r--r--Src/resources/data/freeform/xml/tooltips/tooltips.m34
-rw-r--r--Src/resources/data/freeform/xml/tooltips/tooltips.makibin0 -> 3142 bytes
-rw-r--r--Src/resources/data/freeform/xml/tooltips/tooltips.xml35
-rw-r--r--Src/resources/data/freeform/xml/wasabi/Scripts/debug.sym74
-rw-r--r--Src/resources/data/freeform/xml/wasabi/Scripts/standardframe.m68
-rw-r--r--Src/resources/data/freeform/xml/wasabi/Scripts/standardframe.makibin0 -> 3112 bytes
-rw-r--r--Src/resources/data/freeform/xml/wasabi/Scripts/titlebar.m96
-rw-r--r--Src/resources/data/freeform/xml/wasabi/Scripts/titlebar.makibin0 -> 3012 bytes
-rw-r--r--Src/resources/data/freeform/xml/wasabi/fonts/button-font-normal.pngbin0 -> 543 bytes
-rw-r--r--Src/resources/data/freeform/xml/wasabi/fonts/button-font-small.pngbin0 -> 522 bytes
-rw-r--r--Src/resources/data/freeform/xml/wasabi/fonts/default-font.pngbin0 -> 517 bytes
-rw-r--r--Src/resources/data/freeform/xml/wasabi/fonts/titlebar-font.pngbin0 -> 6867 bytes
-rw-r--r--Src/resources/data/freeform/xml/wasabi/garbage/seekbar-button-pressed.pngbin0 -> 159 bytes
-rw-r--r--Src/resources/data/freeform/xml/wasabi/garbage/seekbar-button.pngbin0 -> 157 bytes
-rw-r--r--Src/resources/data/freeform/xml/wasabi/garbage/seekbar-left.pngbin0 -> 110 bytes
-rw-r--r--Src/resources/data/freeform/xml/wasabi/garbage/seekbar-middle.pngbin0 -> 109 bytes
-rw-r--r--Src/resources/data/freeform/xml/wasabi/garbage/seekbar-right.pngbin0 -> 110 bytes
-rw-r--r--Src/resources/data/freeform/xml/wasabi/garbage/text_bg.pngbin0 -> 202 bytes
-rw-r--r--Src/resources/data/freeform/xml/wasabi/menu/background.pngbin0 -> 313 bytes
-rw-r--r--Src/resources/data/freeform/xml/wasabi/menu/selbar.pngbin0 -> 115 bytes
-rw-r--r--Src/resources/data/freeform/xml/wasabi/menu/window-elements.pngbin0 -> 339 bytes
-rw-r--r--Src/resources/data/freeform/xml/wasabi/wasabi.xml19
-rw-r--r--Src/resources/data/freeform/xml/wasabi/window/background.pngbin0 -> 47181 bytes
-rw-r--r--Src/resources/data/freeform/xml/wasabi/window/error.pngbin0 -> 130 bytes
-rw-r--r--Src/resources/data/freeform/xml/wasabi/window/framewnd-windowshade.pngbin0 -> 93 bytes
-rw-r--r--Src/resources/data/freeform/xml/wasabi/window/scrollgrips.pngbin0 -> 120 bytes
-rw-r--r--Src/resources/data/freeform/xml/wasabi/window/transparent.pngbin0 -> 91 bytes
-rw-r--r--Src/resources/data/freeform/xml/wasabi/window/tree-sort-icon.pngbin0 -> 152 bytes
-rw-r--r--Src/resources/data/freeform/xml/wasabi/window/window-elements.pngbin0 -> 14632 bytes
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/components.xml103
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/garbage-elements.xml16
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/groups/buttonbar.xml45
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/groups/objectframe.xml17
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/groups/panel.xml16
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/groups/window-embedded.xml17
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/groups/window.xml9
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/old.system-colors.xml61
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/old.system-elements.xml364
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/system-colors.xml87
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/system-element-aliases.xml226
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/system-elements.xml292
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/system-groups.xml100
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/xui/browser/IconTextButton.m141
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/xui/browser/IconTextButton.makibin0 -> 5854 bytes
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/xui/browser/browser.m2077
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/xui/browser/browser.makibin0 -> 45959 bytes
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/xui/browser/browser.pngbin0 -> 14659 bytes
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/xui/browser/browser.xml349
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/xui/browser/browser2.pngbin0 -> 7532 bytes
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/xui/browser/buttonpos.m236
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/xui/browser/gen_pageguids.m106
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/xui/browser/icontextbutton.xml12
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/xui/browser/init_browser.m133
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/xui/browser/stringtable.xml31
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/xui/button/button.xml36
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/xui/editbox/editbox.xml43
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/xui/slider/slider.xml80
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/xui/standardframe/standardframe-elements.xml33
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/xui/standardframe/standardframe.xml335
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/xui/text/text.xml26
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/xui/titlebar/titlebar.xml108
-rw-r--r--Src/resources/data/freeform/xml/wasabi/xml/xui/xuiobjects.xml7
-rw-r--r--Src/resources/data/freeform/xml/winamp/cover/cover.xml8
-rw-r--r--Src/resources/data/freeform/xml/winamp/cover/notfound.pngbin0 -> 4509 bytes
-rw-r--r--Src/resources/data/freeform/xml/winamp/cover/notfound60.pngbin0 -> 2028 bytes
-rw-r--r--Src/resources/data/freeform/xml/winamp/cover/notfound90.pngbin0 -> 3374 bytes
-rw-r--r--Src/resources/data/freeform/xml/winamp/thinger/library-hilited.pngbin0 -> 1307 bytes
-rw-r--r--Src/resources/data/freeform/xml/winamp/thinger/library-selected.pngbin0 -> 1306 bytes
-rw-r--r--Src/resources/data/freeform/xml/winamp/thinger/library-unselected.pngbin0 -> 1304 bytes
-rw-r--r--Src/resources/data/freeform/xml/winamp/thinger/pledit-hover.pngbin0 -> 828 bytes
-rw-r--r--Src/resources/data/freeform/xml/winamp/thinger/pledit-selected.pngbin0 -> 807 bytes
-rw-r--r--Src/resources/data/freeform/xml/winamp/thinger/pledit-unselected.pngbin0 -> 826 bytes
-rw-r--r--Src/resources/data/freeform/xml/winamp/thinger/thinger.xml21
-rw-r--r--Src/resources/data/freeform/xml/winamp/thinger/video-hilited.pngbin0 -> 1441 bytes
-rw-r--r--Src/resources/data/freeform/xml/winamp/thinger/video-selected.pngbin0 -> 1435 bytes
-rw-r--r--Src/resources/data/freeform/xml/winamp/thinger/video-unselected.pngbin0 -> 1439 bytes
-rw-r--r--Src/resources/data/freeform/xml/winamp/thinger/vis-hilited.pngbin0 -> 3241 bytes
-rw-r--r--Src/resources/data/freeform/xml/winamp/thinger/vis-selected.pngbin0 -> 3509 bytes
-rw-r--r--Src/resources/data/freeform/xml/winamp/thinger/vis-unselected.pngbin0 -> 3037 bytes
107 files changed, 6478 insertions, 0 deletions
diff --git a/Src/resources/data/freeform/xml/about/BarcodeFont.ttf b/Src/resources/data/freeform/xml/about/BarcodeFont.ttf
new file mode 100644
index 00000000..43ce1e4a
--- /dev/null
+++ b/Src/resources/data/freeform/xml/about/BarcodeFont.ttf
Binary files differ
diff --git a/Src/resources/data/freeform/xml/about/BarcodeFont.txt b/Src/resources/data/freeform/xml/about/BarcodeFont.txt
new file mode 100644
index 00000000..9edd3823
--- /dev/null
+++ b/Src/resources/data/freeform/xml/about/BarcodeFont.txt
@@ -0,0 +1,26 @@
+Hallo, hier ist mal wieder eine dieser unsaeglichen Liesmich-Dateien.
+Wenn Dir aber der Font gefällt, habe ich eine kleine Bitte:
+Falls Du ihn auf Deiner Web-Site benutzt, setze doch bitte einen Link zu meiner Seite
+www.anke-art.de
+Auf meiner Homepage findest Du auf der linken Seite oben mein Logo, das Du gerne als
+Linksymbol herunterkopieren kannst.
+Wenn Du keinen Link setzen möchtest, Du aber trotzdem meine Schrift(en) verwendest,
+bitte ich um einen Verrechnungsscheck mit dem Betrag, der Dir die Schrift wert ist, an:
+Anke Arnold
+Fabrikstrasse 62
+73240 Wendlingen
+Deutschland
+
+Vielen Dank!
+___________
+Hi! This is another annoying readme-file. But if you like my font, I'm asking you to
+put a link to my page www.anke-art.de on YOUR page. On my homepage you can find a little
+logo in the upper left corner which you can copy as a link.
+If you don't want to link to my page, but still want to use my font(s) nevertheless,
+please send any amount in US-Dollars (which you think the font is worth) to:
+Anke Arnold
+Fabrikstrasse 62
+73240 Wendlingen
+Germany
+
+Thank you sooo much! \ No newline at end of file
diff --git a/Src/resources/data/freeform/xml/about/about.m b/Src/resources/data/freeform/xml/about/about.m
new file mode 100644
index 00000000..bd25dfc0
--- /dev/null
+++ b/Src/resources/data/freeform/xml/about/about.m
@@ -0,0 +1,146 @@
+#include <lib/std.mi>
+
+Global Text section2;
+Global Text section1;
+Global Text codername2;
+Global Text codername1;
+Global Timer Timer6;
+Global Int count = 0;
+Global Int Int8;
+Global Int Int9;
+Global Int Int10;
+Global Int Int11;
+Global Layer llamaanim;
+Global Double smidge;
+
+System.onScriptLoaded()
+{
+ Group sg = System.getScriptGroup();
+ llamaanim = sg.findObject(( "logo"));
+ llamaanim.fx_setBgFx(0);
+ llamaanim.fx_setWrap(1);
+ llamaanim.fx_setBilinear(1);
+ llamaanim.fx_setAlphaMode(0);
+ llamaanim.fx_setGridSize(1, 1);
+ llamaanim.fx_setRect(0);
+ llamaanim.fx_setClear(1);
+ llamaanim.fx_setLocalized(1);
+ llamaanim.fx_setRealtime(1);
+ llamaanim.fx_setSpeed(50);
+ llamaanim.fx_setEnabled(1);
+ section2 = sg.findObject(( "txth1"));
+ section1 = sg.findObject(( "txth2"));
+ codername2 = sg.findObject(( "txtm1"));
+ codername1 = sg.findObject(( "txtm2"));
+ Int9 = section1.getGuiX();
+ Int8 = section1.getGuiW();
+ Int10 = section1.getGuiW();
+ Int11 = section1.getGuiH();
+ Timer6 = ( new Timer);
+ Timer6.setDelay(3000);
+ Timer6.start();
+}
+
+System.onScriptUnloading()
+{
+ delete Timer6;
+}
+
+Timer6.onTimer()
+{
+ String section;
+ GuiObject GuiObject61;
+ GuiObject GuiObject59;
+ String codername;
+ GuiObject GuiObject60;
+ GuiObject GuiObject62;
+
+ if(( count == 0)) {
+ section1.setXmlParam(( "x"), System.integerToString(( - Int8)));
+ }
+ count ++;
+ if(( count == 1)) {
+ section = ( "Main Development");
+ codername = ( "Ben Allison");
+ }
+ if(( count == 2)) {
+ section = ( "Development");
+ codername = ( "Martin Poehlmann");
+ }
+ if(( count == 3)) {
+ section = ( "Product Management");
+ codername = ( "Matt Callaway");
+ }
+ if(( count == 4)) {
+ section = ( "Engineering Management");
+ codername = ( "Ben London");
+ }
+ if(( count == 5)) {
+ section = ( "Bento Skin");
+ codername = ( "Martin Poehlmann, Taber Buhl");
+ }
+ if(( count == 6)) {
+ section = ( "Modern Skin");
+ codername = ( "Sven Kistner");
+ }
+ if(( count == 7)) {
+ section = ( "Documentation");
+ codername = ( "Ghislain Lacroix");
+ }
+ if(( count == 8)) {
+ section = ( "Former Architecture Development");
+ codername = ( "B Underwood, F Gastellu");
+ }
+ if(( count == 9)) {
+ section = ( "Former Development");
+ codername = ( "C Thibault, J Frankel, M Gerard");
+ }
+ if(( count == 10)) {
+ count = 0;
+ section = ( "Powered by");
+ codername = ( "Nullsoft Wasabi");
+ }
+ GuiObject59 = Null;
+ GuiObject60 = Null;
+ GuiObject61 = Null;
+ GuiObject62 = Null;
+
+ if(( System.frac(( count / 2)) != 0)) {
+ GuiObject59 = section2;
+ GuiObject60 = section1;
+ GuiObject61 = codername2;
+ GuiObject62 = codername1;
+ section1.setText(section);
+ codername1.setText(codername);
+ } else {
+ GuiObject59 = section1;
+ GuiObject60 = section2;
+ GuiObject61 = codername1;
+ GuiObject62 = codername2;
+ section2.setText(section);
+ codername2.setText(codername);
+ }
+
+ GuiObject60.setTargetX(Int9);
+ GuiObject59.setTargetX(( - Int8));
+ GuiObject62.setTargetA(255);
+ GuiObject61.setTargetA(0);
+ GuiObject62.setTargetSpeed(2);
+ GuiObject61.setTargetSpeed(2);
+ GuiObject60.setTargetSpeed(2);
+ GuiObject59.setTargetSpeed(2);
+ GuiObject62.gotoTarget();
+ GuiObject61.gotoTarget();
+ GuiObject60.gotoTarget();
+ GuiObject59.gotoTarget();
+}
+
+llamaanim.fx_onGetPixelR(double r, double d, double x, double y)
+{
+ return ( r + ( System.cos(smidge) * ( 0.5)));
+}
+
+llamaanim.fx_onFrame()
+{
+ smidge = ( smidge + ( 0.100000001490116));
+} \ No newline at end of file
diff --git a/Src/resources/data/freeform/xml/about/about.maki b/Src/resources/data/freeform/xml/about/about.maki
new file mode 100644
index 00000000..39045f23
--- /dev/null
+++ b/Src/resources/data/freeform/xml/about/about.maki
Binary files differ
diff --git a/Src/resources/data/freeform/xml/about/about.xml b/Src/resources/data/freeform/xml/about/about.xml
new file mode 100644
index 00000000..c8f762b0
--- /dev/null
+++ b/Src/resources/data/freeform/xml/about/about.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<WinampAbstractionLayer version="1.3">
+ <elements>
+ <bitmap id="wasabi.gen_ff.about.wasabilogo" file="wasabi.png"/>
+ <bitmap id="wasabi.gen_ff.about.title" file="title.png"/>
+ <truetypefont id="wasabi.gen_ff.about.font" file="BarcodeFont.ttf" allowmapping="0"/>
+ </elements>
+
+ <groupdef id="wasabi.gen_ff.about" w="320" h="200" rectrgn="1">
+ <rect fitparent="1" color="255,255,255" filled="1" />
+ <layer
+ id="logo"
+ image="wasabi.gen_ff.about.wasabilogo"
+ x="-106" relatx="1" y="-10"
+ />
+ <layer
+ id="title"
+ image="wasabi.gen_ff.about.title"
+ x="16" y="-95" relaty="1"
+ />
+ <text
+ id="txth1"
+ x="22" y="10" italic="1" w="260" h="16"
+ default="Powered by :"
+ font="Arial" fontsize="18" color="0,0,0" alpha="255"
+ />
+ <text
+ id="txth2"
+ x="22" y="10" italic="1" w="260" h="16"
+ default=""
+ font="Arial" fontsize="18" color="0,0,0" alpha="255"
+ />
+ <text
+ id="txtm1"
+ x="7" y="30" w="-120" relatw="1" align="center"
+ default="Nullsoft Wasabi"
+ font="wasabi.gen_ff.about.font" fontsize="72" color="0,0,0" alpha="255"
+ />
+ <text
+ id="txtm2"
+ x="7" y="30" w="-120" relatw="1" align="center"
+ default="" alpha="0"
+ font="wasabi.gen_ff.about.font" fontsize="72" color="0,0,0"
+ />
+ <text
+ id="version"
+ x="16" y="-34" w="0" relatw="1" relaty="1"
+ default=""
+ font="Arial" fontsize="16" color="0,0,0" alpha="255"
+ />
+ <guiobject fitparent="1" />
+ <script file="about.maki"/>
+ </groupdef>
+</WinampAbstractionLayer> \ No newline at end of file
diff --git a/Src/resources/data/freeform/xml/about/title.png b/Src/resources/data/freeform/xml/about/title.png
new file mode 100644
index 00000000..88d05732
--- /dev/null
+++ b/Src/resources/data/freeform/xml/about/title.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/about/wasabi.png b/Src/resources/data/freeform/xml/about/wasabi.png
new file mode 100644
index 00000000..3e73b301
--- /dev/null
+++ b/Src/resources/data/freeform/xml/about/wasabi.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/checkbox/checkbox.xml b/Src/resources/data/freeform/xml/checkbox/checkbox.xml
new file mode 100644
index 00000000..6e808e2a
--- /dev/null
+++ b/Src/resources/data/freeform/xml/checkbox/checkbox.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<WinampAbstractionLayer version="0.7">
+
+<groupdef id="wasabi.checkbox.group" h="18" autowidthsource="checkbox.text">
+
+ <!-- DO NOT CHANGE THESE IDS!! -->
+ <group
+ id="wasabi.objectframe.group"
+ x="2" y="4"
+ w="11" h="11"
+ />
+ <ToggleButton
+ id="checkbox.toggle"
+ x="4" y="6"
+ image="wasabi.button.checkbox"
+ activeImage="wasabi.button.checkbox.pressed"
+ rectrgn="1"
+ />
+
+ <Wasabi:Text
+ id="checkbox.text"
+ default="ERROR"
+ x="14" y="2"
+ w="-14" h="14"
+ relatw="1" wrap="1"
+ />
+
+</groupdef>
+
+<groupdef id="wasabi.radiobutton.group" h="18" autowidthsource="checkbox.text">
+
+ <!-- DO NOT CHANGE THESE IDS!! -->
+ <layer
+ id="radio.background"
+ image="wasabi.button.radio.background"
+ x="2" y="4"
+ />
+ <layer
+ id="radio.background.display"
+ image="wasabi.button.radio.background.display"
+ x="3" y="5"
+ />
+ <togglebutton
+ id="checkbox.toggle"
+ x="4" y="6"
+ image="wasabi.button.radio"
+ activeImage="wasabi.button.radio.pressed"
+ rectrgn="1"
+ />
+ <Wasabi:Text
+ id="checkbox.text"
+ default="ERROR"
+ x="14" y="2"
+ w="-14" h="14"
+ relatw="1" wrap="1"
+ />
+
+</groupdef>
+
+
+</WinampAbstractionLayer>
diff --git a/Src/resources/data/freeform/xml/combobox/combobox.xml b/Src/resources/data/freeform/xml/combobox/combobox.xml
new file mode 100644
index 00000000..35b4bd95
--- /dev/null
+++ b/Src/resources/data/freeform/xml/combobox/combobox.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<WinampAbstractionLayer version="0.7">
+
+<groupdef id="wasabi.combobox.main.group" inherit_group="wasabi.objectframe.group" embed_xui="combobox.edit">
+ <Edit
+ id="combobox.edit"
+ x="1" y="1"
+ w="-23" h="-2"
+ relatw="1" relath="1"
+ />
+ <Wasabi:button
+ id="combobox.button"
+ x="-18" y="1"
+ w="17" h="-2"
+ relatx="1" relath="1"
+ image="wasabi.button.label.arrow.down"
+ center_image="1"
+ />
+ <sendparams target="wasabi.button" group="combobox.button" wantfocus="0" />
+</groupdef>
+
+<groupdef id="wasabi.combobox.list.group" minimum_h="64" background="studio.BaseTexture">
+ <grid
+ id="combobox.grid"
+ x="0" y="0"
+ w="0" h="0"
+ relatw="1" relath="1"
+ topleft="wasabi.dropdownlist.list.top.left"
+ top="wasabi.dropdownlist.list.top"
+ topright="wasabi.dropdownlist.list.top.right"
+ left="wasabi.dropdownlist.list.left"
+ middle="wasabi.dropdownlist.list.center"
+ right="wasabi.dropdownlist.list.right"
+ bottomleft="wasabi.dropdownlist.list.bottom.left"
+ bottom="wasabi.dropdownlist.list.bottom"
+ bottomright="wasabi.dropdownlist.list.bottom.right"
+ sysregion="1"
+ />
+ <list id="combobox.list" x="2" y="2" w="-4" h="-4" relatw="1" relath="1" nocolheader="1"/>
+ <layer x="0" y="-2" relaty="1" w="0" relatw="1" h="2" resize="bottom" />
+</groupdef>
+
+</WinampAbstractionLayer>
diff --git a/Src/resources/data/freeform/xml/dropdownlist/dropdownlist.xml b/Src/resources/data/freeform/xml/dropdownlist/dropdownlist.xml
new file mode 100644
index 00000000..54ccb045
--- /dev/null
+++ b/Src/resources/data/freeform/xml/dropdownlist/dropdownlist.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<WinampAbstractionLayer version="0.7">
+
+<groupdef id="wasabi.dropdownlist.main.group" inherit_group="wasabi.objectframe.group">
+ <Wasabi:Text
+ id="dropdownlist.text"
+ x="3" y="3"
+ w="-23" h="-6"
+ relatw="1" relath="1"
+ />
+ <Wasabi:button
+ id="dropdownlist.button"
+ x="-18" y="1"
+ w="17" h="-2"
+ relatx="1" relath="1"
+ image="wasabi.button.label.arrow.down"
+ center_image="1" wantfocus="0"
+ />
+ <sendparams target="wasabi.button" group="combobox.button" wantfocus="0" />
+</groupdef>
+
+<groupdef id="wasabi.dropdownlist.list.group" minimum_h="64" background="studio.BaseTexture">
+ <grid
+ id="dropdownlist.grid"
+ x="0" y="0"
+ w="0" h="0"
+ relatw="1" relath="1"
+ topleft="wasabi.dropdownlist.list.top.left"
+ top="wasabi.dropdownlist.list.top"
+ topright="wasabi.dropdownlist.list.top.right"
+ left="wasabi.dropdownlist.list.left"
+ middle="wasabi.dropdownlist.list.center"
+ right="wasabi.dropdownlist.list.right"
+ bottomleft="wasabi.dropdownlist.list.bottom.left"
+ bottom="wasabi.dropdownlist.list.bottom"
+ bottomright="wasabi.dropdownlist.list.bottom.right"
+ sysregion="1"
+ />
+ <list id="dropdownlist.list" x="2" y="2" w="-4" h="-4" relatw="1" relath="1" nocolheader="1"/>
+ <layer x="0" y="-2" relaty="1" w="0" relatw="1" h="2" resize="bottom" />
+</groupdef>
+
+</WinampAbstractionLayer>
diff --git a/Src/resources/data/freeform/xml/guiobjects.xml b/Src/resources/data/freeform/xml/guiobjects.xml
new file mode 100644
index 00000000..0b395bd4
--- /dev/null
+++ b/Src/resources/data/freeform/xml/guiobjects.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<WinampAbstractionLayer version="0.7">
+
+<!-- blah -->
+
+</WinampAbstractionLayer>
diff --git a/Src/resources/data/freeform/xml/historyeditbox/historyeditbox.m b/Src/resources/data/freeform/xml/historyeditbox/historyeditbox.m
new file mode 100644
index 00000000..879376bb
--- /dev/null
+++ b/Src/resources/data/freeform/xml/historyeditbox/historyeditbox.m
@@ -0,0 +1,33 @@
+#include <lib/std.mi>
+
+Global Button back, forward;
+Global Edit editbox;
+Global GuiObject xui;
+
+System.onScriptLoaded() {
+ Group pgroup = getScriptGroup();
+ if (pgroup == NULL) return;
+
+ back = pgroup.findObject("historyeditbox.back.button");
+ forward = pgroup.findObject("historyeditbox.forward.button");
+ editbox = pgroup.findObject("historyeditbox.edit");
+ xui = pgroup.getParent();
+
+ if (xui != NULL) {
+ if (StringToInteger(xui.getXmlParam("navbuttons")) == 0) {
+ if (back != NULL) back.hide();
+ if (forward != NULL) forward.hide();
+ if (editbox != NULL) editbox.setXmlParam("w", "-17");
+ }
+ }
+}
+
+back.onLeftClick() {
+ if (xui != NULL)
+ xui.sendAction("back", "", 0, 0, 0, 0);
+}
+
+forward.onLeftClick() {
+ if (xui != NULL)
+ xui.sendAction("forward", "", 0, 0, 0, 0);
+} \ No newline at end of file
diff --git a/Src/resources/data/freeform/xml/historyeditbox/historyeditbox.maki b/Src/resources/data/freeform/xml/historyeditbox/historyeditbox.maki
new file mode 100644
index 00000000..103d2c20
--- /dev/null
+++ b/Src/resources/data/freeform/xml/historyeditbox/historyeditbox.maki
Binary files differ
diff --git a/Src/resources/data/freeform/xml/historyeditbox/historyeditbox.xml b/Src/resources/data/freeform/xml/historyeditbox/historyeditbox.xml
new file mode 100644
index 00000000..042f3dcb
--- /dev/null
+++ b/Src/resources/data/freeform/xml/historyeditbox/historyeditbox.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<WinampAbstractionLayer version="0.7">
+
+<groupdef id="wasabi.historyeditbox.main.group" inherit_group="wasabi.objectframe.group" embed_xui="historyeditbox.edit">
+ <Edit
+ id="historyeditbox.edit"
+ x="1" y="1"
+ w="-51" h="-2"
+ relatw="1" relath="1"
+ />
+ <Wasabi:button
+ id="historyeditbox.back.button"
+ x="-51" y="1"
+ w="17" h="-2"
+ relatx="1" relath="1"
+ image="wasabi.button.label.arrow.left"
+ center_image="1" wantfocus="0"
+ />
+ <Wasabi:button
+ id="historyeditbox.forward.button"
+ x="-35" y="1"
+ w="17" h="-2"
+ relatx="1" relath="1"
+ image="wasabi.button.label.arrow.right"
+ center_image="1" wantfocus="0"
+ />
+ <Wasabi:button
+ id="historyeditbox.button"
+ x="-18" y="1"
+ w="17" h="-2"
+ relatx="1" relath="1"
+ image="wasabi.button.label.arrow.down"
+ center_image="1" wantfocus="0"
+ />
+ <script id="historyeditbox.navbuttons" file="historyeditbox.maki" />
+</groupdef>
+
+<groupdef id="wasabi.historyeditbox.list.group" minimum_h="64" background="studio.BaseTexture">
+ <grid
+ id="historyeditbox.grid"
+ x="0" y="0"
+ w="0" h="0"
+ relatw="1" relath="1"
+ topleft="wasabi.dropdownlist.list.top.left"
+ top="wasabi.dropdownlist.list.top"
+ topright="wasabi.dropdownlist.list.top.right"
+ left="wasabi.dropdownlist.list.left"
+ middle="wasabi.dropdownlist.list.center"
+ right="wasabi.dropdownlist.list.right"
+ bottomleft="wasabi.dropdownlist.list.bottom.left"
+ bottom="wasabi.dropdownlist.list.bottom"
+ bottomright="wasabi.dropdownlist.list.bottom.right"
+ sysregion="1"
+ />
+ <list id="historyeditbox.list" x="2" y="2" w="-4" h="-4" relatw="1" relath="1" nocolheader="1"/>
+ <layer x="0" y="-2" relaty="1" w="0" relatw="1" h="2" resize="bottom" />
+</groupdef>
+
+</WinampAbstractionLayer>
diff --git a/Src/resources/data/freeform/xml/menubutton/menubutton.m b/Src/resources/data/freeform/xml/menubutton/menubutton.m
new file mode 100644
index 00000000..af2974a3
--- /dev/null
+++ b/Src/resources/data/freeform/xml/menubutton/menubutton.m
@@ -0,0 +1,21 @@
+#include <lib/std.mi>
+
+
+Global Group pg;
+
+System.onScriptLoaded() {
+ pg = getScriptGroup();
+}
+
+pg.onSetVisible(int v) {
+ GuiObject t = pg.findObject("wasabi.menubutton.text");
+ if (t != NULL) {
+ if (v) {
+ t.setXmlParam("offsetx", "1");
+ t.setXmlParam("offsety", "1");
+ } else {
+ t.setXmlParam("offsetx", "0");
+ t.setXmlParam("offsety", "0");
+ }
+ }
+}
diff --git a/Src/resources/data/freeform/xml/menubutton/menubutton.maki b/Src/resources/data/freeform/xml/menubutton/menubutton.maki
new file mode 100644
index 00000000..d200222d
--- /dev/null
+++ b/Src/resources/data/freeform/xml/menubutton/menubutton.maki
Binary files differ
diff --git a/Src/resources/data/freeform/xml/menubutton/menubutton.xml b/Src/resources/data/freeform/xml/menubutton/menubutton.xml
new file mode 100644
index 00000000..3d359e66
--- /dev/null
+++ b/Src/resources/data/freeform/xml/menubutton/menubutton.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<WinampAbstractionLayer version="0.7">
+
+<groupdef id="wasabi.menubutton.down" inherit_group="wasabi.panel">
+ <script id="menubutton" file="menubutton.maki" />
+</groupdef>
+
+<groupdef id="wasabi.menubutton.group" >
+ <group
+ id="wasabi.menubutton.down"
+ x="0" y="0"
+ w="0" h="0"
+ relatw="1" relath="1"
+ visible="0"
+ />
+ <Wasabi:Text
+ id="wasabi.menubutton.text" color="white"
+ x="3" y="3"
+ w="-3" h="-6"
+ relatw="1" relath="1"
+ shadowx="1" shadowy="1" shadowcolor="black"
+ />
+ <MenuSurface x="0" y="0" w="0" h="0" relatw="1" relath="1" />
+</groupdef>
+
+</WinampAbstractionLayer>
diff --git a/Src/resources/data/freeform/xml/msgbox/msgbox.xml b/Src/resources/data/freeform/xml/msgbox/msgbox.xml
new file mode 100644
index 00000000..13c0095f
--- /dev/null
+++ b/Src/resources/data/freeform/xml/msgbox/msgbox.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<WinampAbstractionLayer version="0.7">
+
+<groupdef id="msgbox.custom.group">
+
+ <group id="msgbox.text.group" instanceid="text" x="0" y="0" w="0" relatw="1" h="-48" relath="1" />
+
+</groupdef>
+
+
+<groupdef id="msgbox.text.group">
+
+ <Wasabi:Text id="msgbox.text" fontsize="+1" x="12" y="12" w="-24" relatw="1" h="-24" relath="1" />
+
+</groupdef>
+
+
+
+</WinampAbstractionLayer>
diff --git a/Src/resources/data/freeform/xml/pathpicker/pathpicker.xml b/Src/resources/data/freeform/xml/pathpicker/pathpicker.xml
new file mode 100644
index 00000000..383e44f0
--- /dev/null
+++ b/Src/resources/data/freeform/xml/pathpicker/pathpicker.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<WinampAbstractionLayer version="0.7">
+
+<groupdef id="wasabi.pathpicker.main.group" >
+ <group
+ id="wasabi.objectframe.group"
+ x="0" y="0"
+ w="0" h="0"
+ relatw="1" relath="1"
+ />
+ <Wasabi:Text
+ id="pathpicker.text"
+ x="3" y="3"
+ w="-23" h="-6"
+ relatw="1" relath="1"
+ />
+ <Wasabi:Button
+ id="pathpicker.button"
+ x="-18" y="1"
+ w="17" h="-2"
+ relatx="1" relath="1"
+ image="wasabi.button.label.ellipses"
+ center_image="1"
+ />
+</groupdef>
+
+</WinampAbstractionLayer>
diff --git a/Src/resources/data/freeform/xml/popupmenu/popupitem.m b/Src/resources/data/freeform/xml/popupmenu/popupitem.m
new file mode 100644
index 00000000..d64f42aa
--- /dev/null
+++ b/Src/resources/data/freeform/xml/popupmenu/popupitem.m
@@ -0,0 +1,110 @@
+#include <lib/std.mi>
+
+#define MARGIN 2
+#define MARGIN_PRE 2
+#define MARGIN_POST 6
+
+#define CHECKMARK_WIDTH 10
+#define ARROW_WIDTH 10
+
+Function setArrow(int want);
+Function setCheckmark(int want);
+Function updatePos();
+
+Global Group mgrp;
+Global GuiObject background;
+Class GuiObject ItemSwitcher;
+Global int id;
+Global int want_checkmark;
+Global int want_arrow;
+
+Global ItemSwitcher a, b, c, d;
+Global GuiObject _a, _b, _c;
+
+System.onScriptLoaded() {
+ mgrp = getScriptGroup();
+ if (mgrp == NULL) {
+ messagebox("popupitem.maki: cannot run outside a group", "Error", 0, "");
+ return;
+ }
+
+ _a = mgrp.getObject("popup.item.checkmark"); a = _a;
+ _b = mgrp.getObject("popup.item.text"); b = _b;
+ _c = mgrp.getObject("popup.item.submenuarrow"); c = _c;
+ background = mgrp.getObject("popup.background"); d = background;
+
+ want_checkmark = -1;
+ want_arrow = -1;
+}
+
+mgrp.onNotify(String command, String param, int a, int b) {
+ if (command == "id") id = StringToInteger(param);
+ if (command == "arrow") setArrow(StringToInteger(param));
+ if (command == "checkmark") setCheckMark(StringToInteger(param));
+}
+
+ItemSwitcher.onEnterArea() {
+ background.cancelTarget();
+ background.setAlpha(255);
+}
+
+ItemSwitcher.onLeaveArea() {
+ background.setTargetA(0);
+ background.setTargetSpeed(0.25);
+ background.gotoTarget();
+}
+
+ItemSwitcher.onLeftButtonDown(int x, int y) {
+ mgrp.endModal(id);
+}
+
+setArrow(int want) {
+ if (want_arrow == want) return;
+ want_arrow = want;
+ updatePos();
+}
+
+setCheckmark(int want) {
+ if (want_checkmark == want) return;
+ want_checkmark = want;
+ updatePos();
+}
+
+updatePos() {
+
+ int x = MARGIN;
+ int mx = MARGIN;
+
+ if (!want_checkmark) {
+ if (_a != NULL) {
+ _a.hide();
+ }
+ } else {
+ if (_a != NULL) {
+ _a.show();
+ }
+ x += CHECKMARK_WIDTH + MARGIN_PRE;
+ mx += CHECKMARK_WIDTH + MARGIN_PRE;
+ }
+
+
+ if (!want_arrow) {
+ if (_c != NULL) {
+ _c.hide();
+ }
+ } else {
+ if (_c != NULL) {
+ _c.show();
+ }
+ mx += ARROW_WIDTH + MARGIN_POST;
+ }
+
+ mx += MARGIN;
+
+ if (_b != NULL) {
+ _b.setXmlParam("x", IntegerToString(x));
+ _b.setXmlParam("w", "-" + IntegerToString(mx));
+ }
+
+}
+
diff --git a/Src/resources/data/freeform/xml/popupmenu/popupitem.maki b/Src/resources/data/freeform/xml/popupmenu/popupitem.maki
new file mode 100644
index 00000000..2a9dfed2
--- /dev/null
+++ b/Src/resources/data/freeform/xml/popupmenu/popupitem.maki
Binary files differ
diff --git a/Src/resources/data/freeform/xml/popupmenu/popupmenu.xml b/Src/resources/data/freeform/xml/popupmenu/popupmenu.xml
new file mode 100644
index 00000000..7e5293ee
--- /dev/null
+++ b/Src/resources/data/freeform/xml/popupmenu/popupmenu.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<WinampAbstractionLayer version="0.7">
+
+<groupdef id="wasabi.popup.main.group" inherit_group="wasabi.panel" background="studio.popup.background" rectrgn="1" autowidthsource="popup.content" autoheightsource="popup.content">
+ <GroupList id="popup.content" x="2" y="2" w="-4" h="-4" relatw="1" relath="1" />
+</groupdef>
+
+<groupdef id="wasabi.popup.image.item">
+ <layer id="popup.item.layer" x="16" y="0" w="0" relatw="1" h="0" relath="1" />
+</groupdef>
+
+<groupdef id="wasabi.popup.text.item" h="16" autowidthsource="popup.item.text" >
+ <rect id="popup.background" color="128,128,230" filled="1" x="0" y="0" w="0" h="0" relatw="1" relath="1" alpha="0"/>
+ <button
+ id="popup.item.checkmark"
+ x="2" y="3" h="9" w="10"
+ activeimage="wasabi.popup.menu.check"
+ />
+ <text
+ id="popup.item.text"
+ default="Popup Item"
+ x="42" y="0"
+ w="-28" relatw="1" h="15"
+ font="arial" fontsize="14"
+ color="black"
+ />
+ <button
+ id="popup.item.submenuarrow"
+ x="-8" relatx="1" y="3" w="10" h="9"
+ activeimage="wasabi.popup.menu.submenu"
+ />
+ <script file="popupitem.maki" />
+</groupdef>
+
+<groupdef id="wasabi.popup.separator.item">
+ <group id="wasabi.panel" x="1" y="0" w="-2" relatw="1" h="0" relath="1" />
+</groupdef>
+
+</WinampAbstractionLayer>
diff --git a/Src/resources/data/freeform/xml/statusbar/statusbar.xml b/Src/resources/data/freeform/xml/statusbar/statusbar.xml
new file mode 100644
index 00000000..978247f4
--- /dev/null
+++ b/Src/resources/data/freeform/xml/statusbar/statusbar.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<WinampAbstractionLayer version="0.7">
+
+<!-- This defines the statusbar content of a layoutstatus object -->
+
+<elements>
+ <color id="wasabi.statusbar.text" value="248,248,248" /> <!-- Component status text color when using TTF -->
+</elements>
+
+
+<groupdef id="wasabi.statusbar" default_h="12">
+
+ <group id="wasabi.objectframe.group" x="0" y="0" w="0" h="0" relatw="1" relath="1" />
+
+ <!-- nonmodal progress bar -->
+ <rect id="wasabi.statusbar.progress.outline" x="-104" relatx="1" y="3" w="100" h="8" filled="0" color="0,128,128" visible="0" />
+ <rect id="wasabi.statusbar.progress.inside" x="-104" relatx="1" y="3" w="1" h="8" filled="1" color="0,192,192" visible="0" />
+
+ <!-- text line -->
+ <text id="wasabi.statusbar.text" x="6" y="1" w="-12" relatw="1" h="-1" relath="1" font="studio.component.statusbar" />
+
+</groupdef>
+
+
+</WinampAbstractionLayer>
diff --git a/Src/resources/data/freeform/xml/tabsheet/buttons.png b/Src/resources/data/freeform/xml/tabsheet/buttons.png
new file mode 100644
index 00000000..d8bd245b
--- /dev/null
+++ b/Src/resources/data/freeform/xml/tabsheet/buttons.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/tabsheet/tabsheet.xml b/Src/resources/data/freeform/xml/tabsheet/tabsheet.xml
new file mode 100644
index 00000000..03152ae3
--- /dev/null
+++ b/Src/resources/data/freeform/xml/tabsheet/tabsheet.xml
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<WinampAbstractionLayer version="0.7">
+
+<elements>
+
+ <bitmap id="wasabi.tabsheet.button.topleft" file="buttons.png" x="0" y="0" w="10" h="10" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.tabsheet.button.top" file="buttons.png" x="10" y="0" w="46" h="10" gammagroup="Backgrounds" />
+ <bitmap id="wasabi.tabsheet.button.topright" file="buttons.png" x="56" y="0" w="10" h="10" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.tabsheet.button.left" file="buttons.png" x="0" y="10" w="10" h="15" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.tabsheet.button.right" file="buttons.png" x="56" y="10" w="10" h="15" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.tabsheet.button.bottom" file="buttons.png" x="0" y="26" w="66" h="2" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.tabsheet.button.shade.topleft" file="buttons.png" x="0" y="29" w="10" h="10" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.tabsheet.button.shade.top" file="buttons.png" x="10" y="29" w="46" h="10" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.tabsheet.button.shade.topright" file="buttons.png" x="56" y="29" w="10" h="10" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.tabsheet.button.shade.left" file="buttons.png" x="0" y="39" w="10" h="11" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.tabsheet.button.shade.middle" file="buttons.png" x="10" y="39" w="46" h="11" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.tabsheet.button.shade.right" file="buttons.png" x="56" y="39" w="10" h="11" gammagroup="Backgrounds"/>
+
+</elements>
+
+<groupdef id="wasabi.tabsheet">
+ <layer
+ id="panel.left.stretch"
+ x="0" y="0"
+ h="-2"
+ relath="1"
+ image="wasabi.panel.left"
+ />
+ <layer
+ id="panel.right.stretch"
+ x="-2" y="0"
+ h="-2"
+ relatx="1" relath="1"
+ image="wasabi.panel.right"
+ />
+ <layer
+ id="panel.bottom.left.corner"
+ x="0" y="-2"
+ relaty="1"
+ image="wasabi.panel.bottom.left"
+ />
+ <layer
+ id="panel.bottom.stretch"
+ x="2" y="-2"
+ relaty="1"
+ w="-4"
+ relatw="1"
+ image="wasabi.panel.bottom"
+ />
+ <layer
+ id="panel.bottom.right.corner"
+ x="-2" y="-2"
+ relatx="1" relaty="1"
+ image="wasabi.panel.bottom.right"
+ />
+</groupdef>
+
+<groupdef id="wasabi.tabsheet.button.selected.group" h="25" autowidthsource="text">
+
+ <Layer x="0" y="0" w="0" h="0" relatw="1" relath="1" renderbasetexture="1" />
+
+ <Grid x="0" y="0" w="0" h="0" relatw="1" relath="1"
+ topleft = "wasabi.tabsheet.button.topleft"
+ top = "wasabi.tabsheet.button.top"
+ topright = "wasabi.tabsheet.button.topright"
+ left = "wasabi.tabsheet.button.left"
+ right = "wasabi.tabsheet.button.right"
+ />
+
+ <text
+ id="text" ticker="1"
+ default="Active Tab"
+ x="5" y="6"
+ w="-13" relatw="1" h="14"
+ font="tahoma" fontsize="14"
+ color="wasabi.text.color"
+ />
+
+
+ <Layer id="mousetrap" x="0" y="0" w="0" h="0" relatw="1" relath="1" />
+
+</groupdef>
+
+<groupdef id="wasabi.tabsheet.button.unselected.group" h="25" autowidthsource="text">
+
+ <Layer x="0" y="0" w="0" h="0" relatw="1" relath="1" renderbasetexture="1" />
+
+ <Grid x="0" y="3" w="0" h="-3" relatw="1" relath="1"
+ topleft = "wasabi.tabsheet.button.shade.topleft"
+ top = "wasabi.tabsheet.button.shade.top"
+ topright = "wasabi.tabsheet.button.shade.topright"
+ left = "wasabi.tabsheet.button.shade.left"
+ middle = "wasabi.tabsheet.button.shade.middle"
+ right = "wasabi.tabsheet.button.shade.right"
+ />
+
+ <Grid x="0" y="3" w="0" h="-3" relatw="1" relath="1"
+ topleft = "wasabi.tabsheet.button.topleft"
+ top = "wasabi.tabsheet.button.top"
+ topright = "wasabi.tabsheet.button.topright"
+ left = "wasabi.tabsheet.button.left"
+ right = "wasabi.tabsheet.button.right"
+ />
+
+ <Layer x="0" y="-2" relaty="1" w="0" relatw="1" h="2" image="wasabi.tabsheet.button.bottom" />
+
+ <text
+ id="text" ticker="1"
+ default="Inactive Tab"
+ x="5" y="9"
+ w="-13" relatw="1" h="14"
+ font="tahoma" fontsize="14"
+ color="200,200,200"
+ />
+
+ <Layer id="mousetrap" x="0" y="0" w="0" h="0" relatw="1" relath="1" />
+
+</groupdef>
+
+<groupdef id="wasabi.tabsheet.nobutton.group" h="25">
+ <Layer x="0" y="-2" relaty="1" w="0" relatw="1" h="2" image="wasabi.tabsheet.button.bottom" />
+</groupdef>
+
+<groupdef id="wasabi.tabsheet.content" inherit_group="wasabi.tabsheet">
+ <GuiObject id="content" x="2" y="2" w="-4" relatw="1" h="-2" relath="1" />
+</groupdef>
+
+<groupdef id="wasabi.tabsheet.content.noborder">
+ <GuiObject id="content" x="0" y="0" w="0" relatw="1" h="0" relath="1" />
+</groupdef>
+
+
+</WinampAbstractionLayer>
diff --git a/Src/resources/data/freeform/xml/titlebox/titlebox.xml b/Src/resources/data/freeform/xml/titlebox/titlebox.xml
new file mode 100644
index 00000000..44a49cb7
--- /dev/null
+++ b/Src/resources/data/freeform/xml/titlebox/titlebox.xml
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<WinampAbstractionLayer version="0.7">
+
+<groupdef id="wasabi.titlebox">
+
+ <layer
+ id="groupbox.bottom.stretch"
+ x="3" y="-3"
+ w="-6"
+ relaty="1" relatw="1"
+ image="wasabi.groupbox.bottom"
+ />
+ <layer
+ id="groupbox.left.stretch"
+ x="0" y="9"
+ h="-12"
+ relath="1"
+ image="wasabi.groupbox.left"
+ />
+ <layer
+ id="groupbox.right.stretch"
+ x="-3" y="9"
+ h="-12"
+ relatx="1" relath="1"
+ image="wasabi.groupbox.right"
+ />
+ <layer
+ id="groupbox.bottom.left.corner"
+ x="0" y="-3"
+ relaty="1"
+ image="wasabi.groupbox.bottom.left"
+ />
+ <layer
+ id="groupbox.bottom.right.corner"
+ x="-3" y="-3"
+ relatx="1" relaty="1"
+ image="wasabi.groupbox.bottom.right"
+ />
+</groupdef>
+
+<!-- =================================================================================================== -->
+<!-- This is the group that holds the content of the TitleBox (what was specified using the content="some.group.id"
+ parameter in <TitleBox />). The CustomObject (which must have "titlebox.content" id) is the one ending up
+ holding the content so you can change the coordinates or add decorations around it here -->
+
+ <groupdef id="wasabi.titlebox.main.group" inherit_group="wasabi.titlebox" autoheightsource="titlebox.content" autowidthsource="titlebox.content">
+ <CustomObject id="titlebox.content" x="8" y="16" w="-16" h="-23" relatw="1" relath="1" />
+ </groupdef>
+
+
+
+<!-- =================================================================================================== -->
+<!-- This group appears on the left of the title in the TitleBox object. if centered="1" was specified, this
+ group will be strecthed so as to have the label group (see below) in the center of the titlebar.
+ Otherwise, its width is fixed -->
+
+ <groupdef id="wasabi.titlebox.left.group" w="6" h="13">
+ <layer
+ id="groupbox.top.left.corner"
+ x="0" y="6"
+ image="wasabi.groupbox.top.left"
+ />
+ <layer
+ id="groupbox.top.stretch"
+ x="3" y="6"
+ w="3"
+ image="wasabi.groupbox.top"
+ />
+ </groupdef>
+
+
+
+<!-- =================================================================================================== -->
+<!-- This group is the one holding the label for the TitleBox object, it should contain a Text object with
+ id="titlebox.text". The group will be stretched automatically to the size it needs to hold the full text -->
+
+ <groupdef id="wasabi.titlebox.center.group" h="13" autowidthsource="titlebox.text" >
+ <text
+ id="titlebox.text"
+ default="ERROR"
+ x="0" y="-1"
+ w="0" relatw="1" h="0" relath="1"
+ font="tahoma" fontsize="14"
+ color="wasabi.text.color"
+ />
+ </groupdef>
+
+
+
+<!-- =================================================================================================== -->
+<!-- This is the last of the title groups for the TitleBox object, this one is on the right and is stretched
+ all the way to the right of the content area. -->
+
+ <groupdef id="wasabi.titlebox.right.group" w="0" relatw="1" h="13">
+ <layer
+ id="groupbox.top.stretch"
+ x="0" y="6"
+ w="-3"
+ relatw="1"
+ image="wasabi.groupbox.top"
+ />
+ <layer
+ id="groupbox.top.right.corner"
+ x="-3" y="6"
+ relatx="1"
+ image="wasabi.groupbox.top.right"
+ />
+ </groupdef>
+
+
+
+<!-- =================================================================================================== -->
+<!-- This is an example of how to use this control -->
+
+ <!-- First the content -->
+ <groupdef id="example.titlebox.content" autoheightsource="lastitem" w="300">
+ <Wasabi:CheckBox x="0" y="0" text="This is a config option"/>
+ <Wasabi:CheckBox x="0" y="16" text="This is another config option"/>
+ <Wasabi:CheckBox x="0" y="32" text="This is yet another config option"/>
+ <Wasabi:CheckBox x="0" y="48" id="lastitem" text="This is another damn config option"/>
+ </groupdef>
+
+
+ <!-- Then the object itself, with the content as parameter.
+
+ add register_autopopup="1" to the groupdef to test -->
+
+ <groupdef id="example.titlebox.main" name="TitleBox Example" >
+ <Wasabi:TitleBox x="50" y="50" title="Group title" content="example.titlebox.content" />
+ </groupdef>
+
+
+
+</WinampAbstractionLayer>
diff --git a/Src/resources/data/freeform/xml/tooltips/tooltips-elements.png b/Src/resources/data/freeform/xml/tooltips/tooltips-elements.png
new file mode 100644
index 00000000..17e709c3
--- /dev/null
+++ b/Src/resources/data/freeform/xml/tooltips/tooltips-elements.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/tooltips/tooltips-elements.xml b/Src/resources/data/freeform/xml/tooltips/tooltips-elements.xml
new file mode 100644
index 00000000..e08ec2e8
--- /dev/null
+++ b/Src/resources/data/freeform/xml/tooltips/tooltips-elements.xml
@@ -0,0 +1,12 @@
+<elements>
+ <bitmap id="wasabi.tooltip.top.left" file="tooltips-elements.png" x="0" y="0" h="4" w="4" gammagroup="Tooltips Background"/>
+ <bitmap id="wasabi.tooltip.top" file="tooltips-elements.png" x="4" y="0" h="4" w="8" gammagroup="Tooltips Background"/>
+ <bitmap id="wasabi.tooltip.top.right" file="tooltips-elements.png" x="13" y="0" h="4" w="4" gammagroup="Tooltips Background"/>
+ <bitmap id="wasabi.tooltip.left" file="tooltips-elements.png" x="0" y="4" h="8" w="4" gammagroup="Tooltips Background"/>
+ <bitmap id="wasabi.tooltip.center" file="tooltips-elements.png" x="4" y="4" h="8" w="8" gammagroup="Tooltips Background"/>
+ <bitmap id="wasabi.tooltip.right" file="tooltips-elements.png" x="13" y="4" h="8" w="4" gammagroup="Tooltips Background"/>
+ <bitmap id="wasabi.tooltip.bottom.left" file="tooltips-elements.png" x="0" y="13" h="4" w="4" gammagroup="Tooltips Background"/>
+ <bitmap id="wasabi.tooltip.bottom" file="tooltips-elements.png" x="4" y="13" h="4" w="8" gammagroup="Tooltips Background"/>
+ <bitmap id="wasabi.tooltip.bottom.right" file="tooltips-elements.png" x="13" y="13" h="4" w="4" gammagroup="Tooltips Background"/>
+ <color id="wasabi.tooltips.textcolor" value="0,0,0" gammagroup="Tooltips Text" />
+</elements>
diff --git a/Src/resources/data/freeform/xml/tooltips/tooltips.m b/Src/resources/data/freeform/xml/tooltips/tooltips.m
new file mode 100644
index 00000000..0b4e7767
--- /dev/null
+++ b/Src/resources/data/freeform/xml/tooltips/tooltips.m
@@ -0,0 +1,34 @@
+#include <lib/std.mi>
+
+Global Group tipGroup;
+Global Text tipText;
+
+System.onScriptLoaded() {
+ tipGroup = getScriptGroup();
+ tipText = tipGroup.getObject("tooltip.text");
+}
+
+// When text is changed, resize the group accordingly and make sure it's fully visible
+
+tipText.onTextChanged(String newtext) {
+
+ int x = getMousePosX();
+ int y = getMousePosY()-tipGroup.getHeight(); // move above mouse by default
+
+ int vpleft = getViewportLeftFromPoint(x, y);
+ int vptop = getViewportTopFromPoint(x, y);
+ int vpright = vpleft+getViewportWidthFromPoint(x, y);
+ int vpbottom = vptop+getViewportHeightFromPoint(x, y);
+
+ int w = getAutoWidth()+20;
+ int h = tipGroup.getHeight();
+
+ if (x + w > vpright) x = vpright - w;
+ if (x < vpleft) x = vpleft;
+ if (x + w > vpright) { w = vpright-vpleft-64; x = 32; }
+ if (y + h > vpbottom) y = vpbottom - h;
+ if (y < vptop) y = vptop + 32; // avoid mouse
+ if (y + h > vpbottom) { h = vpbottom-vptop-64; y = 32; }
+
+ tipGroup.resize(x, y, w, h);
+}
diff --git a/Src/resources/data/freeform/xml/tooltips/tooltips.maki b/Src/resources/data/freeform/xml/tooltips/tooltips.maki
new file mode 100644
index 00000000..8588fae6
--- /dev/null
+++ b/Src/resources/data/freeform/xml/tooltips/tooltips.maki
Binary files differ
diff --git a/Src/resources/data/freeform/xml/tooltips/tooltips.xml b/Src/resources/data/freeform/xml/tooltips/tooltips.xml
new file mode 100644
index 00000000..80b28953
--- /dev/null
+++ b/Src/resources/data/freeform/xml/tooltips/tooltips.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<WinampAbstractionLayer version="0.7">
+
+<include file="tooltips-elements.xml"/>
+
+<groupdef id="wasabi.tooltip.group" h="17" noactivation="1">
+ <grid
+ id="tooltip.grid"
+ x="0" y="0"
+ w="-16" h="0"
+ sysregion="1"
+ relatw="1" relath="1"
+ topleft="wasabi.tooltip.top.left"
+ top="wasabi.tooltip.top"
+ topright="wasabi.tooltip.top.right"
+ left="wasabi.tooltip.left"
+ middle="wasabi.tooltip.center"
+ right="wasabi.tooltip.right"
+ bottomleft="wasabi.tooltip.bottom.left"
+ bottom="wasabi.tooltip.bottom"
+ bottomright="wasabi.tooltip.bottom.right"
+ />
+ <text
+ id="tooltip.text"
+ x="2" y="1"
+ w="0" h="-2"
+ relatw="1" relath="1"
+ default="Tooltip Sample"
+ font="Arial" fontsize="14" color="wasabi.tooltips.textcolor"
+ />
+ <script id="tip" file="tooltips.maki"/>
+
+</groupdef>
+
+</WinampAbstractionLayer>
diff --git a/Src/resources/data/freeform/xml/wasabi/Scripts/debug.sym b/Src/resources/data/freeform/xml/wasabi/Scripts/debug.sym
new file mode 100644
index 00000000..41a9fc71
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/Scripts/debug.sym
@@ -0,0 +1,74 @@
+-- Variables Table ---------------------------------------------------
+var# | Class | What
+----------------------------------------------------------------------
+0000 | System | System*
+0001 | Int | NULL
+0002 | Group | frameGroup
+0003 | Group | content
+0004 | Group | titlebar
+0005 | String | x
+0006 | String | y
+0007 | String | w
+0008 | String | h
+0009 | String | rx
+000A | String | ry
+000B | String | rw
+000C | String | rh
+000D | Layer | mouselayer
+000E | Button | Sysmenu
+000F | String | param
+0010 | String | ","
+0011 | Int | 0
+0012 | Int | 1
+0013 | Int | 2
+0014 | Int | 3
+0015 | Int | 4
+0016 | Int | 5
+0017 | Int | 6
+0018 | Int | 7
+0019 | String | "sysmenu"
+001A | String | param
+001B | String | value
+001C | String | "content"
+001D | String | "wasabi.titlebar"
+001E | String | "mousetrap"
+001F | String | "padtitleright"
+0020 | String | "padtitleleft"
+0021 | String | "shade"
+0022 | String | "dblclickaction"
+0023 | String | "switch;"
+0024 | String | "Cannot set shade parameter for StandardFrame object, no mousetrap found"
+0025 | String | "Skin Error"
+0026 | String | ""
+0027 | String | cmd
+0028 | String | param
+0029 | Int | a
+002A | Int | b
+002B | String | _command
+002C | String | _param
+002D | String | groupid
+002E | String | "group \""
+002F | String | "\" not found"
+0030 | String | "ButtonGroup"
+0031 | String | "x"
+0032 | String | "y"
+0033 | String | "w"
+0034 | String | "h"
+0035 | String | "relatx"
+0036 | String | "relaty"
+0037 | String | "relatw"
+0038 | String | "relath"
+0039 | String | "sysmenu.status"
+003A | LayoutStatus | _status
+003B | String | "{system}"
+-- Events Table ------------------------------------------------------
+var# | Code Pointer | What
+----------------------------------------------------------------------
+0000 | 0000 | System.onScriptLoaded
+0000 | 013E | System.onSetXuiParam
+0002 | 0235 | frameGroup.onNotify
+000E | 03F2 | Sysmenu.onLeftClick
+-- User Functions Table ----------------------------------------------
+ Code Pointer | What
+----------------------------------------------------------------------
+ 02D8 | setNewGroup
diff --git a/Src/resources/data/freeform/xml/wasabi/Scripts/standardframe.m b/Src/resources/data/freeform/xml/wasabi/Scripts/standardframe.m
new file mode 100644
index 00000000..7e6a8a57
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/Scripts/standardframe.m
@@ -0,0 +1,68 @@
+#include <lib/std.mi>
+
+Global Group frameGroup, content, titlebar;
+Global String x, y, w, h, rx, ry, rw, rh;
+Global Layer mouselayer;
+Global Button Sysmenu;
+
+Function setNewGroup(String groupid);
+
+System.onScriptLoaded() {
+ frameGroup = getScriptGroup();
+ String param = getParam();
+ x = getToken(param, ",", 0);
+ y = getToken(param, ",", 1);
+ w = getToken(param, ",", 2);
+ h = getToken(param, ",", 3);
+ rx = getToken(param, ",", 4);
+ ry = getToken(param, ",", 5);
+ rw = getToken(param, ",", 6);
+ rh = getToken(param, ",", 7);
+ sysmenu = frameGroup.findObject("sysmenu");
+}
+
+System.onSetXuiParam(String param, String value) {
+ if (param == "content") {
+ setNewGroup(value);
+ titlebar = frameGroup.findObject("wasabi.titlebar");
+ mouselayer = titlebar.findObject("mousetrap");
+ }
+ if (param == "padtitleright" || param == "padtitleleft") {
+ if (titlebar != NULL) titlebar.setXmlParam(param, value);
+ }
+ if (param == "shade") {
+ if (mouselayer != NULL) mouselayer.setXmlParam("dblclickaction", "switch;"+value);
+ else messagebox("Cannot set shade parameter for StandardFrame object, no mousetrap found", "Skin Error", 0, "");
+ }
+}
+
+// backward compatibility for prerelease notify trick
+frameGroup.onNotify(String cmd, String param, int a, int b) {
+ String _command = getToken(cmd, ",", 0);
+ String _param = getToken(cmd, ",", 1);
+ if (_command == "content" || _command == "padtitleright" || _command == "padtitleleft" || _command == "shade") {
+ onSetXuiParam(_command, _param);
+ }
+}
+
+setNewGroup(String groupid) {
+ content = newGroup(groupid);
+ if (content == NULL) {
+ messagebox("group \"" + groupid + "\" not found", "ButtonGroup", 0, "");
+ return;
+ }
+ content.setXmlParam("x", x);
+ content.setXmlParam("y", y);
+ content.setXmlParam("w", w);
+ content.setXmlParam("h", h);
+ content.setXmlParam("relatx", rx);
+ content.setXmlParam("relaty", ry);
+ content.setXmlParam("relatw", rw);
+ content.setXmlParam("relath", rh);
+ content.init(frameGroup);
+}
+
+Sysmenu.onLeftClick() {
+ LayoutStatus _status = frameGroup.findObject("sysmenu.status");
+ _status.callme("{system}");
+}
diff --git a/Src/resources/data/freeform/xml/wasabi/Scripts/standardframe.maki b/Src/resources/data/freeform/xml/wasabi/Scripts/standardframe.maki
new file mode 100644
index 00000000..0635e69a
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/Scripts/standardframe.maki
Binary files differ
diff --git a/Src/resources/data/freeform/xml/wasabi/Scripts/titlebar.m b/Src/resources/data/freeform/xml/wasabi/Scripts/titlebar.m
new file mode 100644
index 00000000..a1e146db
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/Scripts/titlebar.m
@@ -0,0 +1,96 @@
+#include <lib/std.mi>
+
+#define MARGIN 0
+
+Function resizeObjects();
+
+Global GuiObject left, right, center;
+Global Text tcenter;
+Global Group sg;
+Global int padleft, padright;
+
+System.onScriptLoaded() {
+
+ padleft = 0;
+ padright = 0;
+
+ sg = getScriptGroup();
+
+ if (sg == NULL) {
+ messageBox("titlebar.maki can only run within a group", "Error", 0, "");
+ return;
+ }
+
+ left = sg.findObject(getToken(getParam(), ";", 0));
+ center = sg.findObject(getToken(getParam(), ";", 1));
+ if (center != NULL) {
+ tcenter = center.findObject("window.titlebar.title");
+ }
+ right = sg.findObject(getToken(getParam(), ";", 2));
+}
+
+// backward compatibility with prerelease notify trick
+sg.onNotify(String cmd, String param, int a, int b) {
+ String _command = getToken(cmd, ",", 0);
+ String _param = getToken(cmd, ",", 1);
+ if (_command == "padtitleright" || _command == "padtitleright")
+ onSetXuiParam(_command, _param);
+}
+
+System.onSetXuiParam(String param, String value) {
+ if (param == "padtitleright") {
+ padright = padright + StringToInteger(value);
+ resizeObjects();
+ }
+ if (param == "padtitleleft") {
+ padleft = padleft + StringToInteger(value);
+ resizeObjects();
+ }
+}
+
+resizeObjects() {
+ int text_width = 0;
+ int layout_width = 0;
+ int group_width = sg.getWidth();
+
+ Layout l = sg.getParentLayout();
+ layout_width = l.getWidth();
+
+ if (center != NULL) {
+ text_width = center.getAutoWidth();
+ }
+
+ int lx = (layout_width - text_width) / 2;
+ lx = l.clientToScreenX(lx);
+ lx = sg.screenToClientX(lx);
+ lx = lx - sg.getLeft();
+
+ if (center != NULL) {
+ center.setXmlParam("x", IntegerToString(lx));
+ center.setXmlParam("relatx", "0");
+ center.setXmlParam("w", IntegerToString(text_width));
+ center.setXmlParam("relatw", "0");
+ }
+
+ if (left != NULL) {
+ left.setXmlParam("x", IntegerToString(padleft));
+ left.setXmlParam("relatx", "0");
+ left.setXmlParam("w", IntegerToString(lx-padleft-MARGIN));
+ left.setXmlParam("relatw", "0");
+ }
+ if (right != NULL) {
+ right.setXmlParam("x", IntegerToString(lx+text_width+MARGIN+1));
+ right.setXmlParam("relatx", "0");
+ right.setXmlParam("w", "-" + IntegerToString(lx+text_width+1+padright+MARGIN+1)); //IntegerToString(group_width-(lx+text_width)));
+ right.setXmlParam("relatw", "1");
+ }
+}
+
+tcenter.onTextChanged(string newtext) {
+ resizeObjects();
+}
+
+sg.onResize(int x, int y, int w, int h) {
+ resizeObjects();
+}
+
diff --git a/Src/resources/data/freeform/xml/wasabi/Scripts/titlebar.maki b/Src/resources/data/freeform/xml/wasabi/Scripts/titlebar.maki
new file mode 100644
index 00000000..2d0165a8
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/Scripts/titlebar.maki
Binary files differ
diff --git a/Src/resources/data/freeform/xml/wasabi/fonts/button-font-normal.png b/Src/resources/data/freeform/xml/wasabi/fonts/button-font-normal.png
new file mode 100644
index 00000000..5e44f264
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/fonts/button-font-normal.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/wasabi/fonts/button-font-small.png b/Src/resources/data/freeform/xml/wasabi/fonts/button-font-small.png
new file mode 100644
index 00000000..bc06ac62
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/fonts/button-font-small.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/wasabi/fonts/default-font.png b/Src/resources/data/freeform/xml/wasabi/fonts/default-font.png
new file mode 100644
index 00000000..a7569c12
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/fonts/default-font.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/wasabi/fonts/titlebar-font.png b/Src/resources/data/freeform/xml/wasabi/fonts/titlebar-font.png
new file mode 100644
index 00000000..88c31646
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/fonts/titlebar-font.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/wasabi/garbage/seekbar-button-pressed.png b/Src/resources/data/freeform/xml/wasabi/garbage/seekbar-button-pressed.png
new file mode 100644
index 00000000..436c8360
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/garbage/seekbar-button-pressed.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/wasabi/garbage/seekbar-button.png b/Src/resources/data/freeform/xml/wasabi/garbage/seekbar-button.png
new file mode 100644
index 00000000..1151f0a9
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/garbage/seekbar-button.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/wasabi/garbage/seekbar-left.png b/Src/resources/data/freeform/xml/wasabi/garbage/seekbar-left.png
new file mode 100644
index 00000000..d8c05630
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/garbage/seekbar-left.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/wasabi/garbage/seekbar-middle.png b/Src/resources/data/freeform/xml/wasabi/garbage/seekbar-middle.png
new file mode 100644
index 00000000..40273001
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/garbage/seekbar-middle.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/wasabi/garbage/seekbar-right.png b/Src/resources/data/freeform/xml/wasabi/garbage/seekbar-right.png
new file mode 100644
index 00000000..22ab07c2
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/garbage/seekbar-right.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/wasabi/garbage/text_bg.png b/Src/resources/data/freeform/xml/wasabi/garbage/text_bg.png
new file mode 100644
index 00000000..26600f0e
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/garbage/text_bg.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/wasabi/menu/background.png b/Src/resources/data/freeform/xml/wasabi/menu/background.png
new file mode 100644
index 00000000..bf8fbc86
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/menu/background.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/wasabi/menu/selbar.png b/Src/resources/data/freeform/xml/wasabi/menu/selbar.png
new file mode 100644
index 00000000..14ec02fd
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/menu/selbar.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/wasabi/menu/window-elements.png b/Src/resources/data/freeform/xml/wasabi/menu/window-elements.png
new file mode 100644
index 00000000..dcacf109
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/menu/window-elements.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/wasabi/wasabi.xml b/Src/resources/data/freeform/xml/wasabi/wasabi.xml
new file mode 100644
index 00000000..8a2b62ce
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/wasabi.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<WinampAbstractionLayer version="0.7">
+
+<elements>
+ <bitmap id="wasabi.bitmapnotfound" file="wacs/xml/guiobjects/wasabi/window/error.png" />
+ <bitmap id="wasabi.transparent" file="wacs/xml/guiobjects/wasabi/window/transparent.png" />
+</elements>
+
+<include file="xml/system-colors.xml"/>
+<include file="xml/system-groups.xml"/>
+<include file="xml/system-elements.xml"/>
+<include file="xml/system-config.xml"/>
+<include file="xml/components.xml"/>
+
+<include file="xml/garbage-elements.xml"/>
+
+<include file="xml/xui/xuiobjects.xml"/>
+
+</WinampAbstractionLayer>
diff --git a/Src/resources/data/freeform/xml/wasabi/window/background.png b/Src/resources/data/freeform/xml/wasabi/window/background.png
new file mode 100644
index 00000000..60a17d10
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/window/background.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/wasabi/window/error.png b/Src/resources/data/freeform/xml/wasabi/window/error.png
new file mode 100644
index 00000000..a8a02b93
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/window/error.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/wasabi/window/framewnd-windowshade.png b/Src/resources/data/freeform/xml/wasabi/window/framewnd-windowshade.png
new file mode 100644
index 00000000..b7d7d35f
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/window/framewnd-windowshade.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/wasabi/window/scrollgrips.png b/Src/resources/data/freeform/xml/wasabi/window/scrollgrips.png
new file mode 100644
index 00000000..b00d0dd4
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/window/scrollgrips.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/wasabi/window/transparent.png b/Src/resources/data/freeform/xml/wasabi/window/transparent.png
new file mode 100644
index 00000000..a9b19a45
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/window/transparent.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/wasabi/window/tree-sort-icon.png b/Src/resources/data/freeform/xml/wasabi/window/tree-sort-icon.png
new file mode 100644
index 00000000..932dde26
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/window/tree-sort-icon.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/wasabi/window/window-elements.png b/Src/resources/data/freeform/xml/wasabi/window/window-elements.png
new file mode 100644
index 00000000..d5cf0c2f
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/window/window-elements.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/components.xml b/Src/resources/data/freeform/xml/wasabi/xml/components.xml
new file mode 100644
index 00000000..c73ecc1e
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/components.xml
@@ -0,0 +1,103 @@
+<!-- =================================================================================================== -->
+
+<!--
+
+ This defines the wasabi default containers. A window can request to be shown inside a specific container by id.
+ When the container id does not exist, all containers are checked in reverse to find one with a 'hold' parameter
+ that matches the window to show. Note that scripts get the opportunity to override this so you can distribute
+ your containers programatically.
+
+ The predefined wasabi container ids are the following :
+
+ resizable_status
+ resizable_nostatus
+ static
+ modal
+
+-->
+<!-- =================================================================================================== -->
+
+
+ <groupdef id="component.content.group">
+ <WindowHolder
+ x="0"
+ y="0"
+ w="0"
+ relatw="1"
+ h="0"
+ relath="1"
+ hold="@ALL@"
+ />
+ </groupdef>
+
+<!-- =================================================================================================== -->
+ Resizable windows with a status bar, ie: playlist editor, media library
+<!-- =================================================================================================== -->
+
+ <container id="resizable_status" name=":componenttitle" dynamic="1" hold="@all@" default_x="275" default_y="0">
+
+ <layout id="normal" minimum_h="116" minimum_w="275">
+
+ <Wasabi:StandardFrame:Status id="wasabi.standardframe"
+ x="0" y="0" w="0" h="0" relatw="1" relath="1"
+ content="component.content.group"
+ />
+
+ </layout>
+
+ </container>
+
+
+
+<!-- =================================================================================================== -->
+ Resizable windows without a status bar
+<!-- =================================================================================================== -->
+
+ <container id="resizable_nostatus" name=":componenttitle" dynamic="1" hold="@all@" default_x="275" default_y="0">
+
+ <layout id="resizable_nostatus" minimum_h="116" minimum_w="275">
+
+ <Wasabi:StandardFrame:NoStatus
+ x="0" y="0" w="0" h="0" relatw="1" relath="1"
+ content="component.content.group"
+ />
+
+ </layout>
+
+ </container>
+
+
+
+<!-- =================================================================================================== -->
+ modal windows, window intended to look like dialog boxes or messageboxes
+<!-- =================================================================================================== -->
+ <container id="modal" name=":componenttitle" dynamic="1" hold="@all@" default_x="275" default_y="0">
+
+ <layout id="modal" minimum_h="116" minimum_w="275">
+
+ <Wasabi:StandardFrame:Modal
+ x="0" y="0" w="0" h="0" relatw="1" relath="1"
+ content="component.content.group"
+ />
+
+ </layout>
+
+ </container>
+
+
+
+<!-- =================================================================================================== -->
+ static windows, ie: preferences
+<!-- =================================================================================================== -->
+ <container id="static" name=":componenttitle" dynamic="1" hold="@all@" default_x="275" default_y="0">
+
+ <layout id="static" minimum_h="116" minimum_w="275">
+
+ <Wasabi:StandardFrame:Static
+ x="0" y="0" w="0" h="0" relatw="1" relath="1"
+ content="component.content.group"
+ />
+
+ </layout>
+
+ </container>
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/garbage-elements.xml b/Src/resources/data/freeform/xml/wasabi/xml/garbage-elements.xml
new file mode 100644
index 00000000..44996987
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/garbage-elements.xml
@@ -0,0 +1,16 @@
+<!-- These elements are garbage and will be removed in the final release. We didn't have time
+to remove them for this beta however, they will be removed so please don't refer to these in your
+code. Thank you.-->
+
+<elements>
+ <!-- These elements will be removed all together, they are only being referenced by the pop-up dialog -->
+ <bitmap id="studio.border.upperLeft" file="window/window-elements.png" x="0" y="0" h="2" w="2"/>
+ <bitmap id="studio.border.upperRight" file="window/window-elements.png" x="34" y="0" h="2" w="2"/>
+ <bitmap id="studio.border.lowerLeft" file="window/window-elements.png" x="0" y="34" h="2" w="2"/>
+ <bitmap id="studio.border.lowerRight" file="window/window-elements.png" x="34" y="34" h="2" w="2"/>
+ <bitmap id="studio.border.top" file="window/window-elements.png" x="3" y="0" h="2" w="30"/>
+ <bitmap id="studio.border.left" file="window/window-elements.png" x="0" y="3" h="30" w="2"/>
+ <bitmap id="studio.border.bottom" file="window/window-elements.png" x="3" y="34" h="2" w="30"/>
+ <bitmap id="studio.border.right" file="window/window-elements.png" x="34" y="3" h="30" w="2"/>
+
+</elements> \ No newline at end of file
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/groups/buttonbar.xml b/Src/resources/data/freeform/xml/wasabi/xml/groups/buttonbar.xml
new file mode 100644
index 00000000..4aee26bb
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/groups/buttonbar.xml
@@ -0,0 +1,45 @@
+<!-- This group defines the layout of a toolbar like panel. For instance it is used by the filterlist object to
+ display a list of available fields, or by typesheet objects implementing a sidecar button bar
+
+ Required objects:
+
+ <Text id="buttonbar.text" />
+ <Button id="mousetrap" />
+
+-->
+
+<groupdef id="wasabi.buttonbar.stack" default_h="18">
+ <grid
+ id=""
+ x="0" y="0"
+ w="0" h="0"
+ relatw="1" relath="1"
+ topleft="wasabi.label.top.left"
+ top="wasabi.label.top"
+ topright="wasabi.label.top.right"
+ left="wasabi.label.left"
+ middle="wasabi.label.middle"
+ right="wasabi.label.right"
+ bottomleft="wasabi.label.bottom.left"
+ bottom="wasabi.label.bottom"
+ bottomright="wasabi.label.bottom.right"
+ />
+ <text
+ id="buttonbar.text"
+ x="5" y="0"
+ w="-10" h="0"
+ relatw="1" relath="1"
+ default="Error"
+ font="Arial" fontsize="15"
+ color="wasabi.text.color" shadowcolor="wasabi.text.color.inverse" shadowx="1" shadowy="1"
+ />
+ <layer
+ id="buttonbar.arrow"
+ x="-15" y="8"
+ valign="center"
+ relatx="1"
+ image="wasabi.button.label.arrow.down"
+ />
+ <button id="mousetrap" x="0" y="0" w="0" h="0" relatw="1" relath="1" rectrgn="1"/>
+</groupdef>
+
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/groups/objectframe.xml b/Src/resources/data/freeform/xml/wasabi/xml/groups/objectframe.xml
new file mode 100644
index 00000000..9bab0a25
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/groups/objectframe.xml
@@ -0,0 +1,17 @@
+<groupdef id="wasabi.objectframe.group">
+ <grid
+ id="objectframe.grid"
+ x="0" y="0"
+ w="0" h="0"
+ relatw="1" relath="1"
+ topleft="wasabi.objectframe.top.left"
+ top="wasabi.objectframe.top"
+ topright="wasabi.objectframe.top.right"
+ left="wasabi.objectframe.left"
+ middle="wasabi.objectframe.center"
+ right="wasabi.objectframe.right"
+ bottomleft="wasabi.objectframe.bottom.left"
+ bottom="wasabi.objectframe.bottom"
+ bottomright="wasabi.objectframe.bottom.right"
+ />
+</groupdef>
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/groups/panel.xml b/Src/resources/data/freeform/xml/wasabi/xml/groups/panel.xml
new file mode 100644
index 00000000..5f366be4
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/groups/panel.xml
@@ -0,0 +1,16 @@
+<groupdef id="wasabi.panel">
+ <grid
+ id="panel.grid"
+ x="0" y="0"
+ w="0" h="0"
+ relatw="1" relath="1"
+ topleft="wasabi.panel.top.left"
+ top="wasabi.panel.top"
+ topright="wasabi.panel.top.right"
+ left="wasabi.panel.left"
+ right="wasabi.panel.right"
+ bottomleft="wasabi.panel.bottom.left"
+ bottom="wasabi.panel.bottom"
+ bottomright="wasabi.panel.bottom.right"
+ />
+</groupdef>
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/groups/window-embedded.xml b/Src/resources/data/freeform/xml/wasabi/xml/groups/window-embedded.xml
new file mode 100644
index 00000000..df040061
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/groups/window-embedded.xml
@@ -0,0 +1,17 @@
+<groupdef id="wasabi.window.embedded">
+ <grid
+ id="window.embedded.grid"
+ x="0" y="0"
+ w="0" h="0"
+ relatw="1" relath="1"
+ topleft="wasabi.window.top.left"
+ top="wasabi.window.top"
+ topright="wasabi.window.top.right"
+ left="wasabi.window.left"
+ middle="wasabi.window.center"
+ right="wasabi.window.right"
+ bottomleft="wasabi.window.bottom.left"
+ bottom="wasabi.window.bottom"
+ bottomright="wasabi.window.bottom.right"
+ />
+</groupdef>
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/groups/window.xml b/Src/resources/data/freeform/xml/wasabi/xml/groups/window.xml
new file mode 100644
index 00000000..913fe265
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/groups/window.xml
@@ -0,0 +1,9 @@
+<groupdef id="wasabi.window">
+ <layer
+ id="window.center.stretch"
+ x="0" y="0"
+ w="0" h="0"
+ relatw="1" relath="1"
+ image="wasabi.window.center"
+ />
+</groupdef>
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/old.system-colors.xml b/Src/resources/data/freeform/xml/wasabi/xml/old.system-colors.xml
new file mode 100644
index 00000000..685c2676
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/old.system-colors.xml
@@ -0,0 +1,61 @@
+<!--
+
+ system-colors.xml
+
+
+ this file contains all the static color definitions for Wasabi. An objects that does not rely on a group will use
+ one of these elements to decide what color to use.
+
+-->
+
+
+<elements>
+
+ <!-- Generic Trees -->
+ <color id="studio.tree.text" value="196,255,196"/> <!-- Item text color -->
+ <color id="studio.tree.selected" value="0,0,128"/> <!-- Select item text background color -->
+ <color id="studio.tree.hilited" value="0,255,255"/> <!-- Hilited item text background color -->
+ <color id="studio.tree.hiliteddrop" value="0,64,128"/> <!-- Drop marker color -->
+
+ <!-- Generic Lists -->
+ <color id="studio.list.text" value="196,255,196"/> <!-- List item text color -->
+ <color id="studio.list.item.selected" value="0,0,128"/> <!-- Selected item text background color -->
+ <color id="studio.list.item.focused" value="0,0,128"/> <!-- Focused item text background color -->
+ <color id="studio.list.column.background" value="102,102,102"/> <!-- Columns background color -->
+ <color id="studio.list.column.text" value="255,255,255"/> <!-- Columns text color -->
+ <color id="studio.list.item.selected.fg" value="255,255,255" /><!-- Selected item text foreground color -->
+
+ <!-- Item Lists, Lists with playable items -->
+ <color id="common.itemlist.outline.current" value="255,255,0"/> <!-- Currently playing outline color -->
+ <color id="common.itemlist.outline.focus" value="0,128,128"/> <!-- Focused item dashed outline color -->
+ <color id="common.itemlist.selborder" value="64,64,196"/>
+
+ <!-- Message box -->
+ <color id="studio.msgBox.background" value="32,32,32"/> <!-- Messagebox background color -->
+ <color id="studio.textBar.text" value="248,248,248"/> <!-- Text object & message box text color -->
+ <color id="studio.textBar.background" value="32,32,32"/> <!-- Text object & message box text background color -->
+
+ <!-- Buttons -->
+ <color id="studio.button.text" value="0,0,0"/> <!-- Buttons text color -->
+ <color id="studio.button.hiliteText" value="0,240,0"/> <!-- Buttons hilite text color, used by tab windows-->
+ <color id="studio.button.dimmedText" value="64,64,64"/> <!-- Buttons dimmed text color, when disabled -->
+
+ <!-- Popup menus -->
+ <color id="studio.popup.text" value="0,0,0"/> <!-- Menu items text color -->
+ <color id="studio.popup.hiliteText" value="255,255,255"/> <!-- Hilited item text color -->
+ <color id="studio.popup.dimmedText" value="64,64,64"/> <!-- Disabled item text color -->
+
+ <!-- Components -->
+ <color id="studio.component.title.foreground" value="255,255,255"/> <!-- Old title bar text color when using TTF -->
+ <color id="studio.component.title.border" value="1,1,1"/> <!-- Old title bar text outline when using TTF -->
+
+ <!-- labeled windows -->
+ <color id="common.labelwnd.foreground" value="220,220,220"/> <!-- Text foreground color -->
+ <color id="common.labelwnd.background" value="0,0,0"/> <!-- Text drop shadow color -->
+
+ <!-- edit wnds -->
+ <color id="wasabi.edit.selection" value="127,127,127" gammagroup="Backgrounds"/> <!-- Selected text -->
+ <color id="wasabi.edit.text" value="196,255,196" gammagroup="Text"/> <!--Text -->
+ <color id="wasabi.edit.background" value="0,0,0" gammagroup="Backgrounds"/> <!--Text background -->
+
+</elements>
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/old.system-elements.xml b/Src/resources/data/freeform/xml/wasabi/xml/old.system-elements.xml
new file mode 100644
index 00000000..4d474440
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/old.system-elements.xml
@@ -0,0 +1,364 @@
+<elements>
+
+ <!-- Fonts -->
+ <bitmapfont id="studio.component.title" file="fonts/titlebar-font.png" hspacing="-3" vspacing="0" charwidth="10" charheight="11" gammagroup="Titlebar Font"/>
+ <bitmapfont id="wasabi.font.button.small" file="fonts/button-font-small.png" hspacing="-1" vspacing="0" charwidth="5" charheight="5" gammagroup="Button Fonts"/>
+ <bitmapfont id="wasabi.font.button.normal" file="fonts/button-font-normal.png" charwidth="5" charheight="6" hspacing="0" vspacing="0" gammagroup="Button Fonts"/>
+ <bitmapfont id="wasabi.font.default" file="fonts/default-font.png" charwidth="5" charheight="6" hspacing="0" vspacing="0" gammagroup="Display Fonts"/>
+ <bitmapfont id="studio.component.statusbar" file="fonts/default-font.png" charwidth="5" charheight="6" hspacing="0" vspacing="0" gammagroup="Display Fonts"/>
+
+ <!-- Bitmaps -->
+
+ <bitmap id="studio.BaseTexture" file="window/background.png" gammagroup="Backgrounds"/>
+
+ <!-- Frame windows -->
+ <bitmap id="studio.framewnd.verticaldivider" file="window/window-elements.png" x="124" y="53" h="65" w="8" gammagroup="Backgrounds"/>
+ <bitmap id="studio.framewnd.verticalgrabber" file="window/window-elements.png" x="115" y="53" h="65" w="8" gammagroup="Backgrounds"/>
+ <bitmap id="studio.framewnd.horizontaldivider" file="window/window-elements.png" x="40" y="97" h="8" w="65" gammagroup="Backgrounds"/>
+ <bitmap id="studio.framewnd.horizontalgrabber" file="window/window-elements.png" x="40" y="106" h="8" w="65" gammagroup="Backgrounds"/>
+<!--
+ <bitmap id="studio.framewnd.windowshade" file="window/framewnd-windowshade.png" gammagroup="Backgrounds"/>
+-->
+
+ <bitmap id="wasabi.frame.divider.arrow.left" file="window/window-elements.png" x="56" y="124" h="7" w="4"/>
+ <bitmap id="wasabi.frame.divider.arrow.right" file="window/window-elements.png" x="60" y="124" h="7" w="4"/>
+ <bitmap id="wasabi.frame.divider.arrow.up" file="window/window-elements.png" x="64" y="124" h="4" w="7"/>
+ <bitmap id="wasabi.frame.divider.arrow.down" file="window/window-elements.png" x="64" y="128" h="4" w="7"/>
+
+ <bitmap id="wasabi.frame.divider.top.left" file="window/window-elements.png" x="115" y="31" h="3" w="3"/>
+ <bitmap id="wasabi.frame.divider.top" file="window/window-elements.png" x="118" y="31" h="3" w="10"/>
+ <bitmap id="wasabi.frame.divider.top.right" file="window/window-elements.png" x="128" y="31" h="3" w="3"/>
+ <bitmap id="wasabi.frame.divider.left" file="window/window-elements.png" x="115" y="34" h="10" w="3"/>
+ <bitmap id="wasabi.frame.divider.center" file="window/window-elements.png" x="118" y="34" h="10" w="10"/>
+ <bitmap id="wasabi.frame.divider.right" file="window/window-elements.png" x="128" y="34" h="10" w="3"/>
+ <bitmap id="wasabi.frame.divider.bottom.left" file="window/window-elements.png" x="115" y="44" h="3" w="3"/>
+ <bitmap id="wasabi.frame.divider.bottom" file="window/window-elements.png" x="118" y="44" h="3" w="10"/>
+ <bitmap id="wasabi.frame.divider.bottom.right" file="window/window-elements.png" x="128" y="44" h="3" w="3"/>
+
+ <!-- Generic Lists and Trees -->
+
+ <bitmap id="studio.list.background" file="window/window-elements.png" x="1" y="115" h="17" w="17" gammagroup="Display Backgrounds"/> <!-- List background bitmap (tile) -->
+ <bitmap id="studio.tree.background" file="window/window-elements.png" x="1" y="115" h="17" w="17" gammagroup="Display Backgrounds"/> <!-- Tree background bitmap (tile) -->
+
+ <bitmap id="studio.tree.tab.closed" file="window/window-elements.png" x="149" y="0" h="14" w="14" gammagroup="Tree Color"/>
+ <bitmap id="studio.tree.tab.open" file="window/window-elements.png" x="135" y="0" h="14" w="14" gammagroup="Tree Color"/>
+ <bitmap id="studio.tree.link.top.bottom" file="window/window-elements.png" x="135" y="14" h="14" w="14" gammagroup="Tree Color"/>
+ <bitmap id="studio.tree.link.top.right" file="window/window-elements.png" x="135" y="42" h="14" w="14" gammagroup="Tree Color"/>
+ <bitmap id="studio.tree.link.top.rightBottom" file="window/window-elements.png" x="135" y="28" h="14" w="14" gammagroup="Tree Color"/>
+ <bitmap id="studio.tree.link.tab.top.bottom" file="window/window-elements.png" x="149" y="14" h="14" w="14" gammagroup="Tree Color"/>
+ <bitmap id="studio.tree.link.tab.top.right" file="window/window-elements.png" x="149" y="42" h="14" w="14" gammagroup="Tree Color"/>
+ <bitmap id="studio.tree.link.tab.top.rightBottom" file="window/window-elements.png" x="149" y="28" h="14" w="14" gammagroup="Tree Color"/>
+ <bitmap id="studio.tree.sort.icon" file="window/tree-sort-icon.png" gammagroup="Tree Color"/>
+
+ <!-- Old List & Tree scrollbars -->
+ <bitmap id="studio.scrollbar.horizontal.background" file="window/window-elements.png" x="58" y="52" h="13" w="41" gammagroup="Scrollbar Backgrounds"/>
+ <bitmap id="studio.scrollbar.horizontal.left" file="window/window-elements.png" x="40" y="13" h="13" w="17" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="studio.scrollbar.horizontal.left.hilite" file="window/window-elements.png" x="40" y="26" h="13" w="17" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="studio.scrollbar.horizontal.left.pressed" file="window/window-elements.png" x="40" y="39" h="13" w="17" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="studio.scrollbar.horizontal.right" file="window/window-elements.png" x="98" y="13" h="13" w="17" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="studio.scrollbar.horizontal.right.hilite" file="window/window-elements.png" x="98" y="26" h="13" w="17" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="studio.scrollbar.horizontal.right.pressed" file="window/window-elements.png" x="98" y="39" h="13" w="17" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="studio.scrollbar.horizontal.button" file="window/window-elements.png" x="57" y="13" h="13" w="41" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="studio.scrollbar.horizontal.button.hilite" file="window/window-elements.png" x="57" y="26" h="13" w="41" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="studio.scrollbar.horizontal.button.pressed" file="window/window-elements.png" x="57" y="39" h="13" w="41" gammagroup="Scrollbar Buttons"/>
+
+ <bitmap id="studio.scrollbar.vertical.background" file="window/window-elements.png" x="39" y="55" h="41" w="13" gammagroup="Scrollbar Backgrounds"/>
+ <bitmap id="studio.scrollbar.vertical.left" file="window/window-elements.png" x="0" y="38" h="17" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="studio.scrollbar.vertical.left.hilite" file="window/window-elements.png" x="13" y="38" h="17" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="studio.scrollbar.vertical.left.pressed" file="window/window-elements.png" x="26" y="38" h="17" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="studio.scrollbar.vertical.right" file="window/window-elements.png" x="0" y="96" h="17" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="studio.scrollbar.vertical.right.hilite" file="window/window-elements.png" x="13" y="96" h="17" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="studio.scrollbar.vertical.right.pressed" file="window/window-elements.png" x="26" y="96" h="17" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="studio.scrollbar.vertical.button" file="window/window-elements.png" x="0" y="55" h="41" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="studio.scrollbar.vertical.button.hilite" file="window/window-elements.png" x="13" y="55" h="41" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="studio.scrollbar.vertical.button.pressed" file="window/window-elements.png" x="26" y="55" h="41" w="13" gammagroup="Scrollbar Buttons"/>
+
+ <!-- NewList & Tree scrollbars -->
+ <bitmap id="wasabi.scrollbar.horizontal.background" file="window/window-elements.png" x="58" y="52" h="13" w="41" gammagroup="Scrollbar Backgrounds"/>
+
+ <bitmap id="wasabi.scrollbar.horizontal.left" file="window/window-elements.png" x="40" y="13" h="13" w="17" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.horizontal.left.hover" file="window/window-elements.png" x="40" y="26" h="13" w="17" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.horizontal.left.pressed" file="window/window-elements.png" x="40" y="39" h="13" w="17" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.horizontal.right" file="window/window-elements.png" x="98" y="13" h="13" w="17" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.horizontal.right.hover" file="window/window-elements.png" x="98" y="26" h="13" w="17" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.horizontal.right.pressed" file="window/window-elements.png" x="98" y="39" h="13" w="17" gammagroup="Scrollbar Buttons"/>
+
+ <bitmap id="wasabi.scrollbar.horizontal.button.left" file="window/window-elements.png" x="57" y="13" h="13" w="3" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.horizontal.button.middle" file="window/window-elements.png" x="60" y="13" h="13" w="35" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.horizontal.button.right" file="window/window-elements.png" x="95" y="13" h="13" w="3" gammagroup="Scrollbar Buttons"/>
+
+ <bitmap id="wasabi.scrollbar.horizontal.button.left.hover" file="window/window-elements.png" x="57" y="26" h="13" w="3" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.horizontal.button.middle.hover" file="window/window-elements.png" x="60" y="26" h="13" w="35" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.horizontal.button.right.hover" file="window/window-elements.png" x="95" y="26" h="13" w="3" gammagroup="Scrollbar Buttons"/>
+
+ <bitmap id="wasabi.scrollbar.horizontal.button.left.pressed" file="window/window-elements.png" x="57" y="39" h="13" w="3" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.horizontal.button.middle.pressed" file="window/window-elements.png" x="60" y="39" h="13" w="35" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.horizontal.button.right.pressed" file="window/window-elements.png" x="95" y="39" h="13" w="3" gammagroup="Scrollbar Buttons"/>
+
+
+ <bitmap id="wasabi.scrollbar.vertical.background" file="window/window-elements.png" x="39" y="55" h="41" w="13" gammagroup="Scrollbar Backgrounds"/>
+
+ <bitmap id="wasabi.scrollbar.vertical.left" file="window/window-elements.png" x="0" y="38" h="17" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.vertical.left.hover" file="window/window-elements.png" x="13" y="38" h="17" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.vertical.left.pressed" file="window/window-elements.png" x="26" y="38" h="17" w="13" gammagroup="Scrollbar Buttons"/>
+
+ <bitmap id="wasabi.scrollbar.vertical.right" file="window/window-elements.png" x="0" y="96" h="17" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.vertical.right.hover" file="window/window-elements.png" x="13" y="96" h="17" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.vertical.right.pressed" file="window/window-elements.png" x="26" y="96" h="17" w="13" gammagroup="Scrollbar Buttons"/>
+
+ <bitmap id="wasabi.scrollbar.vertical.button.top" file="window/window-elements.png" x="0" y="55" h="3" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.vertical.button.middle" file="window/window-elements.png" x="0" y="58" h="35" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.vertical.button.bottom" file="window/window-elements.png" x="0" y="93" h="3" w="13" gammagroup="Scrollbar Buttons"/>
+
+ <bitmap id="wasabi.scrollbar.vertical.button.top.hover" file="window/window-elements.png" x="13" y="55" h="3" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.vertical.button.middle.hover" file="window/window-elements.png" x="13" y="58" h="35" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.vertical.button.bottom.hover" file="window/window-elements.png" x="13" y="93" h="3" w="13" gammagroup="Scrollbar Buttons"/>
+
+ <bitmap id="wasabi.scrollbar.vertical.button.top.pressed" file="window/window-elements.png" x="26" y="55" h="3" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.vertical.button.middle.pressed" file="window/window-elements.png" x="26" y="58" h="35" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.vertical.button.bottom.pressed" file="window/window-elements.png" x="26" y="93" h="3" w="13" gammagroup="Scrollbar Buttons"/>
+
+ <!-- labelwnd titles -->
+ <bitmap id="studio.label.upperLeft" file="window/window-elements.png" x="0" y="170" w="2" h="2" gammagroup="Backgrounds"/>
+ <bitmap id="studio.label.top" file="window/window-elements.png" x="2" y="170" w="101" h="2" gammagroup="Backgrounds"/>
+ <bitmap id="studio.label.upperRight" file="window/window-elements.png" x="103" y="170" w="2" h="2" gammagroup="Backgrounds"/>
+ <bitmap id="studio.label.left" file="window/window-elements.png" x="0" y="172" w="2" h="7" gammagroup="Backgrounds"/>
+ <bitmap id="studio.label.middle" file="window/window-elements.png" x="2" y="172" w="101" h="7" gammagroup="Backgrounds"/>
+ <bitmap id="studio.label.right" file="window/window-elements.png" x="103" y="172" w="2" h="7" gammagroup="Backgrounds"/>
+ <bitmap id="studio.label.lowerLeft" file="window/window-elements.png" x="0" y="179" w="2" h="2" gammagroup="Backgrounds"/>
+ <bitmap id="studio.label.bottom" file="window/window-elements.png" x="2" y="179" w="101" h="2" gammagroup="Backgrounds"/>
+ <bitmap id="studio.label.lowerRight" file="window/window-elements.png" x="103" y="179" w="2" h="2" gammagroup="Backgrounds"/>
+
+ <bitmap id="wasabi.label.top.left" file="window/window-elements.png" x="0" y="170" w="2" h="2" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.label.top" file="window/window-elements.png" x="2" y="170" w="101" h="2" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.label.top.right" file="window/window-elements.png" x="103" y="170" w="2" h="2" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.label.left" file="window/window-elements.png" x="0" y="172" w="2" h="7" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.label.middle" file="window/window-elements.png" x="2" y="172" w="101" h="7" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.label.right" file="window/window-elements.png" x="103" y="172" w="2" h="7" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.label.bottom.left" file="window/window-elements.png" x="0" y="179" w="2" h="2" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.label.bottom" file="window/window-elements.png" x="2" y="179" w="101" h="2" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.label.bottom.right" file="window/window-elements.png" x="103" y="179" w="2" h="2" gammagroup="Backgrounds"/>
+
+ <!-- default button -->
+ <bitmap id="studio.button.upperLeft" file="window/window-elements.png" x="1" y="135" h="2" w="2" gammagroup="Buttons"/>
+ <bitmap id="studio.button.top" file="window/window-elements.png" x="4" y="135" h="2" w="25" gammagroup="Buttons"/>
+ <bitmap id="studio.button.upperRight" file="window/window-elements.png" x="30" y="135" h="2" w="2" gammagroup="Buttons"/>
+ <bitmap id="studio.button.left" file="window/window-elements.png" x="1" y="138" h="25" w="2" gammagroup="Buttons"/>
+ <bitmap id="studio.button.middle" file="window/window-elements.png" x="4" y="138" h="25" w="25" gammagroup="Buttons"/>
+ <bitmap id="studio.button.right" file="window/window-elements.png" x="30" y="138" h="25" w="2" gammagroup="Buttons"/>
+ <bitmap id="studio.button.lowerLeft" file="window/window-elements.png" x="1" y="164" h="2" w="2" gammagroup="Buttons"/>
+ <bitmap id="studio.button.bottom" file="window/window-elements.png" x="4" y="164" h="2" w="25" gammagroup="Buttons"/>
+ <bitmap id="studio.button.lowerRight" file="window/window-elements.png" x="30" y="164 " h="2" w="2" gammagroup="Buttons"/>
+
+ <bitmap id="studio.button.pressed.upperLeft" file="window/window-elements.png" x="67" y="135" h="2" w="2" gammagroup="Buttons"/>
+ <bitmap id="studio.button.pressed.top" file="window/window-elements.png" x="70" y="135" h="2" w="25" gammagroup="Buttons"/>
+ <bitmap id="studio.button.pressed.upperRight" file="window/window-elements.png" x="96" y="135" h="2" w="2" gammagroup="Buttons"/>
+ <bitmap id="studio.button.pressed.left" file="window/window-elements.png" x="67" y="138" h="25" w="2" gammagroup="Buttons"/>
+ <bitmap id="studio.button.pressed.middle" file="window/window-elements.png" x="70" y="138" h="25" w="25" gammagroup="Buttons"/>
+ <bitmap id="studio.button.pressed.right" file="window/window-elements.png" x="96" y="138" h="25" w="2" gammagroup="Buttons"/>
+ <bitmap id="studio.button.pressed.lowerLeft" file="window/window-elements.png" x="67" y="164" h="2" w="2" gammagroup="Buttons"/>
+ <bitmap id="studio.button.pressed.bottom" file="window/window-elements.png" x="70" y="164" h="2" w="25" gammagroup="Buttons"/>
+ <bitmap id="studio.button.pressed.lowerRight" file="window/window-elements.png" x="96" y="164 " h="2" w="2" gammagroup="Buttons"/>
+
+ <!-- Component status bar -->
+ <bitmap id="studio.statusbar.left" file="window/window-elements.png" x="94" y="0" h="12" w="12"/>
+ <bitmap id="studio.statusbar.middle" file="window/window-elements.png" x="107" y="0" h="12" w="12"/>
+ <bitmap id="studio.statusbar.right" file="window/window-elements.png" x="120" y="0" h="12" w="12"/>
+
+ <!-- Checkboxes
+ <bitmap id="studio.button.checkbox.checked" file="window/window-elements.png" x="58" y="77" h="11" w="11"/>
+ <bitmap id="studio.button.checkbox.unchecked" file="window/window-elements.png" x="58" y="66" h="11" w="11"/>
+ -->
+
+ <!-- Standard Configuration Widgets -->
+ <bitmap id="wasabi.button.checkbox" file="window/window-elements.png" x="79" y="77" h="7" w="7" gammagroup="Checkboxes and Radio Buttons"/>
+ <bitmap id="wasabi.button.checkbox.pressed" file="window/window-elements.png" x="58" y="77" h="7" w="7" gammagroup="Checkboxes and Radio Buttons"/>
+
+ <bitmap id="wasabi.button.checkbox.xbox" file="window/window-elements.png" x="79" y="77" h="7" w="7" gammagroup="Checkboxes and Radio Buttons"/>
+ <bitmap id="wasabi.button.checkbox.xbox.pressed" file="window/window-elements.png" x="65" y="77" h="7" w="7" gammagroup="Checkboxes and Radio Buttons"/>
+
+ <bitmap id="wasabi.button.radio.background" file="window/window-elements.png" x="58" y="66" h="11" w="11" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.button.radio.background.display" file="window/window-elements.png" x="69" y="66" h="9" w="9" gammagroup="Display Backgrounds"/>
+ <bitmap id="wasabi.button.radio" file="window/window-elements.png" x="79" y="77" h="7" w="7" gammagroup="Checkboxes and Radio Buttons"/>
+ <bitmap id="wasabi.button.radio.pressed" file="window/window-elements.png" x="72" y="77" h="7" w="7" gammagroup="Checkboxes and Radio Buttons"/>
+
+
+ <!-- Popup menus -->
+ <bitmap id="studio.button.checkmark" file="menu/window-elements.png" x="20" y="8" h="9" w="10"/>
+ <bitmap id="studio.popup.submenuIcon" file="menu/window-elements.png" x="22" y="17" h="9" w="10"/>
+ <bitmap id="studio.popup.seperator" file="menu/window-elements.png" x="8" y="13" h="6" w="11" gammagroup="Menus"/>
+ <bitmap id="studio.popup.background" file="menu/background.png" gammagroup="Menus"/>
+ <bitmap id="studio.popup.border.topLeft" file="menu/window-elements.png" x="0" y="0" h="2" w="2" gammagroup="Menus"/>
+ <bitmap id="studio.popup.border.top" file="menu/window-elements.png" x="8" y="0" h="2" w="8" gammagroup="Menus"/>
+ <bitmap id="studio.popup.border.topRight" file="menu/window-elements.png" x="33" y="0" h="2" w="4" gammagroup="Menus"/>
+ <bitmap id="studio.popup.border.left" file="menu/window-elements.png" x="0" y="8" h="8" w="2" gammagroup="Menus"/>
+ <bitmap id="studio.popup.border.right" file="menu/window-elements.png" x="33" y="8" h="8" w="4" gammagroup="Menus"/>
+ <bitmap id="studio.popup.border.bottomLeft" file="menu/window-elements.png" x="0" y="35" h="2" w="2" gammagroup="Menus"/>
+ <bitmap id="studio.popup.border.bottom" file="menu/window-elements.png" x="8" y="35" h="2" w="8" gammagroup="Menus"/>
+ <bitmap id="studio.popup.border.bottomRight" file="menu/window-elements.png" x="33" y="35" h="2" w="4" gammagroup="Menus"/>
+ <bitmap id="studio.popup.selection.left" file="menu/selbar.png" x="0" y="0" w="5" h="10" gammagroup="Menus"/>
+ <bitmap id="studio.popup.selection.right" file="menu/selbar.png" x="6" y="0" w="5" h="10" gammagroup="Menus"/>
+ <bitmap id="studio.popup.selection.center" file="menu/selbar.png" x="27" y="0" w="20" h="10" gammagroup="Menus"/>
+
+ <bitmap id="wasabi.popup.menu.check" file="menu/window-elements.png" x="20" y="8" h="9" w="10"/>
+ <bitmap id="wasabi.popup.menu.submenu" file="menu/window-elements.png" x="22" y="17" h="9" w="10"/>
+ <bitmap id="wasabi.popup.menu.seperator" file="menu/window-elements.png" x="8" y="13" h="6" w="11" gammagroup="Menus"/>
+ <bitmap id="wasabi.popup.menu.background" file="menu/background.png" gammagroup="Menus"/>
+ <bitmap id="wasabi.popup.menu.border.topLeft" file="menu/window-elements.png" x="0" y="0" h="2" w="2" gammagroup="Menus"/>
+ <bitmap id="wasabi.popup.menu.border.top" file="menu/window-elements.png" x="8" y="0" h="2" w="8" gammagroup="Menus"/>
+ <bitmap id="wasabi.popup.menu.border.topRight" file="menu/window-elements.png" x="33" y="0" h="2" w="4" gammagroup="Menus"/>
+ <bitmap id="wasabi.popup.menu.border.left" file="menu/window-elements.png" x="0" y="8" h="8" w="2" gammagroup="Menus"/>
+ <bitmap id="wasabi.popup.menu.border.right" file="menu/window-elements.png" x="33" y="8" h="8" w="4" gammagroup="Menus"/>
+ <bitmap id="wasabi.popup.menu.border.bottomLeft" file="menu/window-elements.png" x="0" y="35" h="2" w="2" gammagroup="Menus"/>
+ <bitmap id="wasabi.popup.menu.border.bottom" file="menu/window-elements.png" x="8" y="35" h="2" w="8" gammagroup="Menus"/>
+ <bitmap id="wasabi.popup.menu.border.bottomRight" file="menu/window-elements.png" x="33" y="35" h="2" w="4" gammagroup="Menus"/>
+ <bitmap id="wasabi.popup.menu.selection.left" file="menu/selbar.png" x="0" y="0" w="5" h="10" gammagroup="Menus"/>
+ <bitmap id="wasabi.popup.menu.selection.right" file="menu/selbar.png" x="6" y="0" w="5" h="10" gammagroup="Menus"/>
+ <bitmap id="wasabi.popup.menu.selection.center" file="menu/selbar.png" x="27" y="0" w="20" h="10" gammagroup="Menus"/>
+
+ <!-- Title objects -->
+ <bitmap id="wasabi.titlebar.left.active" file="window/window-elements.png" x="106" y="118" h="9" w="7" gammagroup="Titlebars"/>
+ <bitmap id="wasabi.titlebar.center.active" file="window/window-elements.png" x="114" y="118" h="9" w="7" gammagroup="Titlebars"/>
+ <bitmap id="wasabi.titlebar.right.active" file="window/window-elements.png" x="122" y="118" h="9" w="7" gammagroup="Titlebars"/>
+ <bitmap id="wasabi.titlebar.left.inactive" file="window/window-elements.png" x="106" y="127" h="9" w="7" gammagroup="Titlebars"/>
+ <bitmap id="wasabi.titlebar.center.inactive" file="window/window-elements.png" x="114" y="127" h="9" w="7" gammagroup="Titlebars"/>
+ <bitmap id="wasabi.titlebar.right.inactive" file="window/window-elements.png" x="122" y="127" h="9" w="7" gammagroup="Titlebars"/>
+
+ <!-- Window Controls -->
+
+ <bitmap id="wasabi.button.sysmenu" file="window/window-elements.png" x="170" y="56" h="9" w="14" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.sysmenu.pressed" file="window/window-elements.png" x="170" y="65" h="9" w="14" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.minimize" file="window/window-elements.png" x="146" y="56" h="9" w="14" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.minimize.pressed" file="window/window-elements.png" x="146" y="65" h="9" w="14" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.winshade" file="window/window-elements.png" x="132" y="56" h="9" w="14" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.winshade.pressed" file="window/window-elements.png" x="132" y="65" h="9" w="14" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.close" file="window/window-elements.png" x="184" y="56" h="9" w="14" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.close.pressed" file="window/window-elements.png" x="184" y="65" h="9" w="14" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.less" file="window/window-elements.png" x="184" y="74" h="9" w="14" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.less.pressed" file="window/window-elements.png" x="184" y="83" h="9" w="14" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.more" file="window/window-elements.png" x="170" y="74" h="9" w="14" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.more.pressed" file="window/window-elements.png" x="170" y="83" h="9" w="14" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.appmenu" file="window/window-elements.png" x="160" y="74" h="9" w="10" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.appmenu.pressed" file="window/window-elements.png" x="160" y="83" h="9" w="10" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.exit" file="window/window-elements.png" x="160" y="56" h="9" w="10" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.exit.pressed" file="window/window-elements.png" x="160" y="65" h="9" w="10" gammagroup="Buttons"/>
+
+ <bitmap id="wasabi.button.close.flat" file="window/window-elements.png" x="160" y="56" h="9" w="10" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.close.flat.pressed" file="window/window-elements.png" x="160" y="65" h="9" w="10" gammagroup="Buttons"/>
+
+ <!-- Panel Bevels -->
+
+ <bitmap id="wasabi.panel.top.left" file="window/window-elements.png" x="19" y="114" h="2" w="2" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.panel.top" file="window/window-elements.png" x="21" y="114" h="2" w="16" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.panel.top.right" file="window/window-elements.png" x="37" y="114" h="2" w="2" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.panel.left" file="window/window-elements.png" x="19" y="116" h="16" w="2" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.panel.right" file="window/window-elements.png" x="37" y="116" h="16" w="2" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.panel.bottom.left" file="window/window-elements.png" x="19" y="132" h="2" w="2" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.panel.bottom" file="window/window-elements.png" x="21" y="132" h="2" w="16" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.panel.bottom.right" file="window/window-elements.png" x="37" y="132" h="2" w="2" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.panel.tint" file="window/window-elements.png" x="24" y="119" h="10" w="10" gammagroup="Backgrounds"/>
+
+ <!-- Object Frame-->
+
+ <bitmap id="wasabi.objectframe.top.left" file="window/window-elements.png" x="0" y="114" h="1" w="1" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.objectframe.top" file="window/window-elements.png" x="1" y="114" h="1" w="17" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.objectframe.top.right" file="window/window-elements.png" x="18" y="114" h="1" w="1" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.objectframe.left" file="window/window-elements.png" x="0" y="115" h="17" w="1" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.objectframe.center" file="window/window-elements.png" x="1" y="115" h="17" w="17" gammagroup="Display Backgrounds"/>
+ <bitmap id="wasabi.objectframe.right" file="window/window-elements.png" x="18" y="115" h="17" w="1" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.objectframe.bottom.left" file="window/window-elements.png" x="0" y="132" h="1" w="1" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.objectframe.bottom" file="window/window-elements.png" x="1" y="132" h="1" w="17" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.objectframe.bottom.right" file="window/window-elements.png" x="18" y="132" h="1" w="1" gammagroup="Backgrounds"/>
+
+ <!-- Combo Box List-->
+
+ <bitmap id="wasabi.dropdownlist.list.top.left" file="window/window-elements.png" x="40" y="124" h="1" w="1"/>
+ <bitmap id="wasabi.dropdownlist.list.top" file="window/window-elements.png" x="41" y="124" h="1" w="10"/>
+ <bitmap id="wasabi.dropdownlist.list.top.right" file="window/window-elements.png" x="51" y="124" h="1" w="1"/>
+ <bitmap id="wasabi.dropdownlist.list.left" file="window/window-elements.png" x="40" y="125" h="8" w="1"/>
+ <bitmap id="wasabi.dropdownlist.list.center" file="window/window-elements.png" x="41" y="125" h="8" w="10" gammagroup="Display Backgrounds"/>
+ <bitmap id="wasabi.dropdownlist.list.right" file="window/window-elements.png" x="51" y="125" h="8" w="1"/>
+ <bitmap id="wasabi.dropdownlist.list.bottom.left" file="window/window-elements.png" x="40" y="133" h="1" w="1"/>
+ <bitmap id="wasabi.dropdownlist.list.bottom" file="window/window-elements.png" x="41" y="133" h="1" w="10"/>
+ <bitmap id="wasabi.dropdownlist.list.bottom.right" file="window/window-elements.png" x="51" y="133" h="1" w="1"/>
+
+ <!-- Embedded Window -->
+
+ <bitmap id="wasabi.window.top.left" file="window/window-elements.png" x="0" y="114" h="1" w="1" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.window.top" file="window/window-elements.png" x="1" y="114" h="1" w="17" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.window.top.right" file="window/window-elements.png" x="18" y="114" h="1" w="1" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.window.left" file="window/window-elements.png" x="0" y="115" h="17" w="1" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.window.center" file="window/window-elements.png" x="1" y="115" h="17" w="17" gammagroup="Display Backgrounds"/>
+ <bitmap id="wasabi.window.right" file="window/window-elements.png" x="18" y="115" h="17" w="1" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.window.bottom.left" file="window/window-elements.png" x="0" y="132" h="1" w="1" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.window.bottom" file="window/window-elements.png" x="1" y="132" h="1" w="17" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.window.bottom.right" file="window/window-elements.png" x="18" y="132" h="1" w="1" gammagroup="Backgrounds"/>
+
+ <!-- Generic Button -->
+
+ <bitmap id="wasabi.button.label.arrow.up" file="window/window-elements.png" x="137" y="75" h="4" w="7" gammagroup="Button Fonts"/>
+ <bitmap id="wasabi.button.label.arrow.down" file="window/window-elements.png" x="137" y="86" h="4" w="7" gammagroup="Button Fonts"/>
+ <bitmap id="wasabi.button.label.arrow.left" file="window/window-elements.png" x="133" y="79" h="7" w="4" gammagroup="Button Fonts"/>
+ <bitmap id="wasabi.button.label.arrow.right" file="window/window-elements.png" x="144" y="79" h="7" w="4" gammagroup="Button Fonts"/>
+ <bitmap id="wasabi.button.label.ellipses" file="window/window-elements.png" x="138" y="92" h="1" w="5" gammagroup="Button Fonts"/>
+
+ <bitmap id="wasabi.button.top.left" file="window/window-elements.png" x="0" y="134" h="4" w="4" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.top" file="window/window-elements.png" x="4" y="134" h="4" w="25" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.top.right" file="window/window-elements.png" x="29" y="134" h="4" w="4" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.left" file="window/window-elements.png" x="0" y="138" h="25" w="4" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.center" file="window/window-elements.png" x="4" y="138" h="25" w="25" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.right" file="window/window-elements.png" x="29" y="138" h="25" w="4" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.bottom.left" file="window/window-elements.png" x="0" y="163" h="4" w="4" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.bottom" file="window/window-elements.png" x="4" y="163" h="4" w="25" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.bottom.right" file="window/window-elements.png" x="29" y="163" h="4" w="4" gammagroup="Buttons"/>
+
+ <bitmap id="wasabi.button.hover.top.left" file="window/window-elements.png" x="33" y="134" h="4" w="4" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.hover.top" file="window/window-elements.png" x="37" y="134" h="4" w="25" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.hover.top.right" file="window/window-elements.png" x="62" y="134" h="4" w="4" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.hover.left" file="window/window-elements.png" x="33" y="138" h="25" w="4" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.hover.center" file="window/window-elements.png" x="37" y="138" h="25" w="25" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.hover.right" file="window/window-elements.png" x="62" y="138" h="25" w="4" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.hover.bottom.left" file="window/window-elements.png" x="33" y="163" h="4" w="4" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.hover.bottom" file="window/window-elements.png" x="37" y="163" h="4" w="25" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.hover.bottom.right" file="window/window-elements.png" x="62" y="163" h="4" w="4" gammagroup="Buttons"/>
+
+ <bitmap id="wasabi.button.pressed.top.left" file="window/window-elements.png" x="66" y="134" h="4" w="4" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.pressed.top" file="window/window-elements.png" x="70" y="134" h="4" w="25" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.pressed.top.right" file="window/window-elements.png" x="95" y="134" h="4" w="4" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.pressed.left" file="window/window-elements.png" x="66" y="138" h="25" w="4" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.pressed.center" file="window/window-elements.png" x="70" y="138" h="25" w="25" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.pressed.right" file="window/window-elements.png" x="95" y="138" h="25" w="4" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.pressed.bottom.left" file="window/window-elements.png" x="66" y="163" h="4" w="4" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.pressed.bottom" file="window/window-elements.png" x="70" y="163" h="4" w="25" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.pressed.bottom.right" file="window/window-elements.png" x="95" y="163" h="4" w="4" gammagroup="Buttons"/>
+
+ <!-- Generic Sliders -->
+
+ <bitmap id="wasabi.slider.horizontal.left" file="window/window-elements.png" x="106" y="149" h="8" w="8" gammagroup="Sliders Backgrounds"/>
+ <bitmap id="wasabi.slider.horizontal.middle" file="window/window-elements.png" x="115" y="149" h="8" w="10" gammagroup="Sliders Backgrounds"/>
+ <bitmap id="wasabi.slider.horizontal.right" file="window/window-elements.png" x="126" y="149" h="8" w="8" gammagroup="Sliders Backgrounds"/>
+
+ <bitmap id="wasabi.slider.vertical.top" file="window/window-elements.png" x="138" y="136" h="8" w="8" gammagroup="Sliders Backgrounds"/>
+ <bitmap id="wasabi.slider.vertical.middle" file="window/window-elements.png" x="138" y="145" h="10" w="8" gammagroup="Sliders Backgrounds"/>
+ <bitmap id="wasabi.slider.vertical.bottom" file="window/window-elements.png" x="138" y="156" h="8" w="8" gammagroup="Sliders Backgrounds"/>
+
+ <bitmap id="wasabi.slider.horizontal.button" file="window/window-elements.png" x="106" y="136" h="13" w="15" gammagroup="Buttons"/>
+ <bitmap id="wasabi.slider.horizontal.button.pressed" file="window/window-elements.png" x="121" y="136" h="13" w="15" gammagroup="Buttons"/>
+
+ <bitmap id="wasabi.slider.vertical.button" file="window/window-elements.png" x="106" y="157" h="12" w="16" gammagroup="Buttons"/>
+ <bitmap id="wasabi.slider.vertical.button.pressed" file="window/window-elements.png" x="122" y="157" h="12" w="16" gammagroup="Buttons"/>
+
+ <!-- Generic Group Box -->
+
+ <bitmap id="wasabi.groupbox.top.left" file="window/window-elements.png" x="116" y="13" h="3" w="3" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.groupbox.top" file="window/window-elements.png" x="120" y="13" h="3" w="8" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.groupbox.top.right" file="window/window-elements.png" x="129" y="13" h="3" w="3" gammagroup="Backgrounds"/>
+
+ <bitmap id="wasabi.groupbox.left" file="window/window-elements.png" x="116" y="17" h="8" w="3" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.groupbox.right" file="window/window-elements.png" x="129" y="17" h="8" w="3" gammagroup="Backgrounds"/>
+
+ <bitmap id="wasabi.groupbox.bottom.left" file="window/window-elements.png" x="116" y="26" h="3" w="3" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.groupbox.bottom" file="window/window-elements.png" x="120" y="26" h="3" w="8" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.groupbox.bottom.right" file="window/window-elements.png" x="129" y="26" h="3" w="3" gammagroup="Backgrounds"/>
+
+</elements> \ No newline at end of file
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/system-colors.xml b/Src/resources/data/freeform/xml/wasabi/xml/system-colors.xml
new file mode 100644
index 00000000..a4c1d37f
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/system-colors.xml
@@ -0,0 +1,87 @@
+<!--
+
+ system-colors.xml
+
+
+ this file contains all the static color definitions for Wasabi. An objects that does not rely on a group will use
+ one of these elements to decide what color to use.
+
+
+
+ Just like in system-elements.xml, the elements beginning with "studio." and "common." have
+ been moved to system-element-aliases.xml for backwards compatibility. If you are building a
+ skin for Winamp3 (Wasabi Build 488), you should override these element IDs and include the
+ aliases file in your own skin.
+
+-->
+
+
+<elements>
+
+<!-- Generic Trees -->
+ <color id="wasabi.tree.text" value="196,255,196" gammagroup="Text"/> <!-- Item text color -->
+ <color id="wasabi.tree.selected" value="0,0,128" gammagroup="Text Backgrounds"/> <!-- Select item text background color -->
+ <color id="wasabi.tree.hiliteddrop" value="0,64,128"/> <!-- Drop marker color -->
+
+
+<!-- Generic Lists -->
+ <color id="wasabi.list.text" value="196,255,196" gammagroup="Text"/> <!-- List item text color -->
+ <color id="wasabi.list.item.selected" value="0,0,128" gammagroup="Text Backgrounds"/> <!-- Selected item text background color -->
+ <color id="wasabi.list.item.focused" value="0,0,128" gammagroup="Text Backgrounds"/> <!-- Focused item text background color -->
+ <color id="wasabi.list.column.background" value="102,102,102" gammagroup="Text Backgrounds"/> <!-- Columns background color -->
+ <color id="wasabi.list.column.text" value="255,255,255" gammagroup="Text"/> <!-- Columns text color -->
+ <color id="wasabi.list.item.selected.fg" value="255,255,255" gammagroup="Text"/> <!-- Selected item text foreground color -->
+ <color id="wasabi.list.column.separator" value="128,128,128" gammagroup="Backgrounds"/> <!-- Color of line between columns -->
+
+ <!-- Haven't changed listwnd.cpp yet!!! -->
+
+
+<!-- Item Lists, Lists with playable items -->
+ <color id="wasabi.itemlist.outline.current" value="255,255,0"/> <!-- Currently playing outline color -->
+ <color id="wasabi.itemlist.outline.focus" value="0,128,128"/> <!-- Focused item dashed outline color -->
+ <color id="wasabi.itemlist.selborder" value="64,64,196"/>
+
+
+<!-- Message box -->
+ <color id="wasabi.msgBox.background" value="32,32,32" gammagroup="Backgrounds"/> <!-- Messagebox background color -->
+ <color id="wasabi.textBar.text" value="248,248,248" gammagroup="Text"/> <!-- Text object & message box text color -->
+ <color id="wasabi.textBar.background" value="32,32,32" gammagroup="Text Backgrounds"/> <!-- Text object & message box text background color -->
+
+
+<!-- Buttons -->
+ <color id="wasabi.button.text" value="0,0,0" gammagroup="Text"/> <!-- Buttons text color -->
+ <color id="wasabi.button.hiliteText" value="0,240,0" gammagroup="Text"/> <!-- Buttons hilite text color, used by tab windows-->
+ <color id="wasabi.button.dimmedText" value="64,64,64" gammagroup="Text"/> <!-- Buttons dimmed text color, when disabled -->
+
+
+<!-- Popup menus -->
+ <color id="wasabi.popup.text" value="0,0,0" gammagroup="Text"/> <!-- Menu items text color -->
+ <color id="wasabi.popup.hiliteText" value="255,255,255" gammagroup="Text"/> <!-- Hilited item text color -->
+ <color id="wasabi.popup.dimmedText" value="64,64,64" gammagroup="Text"/> <!-- Disabled item text color -->
+
+
+<!-- Components -->
+ <color id="wasabi.component.title.foreground" value="255,255,255" gammagroup="Text"/> <!-- Old title bar text color when using TTF -->
+ <color id="wasabi.component.title.border" value="1,1,1" gammagroup="Text Backgrounds"/> <!-- Old title bar text outline when using TTF -->
+
+
+<!-- labeled windows -->
+ <color id="wasabi.labelwnd.foreground" value="220,220,220" gammagroup="Text"/> <!-- Text foreground color -->
+ <color id="wasabi.labelwnd.background" value="0,0,0" gammagroup="Text Backgrounds"/> <!-- Text drop shadow color -->
+
+
+<!-- edit wnds -->
+ <color id="wasabi.edit.selection" value="127,127,127" gammagroup="Text Backgrounds"/> <!-- Selected text -->
+ <color id="wasabi.edit.text" value="196,255,196" gammagroup="Text"/> <!--Text -->
+ <color id="wasabi.edit.background" value="0,0,0" gammagroup="Text Backgrounds"/> <!--Text background -->
+
+</elements>
+
+<elements>
+ <color id="wasabi.text.color" value="255,255,255" gammagroup="Text"/>
+ <color id="wasabi.text.color.inverse" value="0,0,0" gammagroup="Text Inverse"/>
+</elements>
+
+<include file="system-element-aliases.xml"/>
+<!-- also included in system-elements.xml, but it doesnt hurt to be thorough. I think. :) -->
+
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/system-element-aliases.xml b/Src/resources/data/freeform/xml/wasabi/xml/system-element-aliases.xml
new file mode 100644
index 00000000..027226c8
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/system-element-aliases.xml
@@ -0,0 +1,226 @@
+<!-- This file contains aliases to old ids for backward compatibility to 488 (winamp3.0) -->
+
+
+<!-- ============== -->
+<!-- BITMAP ALIASES -->
+<!-- ============== -->
+<elements>
+
+<!-- Base Texture -->
+ <elementalias id="studio.basetexture" target="wasabi.basetexture" />
+
+
+<!-- Frame windows -->
+ <elementalias id="studio.framewnd.verticaldivider" target="wasabi.framewnd.verticaldivider"/>
+ <elementalias id="studio.framewnd.verticalgrabber" target="wasabi.framewnd.verticalgrabber"/>
+ <elementalias id="studio.framewnd.horizontaldivider" target="wasabi.framewnd.horizontaldivider"/>
+ <elementalias id="studio.framewnd.horizontalgrabber" target="wasabi.framewnd.horizontalgrabber"/>
+ <elementalias id="studio.framewnd.windowshade" target="wasabi.framewnd.windowshade"/>
+
+<!-- Generic Lists and Trees -->
+ <elementalias id="studio.list.background" target="wasabi.list.background"/>
+ <elementalias id="sutdio.list.background" target="wasabi.list.background"/> <!-- typos suck -->
+ <elementalias id="studio.tree.background" target="wasabi.tree.background"/>
+ <elementalias id="studio.tree.tab.closed" target="wasabi.tree.tab.closed"/>
+ <elementalias id="studio.tree.tab.open" target="wasabi.tree.tab.open"/>
+ <elementalias id="studio.tree.link.top.bottom" target="wasabi.tree.link.top.bottom"/>
+ <elementalias id="studio.tree.link.top.right" target="wasabi.tree.link.top.right"/>
+ <elementalias id="studio.tree.link.top.rightBottom" target="wasabi.tree.link.top.rightBottom"/>
+ <elementalias id="studio.tree.link.tab.top.bottom" target="wasabi.tree.link.tab.top.bottom"/>
+ <elementalias id="studio.tree.link.tab.top.right" target="wasabi.tree.link.tab.top.right"/>
+ <elementalias id="studio.tree.link.tab.top.rightBottom" target="wasabi.tree.link.tab.top.rightBottom"/>
+
+<!-- Scrollbars (on List, Tree, etc...) -->
+ <elementalias id="studio.scrollbar.horizontal.left" target="wasabi.scrollbar.horizontal.left"/>
+ <elementalias id="studio.scrollbar.horizontal.left.hilite" target="wasabi.scrollbar.horizontal.left.hover"/>
+ <elementalias id="studio.scrollbar.horizontal.left.pressed" target="wasabi.scrollbar.horizontal.left.pressed"/>
+ <elementalias id="studio.scrollbar.horizontal.right" target="wasabi.scrollbar.horizontal.right"/>
+ <elementalias id="studio.scrollbar.horizontal.right.hilite" target="wasabi.scrollbar.horizontal.right.hover"/>
+ <elementalias id="studio.scrollbar.horizontal.right.pressed" target="wasabi.scrollbar.horizontal.right.pressed"/>
+ <elementalias id="studio.scrollbar.horizontal.button" target="wasabi.scrollbar.horizontal.button"/>
+ <elementalias id="studio.scrollbar.horizontal.button.hilite" target="wasabi.scrollbar.horizontal.button.hover"/>
+ <elementalias id="studio.scrollbar.horizontal.button.pressed" target="wasabi.scrollbar.horizontal.button.pressed"/>
+ <elementalias id="studio.scrollbar.vertical.left" target="wasabi.scrollbar.vertical.left"/>
+ <elementalias id="studio.scrollbar.vertical.left.hilite" target="wasabi.scrollbar.vertical.left.hover"/>
+ <elementalias id="studio.scrollbar.vertical.left.pressed" target="wasabi.scrollbar.vertical.left.pressed"/>
+ <elementalias id="studio.scrollbar.vertical.right" target="wasabi.scrollbar.vertical.right"/>
+ <elementalias id="studio.scrollbar.vertical.right.hilite" target="wasabi.scrollbar.vertical.right.hover"/>
+ <elementalias id="studio.scrollbar.vertical.right.pressed" target="wasabi.scrollbar.vertical.right.pressed"/>
+ <elementalias id="studio.scrollbar.vertical.button" target="wasabi.scrollbar.vertical.button"/>
+ <elementalias id="studio.scrollbar.vertical.button.hilite" target="wasabi.scrollbar.vertical.button.hover"/>
+ <elementalias id="studio.scrollbar.vertical.button.pressed" target="wasabi.scrollbar.vertical.button.pressed"/>
+
+
+<!-- labelwnd titles -->
+ <elementalias id="studio.label.upperleft" target="wasabi.label.top.left"/>
+ <elementalias id="studio.label.top" target="wasabi.label.top"/>
+ <elementalias id="studio.label.upperright" target="wasabi.label.top.right"/>
+ <elementalias id="studio.label.left" target="wasabi.label.left"/>
+ <elementalias id="studio.label.middle" target="wasabi.label.middle"/>
+ <elementalias id="studio.label.right" target="wasabi.label.right"/>
+ <elementalias id="studio.label.lowerleft" target="wasabi.label.bottom.left"/>
+ <elementalias id="studio.label.bottom" target="wasabi.label.bottom"/>
+ <elementalias id="studio.label.lowerright" target="wasabi.label.bottom.right"/>
+
+
+<!-- default button -->
+ <elementalias id="studio.button.upperLeft" target="wasabi.button.top.left"/>
+ <elementalias id="studio.button.top" target="wasabi.button.top"/>
+ <elementalias id="studio.button.upperRight" target="wasabi.button.top.right"/>
+ <elementalias id="studio.button.left" target="wasabi.button.left"/>
+ <elementalias id="studio.button.middle" target="wasabi.button.middle"/>
+ <elementalias id="studio.button.right" target="wasabi.button.right"/>
+ <elementalias id="studio.button.lowerLeft" target="wasabi.button.bottom.left"/>
+ <elementalias id="studio.button.bottom" target="wasabi.button.bottom"/>
+ <elementalias id="studio.button.lowerRight" target="wasabi.button.bottom.right"/>
+ <elementalias id="studio.button.pressed.upperLeft" target="wasabi.button.pressed.top.left"/>
+ <elementalias id="studio.button.pressed.top" target="wasabi.button.pressed.top"/>
+ <elementalias id="studio.button.pressed.upperRight" target="wasabi.button.pressed.top.right"/>
+ <elementalias id="studio.button.pressed.left" target="wasabi.button.pressed.left"/>
+ <elementalias id="studio.button.pressed.middle" target="wasabi.button.pressed.middle"/>
+ <elementalias id="studio.button.pressed.right" target="wasabi.button.pressed.right"/>
+ <elementalias id="studio.button.pressed.lowerLeft" target="wasabi.button.pressed.bottom.left"/>
+ <elementalias id="studio.button.pressed.bottom" target="wasabi.button.pressed.bottom"/>
+ <elementalias id="studio.button.pressed.lowerRight" target="wasabi.button.pressed.bottom.right"/>
+
+
+<!-- Popup menus -->
+ <elementalias id="studio.button.checkmark" target="wasabi.popup.menu.check"/>
+ <elementalias id="studio.popup.submenuIcon" target="wasabi.popup.menu.submenu"/>
+ <elementalias id="studio.popup.seperator" target="wasabi.popup.menu.seperator"/>
+ <elementalias id="studio.popup.background" target="wasabi.popup.menu.background"/>
+ <elementalias id="studio.popup.border.topLeft" target="wasabi.popup.menu.border.topLeft"/>
+ <elementalias id="studio.popup.border.top" target="wasabi.popup.menu.border.top"/>
+ <elementalias id="studio.popup.border.topRight" target="wasabi.popup.menu.border.topRight"/>
+ <elementalias id="studio.popup.border.left" target="wasabi.popup.menu.border.left"/>
+ <elementalias id="studio.popup.border.right" target="wasabi.popup.menu.border.right"/>
+ <elementalias id="studio.popup.border.bottomLeft" target="wasabi.popup.menu.border.bottomLeft"/>
+ <elementalias id="studio.popup.border.bottom" target="wasabi.popup.menu.border.bottom"/>
+ <elementalias id="studio.popup.border.bottomRight" target="wasabi.popup.menu.border.bottomRight"/>
+ <elementalias id="studio.popup.selection.left" target="wasabi.popup.menu.selection.left"/>
+ <elementalias id="studio.popup.selection.right" target="wasabi.popup.menu.selection.right"/>
+ <elementalias id="studio.popup.selection.center" target="wasabi.popup.menu.selection.center"/>
+
+<!-- Sliders -->
+ <elementalias id="studio.seekbar.left" target="wasabi.slider.horizontal.left"/>
+ <elementalias id="studio.seekbar.middle" target="wasabi.slider.horizontal.middle"/>
+ <elementalias id="studio.seekbar.right" target="wasabi.slider.horizontal.right"/>
+ <elementalias id="studio.seekbar.top" target="wasabi.slider.vertical.top"/>
+ <elementalias id="studio.seekbar.middle" target="wasabi.slider.horizontal.middle"/>
+ <elementalias id="studio.seekbar.bottom" target="wasabi.slider.vertical.bottom"/>
+ <elementalias id="studio.seekbar.button.nonpressed" target="wasabi.slider.horizontal.button"/>
+ <elementalias id="studio.seekbar.button.pressed" target="wasabi.slider.horizontal.button.pressed"/>
+
+</elements>
+
+
+<!-- ============= -->
+<!-- COLOR ALIASES -->
+<!-- ============= -->
+<elements>
+
+<!-- Generic Trees -->
+ <elementalias id="studio.tree.text" target="wasabi.tree.text"/>
+ <elementalias id="studio.tree.selected" target="wasabi.tree.selected"/>
+ <elementalias id="studio.tree.hiliteddrop" target="wasabi.tree.hiliteddrop"/>
+
+
+<!-- Generic Lists -->
+ <elementalias id="studio.list.text" target="wasabi.list.text"/>
+ <elementalias id="studio.list.item.selected" target="wasabi.list.item.selected"/>
+ <elementalias id="studio.list.item.focused" target="wasabi.list.item.focused"/>
+ <elementalias id="studio.list.column.background" target="wasabi.list.column.background"/>
+ <elementalias id="studio.list.column.text" target="wasabi.list.column.text"/>
+ <elementalias id="studio.list.item.selected.fg" target="wasabi.list.item.selected.fg"/>
+ <elementalias id="studio.list.column.separator" target="wasabi.list.column.separator"/>
+
+
+<!-- Item Lists, Lists with playable items -->
+ <elementalias id="common.itemlist.outline.current" target="wasabi.itemlist.outline.current"/>
+ <elementalias id="common.itemlist.outline.focus" target="wasabi.itemlist.outline.focus"/>
+ <elementalias id="common.itemlist.selborder" target="wasabi.itemlist.selborder"/>
+
+
+<!-- Message box -->
+ <elementalias id="studio.msgBox.background" target="wasabi.msgBox.background"/>
+ <elementalias id="studio.textBar.text" target="wasabi.textBar.text"/>
+ <elementalias id="studio.textBar.background" target="wasabi.textBar.background"/>
+
+
+<!-- Buttons -->
+ <elementalias id="studio.button.text" target="wasabi.button.text"/>
+ <elementalias id="studio.button.hiliteText" target="wasabi.button.hiliteText"/>
+ <elementalias id="studio.button.dimmedText" target="wasabi.button.dimmedText"/>
+
+
+<!-- Popup menus -->
+ <elementalias id="studio.popup.text" target="wasabi.popup.text"/>
+ <elementalias id="studio.popup.hiliteText" target="wasabi.popup.hiliteText"/>
+ <elementalias id="studio.popup.dimmedText" target="wasabi.popup.dimmedText"/>
+
+
+<!-- Components -->
+ <elementalias id="studio.component.title.foreground" target="wasabi.component.title.foreground"/>
+ <elementalias id="studio.component.title.border" target="wasabi.component.title.border"/>
+
+
+<!-- labeled windows -->
+ <elementalias id="common.labelwnd.foreground" target="wasabi.labelwnd.foreground"/>
+ <elementalias id="common.labelwnd.background" target="wasabi.labelwnd.background"/>
+
+</elements>
+
+
+<!-- NOT USED. WISHFUL THINKING.
+
+__NOBODY USES THESE.
+ <bitmap id="wasabi.frame.divider.arrow.left" file="window/window-elements.png" x="56" y="124" h="7" w="4"/>
+ <bitmap id="wasabi.frame.divider.arrow.right" file="window/window-elements.png" x="60" y="124" h="7" w="4"/>
+ <bitmap id="wasabi.frame.divider.top.left" file="window/window-elements.png" x="115" y="31" h="3" w="3"/>
+ <bitmap id="wasabi.frame.divider.top" file="window/window-elements.png" x="118" y="31" h="3" w="10"/>
+ <bitmap id="wasabi.frame.divider.top.right" file="window/window-elements.png" x="128" y="31" h="3" w="3"/>
+ <bitmap id="wasabi.frame.divider.left" file="window/window-elements.png" x="115" y="34" h="10" w="3"/>
+ <bitmap id="wasabi.frame.divider.center" file="window/window-elements.png" x="118" y="34" h="10" w="10"/>
+ <bitmap id="wasabi.frame.divider.right" file="window/window-elements.png" x="128" y="34" h="10" w="3"/>
+ <bitmap id="wasabi.frame.divider.bottom.left" file="window/window-elements.png" x="115" y="44" h="3" w="3"/>
+ <bitmap id="wasabi.frame.divider.bottom" file="window/window-elements.png" x="118" y="44" h="3" w="10"/>
+ <bitmap id="wasabi.frame.divider.bottom.right" file="window/window-elements.png" x="128" y="44" h="3" w="3"/>
+
+__TREE DOES NOT USE SORT ICON.
+ <bitmap id="studio.tree.sort.icon" file="window/tree-sort-icon.png" gammagroup="Tree Color"/>
+
+__SCROLLBARS DO NOT HAVE A BACKGROUND ELEMENT.
+ <bitmap id="studio.scrollbar.horizontal.background" file="window/window-elements.png" x="58" y="52" h="13" w="41" gammagroup="Scrollbar Backgrounds"/>
+ <bitmap id="wasabi.scrollbar.horizontal.background" file="window/window-elements.png" x="58" y="52" h="13" w="41" gammagroup="Scrollbar Backgrounds"/>
+ <bitmap id="studio.scrollbar.vertical.background" file="window/window-elements.png" x="39" y="55" h="41" w="13" gammagroup="Scrollbar Backgrounds"/>
+ <bitmap id="wasabi.scrollbar.vertical.background" file="window/window-elements.png" x="39" y="55" h="41" w="13" gammagroup="Scrollbar Backgrounds"/>
+
+__BUTTONS ON THE SCROLLBARS ONLY HAVE ONE ELEMENT.
+ <bitmap id="wasabi.scrollbar.horizontal.button.left" file="window/window-elements.png" x="57" y="13" h="13" w="3" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.horizontal.button.middle" file="window/window-elements.png" x="60" y="13" h="13" w="35" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.horizontal.button.right" file="window/window-elements.png" x="95" y="13" h="13" w="3" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.horizontal.button.left.hover" file="window/window-elements.png" x="57" y="26" h="13" w="3" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.horizontal.button.middle.hover" file="window/window-elements.png" x="60" y="26" h="13" w="35" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.horizontal.button.right.hover" file="window/window-elements.png" x="95" y="26" h="13" w="3" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.horizontal.button.left.pressed" file="window/window-elements.png" x="57" y="39" h="13" w="3" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.horizontal.button.middle.pressed" file="window/window-elements.png" x="60" y="39" h="13" w="35" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.horizontal.button.right.pressed" file="window/window-elements.png" x="95" y="39" h="13" w="3" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.vertical.button.top" file="window/window-elements.png" x="0" y="55" h="3" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.vertical.button.middle" file="window/window-elements.png" x="0" y="58" h="35" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.vertical.button.bottom" file="window/window-elements.png" x="0" y="93" h="3" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.vertical.button.top.hover" file="window/window-elements.png" x="13" y="55" h="3" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.vertical.button.middle.hover" file="window/window-elements.png" x="13" y="58" h="35" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.vertical.button.bottom.hover" file="window/window-elements.png" x="13" y="93" h="3" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.vertical.button.top.pressed" file="window/window-elements.png" x="26" y="55" h="3" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.vertical.button.middle.pressed" file="window/window-elements.png" x="26" y="58" h="35" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.vertical.button.bottom.pressed" file="window/window-elements.png" x="26" y="93" h="3" w="13" gammagroup="Scrollbar Buttons"/>
+
+__NOBODY USES THESE, EITHER.
+ <bitmap id="studio.statusbar.left" file="window/window-elements.png" x="94" y="0" h="12" w="12"/>
+ <bitmap id="studio.statusbar.middle" file="window/window-elements.png" x="107" y="0" h="12" w="12"/>
+ <bitmap id="studio.statusbar.right" file="window/window-elements.png" x="120" y="0" h="12" w="12"/>
+
+__NOR THIS COLOR.
+ <color id="studio.tree.hilited" value="0,255,255"/>
+
+--> \ No newline at end of file
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/system-elements.xml b/Src/resources/data/freeform/xml/wasabi/xml/system-elements.xml
new file mode 100644
index 00000000..04d4ed5d
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/system-elements.xml
@@ -0,0 +1,292 @@
+<!-- You are probably wondering "What happened to all the studio. elements?" because
+ that is how you implemented your Wasabi skins in the past. That's okay. All of
+ those element ids still work. They have been turned into aliases and now exist
+ in "system-element-aliases.xml" which allows us all to be backwards compatible.
+-->
+
+<include file="system-element-aliases.xml" />
+
+<elements>
+
+<!-- Fonts -->
+ <bitmapfont id="studio.component.title" file="fonts/titlebar-font.png" hspacing="-3" vspacing="0" charwidth="10" charheight="11" gammagroup="Titlebar Font"/>
+ <bitmapfont id="wasabi.font.button.small" file="fonts/button-font-small.png" hspacing="-1" vspacing="0" charwidth="5" charheight="5" gammagroup="Button Fonts"/>
+ <bitmapfont id="wasabi.font.button.normal" file="fonts/button-font-normal.png" charwidth="5" charheight="6" hspacing="0" vspacing="0" gammagroup="Button Fonts"/>
+ <bitmapfont id="wasabi.font.default" file="fonts/default-font.png" charwidth="5" charheight="6" hspacing="0" vspacing="0" gammagroup="Display Fonts"/>
+ <bitmapfont id="studio.component.statusbar" file="fonts/default-font.png" charwidth="5" charheight="6" hspacing="0" vspacing="0" gammagroup="Display Fonts"/>
+
+
+<!-- Base Texture -->
+ <bitmap id="wasabi.basetexture" file="window/background.png" gammagroup="Backgrounds"/>
+
+<!-- Frame windows -->
+ <bitmap id="wasabi.framewnd.verticaldivider" file="window/window-elements.png" x="124" y="53" h="65" w="8" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.framewnd.verticalgrabber" file="window/window-elements.png" x="115" y="53" h="65" w="8" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.framewnd.horizontaldivider" file="window/window-elements.png" x="40" y="97" h="8" w="65" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.framewnd.horizontalgrabber" file="window/window-elements.png" x="40" y="106" h="8" w="65" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.framewnd.windowshade" file="window/framewnd-windowshade.png" gammagroup="Backgrounds"/>
+
+ <bitmap id="wasabi.frame.divider.arrow.up" file="window/window-elements.png" x="64" y="124" h="4" w="7"/>
+ <bitmap id="wasabi.frame.divider.arrow.down" file="window/window-elements.png" x="64" y="128" h="4" w="7"/>
+
+
+<!-- Generic Lists and Trees -->
+ <bitmap id="wasabi.list.background" file="window/window-elements.png" x="1" y="115" h="17" w="17" gammagroup="Display Backgrounds"/> <!-- List background bitmap (tile) -->
+ <bitmap id="wasabi.tree.background" file="window/window-elements.png" x="1" y="115" h="17" w="17" gammagroup="Display Backgrounds"/> <!-- Tree background bitmap (tile) -->
+
+ <bitmap id="wasabi.tree.tab.closed" file="window/window-elements.png" x="149" y="0" h="14" w="14" gammagroup="Tree Color"/>
+ <bitmap id="wasabi.tree.tab.open" file="window/window-elements.png" x="135" y="0" h="14" w="14" gammagroup="Tree Color"/>
+ <bitmap id="wasabi.tree.link.top.bottom" file="window/window-elements.png" x="135" y="14" h="14" w="14" gammagroup="Tree Color"/>
+ <bitmap id="wasabi.tree.link.top.right" file="window/window-elements.png" x="135" y="42" h="14" w="14" gammagroup="Tree Color"/>
+ <bitmap id="wasabi.tree.link.top.rightBottom" file="window/window-elements.png" x="135" y="28" h="14" w="14" gammagroup="Tree Color"/>
+ <bitmap id="wasabi.tree.link.tab.top.bottom" file="window/window-elements.png" x="149" y="14" h="14" w="14" gammagroup="Tree Color"/>
+ <bitmap id="wasabi.tree.link.tab.top.right" file="window/window-elements.png" x="149" y="42" h="14" w="14" gammagroup="Tree Color"/>
+ <bitmap id="wasabi.tree.link.tab.top.rightBottom" file="window/window-elements.png" x="149" y="28" h="14" w="14" gammagroup="Tree Color"/>
+
+<!-- Scrollbars (on List, Tree, etc...) -->
+ <bitmap id="wasabi.scrollbar.horizontal.left" file="window/window-elements.png" x="40" y="13" h="13" w="17" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.horizontal.left.hover" file="window/window-elements.png" x="40" y="26" h="13" w="17" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.horizontal.left.pressed" file="window/window-elements.png" x="40" y="39" h="13" w="17" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.horizontal.right" file="window/window-elements.png" x="98" y="13" h="13" w="17" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.horizontal.right.hover" file="window/window-elements.png" x="98" y="26" h="13" w="17" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.horizontal.right.pressed" file="window/window-elements.png" x="98" y="39" h="13" w="17" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.horizontal.button" file="window/window-elements.png" x="57" y="13" h="13" w="41" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.horizontal.button.hover" file="window/window-elements.png" x="57" y="26" h="13" w="41" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.horizontal.button.pressed" file="window/window-elements.png" x="57" y="39" h="13" w="41" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.vertical.left" file="window/window-elements.png" x="0" y="38" h="17" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.vertical.left.hover" file="window/window-elements.png" x="13" y="38" h="17" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.vertical.left.pressed" file="window/window-elements.png" x="26" y="38" h="17" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.vertical.right" file="window/window-elements.png" x="0" y="96" h="17" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.vertical.right.hover" file="window/window-elements.png" x="13" y="96" h="17" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.vertical.right.pressed" file="window/window-elements.png" x="26" y="96" h="17" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.vertical.button" file="window/window-elements.png" x="0" y="55" h="41" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.vertical.button.hover" file="window/window-elements.png" x="13" y="55" h="41" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.vertical.button.pressed" file="window/window-elements.png" x="26" y="55" h="41" w="13" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.vertical.grip" file="window/scrollgrips.png" x="0" y="0" h="8" w="6" gammagroup="Scrollbar Buttons"/>
+ <bitmap id="wasabi.scrollbar.horizontal.grip" file="window/scrollgrips.png" x="7" y="0" h="6" w="8" gammagroup="Scrollbar Buttons"/>
+
+
+<!-- labelwnd titles -->
+ <bitmap id="wasabi.label.top.left" file="window/window-elements.png" x="0" y="170" w="2" h="2" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.label.top" file="window/window-elements.png" x="2" y="170" w="101" h="2" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.label.top.right" file="window/window-elements.png" x="103" y="170" w="2" h="2" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.label.left" file="window/window-elements.png" x="0" y="172" w="2" h="7" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.label.middle" file="window/window-elements.png" x="2" y="172" w="101" h="7" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.label.right" file="window/window-elements.png" x="103" y="172" w="2" h="7" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.label.bottom.left" file="window/window-elements.png" x="0" y="179" w="2" h="2" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.label.bottom" file="window/window-elements.png" x="2" y="179" w="101" h="2" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.label.bottom.right" file="window/window-elements.png" x="103" y="179" w="2" h="2" gammagroup="Backgrounds"/>
+
+
+<!-- default button -->
+ <bitmap id="wasabi.button.top.left" file="window/window-elements.png" x="1" y="135" h="2" w="2" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.top" file="window/window-elements.png" x="4" y="135" h="2" w="25" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.top.right" file="window/window-elements.png" x="30" y="135" h="2" w="2" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.left" file="window/window-elements.png" x="1" y="138" h="25" w="2" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.middle" file="window/window-elements.png" x="4" y="138" h="25" w="25" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.right" file="window/window-elements.png" x="30" y="138" h="25" w="2" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.bottom.left" file="window/window-elements.png" x="1" y="164" h="2" w="2" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.bottom" file="window/window-elements.png" x="4" y="164" h="2" w="25" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.bottom.right" file="window/window-elements.png" x="30" y="164 " h="2" w="2" gammagroup="Buttons"/>
+
+ <bitmap id="wasabi.button.pressed.top.left" file="window/window-elements.png" x="67" y="135" h="2" w="2" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.pressed.top" file="window/window-elements.png" x="70" y="135" h="2" w="25" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.pressed.top.right" file="window/window-elements.png" x="96" y="135" h="2" w="2" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.pressed.left" file="window/window-elements.png" x="67" y="138" h="25" w="2" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.pressed.middle" file="window/window-elements.png" x="70" y="138" h="25" w="25" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.pressed.right" file="window/window-elements.png" x="96" y="138" h="25" w="2" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.pressed.bottom.left" file="window/window-elements.png" x="67" y="164" h="2" w="2" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.pressed.bottom" file="window/window-elements.png" x="70" y="164" h="2" w="25" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.pressed.bottom.right" file="window/window-elements.png" x="96" y="164 " h="2" w="2" gammagroup="Buttons"/>
+
+
+<!-- Checkboxes and Radiobuttons -->
+ <bitmap id="wasabi.button.checkbox" file="window/window-elements.png" x="79" y="77" h="7" w="7" gammagroup="Checkboxes and Radio Buttons"/>
+ <bitmap id="wasabi.button.checkbox.pressed" file="window/window-elements.png" x="58" y="77" h="7" w="7" gammagroup="Checkboxes and Radio Buttons"/>
+
+ <!-- "xbox" isnt used by default, but we offer the graphics so you can change your theme to use them -->
+ <bitmap id="wasabi.button.checkbox.xbox" file="window/window-elements.png" x="79" y="77" h="7" w="7" gammagroup="Checkboxes and Radio Buttons"/>
+ <bitmap id="wasabi.button.checkbox.xbox.pressed" file="window/window-elements.png" x="65" y="77" h="7" w="7" gammagroup="Checkboxes and Radio Buttons"/>
+
+ <bitmap id="wasabi.button.radio.background" file="window/window-elements.png" x="58" y="66" h="11" w="11" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.button.radio.background.display" file="window/window-elements.png" x="69" y="66" h="9" w="9" gammagroup="Display Backgrounds"/>
+ <bitmap id="wasabi.button.radio" file="window/window-elements.png" x="79" y="77" h="7" w="7" gammagroup="Checkboxes and Radio Buttons"/>
+ <bitmap id="wasabi.button.radio.pressed" file="window/window-elements.png" x="72" y="77" h="7" w="7" gammagroup="Checkboxes and Radio Buttons"/>
+
+
+<!-- Popup menus -->
+ <bitmap id="wasabi.popup.menu.check" file="menu/window-elements.png" x="20" y="8" h="9" w="10"/>
+ <bitmap id="wasabi.popup.menu.submenu" file="menu/window-elements.png" x="22" y="17" h="9" w="10"/>
+ <bitmap id="wasabi.popup.menu.seperator" file="menu/window-elements.png" x="8" y="13" h="6" w="11" gammagroup="Menus"/>
+ <bitmap id="wasabi.popup.menu.background" file="menu/background.png" gammagroup="Menus"/>
+ <bitmap id="wasabi.popup.menu.border.topLeft" file="menu/window-elements.png" x="0" y="0" h="2" w="2" gammagroup="Menus"/>
+ <bitmap id="wasabi.popup.menu.border.top" file="menu/window-elements.png" x="8" y="0" h="2" w="8" gammagroup="Menus"/>
+ <bitmap id="wasabi.popup.menu.border.topRight" file="menu/window-elements.png" x="33" y="0" h="2" w="4" gammagroup="Menus"/>
+ <bitmap id="wasabi.popup.menu.border.left" file="menu/window-elements.png" x="0" y="8" h="8" w="2" gammagroup="Menus"/>
+ <bitmap id="wasabi.popup.menu.border.right" file="menu/window-elements.png" x="33" y="8" h="8" w="4" gammagroup="Menus"/>
+ <bitmap id="wasabi.popup.menu.border.bottomLeft" file="menu/window-elements.png" x="0" y="35" h="2" w="2" gammagroup="Menus"/>
+ <bitmap id="wasabi.popup.menu.border.bottom" file="menu/window-elements.png" x="8" y="35" h="2" w="8" gammagroup="Menus"/>
+ <bitmap id="wasabi.popup.menu.border.bottomRight" file="menu/window-elements.png" x="33" y="35" h="2" w="4" gammagroup="Menus"/>
+ <bitmap id="wasabi.popup.menu.selection.left" file="menu/selbar.png" x="0" y="0" w="5" h="10" gammagroup="Menus"/>
+ <bitmap id="wasabi.popup.menu.selection.right" file="menu/selbar.png" x="6" y="0" w="5" h="10" gammagroup="Menus"/>
+ <bitmap id="wasabi.popup.menu.selection.center" file="menu/selbar.png" x="27" y="0" w="20" h="10" gammagroup="Menus"/>
+
+
+<!-- Title objects -->
+ <bitmap id="wasabi.titlebar.left.active" file="window/window-elements.png" x="106" y="118" h="9" w="7" gammagroup="Titlebars"/>
+ <bitmap id="wasabi.titlebar.center.active" file="window/window-elements.png" x="114" y="118" h="9" w="7" gammagroup="Titlebars"/>
+ <bitmap id="wasabi.titlebar.right.active" file="window/window-elements.png" x="122" y="118" h="9" w="7" gammagroup="Titlebars"/>
+ <bitmap id="wasabi.titlebar.left.inactive" file="window/window-elements.png" x="106" y="127" h="9" w="7" gammagroup="Titlebars"/>
+ <bitmap id="wasabi.titlebar.center.inactive" file="window/window-elements.png" x="114" y="127" h="9" w="7" gammagroup="Titlebars"/>
+ <bitmap id="wasabi.titlebar.right.inactive" file="window/window-elements.png" x="122" y="127" h="9" w="7" gammagroup="Titlebars"/>
+
+
+<!-- Window Controls -->
+ <bitmap id="wasabi.button.sysmenu" file="window/window-elements.png" x="170" y="56" h="9" w="14" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.sysmenu.pressed" file="window/window-elements.png" x="170" y="65" h="9" w="14" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.minimize" file="window/window-elements.png" x="146" y="56" h="9" w="14" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.minimize.pressed" file="window/window-elements.png" x="146" y="65" h="9" w="14" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.winshade" file="window/window-elements.png" x="132" y="56" h="9" w="14" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.winshade.pressed" file="window/window-elements.png" x="132" y="65" h="9" w="14" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.close" file="window/window-elements.png" x="184" y="56" h="9" w="14" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.close.pressed" file="window/window-elements.png" x="184" y="65" h="9" w="14" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.less" file="window/window-elements.png" x="184" y="74" h="9" w="14" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.less.pressed" file="window/window-elements.png" x="184" y="83" h="9" w="14" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.more" file="window/window-elements.png" x="170" y="74" h="9" w="14" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.more.pressed" file="window/window-elements.png" x="170" y="83" h="9" w="14" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.appmenu" file="window/window-elements.png" x="160" y="74" h="9" w="10" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.appmenu.pressed" file="window/window-elements.png" x="160" y="83" h="9" w="10" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.exit" file="window/window-elements.png" x="160" y="56" h="9" w="10" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.exit.pressed" file="window/window-elements.png" x="160" y="65" h="9" w="10" gammagroup="Buttons"/>
+
+ <bitmap id="wasabi.button.close.flat" file="window/window-elements.png" x="160" y="56" h="9" w="10" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.close.flat.pressed" file="window/window-elements.png" x="160" y="65" h="9" w="10" gammagroup="Buttons"/>
+
+
+<!-- Panel Bevels -->
+ <bitmap id="wasabi.panel.top.left" file="window/window-elements.png" x="19" y="114" h="2" w="2" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.panel.top" file="window/window-elements.png" x="21" y="114" h="2" w="16" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.panel.top.right" file="window/window-elements.png" x="37" y="114" h="2" w="2" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.panel.left" file="window/window-elements.png" x="19" y="116" h="16" w="2" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.panel.right" file="window/window-elements.png" x="37" y="116" h="16" w="2" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.panel.bottom.left" file="window/window-elements.png" x="19" y="132" h="2" w="2" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.panel.bottom" file="window/window-elements.png" x="21" y="132" h="2" w="16" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.panel.bottom.right" file="window/window-elements.png" x="37" y="132" h="2" w="2" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.panel.tint" file="window/window-elements.png" x="24" y="119" h="10" w="10" gammagroup="Backgrounds"/>
+
+
+<!-- Object Frame-->
+ <bitmap id="wasabi.objectframe.top.left" file="window/window-elements.png" x="0" y="114" h="1" w="1" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.objectframe.top" file="window/window-elements.png" x="1" y="114" h="1" w="17" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.objectframe.top.right" file="window/window-elements.png" x="18" y="114" h="1" w="1" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.objectframe.left" file="window/window-elements.png" x="0" y="115" h="17" w="1" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.objectframe.center" file="window/window-elements.png" x="1" y="115" h="17" w="17" gammagroup="Display Backgrounds"/>
+ <bitmap id="wasabi.objectframe.right" file="window/window-elements.png" x="18" y="115" h="17" w="1" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.objectframe.bottom.left" file="window/window-elements.png" x="0" y="132" h="1" w="1" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.objectframe.bottom" file="window/window-elements.png" x="1" y="132" h="1" w="17" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.objectframe.bottom.right" file="window/window-elements.png" x="18" y="132" h="1" w="1" gammagroup="Backgrounds"/>
+
+
+<!-- Combo Box List-->
+ <bitmap id="wasabi.dropdownlist.list.top.left" file="window/window-elements.png" x="40" y="124" h="1" w="1"/>
+ <bitmap id="wasabi.dropdownlist.list.top" file="window/window-elements.png" x="41" y="124" h="1" w="10"/>
+ <bitmap id="wasabi.dropdownlist.list.top.right" file="window/window-elements.png" x="51" y="124" h="1" w="1"/>
+ <bitmap id="wasabi.dropdownlist.list.left" file="window/window-elements.png" x="40" y="125" h="8" w="1"/>
+ <bitmap id="wasabi.dropdownlist.list.center" file="window/window-elements.png" x="41" y="125" h="8" w="10" gammagroup="Display Backgrounds"/>
+ <bitmap id="wasabi.dropdownlist.list.right" file="window/window-elements.png" x="51" y="125" h="8" w="1"/>
+ <bitmap id="wasabi.dropdownlist.list.bottom.left" file="window/window-elements.png" x="40" y="133" h="1" w="1"/>
+ <bitmap id="wasabi.dropdownlist.list.bottom" file="window/window-elements.png" x="41" y="133" h="1" w="10"/>
+ <bitmap id="wasabi.dropdownlist.list.bottom.right" file="window/window-elements.png" x="51" y="133" h="1" w="1"/>
+
+
+<!-- Embedded Window -->
+ <bitmap id="wasabi.window.top.left" file="window/window-elements.png" x="0" y="114" h="1" w="1" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.window.top" file="window/window-elements.png" x="1" y="114" h="1" w="17" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.window.top.right" file="window/window-elements.png" x="18" y="114" h="1" w="1" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.window.left" file="window/window-elements.png" x="0" y="115" h="17" w="1" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.window.center" file="window/window-elements.png" x="1" y="115" h="17" w="17" gammagroup="Display Backgrounds"/>
+ <bitmap id="wasabi.window.right" file="window/window-elements.png" x="18" y="115" h="17" w="1" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.window.bottom.left" file="window/window-elements.png" x="0" y="132" h="1" w="1" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.window.bottom" file="window/window-elements.png" x="1" y="132" h="1" w="17" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.window.bottom.right" file="window/window-elements.png" x="18" y="132" h="1" w="1" gammagroup="Backgrounds"/>
+
+
+<!-- Generic Button -->
+ <bitmap id="wasabi.button.label.arrow.up" file="window/window-elements.png" x="137" y="75" h="4" w="7" gammagroup="Button Fonts"/>
+ <bitmap id="wasabi.button.label.arrow.down" file="window/window-elements.png" x="137" y="86" h="4" w="7" gammagroup="Button Fonts"/>
+ <bitmap id="wasabi.button.label.arrow.left" file="window/window-elements.png" x="133" y="79" h="7" w="4" gammagroup="Button Fonts"/>
+ <bitmap id="wasabi.button.label.arrow.right" file="window/window-elements.png" x="144" y="79" h="7" w="4" gammagroup="Button Fonts"/>
+ <bitmap id="wasabi.button.label.ellipses" file="window/window-elements.png" x="138" y="92" h="1" w="5" gammagroup="Button Fonts"/>
+
+ <bitmap id="wasabi.button.top.left" file="window/window-elements.png" x="0" y="134" h="4" w="4" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.top" file="window/window-elements.png" x="4" y="134" h="4" w="25" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.top.right" file="window/window-elements.png" x="29" y="134" h="4" w="4" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.left" file="window/window-elements.png" x="0" y="138" h="25" w="4" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.center" file="window/window-elements.png" x="4" y="138" h="25" w="25" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.right" file="window/window-elements.png" x="29" y="138" h="25" w="4" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.bottom.left" file="window/window-elements.png" x="0" y="163" h="4" w="4" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.bottom" file="window/window-elements.png" x="4" y="163" h="4" w="25" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.bottom.right" file="window/window-elements.png" x="29" y="163" h="4" w="4" gammagroup="Buttons"/>
+
+ <bitmap id="wasabi.button.hover.top.left" file="window/window-elements.png" x="33" y="134" h="4" w="4" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.hover.top" file="window/window-elements.png" x="37" y="134" h="4" w="25" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.hover.top.right" file="window/window-elements.png" x="62" y="134" h="4" w="4" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.hover.left" file="window/window-elements.png" x="33" y="138" h="25" w="4" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.hover.center" file="window/window-elements.png" x="37" y="138" h="25" w="25" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.hover.right" file="window/window-elements.png" x="62" y="138" h="25" w="4" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.hover.bottom.left" file="window/window-elements.png" x="33" y="163" h="4" w="4" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.hover.bottom" file="window/window-elements.png" x="37" y="163" h="4" w="25" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.hover.bottom.right" file="window/window-elements.png" x="62" y="163" h="4" w="4" gammagroup="Buttons"/>
+
+ <bitmap id="wasabi.button.pressed.top.left" file="window/window-elements.png" x="66" y="134" h="4" w="4" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.pressed.top" file="window/window-elements.png" x="70" y="134" h="4" w="25" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.pressed.top.right" file="window/window-elements.png" x="95" y="134" h="4" w="4" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.pressed.left" file="window/window-elements.png" x="66" y="138" h="25" w="4" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.pressed.center" file="window/window-elements.png" x="70" y="138" h="25" w="25" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.pressed.right" file="window/window-elements.png" x="95" y="138" h="25" w="4" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.pressed.bottom.left" file="window/window-elements.png" x="66" y="163" h="4" w="4" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.pressed.bottom" file="window/window-elements.png" x="70" y="163" h="4" w="25" gammagroup="Buttons"/>
+ <bitmap id="wasabi.button.pressed.bottom.right" file="window/window-elements.png" x="95" y="163" h="4" w="4" gammagroup="Buttons"/>
+
+
+<!-- Generic Sliders -->
+ <bitmap id="wasabi.slider.horizontal.left" file="window/window-elements.png" x="106" y="149" h="8" w="8" gammagroup="Sliders Backgrounds"/>
+ <bitmap id="wasabi.slider.horizontal.middle" file="window/window-elements.png" x="115" y="149" h="8" w="10" gammagroup="Sliders Backgrounds"/>
+ <bitmap id="wasabi.slider.horizontal.right" file="window/window-elements.png" x="126" y="149" h="8" w="8" gammagroup="Sliders Backgrounds"/>
+
+ <bitmap id="wasabi.slider.vertical.top" file="window/window-elements.png" x="138" y="136" h="8" w="8" gammagroup="Sliders Backgrounds"/>
+ <bitmap id="wasabi.slider.vertical.middle" file="window/window-elements.png" x="138" y="145" h="10" w="8" gammagroup="Sliders Backgrounds"/>
+ <bitmap id="wasabi.slider.vertical.bottom" file="window/window-elements.png" x="138" y="156" h="8" w="8" gammagroup="Sliders Backgrounds"/>
+
+ <bitmap id="wasabi.slider.horizontal.button" file="window/window-elements.png" x="106" y="136" h="13" w="15" gammagroup="Buttons"/>
+ <bitmap id="wasabi.slider.horizontal.button.pressed" file="window/window-elements.png" x="121" y="136" h="13" w="15" gammagroup="Buttons"/>
+
+ <bitmap id="wasabi.slider.vertical.button" file="window/window-elements.png" x="106" y="157" h="12" w="16" gammagroup="Buttons"/>
+ <bitmap id="wasabi.slider.vertical.button.pressed" file="window/window-elements.png" x="122" y="157" h="12" w="16" gammagroup="Buttons"/>
+
+
+ <!-- These are transparent by default for skins background compatibility -->
+
+ <bitmap id="wasabi.scrollbar.horizontal.background.left" file="window/window-elements.png" x="180" y="160" w="5" h="5" />
+ <bitmap id="wasabi.scrollbar.horizontal.background.middle" file="window/window-elements.png" x="185" y="160" w="5" h="5" />
+ <bitmap id="wasabi.scrollbar.horizontal.background.right" file="window/window-elements.png" x="190" y="160" w="5" h="5" />
+
+ <bitmap id="wasabi.scrollbar.vertical.background.top" file="window/window-elements.png" x="180" y="165" w="5" h="5" />
+ <bitmap id="wasabi.scrollbar.vertical.background.middle" file="window/window-elements.png" x="185" y="165" w="5" h="5" />
+ <bitmap id="wasabi.scrollbar.vertical.background.bottom" file="window/window-elements.png" x="190" y="165" w="5" h="5" />
+
+<!-- Generic Group Box -->
+ <bitmap id="wasabi.groupbox.top.left" file="window/window-elements.png" x="116" y="13" h="3" w="3" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.groupbox.top" file="window/window-elements.png" x="120" y="13" h="3" w="8" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.groupbox.top.right" file="window/window-elements.png" x="129" y="13" h="3" w="3" gammagroup="Backgrounds"/>
+
+ <bitmap id="wasabi.groupbox.left" file="window/window-elements.png" x="116" y="17" h="8" w="3" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.groupbox.right" file="window/window-elements.png" x="129" y="17" h="8" w="3" gammagroup="Backgrounds"/>
+
+ <bitmap id="wasabi.groupbox.bottom.left" file="window/window-elements.png" x="116" y="26" h="3" w="3" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.groupbox.bottom" file="window/window-elements.png" x="120" y="26" h="3" w="8" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.groupbox.bottom.right" file="window/window-elements.png" x="129" y="26" h="3" w="3" gammagroup="Backgrounds"/>
+
+</elements>
+
+<include file="system-element-aliases.xml"/> \ No newline at end of file
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/system-groups.xml b/Src/resources/data/freeform/xml/wasabi/xml/system-groups.xml
new file mode 100644
index 00000000..b4b91fb4
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/system-groups.xml
@@ -0,0 +1,100 @@
+<include file="groups/buttonbar.xml" />
+<include file="groups/objectframe.xml" />
+<include file="groups/panel.xml" />
+<include file="groups/window.xml" />
+<include file="groups/window-embedded.xml" />
+
+
+<!-- Unused for now, see system-elements.xml for overriding default button art -->
+
+<!--
+
+<groupdef id="wasabi.button.normal">
+ <grid
+ id="button.normal.grid"
+ x="0" y="0"
+ w="0" h="0"
+ relatw="1" relath="1"
+ topleft="wasabi.button.top.left"
+ top="wasabi.button.top"
+ topright="wasabi.button.top.right"
+ left="wasabi.button.left"
+ middle="wasabi.button.center"
+ right="wasabi.button.right"
+ bottomleft="wasabi.button.bottom.left"
+ bottom="wasabi.button.bottom"
+ bottomright="wasabi.button.bottom.right"
+ />
+ <text
+ id="button.text"
+ x="6" y="4"
+ w="-13" h="11"
+ relatw="1"
+ default="Button"
+ align="center"
+ font="wasabi.font.button.normal"
+ />
+</groupdef>
+
+<groupdef id="wasabi.button.pressed">
+ <grid
+ id="button.pressed.grid"
+ x="0" y="0"
+ w="0" h="0"
+ relatw="1" relath="1"
+ topleft="wasabi.button.pressed.top.left"
+ top="wasabi.button.pressed.top"
+ topright="wasabi.button.pressed.top.right"
+ left="wasabi.button.pressed.left"
+ middle="wasabi.button.pressed.center"
+ right="wasabi.button.pressed.right"
+ bottomleft="wasabi.button.pressed.bottom.left"
+ bottom="wasabi.button.pressed.bottom"
+ bottomright="wasabi.button.pressed.bottom.right"
+ />
+ <text
+ id="button.text"
+ x="7" y="5"
+ w="-13" h="11"
+ relatw="1"
+ default="Button"
+ font="wasabi.font.button.normal"
+ />
+</groupdef>
+
+<groupdef id="wasabi.button">
+
+ <group id="wasabi.button.normal"
+ x="0" y="0"
+ w="0" h="0"
+ relatw="1" relath="1"
+ />
+
+</groupdef>
+
+-->
+
+
+<!-- Unused for now, see system-elements.xml for overriding default divider art -->
+
+<!--
+
+<groupdef id="wasabi.frame.divider">
+ <grid
+ id="wasabi.frame.grid"
+ x="0" y="0"
+ w="0" h="0"
+ relatw="1" relath="1"
+ topleft="wasabi.frame.divider.top.left"
+ top="wasabi.frame.divider.top"
+ topright="wasabi.frame.divider.top.right"
+ left="wasabi.frame.divider.left"
+ middle="wasabi.frame.divider.center"
+ right="wasabi.frame.divider.right"
+ bottomleft="wasabi.frame.divider.bottom.left"
+ bottom="wasabi.frame.divider.bottom"
+ bottomright="wasabi.frame.divider.bottom.right"
+ />
+</groupdef>
+-->
+
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/IconTextButton.m b/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/IconTextButton.m
new file mode 100644
index 00000000..cf9c61c7
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/IconTextButton.m
@@ -0,0 +1,141 @@
+#include <lib/std.mi>
+
+Function updateButton();
+Function setIconState(int i);
+
+Global Group XUIGroup;
+Global Text myLabel;
+Global Button myButton;
+Global Layer myLayer;
+
+Global Boolean smallsize, isMouseOver, busyWithClick, isGhost;
+Global String savedLabel, iconId;
+
+Global Int label_y , label_x;
+
+System.onScriptLoaded(){
+ XUIGroup = getScriptGroup();
+ myLabel = XUIGroup.findObject("itb.text");
+ myButton = XUIGroup.findObject("itb.button");
+ myLayer = XUIGroup.findObject("itb.layer");
+
+ myButton.setXmlParam("translate",XUIGroup.getXmlParam("translate"));
+ myLabel.setXmlParam("translate",XUIGroup.getXmlParam("translate"));
+ myButton.setXmlParam("translate",XUIGroup.getXmlParam("translate"));
+ myButton.setXmlParam("tooltip",XUIGroup.getXmlParam("tooltip"));
+ myButton.setXmlParam("ghost",XUIGroup.getXmlParam("ghost"));
+}
+
+System.onSetXuiParam(String param, String value)
+{
+ if (strlower(param) == "icon_id")
+ {
+ iconId = value;
+ setIconState(1);
+ }
+ else if (strlower(param) == "label")
+ {
+ savedLabel = value;
+ updateButton();
+ }
+ else if (strlower(param) == "label_translate")
+ {
+ myLabel.setXmlParam("translate", value);
+ }
+ else if (strlower(param) == "label_x")
+ {
+ label_x = stringToInteger(value);
+ myLabel.setXmlParam("x", value);
+ }
+ else if (strlower(param) == "label_y")
+ {
+ label_y = stringToInteger(value);
+ myLabel.setXmlParam("y", value);
+ }
+ else if (strlower(param) == "label_h")
+ {
+ myLabel.setXmlParam("h", value);
+ }
+ else if (strlower(param) == "label_color")
+ {
+ myLabel.setXmlParam("color", value);
+ }
+ else if (strlower(param) == "label_visible")
+ {
+ if (value == "0") smallsize=true;
+ else smallsize=false;
+ updateButton();
+ }
+}
+
+myButton.onLeftButtonDown (int x, int y)
+{
+ myLabel.setXmlParam("y", integerToString(label_y+1));
+ setIconState(3);
+ busyWithClick=true;
+}
+
+myButton.onLeftButtonUp (int x, int y)
+{
+ myLabel.setXmlParam("y", integerToString(label_y));
+
+ if (isMouseOver) setIconState(2);
+ else setIconState(1);
+
+ busyWithClick=false;
+}
+
+myButton.onRightButtonDown (int x, int y)
+{
+ busyWithClick=false;
+}
+
+myButton.onEnterArea ()
+{
+ if (busyWithClick)
+ {
+ setIconState(3);
+ myLabel.setXmlParam("y", integerToString(label_y+1));
+ }
+ else
+ {
+ setIconState(2);
+ }
+
+ isMouseOver = true;
+}
+
+myButton.onLeaveArea ()
+{
+ setIconState(1);
+ isMouseOver = false;
+ myLabel.setXmlParam("y", integerToString(label_y));
+}
+
+updateButton ()
+{
+ if (smallsize)
+ myLabel.setText(" ");
+ else
+ myLabel.setText(savedLabel);
+}
+
+setIconState (int i)
+{
+ if (i == 1)
+ myLayer.setXmlParam("image", iconId+".normal");
+ else if (i == 2)
+ myLayer.setXmlParam("image", iconId+".hover");
+ else if (i ==3 )
+ myLayer.setXmlParam("image", iconId+".down");
+}
+
+XUIGroup.onAction (String action, String param, Int x, int y, int p1, int p2, GuiObject source)
+{
+ if (strlower(action) == "getwidth")
+ {
+ int w = label_x + myLabel.getAutoWidth();
+ XUIGroup.setXmlParam("w", integerToString(w));
+ return w;
+ }
+} \ No newline at end of file
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/IconTextButton.maki b/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/IconTextButton.maki
new file mode 100644
index 00000000..15d3c151
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/IconTextButton.maki
Binary files differ
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/browser.m b/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/browser.m
new file mode 100644
index 00000000..6ba413ef
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/browser.m
@@ -0,0 +1,2077 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: browser.m
+Version: 4.1
+
+Type: maki
+Date: 23. Jan. 2008 - 10:06
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#include <lib/std.mi>
+#include <lib/config.mi>
+#include <lib/fileio.mi>
+#include <lib/application.mi>
+#include <lib/private.mi>
+
+#define RELEASE
+#define FILE_NAME "browser.m"
+#include <lib/com/debug.m>
+
+#define BROWSER_SCRIPT
+Global String BROWSER_DEFAULT_HOME;
+
+#include init_browser.m
+
+Class PopupMenu AttribMenu;
+
+
+Function AttribMenu createMenufromAttribList (List entries);
+/**
+ createMenufromAttribList() explanation
+ the List "entries" MUST have the following style:
+ item 0 - is a configItem, which represents the root item.
+ all other items are ConfigAttributes, which will be autofilled
+*/
+
+Function loadInternalLinks();
+Function checkForNewLinks();
+Function retrieveStreamData();
+
+Function boolean isUrl(String url);
+
+Function string prepareWebString(string url, string replace);
+Function string strReplace(string str, string replace, string by);
+
+Function performWebSearch (string searchstring);
+Function BrowserReload();
+
+Function playListItem(int num);
+Function enqueueListItem(int num);
+Function downloadListItem(int num);
+
+
+Global Container quicklink_name;
+Global Layout normal, quicklink_name_layout;
+Global Frame dualwnd;
+
+Global Group scr_content, g_search, g_navurl, sg, scr_mode, dld_mode;
+
+Global Browser brw;
+Global Button bback, bffwd, bhome, brefresh, bstop, bsearch, blinks;
+Global Button scr_open, scr_close, scr_rescan, scr_play, scr_download, switch_scr, switch_scr2, switch_dld, switch_dld2, dld_play, dld_settings;
+Global Edit navurl, searchedit;
+
+Global GuiList scr_list;
+
+Global PopUpMenu scr_menu;
+Global List internal_LinksTitle, internal_LinksUrl, internal_LinksSubmenus;
+Global GuiObject scr_dldList;
+
+Global boolean download;
+
+Global Boolean isAutomatedSearch, xmlReadPassed;
+
+Global Timer delay, playDelay, linkDelay;
+
+#include "buttonpos.m"
+
+System.onScriptLoaded ()
+{
+ initWaPrivateCalls();
+
+ initAttribs_Browser();
+ BROWSER_DEFAULT_HOME = "http://www.winamp.com/";
+
+ download = true;
+
+ sg = getScriptGroup();
+ normal = sg.getParentLayout();
+ dualwnd = sg.getObject("browser.dualwnd");
+ g_search = dualwnd.findObject("browser.search");
+ g_navurl = dualwnd.findObject("browser.navurl");
+ brw = dualwnd.findObject("webbrowser");
+ brw.setCancelIEErrorPage(TRUE);
+ bback = dualwnd.findObject("browser.back");
+ bffwd = dualwnd.findObject("browser.fwd");
+ bhome = dualwnd.findObject("browser.home");
+ brefresh = dualwnd.findObject("browser.refresh");
+ bstop = dualwnd.findObject("browser.stop");
+ navurl = g_navurl.findObject("browser.hedit");
+ bsearch = g_search.findObject("search.choose");
+ blinks = dualwnd.findObject("browser.links");
+
+ delay = new Timer;
+ delay.setDelay(10);
+
+ playDelay = new Timer;
+ playDelay.setDelay(1000);
+
+ linkDelay = new Timer;
+ linkDelay.setDelay(10000);
+
+ xmlReadPassed = false;
+
+ internal_LinksTitle = new list;
+ internal_LinksUrl = new list;
+ internal_LinksSubmenus = new list;
+ loadInternalLinks();
+
+ browser_search_attrib.onDataChanged();
+
+ searchedit = g_search.getObject("search.edit");
+
+ scr_open = dualwnd.findObject("browser.scraper.show");
+ scr_content = dualwnd.findObject("browser.scraper");
+
+ scr_mode = scr_content.findObject("scraper.mode");
+ dld_mode = scr_content.findObject("dlds.mode");
+
+ dld_settings = scr_content.findObject("browser.dlds.settings");
+ dld_play = scr_content.findObject("browser.dlds.play");
+
+ scr_close = scr_content.findObject("browser.scraper.hide");
+ scr_rescan= scr_mode.findObject("browser.scraper.rescan");
+ scr_play = scr_mode.findObject("browser.scraper.play");
+ scr_download = scr_mode.findObject("browser.scraper.download");
+ scr_list = scr_mode.findObject("scraper.results");
+
+ scr_dldList = dld_mode.findObject("scraper.downloads");
+
+ switch_dld = scr_mode.findObject("dlds.switch");
+ switch_scr = dld_mode.findObject("scraper.switch");
+ switch_dld2 = dld_mode.findObject("dlds.switch");
+ switch_scr2 = scr_mode.findObject("scraper.switch");
+
+ String nu = getPrivateString("Winamp Bento", "Browser v2 Home", "");
+ if (nu == "")
+ {
+ nu = BROWSER_DEFAULT_HOME;
+ }
+
+ navurl.setText(nu);
+
+ if (getPrivateInt("Winamp Bento", "Browser DownloadMgr visible", 0) && !getPrivateInt("Winamp Bento", "Browser MediaMonitor autoswitch", 1))
+ {
+ scr_mode.hide();
+ dld_mode.show();
+ }
+
+ scr_list.setColumnLabel(1, getString("nullsoft.browser", 17));
+
+ initButtonPos();
+
+ browser_scr_show_attrib.onDataChanged ();
+
+ // CHASHCOW
+ browser_search_winamp_web_attrib.setData("1");
+}
+
+System.onScriptUnloading ()
+{
+ if (browser_scr_show_attrib.getData() == "1") setPrivateInt(getSkinName(), "browser.frame.pos", dualwnd.getPosition());
+
+ delete internal_LinksTitle;
+ delete internal_LinksUrl;
+ delete internal_LinksSubmenus;
+
+ delete WaPrivateCall;
+
+ delay.stop();
+ delete delay;
+
+ playDelay.stop();
+ delete playDelay;
+
+ linkDelay.stop();
+ delete linkDelay;
+}
+
+//----------------------------------------------------------------------------------------------------------------
+// Check if we should display a specific page on set visible (see suicore.maki)
+//----------------------------------------------------------------------------------------------------------------
+
+brw.onSetVisible (Boolean onoff)
+{
+ if (onoff)
+ {
+ if (getPrivateString(getSkinName(), "UrlXgive", "") != "")
+ {
+ navurl.setText(getPrivateString(getSkinName(), "UrlXgive", ""));
+ browserReload();
+ setPrivateString(getSkinName(), "UrlXgive", "");
+ DebugStrinG("[browser.m] -> External Loading Completed",0);
+ return;
+ }
+ else if (getPrivateString(getSkinName(), "Browser Open", "") != "")
+ {
+ navurl.setText(getPrivateString(getSkinName(), "Browser Open", ""));
+ browserReload();
+ setPrivateString(getSkinName(), "Browser Open", "");
+ DebugString("[browser.m] -> Loading Completed",0);
+ return;
+ }
+ browserReload();
+ checkForNewLinks();
+ }
+}
+Global boolean hasXuiHome;
+System.onSetXuiParam (String param, String value)
+{
+ if ( strlower(param) == "home" )
+ {
+ hasXuiHome = true;
+ BROWSER_DEFAULT_HOME = value;
+ String navTo = getPrivateString("Winamp Bento", "Browser v2 Home", "");
+ if (navTo == "")
+ {
+ navTo = BROWSER_DEFAULT_HOME;
+ }
+ navurl.setText(navTo);
+ }
+ if ( strlower(param) == "download")
+ {
+ download = stringToInteger(getparam());
+ switch_scr.leftClick();
+ hideDownloads ();
+ }
+}
+
+//----------------------------------------------------------------------------------------------------------------
+// All direct interaction w/ browser is recieved here.
+// The actions are triggered by buttonclicks and suicore.maki.
+// actions send to the XUI oject will be send to brw.
+//----------------------------------------------------------------------------------------------------------------
+
+sg.onAction (String action, String param, Int x, int y, int p1, int p2, GuiObject source)
+{
+ brw.onAction (action, param, x, y, p1, p2, source);
+}
+
+
+brw.onAction (String action, String param, Int x, int y, int p1, int p2, GuiObject source)
+{
+ // Open an URL
+ if (strlower(action) == "openurl")
+ {
+ //param = prepareWebString(param, "+");
+ navurl.setText(param);
+ browserReload();
+ return;
+ }
+ // Websearch
+ if (strlower(action) == "search")
+ {
+ // start!
+ if (strlower(param) == "go")
+ {
+ performWebSearch(searchedit.getText());
+ }
+ // set text and start!
+ else
+ {
+ isAutomatedSearch = TRUE;
+ searchedit.setText(param);
+ performWebSearch(param);
+ isAutomatedSearch = FALSE;
+ }
+ }
+}
+
+//----------------------------------------------------------------------------------------------------------------
+// Browser main controls.
+//----------------------------------------------------------------------------------------------------------------
+
+bback.onLeftClick ()
+{
+ brw.back();
+}
+bffwd.onLeftClick ()
+{
+ brw.forward();
+}
+
+brefresh.onLeftClick ()
+{
+ browserReload();
+}
+
+bstop.onLeftClick ()
+{
+ brw.stop();
+}
+
+bhome.onLeftClick ()
+{
+ String nu = getPrivateString("Winamp Bento", "Browser v2 Home", "");
+ if (nu == "")
+ {
+ nu = BROWSER_DEFAULT_HOME;
+ }
+
+ navurl.setText(nu);
+
+ browserReload();
+}
+
+// set a custom default home
+bhome.onRightButtonUp(int x, int y)
+{
+ popupmenu editmenu = new popupmenu;
+ editmenu.addcommand("Set current Page as default Home",1, 0,0);
+ editmenu.addcommand("Restore default Home",2, 0,0);
+
+ int ret = editmenu.popatxy(clientToScreenX(bhome.getLeft()), clientToScreenY(bhome.getTop() + bhome.getHeight()));
+
+ if (ret == 1) setPrivateString("Winamp Bento", "Browser v2 Home", navurl.getText());
+ if (ret == 2) setPrivateString("Winamp Bento", "Browser v2 Home", "");
+
+ delete editmenu;
+ complete;
+}
+
+// Windows Vista Compatibility hack. w/ this we get not so much winamp crashes. nevertheless the editbox code must be changed in gen_ff
+browserReload()
+{
+ if (!navurl) return;
+ if (!brw) return;
+ string t = navurl.getText();
+
+ if (!isUrl(t))
+ // t = "http://search.winamp.com/search/search?invocationType=en00-winamp-553--clientpage&query=" + prepareWebString(t, "+");
+ t = "http://www.google.com/search?q=" + prepareWebString(t, "+");
+
+ brw.navigateUrl(t);
+}
+
+navurl.onEnter ()
+{
+ string t = navurl.getText();
+
+ if (t == "")
+ return;
+
+ if (isKeyDown(VK_SHIFT)) t = "www." + t + ".com";
+ else if (isKeyDown(VK_CONTROL)) t = "www." + t + ".com";
+
+ while (strleft(t, 1) == " ")
+ {
+ t = strright(t, strlen(t) -1);
+ if (t == " ")
+ return;
+ }
+
+ while (strright(t, 1) == " ")
+ {
+ t = strleft(t, strlen(t) -1);
+ if (t == "")
+ return;
+ }
+
+ if (!isUrl(t))
+ // t = "http://search.winamp.com/search/search?invocationType=en00-winamp-553--clientpage&query=" + prepareWebString(t, "+");
+ t = "http://www.google.com/search?q=" + prepareWebString(t, "+");
+
+ navurl.setText(t);
+ brw.navigateUrl(t);
+}
+
+Boolean isUrl (String t)
+{
+ if (t == "about:blank")
+ return TRUE;
+
+ String ttt = strleft(t, 10);
+ // get basically any http:// ftp:// etc
+ String slash = System.Strleft("/ ", 1); // the simple slash causes errors on some systems :(
+ string backslash = System.Strleft("\\ ", 1);
+ if (strsearch(ttt, ":" + slash + slash) > -1)
+ return TRUE;
+
+ if (strsearch(ttt, ":" + slash) == 1) // C:/
+ return TRUE;
+
+ if (strsearch(ttt, ":" + backslash) == 1){ // C:\
+ return TRUE;
+ }
+
+ if (strleft(ttt, 2) == backslash+backslash) // get \\martin-pc
+ return TRUE;
+
+ ttt = getToken(t, slash, 0); // get rid of sub dirs
+ String v = strright(ttt, 5);
+ if (strsearch(v, ".") > -1)
+ return TRUE;
+
+ ttt = getToken(t, backslash, 0); // get rid of sub dirs
+ String v = strright(ttt, 5);
+ if (strsearch(v, ".") > -1)
+ return TRUE;
+
+ return FALSE;
+}
+
+//----------------------------------------------------------------------------------------------------------------
+// Enlarge searcheditbox if we have enough space
+//----------------------------------------------------------------------------------------------------------------
+
+sg.onResize (int x, int y, int w, int h)
+{
+ if(h<30)
+ g_navurl.hide();
+ else
+ g_navurl.show();
+
+ if (w > 580 && h>=30)
+ {
+ g_search.show();
+ g_search.setXmlParam("x", "-267");
+ g_search.setXmlParam("w", "263");
+ g_navurl.setXmlParam("x", "134");
+ g_navurl.setXmlParam("w", "-403");
+ }
+ else if (w > 400 && h>=30)
+ {
+ g_search.show();
+ g_search.setXmlParam("x", "-167");
+ g_search.setXmlParam("w", "163");
+ g_navurl.setXmlParam("x", "134");
+ g_navurl.setXmlParam("w", "-303");
+ }
+ else
+ {
+ g_search.hide();
+ g_navurl.setXmlParam("x", "134");
+ g_navurl.setXmlParam("w", "-140");
+ }
+}
+
+
+//----------------------------------------------------------------------------------------------------------------
+// Web Search
+//----------------------------------------------------------------------------------------------------------------
+
+searchedit.onEnter ()
+{
+ performWebSearch(getText());
+}
+
+performWebSearch (string searchstring)
+{
+ while (strleft(searchstring, 1) == " ")
+ {
+ searchstring = strright(searchstring, strlen(searchstring) -1);
+ if (searchstring == " ")
+ return; // kill infinite loop
+ }
+
+ if (strlower(searchstring) == "")
+ {
+ return;
+ }
+
+ // check what the current websearch is
+ if (browser_search_attrib.getData() == "Modern Skins")
+ // searchstring = "http://www.winamp.com/skins/search/?s=m&q=" + prepareWebString(searchstring, "+");
+ searchstring = "http://www.google.com/search?q=Winamp+Skin+" + prepareWebString(searchstring, "+");
+
+ else if (browser_search_attrib.getData() == "Classic Skins")
+ // searchstring = "http://www.winamp.com/skins/search/?s=c&q=" + prepareWebString(searchstring, "+");
+ searchstring = "http://www.google.com/search?q=Winamp+Classic+Skin+" + prepareWebString(searchstring, "+");
+
+ else if (browser_search_attrib.getData() == "Plug-ins")
+ // searchstring = "http://www.winamp.com/plugins/search/?q=" + prepareWebString(searchstring, "+");
+ searchstring = "http://www.google.com/search?q=Winamp+Plugin+" + prepareWebString(searchstring, "+");
+
+ else if (browser_search_attrib.getData() == "Web Search")
+ {
+ if (isAutomatedSearch)
+ {
+ searchstring = "http://www.google.com/search?q=" + prepareWebString(searchstring, "+");
+ // searchstring = "http://search.winamp.com/search/search?invocationType=enus-winamp-553--as&query=" + prepareWebString(searchstring, "+");
+ // searchstring = "http://slirsredirect.search.aol.com/redirector/sredir?sredir=1841&invocationType=en00-winamp-55--as&query=" + prepareWebString(searchstring, "+");
+ }
+ else
+ {
+ searchstring = "http://www.google.com/search?q=" + prepareWebString(searchstring, "+");
+ // searchstring = "http://search.winamp.com/search/search?invocationType=en00-winamp-553--ws&query=" + prepareWebString(searchstring, "+");
+ //searchstring = "http://slirsredirect.search.aol.com/redirector/sredir?sredir=1840&invocationType=en00-winamp-55--ws&query=" + prepareWebString(searchstring, "+");
+ }
+ }
+
+ else if (browser_search_attrib.getData() == "Pollstar")
+ searchstring = "http://www.pollstar.com/tour/searchall.pl?By=All&Content=" + prepareWebString(searchstring, "+");
+
+ else if (browser_search_attrib.getData() == "Bandsintown")
+ searchstring = "http://www.bandsintown.com/" + prepareWebString(searchstring, "");
+
+ else if (browser_search_attrib.getData() == "JamBase")
+ searchstring = "http://www.jambase.com/search.asp?band=" + prepareWebString(searchstring, "+");
+
+ else if (browser_search_attrib.getData() == "Wikipedia Search")
+ searchstring = "http://en.wikipedia.org/wiki/Special:Search?search=" + prepareWebString(searchstring, "+") + "&go=Go";
+ else //let's do a google search
+ searchstring = "http://www.google.com/search?q=" + prepareWebString(searchstring, "+");
+
+ navurl.setText(searchstring);
+ browserReload();
+}
+
+// Set the button image according to the current websearch
+browser_search_attrib.onDataChanged ()
+{
+ if (getData() == "Bandsintown") bsearch.setXmlParam("image", "browser.button.search.bit.normal");
+ else if (getData() == "JamBase") bsearch.setXmlParam("image", "browser.button.search.jambase.normal");
+ else if (getData() == "Web Search") bsearch.setXmlParam("image", "browser.button.search.google.normal");
+ else if (getData() == "Pollstar") bsearch.setXmlParam("image", "browser.button.search.pollstar.normal");
+ else if (getData() == "Wikipedia Search") bsearch.setXmlParam("image", "browser.button.search.wiki.normal");
+ else bsearch.setXmlParam("image", "browser.button.search.winamp.normal");
+
+ if (brw.isVisible())
+ {
+ performWebSearch(searchedit.getText());
+ }
+}
+
+// Show the Menu to choose a web search
+bsearch.onLeftClick ()
+{
+ AttribMenu searchlist = createMenufromAttribList (SearchAttributeList);
+
+ int ret = searchlist.popatxy(clientToScreenX(bsearch.getLeft()), clientToScreenY(bsearch.getTop() + bsearch.getHeight()));
+ if (ret >= 0)
+ {
+ configAttribute temp = SearchAttributeList.enumItem(ret);
+ temp.setData("1");
+ }
+
+ delete searchlist;
+ complete;
+}
+
+// This is the main function to create a menu out of configattributes
+// Better leave this function as it is.
+createMenufromAttribList (list entries)
+{
+ Boolean dummy = 0;
+ ConfigAttribute temp;
+ ConfigItem root = entries.enumItem(0);
+ PopUpMenu _menu;
+ list submenus, subroots;
+ submenus = new list;
+ submenus.removeAll();
+ subroots = new list;
+ subroots.removeAll();
+ _menu = new PopUpMenu;
+ for ( int i = 1; i < entries.getNumItems(); i++ )
+ {
+ temp = entries.enumItem(i);
+ configItem parent = temp.getParentItem();
+ if (parent == root)
+ {
+ _menu.addCommand (
+ temp.getAttributeName(),
+ i,
+ temp.getData() == "1",
+ 0
+ );
+ }
+ else
+ {
+ popupmenu submenu;
+ boolean gotit = FALSE;
+ for ( int j = 0; j < submenus.getNumItems(); j++ )
+ {
+ if (subroots.enumItem(j) == parent)
+ {
+ submenu = submenus.enumItem(j);
+ submenus.removeItem(j);
+ gotit = TRUE;
+ }
+ }
+ if (gotit == FALSE)
+ {
+ subroots.addItem(parent);
+ submenu = new popupmenu;
+ }
+ submenu.addCommand (
+ temp.getAttributeName(),
+ i,
+ temp.getData() == "1",
+ 0
+ );
+ submenus.addItem(submenu);
+ }
+ }
+ for ( int i = 0; i < submenus.getNumItems(); i++ )
+ {
+ if (dummy == 1) _menu.addSubMenu(submenus.enumItem(i), "Winamp Search"); //TODO ci.getName();
+ else
+ {
+ _menu.addSubMenu(submenus.enumItem(i), "Concert Search"); //TODO ci.getName();
+ dummy = 1;
+ }
+ }
+ delete submenus;
+ delete subroots;
+
+ return _menu;
+}
+
+// perpare a webstring out of the searchedit input
+// %artist% and %album% are special inputs and will be rendered
+// " " will be replaced for browser compatability
+string prepareWebString (string url, string replace)
+{
+ string artist = getPlayItemMetaDataString("artist");
+ string album = getPlayItemMetaDataString("album");
+
+ if (artist == "") artist = getPlayitemString();
+ if (album == "") album = getPlayitemString();
+
+ url = strReplace(url, "%artist%", artist);
+ url = strReplace(url, "%album%", album);
+
+ url = urlEncode(url);
+
+ url = strReplace(url, "%20", replace);
+
+ return url;
+}
+
+// a basic function to replace a substring inside a string
+string strReplace(string str, string replace, string by)
+{
+ int pos;
+ int len = strlen(replace);
+ while (pos = strsearch(str, replace) > -1)
+ {
+ string str_ = "";
+ String _str = "";
+
+ if (pos > 0) str_ = strleft(str, pos);
+
+ pos = strlen(str)-pos-len;
+ if (pos > 0) _str = strright(str, pos);
+
+ str = str_ + by + _str;
+ }
+ return str;
+}
+
+
+//----------------------------------------------------------------------------------------------------------------
+// Quick Links
+//----------------------------------------------------------------------------------------------------------------
+
+Function storeInternalLink(string name, string url);
+Function String enumListItem (List list_for_returnval, List list_to_search, String item_to_search);
+
+Global String qversion = "1.00";
+
+storeInternalLink (string name, string url)
+{
+ internal_LinksTitle.addItem(name);
+ internal_LinksUrl.addItem(url);
+}
+
+Global XmlDoc links_xml;
+
+// add [[beontop]TRUE] to get the menu before all other menus
+loadInternalLinks ()
+{
+ links_xml = new XmlDoc;
+ String filename = Application.GetSettingsPath() + "/links.xml";
+ links_xml.load(filename);
+ if (links_xml.getSize() > 0)
+ {
+ links_xml.parser_addCallback("WasabiXML/*");
+ links_xml.parser_start();
+ links_xml.parser_destroy();
+ }
+ xmlReadPassed = true;
+ checkForNewLinks();
+}
+
+Global int submenu = 0;
+Global boolean inSub = false;
+
+WaPrivateCall.onLinksUpdated()
+{
+
+ internal_LinksSubmenus.removeAll();
+ internal_LinksTitle.removeAll();
+ internal_LinksUrl.removeAll();
+
+ submenu = 0;
+ inSub = false;
+
+ links_xml = new XmlDoc;
+ String filename = Application.GetSettingsPath() + "/links.xml";
+ links_xml.load(filename);
+ links_xml.parser_addCallback("WasabiXML/*");
+ links_xml.parser_start();
+ links_xml.parser_destroy();
+}
+
+checkForNewLinks ()
+{
+ if (!brw.isVisible() || !xmlReadPassed)
+ return;
+
+ /*int last = getPrivateInt("Winamp Browser", "linksupdate", 0);
+ int dt = System.getDate();
+ int now = (getDateYear(dt)-100)*1000+getDateDoy(dt);
+
+ if (last >= now) return;
+ setPrivateInt("Winamp Browser", "linksupdate", now);*/
+
+ xmlReadPassed = false;
+
+ linkDelay.start();
+}
+
+linkDelay.onTimer ()
+{
+ linkDelay.stop();
+ WaPrivateCall.updateLinks(qversion, "0.1");
+}
+
+Global boolean languageFound;
+
+links_xml.parser_onCallback (String xmlpath, String xmltag, list paramname, list paramvalue)
+{
+ if (strlower(xmltag) == "browserquicklinks")
+ {
+ qversion = enumListItem(paramvalue, paramname, "version");
+ }
+
+ else if (strlower(xmltag) == "link")
+ {
+ String store = enumListItem(paramvalue, paramname, "name");
+
+ if (enumListItem(paramvalue, paramname, "ontop") == "1")
+ {
+ store = "[[beontop]TRUE]" + store;
+ }
+
+ if (inSub)
+ {
+ store = "[[submenu]"+ integerToString(submenu) +"]" + store;
+ }
+
+ storeInternalLink(store, enumListItem(paramvalue, paramname, "url"));
+ }
+
+ else if (strlower(xmltag) == "submenu")
+ {
+ String store = enumListItem(paramvalue, paramname, "name");
+
+ submenu++;
+ inSub = true;
+
+ if (enumListItem(paramvalue, paramname, "ontop") == "1")
+ {
+ store = "[[beontop]TRUE]" + store;
+ }
+
+ internal_LinksSubmenus.addItem(store);
+ }
+ else if (!languageFound && !hasXuiHome && strlower(xmltag) == "home")
+ {
+ String lngId = enumListItem(paramvalue, paramname, "lngId");
+ lngid = strupper(lngid);
+ if ((lngId) == "DEFAULT")
+ {
+ BROWSER_DEFAULT_HOME = enumListItem(paramvalue, paramname, "url");
+ }
+ else if ((lngId) == strupper(getLanguageId()))
+ {
+ languageFound = true;
+ BROWSER_DEFAULT_HOME = enumListItem(paramvalue, paramname, "url");
+ /*for(int i; i < paramvalue.getnumItems(); i++)
+ {
+ String s = paramname.enumItem(i);
+ debug(s);
+ s = paramvalue.enumItem(i);
+ debug(s);
+ }*/
+ }
+ }
+}
+
+String enumListItem (List list_for_returnval, List list_to_search, String item_to_search)
+{
+ int pos = list_to_search.findItem(item_to_search);
+
+ if (pos >= 0)
+ {
+ return list_for_returnval.enumItem(pos);
+ }
+ else
+ {
+ return "";
+ }
+}
+
+Global boolean ha;
+links_xml.parser_onCloseCallback (String xmlpath, String xmltag)
+{
+ if (strlower(xmltag) == "submenu")
+ {
+ inSub = false;
+ }
+}
+
+// used to get the name of the quicklink and store it in a new subfolder
+Function string convertQuickLinkTempName (string name, int subfolder);
+string convertQuickLinkTempName (string name, int subfolder)
+{
+ if (strleft(name, 10) == "[[submenu]")
+ {
+ name = strright(name, strlen(name) - 10);
+ name = getToken(name, "]", 1);
+ }
+ if (subfolder > 0)
+ {
+ name = "[[submenu]" + integerToString(subfolder) + "]" + name;
+ }
+ return name;
+}
+
+// returns the current subfolder, zero if it is in root
+Function getSubFolderNum(string name);
+int getSubFolderNum (string name)
+{
+ if (strleft(name, 10) == "[[submenu]")
+ {
+ name = strright(name, strlen(name) - 10);
+ return stringToInteger(getToken(name, "]", 0));
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+// if "blabla" is a subfolder, this function will return what subfolder num it has. -1 is returned for no success
+Function getSubFolderNameToNum(string name);
+int getSubFolderNameToNum (string name)
+{
+ int subItems = getPrivateInt("Winamp Browser QuickLinks SubMenus", "numItems", 0);
+
+ for ( int i = 1; i <= subItems; i++ )
+ {
+ if (getPrivateString("Winamp Browser QuickLinks SubMenus", "itemText_" + integerToString(i), "ERROR") == name) return i;
+ }
+ return -1;
+}
+
+Function PopupMenu createCustomMenu (boolean wantAdd, int startVal);
+Function showQLEdit(int item);
+Global Boolean ql_edit_visible;
+Global Int editItemNum;
+
+Global Button edit_ok;
+global edit qlname, qlurl;
+global dropdownlist qlparent;
+
+// Show the Quicklink Edit Box. also used to create a new quick link item
+showQLEdit (int item)
+{
+ editItemNum = item;
+ ql_edit_visible = 1;
+ quicklink_name = newDynamicContainer("browser.quicklink.edit.dialog2");
+ if (!quicklink_name) return;
+ quicklink_name_layout = quicklink_name.getLayout("normal");
+ if (!quicklink_name_layout) return;
+
+ qlname = quicklink_name_layout.findObject("edit.name");
+ qlurl = quicklink_name_layout.findObject("edit.url");
+ qlparent = quicklink_name_layout.findObject("edit.parent");
+
+ // predefined entry in subfolder selection
+ qlparent.addItem("* root");
+ qlparent.setXmlParam("select", "* root");
+
+ int subItems = getPrivateInt("Winamp Browser QuickLinks SubMenus", "numItems", 0);
+
+ // load all existing subfolders
+ for ( int i = 1; i <= subItems; i++ )
+ {
+ qlparent.addItem(getPrivateString("Winamp Browser QuickLinks SubMenus", "itemText_" + integerToString(i), "ERROR"));
+ if ( (item + 1000) * (-1) == i ) qlparent.setXmlParam("select", getPrivateString("Winamp Browser QuickLinks SubMenus", "itemText_" + integerToString(i), "ERROR"));
+ }
+
+ // standard text for a new folder
+ qlparent.addItem("["+translate("new subfolder")+"]");
+
+ edit_ok = quicklink_name_layout.findObject("return.values");
+
+ // check if we should edit a quick link...
+ if (item > 0)
+ {
+ string name = getPrivateString("Winamp Browser QuickLinks", "itemText_" + integerToString(item), "ERROR");
+ int sf = getSubFolderNum(name);
+ if (sf > 0)
+ {
+ qlparent.setXmlParam("select", getPrivateString("Winamp Browser QuickLinks SubMenus", "itemText_" + integerToString(sf), "ERROR"));
+ }
+ qlname.setText(convertQuickLinkTempName(name, 0));
+ qlurl.setText(getPrivateString("Winamp Browser QuickLinks", "itemLink_" + integerToString(item), "ERROR"));
+ }
+ // ...or create a new one
+ else
+ {
+ editItemNum += 1000;
+ editItemNum *= -1;
+ qlurl.setText(navurl.getText());
+ qlname.setText(brw.getDocumentTitle());
+ editItemNum = 0;
+ }
+
+ // show the window
+ quicklink_name_layout.center();
+ quicklink_name_layout.show();
+ quicklink_name_layout.setfocus();
+}
+
+// Yay, OK has clicked - let's save the quick link
+edit_ok.onLeftClick ()
+{
+ if (qlname.getText() == "")
+ {
+ qlname.setText("Please enter a name for your Quicklink!");
+ return;
+ }
+ if (qlurl.getText() == "")
+ {
+ qlurl.setText("Please enter an URL for your Quicklink!");
+ return;
+ }
+
+ // If we store a new quicklink let's insert it in the end of the list.
+ if (editItemNum == 0)
+ {
+ editItemNum = getPrivateInt("Winamp Browser QuickLinks", "numItems", -1) + 1;
+ setPrivateInt("Winamp Browser QuickLinks", "numItems", editItemNum);
+ }
+ edit e = qlparent.findObject("combobox.edit");
+ string sel = e.getText();
+
+ //store as root item
+ if (sel == "* root")
+ {
+ setPrivateString("Winamp Browser QuickLinks", "itemText_" + integerToString(editItemNum), qlname.getText());
+ }
+ // store in a subfolder
+ else
+ {
+ int i = getSubFolderNameToNum (sel);
+ // store in a existing subfolder
+ if (i > 0)
+ {
+ setPrivateString("Winamp Browser QuickLinks", "itemText_" + integerToString(editItemNum), "[[submenu]" + integerToString(i) + "]" + qlname.getText());
+ }
+ // store in a new subfolder
+ else
+ {
+ int subitems = getPrivateInt("Winamp Browser QuickLinks SubMenus", "numItems", 0);
+ setPrivateString("Winamp Browser QuickLinks", "itemText_" + integerToString(editItemNum), "[[submenu]" + integerToString(subitems + 1) + "]" + qlname.getText());
+
+ setPrivateInt("Winamp Browser QuickLinks SubMenus", "numItems", subitems + 1);
+ setPrivateString("Winamp Browser QuickLinks SubMenus", "itemText_" + integerToString(subitems + 1), sel);
+ }
+ }
+ // save link and close window
+ setPrivateString("Winamp Browser QuickLinks", "itemLink_" + integerToString(editItemNum), qlurl.getText());
+ quicklink_name_layout.hide();
+}
+
+
+Function showSMEdit(int item);
+Global Boolean sm_edit_visible;
+Global Int smEditItemNum;
+Global Layout submenu_name_layout;
+Global Container submenu_name;
+
+Global Button sm_edit_ok;
+global edit smname;
+
+// Show Sub Menu Editbox
+showSMEdit (int item)
+{
+ item += 20000;
+ item *= -1;
+ smEditItemNum = item;
+ sm_edit_visible = 1;
+ submenu_name = newDynamicContainer("browser.submenu.edit2");
+ if (!submenu_name) return;
+ submenu_name_layout = submenu_name.getLayout("normal");
+ if (!submenu_name_layout) return;
+
+ smname = submenu_name_layout.findObject("edit.name");
+ sm_Edit_ok = submenu_name_layout.findObject("return.values");
+
+ // load submenu text, if we edit
+ if (smEditItemNum)
+ {
+ smname.setText(getPrivateString("Winamp Browser QuickLinks SubMenus", "itemText_" + integerToString(smEditItemNum), "ERROR"));
+ }
+
+ submenu_name_layout.center();
+ submenu_name_layout.show();
+ submenu_name_layout.setfocus();
+}
+
+sm_edit_ok.onLeftClick ()
+{
+ if (smname.getText() == "")
+ {
+ smname.setText("Please enter a Subfolder name!");
+ return;
+ }
+
+ // is this a new submenu?
+ if (smEditItemNum == 0)
+ {
+ smEditItemNum = getPrivateInt("Winamp Browser QuickLinks SubMenus", "numItems", 0);
+ smEditItemNum++;
+ setPrivateInt("Winamp Browser QuickLinks SubMenus", "numItems", smEditItemNum);
+ }
+ setPrivateString("Winamp Browser QuickLinks SubMenus", "itemText_" + integerToString(smEditItemNum), smname.getText());
+ submenu_name_layout.hide();
+}
+
+
+// Is one of the edit windows closed?
+system.onHideLayout (Layout _layout)
+{
+ if (_layout == quicklink_name_layout)
+ {
+ ql_edit_visible = 0;
+ return;
+ }
+ else if (_layout == submenu_name_layout)
+ {
+ sm_edit_visible = 0;
+ }
+}
+
+/* Hey, someone has clicked on the quicklinks button.
+ we will show a menu and return the users descision as int.
+ Here is the range what is done for what return value
+ ]oo;-40000] delete subfolder: abs(ret += 20000)
+ ]-40000;-20000] edit submenu: abs(ret += 20000)
+ ]-20000;-1000] add quicklink in subfolder: abs(ret += 1000)
+ [1;10000[ browse quicklink: ret
+ [10000;20000[ edit quicklink: ret -= 10000
+ [20000;30000[ delete quicklink
+ [40000;oo[ browse internal quicklink: ret -= 40000
+*/
+
+blinks.onLeftClick ()
+{
+ popupmenu quicklinks = new popupmenu;
+
+ quicklinks = createCustomMenu (1 , 0);
+
+ int ret = quicklinks.popatxy(clientToScreenX(blinks.getLeft()), clientToScreenY(blinks.getTop() + blinks.getHeight()));
+
+ delete quicklinks;
+
+ // see above
+ if (ret <= -1000 && ret > -20000) showQLEdit(ret);
+ if (ret <= -20000 && ret > -40000) showSMEdit(ret);
+ if (ret <= -40000)
+ {
+ ret += 40000;
+ ret *= -1;
+ String msg = translate("Do you really want to delete this Subfolder?") + "\n" +
+ translate("All Quick Links stored in this folder will be") + "\n" +
+ translate("transfered to the root of the menu!");
+ int answer = messageBox (msg, translate("Confirmation") , 4, "");
+ if (answer == 4)
+ {
+ int Subitems = getPrivateInt("Winamp Browser QuickLinks Submenus", "numItems", -1);
+ int items = getPrivateInt("Winamp Browser QuickLinks", "numItems", -1);
+
+ setPrivateInt("Winamp Browser QuickLinks Submenus", "numItems", Subitems - 1);
+
+ for ( int i = ret; i <= Subitems; i++ )
+ {
+ string set = getPrivateString("Winamp Browser QuickLinks Submenus", "itemText_" + integerToString(i+1), "ERROR");
+ setPrivateString("Winamp Browser QuickLinks Submenus", "itemText_" + integerToString(i), set);
+ string vv = "[[submenu]" + integerToString(i) + "]";
+ for ( int ii = 1; ii <= items; ii++ )
+ {
+ string v = getPrivateString("Winamp Browser QuickLinks", "itemText_" + integerToString(ii), "ERROR");
+ if (strleft (v, strlen(vv)) == vv)
+ {
+ v = strright(v, strlen(v) - strlen(vv));
+ if (i == ret)
+ {
+ setPrivateString("Winamp Browser QuickLinks", "itemText_" + integerToString(ii), v);
+ }
+ else
+ {
+ v = "[[submenu]" + integerToString(i-1) + "]" + v;
+ setPrivateString("Winamp Browser QuickLinks", "itemText_" + integerToString(ii), v);
+ }
+ }
+ }
+ }
+ }
+ return;
+ }
+
+ if (ret <= 0) return;
+
+ int items = getPrivateInt("Winamp Browser QuickLinks", "numItems", -1);
+
+ if (ret > items)
+ {
+ if (ret > 10000 && ret < 20000) showQLEdit(ret - 10000);
+ else if (ret > 20000 && ret < 30000)
+ {
+ ret -= 20000;
+ String msg = translate("Do You really want to delete this Quick Link?");
+ int answer = messageBox (msg, translate("Confirmation") , 4, "");
+ if (answer == 4)
+ {
+ int items = getPrivateInt("Winamp Browser QuickLinks", "numItems", -1);
+
+ setPrivateInt("Winamp Browser QuickLinks", "numItems", items - 1);
+
+ for ( int i = ret; i <= items; i++ )
+ {
+ string set = getPrivateString("Winamp Browser QuickLinks", "itemText_" + integerToString(i+1), "ERROR");
+ setPrivateString("Winamp Browser QuickLinks", "itemText_" + integerToString(i), set);
+ set = getPrivateString("Winamp Browser QuickLinks", "itemLink_" + integerToString(i+1), "ERROR");
+ setPrivateString("Winamp Browser QuickLinks", "itemLink_" + integerToString(i), set);
+ }
+ }
+ }
+ else if (ret >= 40000)
+ {
+ navurl.setText (internal_LinksURL.enumItem(ret-40000));
+ browserReload();
+ }
+ return;
+ }
+ else if (ret > 0 && ret <= items)
+ {
+ navurl.setText (getPrivateString("Winamp Browser QuickLinks", "itemLink_" + integerToString(ret), "ERROR"));
+ browserReload();
+ }
+
+ complete;
+}
+
+createCustomMenu (boolean wantAdd, int startVal)
+{
+ popupmenu _menu = new popupmenu;
+
+ int subItems = getPrivateInt("Winamp Browser QuickLinks SubMenus", "numItems", 0);
+ int items = getPrivateInt("Winamp Browser QuickLinks", "numItems", 0);
+ int int_subItems = internal_LinksSubmenus.getNumItems();
+ int int_items = internal_LinksTitle.getNumItems();
+
+ /** load top SubMenus */
+ for ( int i = 0; i < int_items; i++ )
+ {
+ string v = internal_LinksTitle.enumItem(i);
+ if (strleft(v, strlen("[[beontop]TRUE]")) == "[[beontop]TRUE]")
+ {
+ v = strright(v, strlen(v) - strlen("[[beontop]TRUE]"));
+ if (strleft(v, 10) != "[[submenu]")
+ {
+ _menu.addCommand (
+ v,
+ 40000 + i,
+ 0,
+ 0
+ );
+ }
+ }
+ }
+ for ( int i = 0; i < int_subItems ; i++ )
+ {
+ if (strleft(internal_LinksSubmenus.enumItem(i), strlen("[[beontop]TRUE]")) == "[[beontop]TRUE]")
+ {
+ popupmenu _sub = new popupmenu;
+ for ( int ii = 0; ii < int_items; ii++ )
+ {
+ string v = internal_LinksTitle.enumItem(ii);
+ string vv = "[[submenu]" + integerToString(i+1) + "]";
+ if (strleft (v, strlen(vv)) == vv)
+ {
+ v = strright(v, strlen(v) - strlen(vv));
+ _sub.addCommand (v, 40000 + ii, 0, 0);
+ }
+ }
+ if (_sub.getNumCommands() < 1) _sub.addCommand ("No Quick Links Stored", 0, 0, 1);
+ string tmp = internal_LinksSubmenus.enumItem(i);
+ _menu.AddSubMenu (_sub, strright(tmp, strlen(tmp) - strlen("[[beontop]TRUE]")));
+ }
+ }
+
+ if (_menu.getNumCommands() > 0) _menu.addSeparator();
+
+ if (wantAdd == 1)
+ {
+ popupmenu editsub = new popupmenu;
+
+ /** Edit Quick links */
+
+ popupmenu editmenu = new popupmenu;
+
+ if (subItems > 0)
+ {
+ for ( int i = 1; i <= subItems; i++ )
+ {
+ string vv = "[[submenu]" + integerToString(i) + "]";
+ popupmenu _sub = new popupmenu;
+ for ( int ii = 1; ii <= items; ii++ )
+ {
+ string v = getPrivateString("Winamp Browser QuickLinks", "itemText_" + integerToString(ii), "ERROR");
+ if (strleft (v, strlen(vv)) == vv)
+ {
+ v = strright(v, strlen(v) - strlen(vv));
+ _sub.addCommand (v, 10000 + ii, 0, 0);
+ }
+ }
+ if (_sub.getNumCommands() < 1) _sub.addCommand ("No Quick Links Stored", 0, 0, 1);
+ editmenu.AddSubMenu (_sub, getPrivateString("Winamp Browser QuickLinks SubMenus", "itemText_" + integerToString(i), "ERROR"));
+ }
+ }
+
+ for ( int i = 1; i <= items; i++ )
+ {
+ string v = getPrivateString("Winamp Browser QuickLinks", "itemText_" + integerToString(i), "ERROR");
+ if (strleft(v, 10) != "[[submenu]")
+ {
+ editmenu.addCommand (
+ v,
+ 10000 + i,
+ 0,
+ 0
+ );
+ }
+ }
+
+ if (editmenu.getNumCommands() < 1) editmenu.addCommand ("No Quick Links Stored", 0, 0, 1);
+
+ editsub.addSubMenu (editmenu, "Edit Quick Link");
+
+ /** Delete SubMenus */
+
+ popupmenu editmenu2 = new popupmenu;
+
+ if (subItems > 0)
+ {
+ for ( int i = 1; i <= subItems; i++ )
+ {
+ popupmenu _sub = new popupmenu;
+ for ( int ii = 1; ii <= items; ii++ )
+ {
+ string v = getPrivateString("Winamp Browser QuickLinks", "itemText_" + integerToString(ii), "ERROR");
+ string vv = "[[submenu]" + integerToString(i) + "]";
+ if (strleft (v, strlen(vv)) == vv)
+ {
+ v = strright(v, strlen(v) - strlen(vv));
+ _sub.addCommand (v, 20000 + ii, 0, 0);
+ }
+ }
+ if (_sub.getNumCommands() < 1) _sub.addCommand ("No Quick Links Stored", 0, 0, 1);
+ editmenu2.AddSubMenu (_sub, getPrivateString("Winamp Browser QuickLinks SubMenus", "itemText_" + integerToString(i), "ERROR"));
+ }
+ }
+
+ for ( int i = 1; i <= items; i++ )
+ {
+ string v = getPrivateString("Winamp Browser QuickLinks", "itemText_" + integerToString(i), "ERROR");
+ if (strleft(v, 10) != "[[submenu]")
+ {
+
+ editmenu2.addCommand (
+ v,
+ 20000 + i,
+ 0,
+ 0
+ );
+ }
+ }
+
+ if (editmenu2.getNumCommands() < 1) editmenu2.addCommand ("No Quick Links Stored", 0, 0, 1);
+ editsub.addSubMenu (editmenu2, "Delete Quick Link");
+ editsub.addSeparator();
+
+ /** Edit SubMenus */
+
+ popupmenu editmenu3 = new popupmenu;
+
+ for ( int i = 1; i <= subItems; i++ )
+ {
+ editmenu3.addCommand (
+ getPrivateString("Winamp Browser QuickLinks SubMenus", "itemText_" + integerToString(i), "ERROR"),
+ -20000 - i,
+ 0,
+ 0
+ );
+ }
+ if (editmenu3.getNumCommands() < 1) editmenu3.addCommand ("No Subfolders Stored", 0, 0, 1);
+ editsub.addSubMenu (editmenu3, "Edit Subfolder");
+
+
+ /** Delete SubMenus */
+
+ popupmenu editmenu4 = new popupmenu;
+
+ for ( int i = 1; i <= subItems; i++ )
+ {
+ editmenu4.addCommand (
+ getPrivateString("Winamp Browser QuickLinks SubMenus", "itemText_" + integerToString(i), "ERROR"),
+ -40000 - i,
+ 0,
+ 0
+ );
+ }
+ if (editmenu4.getNumCommands() < 1) editmenu4.addCommand ("No Subfolders Stored", 0, 0, 1);
+ editsub.addSubMenu (editmenu4, "Delete Subfolder");
+
+ _menu.addSubMenu (editsub, "Manage Quick Links");
+ _menu.addSeparator();
+ }
+
+ if (wantAdd == 1)
+ {
+ _menu.addCommand ("Add New Subfolder...", -20000, 0, 0);
+ _menu.addCommand ("Add Current Page...", -1000, 0, 0);
+ _menu.addSeparator();
+ }
+
+ /** load SubMenus */
+ for ( int i = 0; i < int_subItems ; i++ )
+ {
+ if (strleft(internal_LinksSubmenus.enumItem(i), strlen("[[beontop]TRUE]")) != "[[beontop]TRUE]")
+ {
+ popupmenu _sub = new popupmenu;
+ for ( int ii = 0; ii < int_items; ii++ )
+ {
+ string v = internal_LinksTitle.enumItem(ii);
+ string vv = "[[submenu]" + integerToString(i+1) + "]";
+ if (strleft (v, strlen(vv)) == vv)
+ {
+ v = strright(v, strlen(v) - strlen(vv));
+ _sub.addCommand (v, 40000 + ii, 0, 0);
+ }
+ }
+ if (_sub.getNumCommands() < 1) _sub.addCommand ("No Quick Links Stored", 0, 0, 1);
+ _menu.AddSubMenu (_sub, internal_LinksSubmenus.enumItem(i));
+ }
+ }
+
+ if (subItems > 0)
+ {
+ for ( int i = 1; i <= subItems; i++ )
+ {
+ popupmenu _sub = new popupmenu;
+ if (wantAdd == 1) _sub.addCommand ("Add Current Page...", -1000 - i, 0, 0);
+ _sub.addSeparator();
+ for ( int ii = 1; ii <= items; ii++ )
+ {
+ string v = getPrivateString("Winamp Browser QuickLinks", "itemText_" + integerToString(ii), "ERROR");
+ string vv = "[[submenu]" + integerToString(i) + "]";
+ if (strleft (v, strlen(vv)) == vv)
+ {
+ v = strright(v, strlen(v) - strlen(vv));
+ _sub.addCommand (v, startVal + ii, 0, 0);
+ }
+ }
+ if (_sub.getNumCommands() < 3) _sub.addCommand ("No Quick Links Stored", 0, 0, 1);
+ _menu.AddSubMenu (_sub, getPrivateString("Winamp Browser QuickLinks SubMenus", "itemText_" + integerToString(i), "ERROR"));
+ }
+ }
+
+ // load internal entries
+ for ( int i = 0; i < int_items; i++ )
+ {
+ string v = internal_LinksTitle.enumItem(i);
+ if (strleft(v, strlen("[[beontop]TRUE]")) != "[[beontop]TRUE]")
+ {
+ if (strleft(v, 10) != "[[submenu]")
+ {
+ _menu.addCommand (
+ v,
+ 40000 + i,
+ 0,
+ 0
+ );
+ }
+ }
+ }
+
+ for ( int i = 1; i <= items; i++ )
+ {
+ string v = getPrivateString("Winamp Browser QuickLinks", "itemText_" + integerToString(i), "ERROR");
+ if (strleft(v, 10) != "[[submenu]")
+ {
+ _menu.addCommand (
+ v,
+ startVal + i,
+ 0,
+ 0
+ );
+ }
+ }
+ if (_menu.getNumCommands() < 6) _menu.addCommand ("No Quick Links Stored", 0, 0, 1);
+ return _menu;
+}
+
+
+//----------------------------------------------------------------------------------------------------------------
+// Site Scraper
+//----------------------------------------------------------------------------------------------------------------
+
+Global String errorUrl;
+/*
+// scrape everytime the document does change and change navurl text
+brw.onDocumentComplete (String url)
+{
+ //if (navurl.gettext() != url && url != "about:blank") navurl.setText(url);
+ if (scr_list)
+ {
+ scr_list.deleteAllItems();
+ brw.scrape();
+ }
+}*/
+
+// Won't be called on iFrames
+brw.onDocumentready (String url)
+{
+ if (navurl.gettext() != url && url != "about:blank")
+ {
+ navurl.setText(url);
+ }
+ if (scr_list)
+ {
+ scr_list.deleteAllItems();
+ if (url != "about:blank") scr_list.setColumnLabel(0, getString("nullsoft.browser", 16) + " " + url);
+ brw.scrape();
+ }
+}
+
+Global String url_delayed;
+
+brw.OnNavigateError(String url, int code)
+{
+ if (code >= 200 && code <= 299)
+ return;
+
+ if (code == 0)
+ return;
+
+ // if (url == "" || strleft(url, strlen("http://search.winamp.com/")) == "http://search.winamp.com/")
+ if (url == "" || strleft(url, strlen("http://www.google.com/")) == "http://www.google.com/")
+ return;
+
+ if (strleft(url, 11) == "javascript:")
+ return;
+
+ // String t = "http://search.winamp.com/search/afe?query=" + prepareWebString(navurl.getText(), "+") + "&invocationType=en00-winamp-553--error";
+ String t = "http://www.google.com/search?q=" + prepareWebString(navurl.getText(), "+");
+
+ navurl.setText(t);
+ url_delayed = t;
+ delay.start();
+}
+
+delay.onTimer ()
+{
+ delay.stop();
+ brw.navigateUrl(url_delayed);
+}
+
+
+// Handles for wasabi:farme: show, hide, resize
+scr_open.onLeftClick ()
+{
+ browser_scr_show_attrib.setData("1");
+}
+
+scr_close.onLeftClick ()
+{
+ browser_scr_show_attrib.setData("0");
+}
+
+Global Boolean nocallback;
+browser_scr_show_attrib.onDataChanged ()
+{
+ if (brw == NULL || nocallback) return;
+ if (getData() == "1")
+ {
+ scr_close_xui.show();
+ scr_open_xui.hide();
+ if (download) scr_download_xui.show();
+ scr_play.show();
+ scr_rescan_xui.show();
+ scr_play_xui.show();
+ if (download) dld_play_xui.show();
+ dualwnd.setPosition(getPrivateInt(getSkinName(), "browser.frame.pos", 100));
+ }
+ else
+ {
+ scr_close_xui.hide();
+ scr_open_xui.show();
+ if (download) scr_download_xui.hide();
+ scr_play.hide();
+ scr_rescan_xui.hide();
+ scr_play_xui.hide();
+ if (download) dld_play_xui.hide();
+ if (dualwnd.getPosition() > 26) setPrivateInt(getSkinName(), "browser.frame.pos", dualwnd.getPosition());
+ dualwnd.setPosition(26);
+ }
+}
+
+scr_content.onResize (int x, int y, int w, int h)
+{
+ nocallback = TRUE;
+ if (dualwnd.getPosition() <= 26)
+ {
+ browser_scr_show_attrib.setData("0");
+ dualwnd.setPosition(26);
+ scr_close_xui.hide();
+ scr_open_xui.show();
+ scr_content.show();
+ if (download) scr_download_xui.hide();
+ scr_play_xui.hide();
+ scr_rescan_xui.hide();
+ if (download) dld_play_xui.hide();
+ }
+ else
+ {
+ scr_close_xui.show();
+ scr_open_xui.hide();
+ if (download) scr_download_xui.show();
+ scr_play_xui.show();
+ scr_rescan_xui.show();
+ if (download) dld_play_xui.show();
+ browser_scr_show_attrib.setData("1");
+ }
+ nocallback = FALSE;
+}
+
+// called everytime a media link is found. you must call brw.scrape to get them!
+brw.onMediaLink (string url)
+{
+ if (getPrivateInt("Winamp Bento", "Browser MediaMonitor autoswitch", 1))
+ {
+ browser_scr_show_attrib.setData("1");
+ setPrivateInt("Winamp Bento", "Browser DownloadMgr visible", 0);
+ scr_mode.show();
+ dld_mode.hide();
+ }
+
+ // check if the item exists already
+ for ( int i = 0; i < scr_list.getNumItems() ; i++ )
+ {
+ if (scr_list.getSubItemText(i, 1) == url)
+ return;
+ }
+
+ scr_list.addItem(urldecode(removePath(url)));
+ scr_list.setSubItem(scr_list.getLastAddedItemPos(), 1, url);
+ if (download) scr_list.setIconWidth(32);
+ else scr_list.setIconWidth(16);
+ scr_list.setIconHeight(12);
+ scr_list.setShowIcons(1);
+ if (download) scr_list.setItemIcon(scr_list.getLastAddedItemPos(), "browser.list.label");
+ else scr_list.setItemIcon(scr_list.getLastAddedItemPos(), "browser.list.label2");
+
+ retrieveStreamData();
+}
+
+System.onDownloadFinished (String url, boolean success, String filename)
+{
+ if (!success || url == "")
+ return;
+
+ for ( int i = 0; i < scr_list.getNumItems(); i++ )
+ {
+ if (scr_list.getSubItemText(i, 1) == url)
+ {
+ String a = getMetaDataString(filename, "artist");
+ String t = getMetaDataString(filename, "title");
+ String r;
+
+ if (a == "" && t == "")
+ return;
+ else if (a == "")
+ r = t;
+ else if (t == "")
+ r = a;
+ else
+ r = a + " - " + t;
+
+ scr_list.setItemLabel(i, r);
+ scr_list.setSubItem(i,1, filename);
+ }
+ }
+}
+
+Global Boolean prevent = FALSE;
+
+// List Right click menu
+scr_list.onRightClick (int num)
+{
+ scr_menu = new PopUpMenu;
+
+ scr_menu.addCommand(translate("Play selection")+"\t"+translate("Enter"), 1, 0, 0);
+ scr_menu.addCommand("Enqueue selection"/*\tShift+Enter"*/, 2, 0, 0);
+ if (download) scr_menu.addCommand("Download selection"/*\tShift+Enter"*/, 3, 0, 0);
+ scr_menu.addCommand("Send to:"/*\tShift+Enter"*/, 4, 0, 1);
+
+ scr_menu.addSeparator();
+ scr_menu.addCommand("Play all"/*\tAlt+Enter"*/, 11, 0, 0);
+ scr_menu.addCommand("Enqueue all"/*\tShift+Alt+Enter"*/, 12, 0, 0);
+ if (download) scr_menu.addCommand("Download all"/*\tShift+Alt+Enter"*/, 13, 0, 0);
+
+ scr_menu.addSeparator();
+ scr_menu.addCommand(translate("Select all")+"\t"+translate("Ctrl+A"), 101, 0, 0);
+ scr_menu.addCommand(translate("Remove selection")+"\t"+translate("Ctrl+R"), 201, 0, 0);
+
+ int result = scr_menu.popAtMouse();
+
+ if (result)
+ {
+ if (result == 1) playListItem(num);
+ else if (result == 2) enqueueListItem(num);
+ else if (result == 3) downloadListItem(num);
+ else if (result == 11 )
+ {
+ boolean enqueue = 0;
+ int v = scr_list.getNumItems();
+ for ( int i = 0; i < v ; i++ )
+ {
+ if (enqueue == 0)
+ {
+ System.playFile(scr_list.getItemLabel(i,1));
+ enqueue = 1;
+ }
+ else
+ {
+ System.enqueueFile(scr_list.getItemLabel(i,1));
+ }
+ }
+ }
+ else if (result == 12 )
+ {
+ int v = scr_list.getNumItems();
+ for ( int i = 0; i < v ; i++ )
+ {
+ System.enqueueFile(scr_list.getItemLabel(i,1));
+ }
+ }
+ else if (result == 13 )
+ {
+ downloadListItem(-2);
+
+ }
+ else if (result == 101) selectAll();
+ else if (result == 201)
+ {
+ if (getFirstItemSelected() == getNextItemSelected(getFirstItemSelected()))
+ {
+ deletebypos(getFirstItemSelected());
+ if (scr_menu) delete scr_menu;
+ return;
+ }
+
+ int v = scr_list.getNumItems();
+ for ( int i = v-1; i >= 0 ; i-- )
+ {
+ if (getItemSelected(i)) deletebypos(i);
+ }
+ }
+ }
+
+ if (scr_menu) delete scr_menu;
+}
+
+scr_list.onIconLeftClick (int item, int x , int y)
+{
+ if (x < 12)
+ {
+ playListItem(item);
+ }
+ else if (x > 14 && x < 29 && download)
+ {
+ downloadListItem(item);
+ }
+}
+
+
+// User Buttons
+scr_download.onLeftClick ()
+{
+ if (scr_list.getFirstItemSelected() == -1)
+ {
+ downloadListItem(-2);
+ }
+ else
+ {
+ downloadListItem(-1);
+ }
+}
+
+scr_play.onLeftClick ()
+{/*enqueueFile("file://H:\\mp3 -\\Radio21Live.m3u");
+ enqueueFile("file://H:\\mp3 -\\Nada_Surf_2008.mp3");
+ //debug("file://H:\\mp3 -\\Nada_Surf_2008.mp3");
+ return;*/
+ playListItem(-1);
+}
+
+scr_rescan.onLeftClick ()
+{
+ scr_list.deleteAllItems();
+ brw.scrape();
+}
+
+scr_list.onDoubleClick (Int itemnum)
+{
+ playListItem(itemnum);
+}
+
+scr_list.onKeyDown (int code)
+{
+ if (code == 13)
+ {
+ if (isKeyDown(VK_CONTROL))
+ {
+ enqueueListItem(scr_list.getItemFocused());
+ }
+ else
+ {
+ playListItem(scr_list.getItemFocused());
+ }
+ prevent = TRUE;
+ }
+ else if (code == 65 && isKeyDown(VK_CONTROL))
+ {
+ selectAll();
+ prevent = TRUE;
+ }
+ else if (code == 82 && isKeyDown(VK_CONTROL))
+ {
+ if (getFirstItemSelected() == getNextItemSelected(getFirstItemSelected()))
+ {
+ deletebypos(getFirstItemSelected());
+ if (scr_menu) delete scr_menu;
+ return;
+ }
+
+ int v = scr_list.getNumItems();
+ for ( int i = v-1; i >= 0 ; i-- )
+ {
+ if (getItemSelected(i)) deletebypos(i);
+ }
+ }
+ complete;
+}
+
+// prevent this action to be reported to other scripts
+System.onKeyDown (String key)
+{
+ if (prevent)
+ {
+ prevent = FALSE;
+ complete;
+ }
+}
+
+// play a list item
+playListItem (int num)
+{
+ String slash = System.Strleft("/ ", 1);
+ if (scr_list.getFirstItemSelected() == -1)
+ {
+
+ boolean enqueue = 0;
+ int v = scr_list.getNumItems();
+ for ( int i = 0; i < v ; i++ )
+ {
+ String play = scr_list.getItemLabel(i,1);
+ if (strsearch(play, ":" + slash + slash) < 0)
+ play = "file://" + play;
+
+ if (enqueue == 0)
+ {
+ System.playFile(play);
+ enqueue = 1;
+ }
+ else
+ {
+ System.enqueueFile(play);
+ }
+ }
+ return;
+ }
+
+ int sel = scr_list.getFirstItemSelected();
+ if (sel == scr_list.getNextItemSelected(sel))
+ {
+ String play = scr_list.getItemLabel(sel,1);
+ if (strsearch(play, ":" + slash + slash) < 0)
+ play = "file://" + play;
+
+ System.playFile(play);
+ return;
+ }
+
+ boolean enqueue = 0;
+ int v = scr_list.getNumItems();
+ for ( int i = 0; i < v ; i++ )
+ {
+ if (scr_list.getItemSelected(i))
+ {
+ String play = scr_list.getItemLabel(i,1);
+ if (strsearch(play, ":" + slash + slash) < 0)
+ play = "file://" + play;
+
+ if (enqueue == 0)
+ {
+ System.playFile(play);
+ enqueue = 1;
+ }
+ else
+ {
+ System.enqueueFile(play);
+ }
+ }
+ }
+}
+
+// enqueue a list item
+enqueueListItem (int num)
+{
+ String slash = System.Strleft("/ ", 1);
+ int sel = scr_list.getFirstItemSelected();
+ if (sel == scr_list.getNextItemSelected(sel))
+ {
+ String play = scr_list.getItemLabel(sel,1);
+ if (strsearch(play, ":" + slash + slash) < 0)
+ play = "file://" + play;
+
+ System.enqueueFile(play);
+ return;
+ }
+
+ int v = scr_list.getNumItems();
+ for ( int i = 0; i < v ; i++ )
+ {
+ if (scr_list.getItemSelected(i))
+ {
+ String play = scr_list.getItemLabel(i,1);
+ if (strsearch(play, ":" + slash + slash) < 0)
+ play = "file://" + play;
+ System.enqueueFile(play);
+ }
+ }
+}
+
+Function maybeShowDownloadManager();
+
+// downlaod a list item
+downloadListItem (int num)
+{
+ boolean storeInMl = getPrivateInt("Winamp Bento", "Store Browser Downloads in ML", 1);
+
+ String storageDir = getPrivateString("Winamp Bento", "Save Browser Downloads Dir", "");
+ if (getPrivateInt("Winamp Bento", "Save Browser Downloads in CD Ripping Dir", 0))
+ storageDir = "";
+
+ if (num > -1)
+ {
+ System.downloadMedia(scr_list.getItemLabel(num,1), storageDir, storeInMl, true);
+ maybeShowDownloadManager();
+ return;
+ }
+
+ int v = scr_list.getNumItems();
+ if (num == -2)
+ {
+ for ( int i = 0; i < v ; i++ )
+ System.downloadMedia(scr_list.getItemLabel(i,1), storageDir, storeInMl, true);
+
+ maybeShowDownloadManager();
+ return;
+ }
+
+ int sel = scr_list.getFirstItemSelected();
+ if (sel == scr_list.getNextItemSelected(sel))
+ {
+ System.downloadMedia(scr_list.getItemLabel(sel,1), storageDir, storeInMl, true);
+ maybeShowDownloadManager();
+ return;
+ }
+
+ for ( int i = 0; i < v ; i++ )
+ {
+ if (scr_list.getItemSelected(i)) System.downloadMedia(scr_list.getItemLabel(i,1), storageDir, storeInMl, true);
+ }
+
+ maybeShowDownloadManager();
+}
+
+maybeShowDownloadManager ()
+{
+ if (getPrivateInt("Winamp Bento", "Browser DownloadMgr autoopen", 1))
+ {
+ setPrivateInt("Winamp Bento", "Browser DownloadMgr visible", 1);
+ scr_mode.hide();
+ dld_mode.show();
+ }
+}
+
+System.onPlay ()
+{
+ retrieveStreamData();
+}
+
+System.onTitleChange (String newtitle)
+{
+ retrieveStreamData();
+}
+
+retrieveStreamData ()
+{
+ String url = getPlayItemString();
+ if (url == "")
+ return;
+
+ String left = strleft(url, 10);
+ if (strsearch(left, "http://") < 0 && strsearch(left, "ftp://") < 0)
+ return;
+
+ // retrieve metadata
+ playDelay.start();
+}
+
+playDelay.onTimer ()
+{
+ playDelay.stop();
+ String url = getPlayItemString();
+ for ( int i = 0; i < scr_list.getNumItems(); i++ )
+ {
+ if (scr_list.getSubItemText(i, 1) == url)
+ {
+ String r = System.getPlayItemDisplayTitle();
+ scr_list.setItemLabel(i, r);
+ }
+ }
+}
+
+
+//----------------------------------------------------------------------------------------------------------------
+// Download Config
+//----------------------------------------------------------------------------------------------------------------
+
+
+switch_scr.onLeftClick ()
+{
+ setPrivateInt("Winamp Bento", "Browser DownloadMgr visible", 0);
+
+ scr_mode.show();
+ dld_mode.hide();
+}
+
+
+switch_dld.onLeftClick ()
+{
+ setPrivateInt("Winamp Bento", "Browser DownloadMgr visible", 1);
+
+ scr_mode.hide();
+ dld_mode.show();
+}
+
+dld_settings.onleftclick ()
+{
+
+ /*boolean b = getPrivateInt("Winamp Bento", "Browser DownloadMgr visible", 0);
+ PopupMenu pop = new PopupMenu;
+ pop.addCommand("Media Monitor", 0, !b, false);
+ pop.addCommand("Active Downloads", 1, b, false);*/
+ PopupMenu spop = new PopupMenu;
+ spop.addCommand("Autoopen Download Manager on downloading", 101, getPrivateInt("Winamp Bento", "Browser DownloadMgr autoopen", 1), false);
+ spop.addCommand(getString("nullsoft.browser", 21), 102, getPrivateInt("Winamp Bento", "Browser MediaMonitor autoswitch", 1), false);
+ spop.addSeparator();
+ spop.addCommand("Add downloaded files to Media Library", 103, getPrivateInt("Winamp Bento", "Store Browser Downloads in ML", 1), false);
+
+ PopupMenu spopout = new PopupMenu;
+ spopout.addCommand("CD Ripping Directory", 110, getPrivateInt("Winamp Bento", "Save Browser Downloads in CD Ripping Dir", 1), false);
+ spopout.addCommand("Custom Directory", 111, !getPrivateInt("Winamp Bento", "Save Browser Downloads in CD Ripping Dir", 1), false);
+ spopout.addSeparator();
+ spopout.addCommand("Alter CD Ripping Directory", 100, false, false);
+
+ spop.addSubMenu(spopout, "Set Download Directory");
+
+ int res = spop.popatxy(clientToScreenX(dld_settings.getLeft()), clientToScreenY(dld_settings.getTop() + dld_settings.getHeight()));
+ if (res < 100 && res > -1)
+ {
+ setPrivateInt("Winamp Bento", "Browser DownloadMgr visible", res);
+ if (res)
+ {
+ scr_mode.hide();
+ dld_mode.show();
+ }
+ else
+ {
+ scr_mode.show();
+ dld_mode.hide();
+ }
+ }
+
+ else if (res == 100)
+ {
+ String path = getDownloadPath();
+ path = selectFolder("", translate("Choose folder to store downloaded media.") + "\n" + translate("This will also alter the output folder for ripped tracks."), path);
+ if (path == "")
+ return;
+ setDownloadPath(path);
+ }
+ else if (res == 101)
+ {
+ setPrivateInt("Winamp Bento", "Browser DownloadMgr autoopen", !getPrivateInt("Winamp Bento", "Browser DownloadMgr autoopen", 1));
+ }
+ else if (res == 102)
+ {
+ setPrivateInt("Winamp Bento", "Browser MediaMonitor autoswitch", !getPrivateInt("Winamp Bento", "Browser MediaMonitor autoswitch", 1));
+ }
+ else if (res == 103)
+ {
+ setPrivateInt("Winamp Bento", "Store Browser Downloads in ML", !getPrivateInt("Winamp Bento", "Store Browser Downloads in ML", 1));
+ }
+ else if (res == 110)
+ {
+ setPrivateInt("Winamp Bento", "Save Browser Downloads in CD Ripping Dir", 1);
+ }
+ else if (res == 111)
+ {
+ String path = getPrivateString("Winamp Bento", "Save Browser Downloads Dir", "");
+ if (path == "") path = getDownloadPath();
+ path = selectFolder("", "Choose folder to store downloaded media.", path);
+ if (path == "")
+ return;
+ setPrivateInt("Winamp Bento", "Save Browser Downloads in CD Ripping Dir", 0);
+ setPrivateString("Winamp Bento", "Save Browser Downloads Dir", path);
+ }
+
+ delete spop;
+ complete;
+} \ No newline at end of file
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/browser.maki b/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/browser.maki
new file mode 100644
index 00000000..4dd0f319
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/browser.maki
Binary files differ
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/browser.png b/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/browser.png
new file mode 100644
index 00000000..ef362736
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/browser.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/browser.xml b/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/browser.xml
new file mode 100644
index 00000000..ad095442
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/browser.xml
@@ -0,0 +1,349 @@
+<!-- ==============================================================
+ <Winamp:Browser/>
+
+ @author: Martin Poehlmann
+ @version: 1.1
+
+ sendActions: openurl, search
+
+ usage: 1) include init_browser.m in your loadattribs.m
+ 2) paste a <winamp:browser/> object somewhere in your skin
+ 3) alter the default images if you like
+
+ note: Design and gammagroups are aligned to fit with
+ Bento. So overide the bitmaps in your skin in
+ order to change them.
+
+=============================================================== -->
+
+<elements>
+
+ <bitmap id="browser.editframe.left" file="xml/xui/browser/browser.png" x="0" y="78" h="22" w="4" gammagroup="ComponentFrame"/>
+ <bitmap id="browser.editframe.center" file="xml/xui/browser/browser.png" x="4" y="78" h="22" w="2" gammagroup="ComponentFrame"/>
+ <bitmap id="browser.editframe.right" file="xml/xui/browser/browser.png" x="6" y="78" h="22" w="4" gammagroup="ComponentFrame"/>
+
+ <bitmap id="browser.button.back.normal" file="xml/xui/browser/browser.png" x="8" y="0" h="26" w="21" gammagroup="WindowText"/>
+ <bitmap id="browser.button.back.hover" file="xml/xui/browser/browser.png" x="8" y="26" h="26" w="21" gammagroup="WindowText"/>
+ <bitmap id="browser.button.back.down" file="xml/xui/browser/browser.png" x="8" y="52" h="26" w="21" gammagroup="WindowText"/>
+
+ <bitmap id="browser.button.forth.normal" file="xml/xui/browser/browser.png" x="29" y="0" h="26" w="21" gammagroup="WindowText"/>
+ <bitmap id="browser.button.forth.hover" file="xml/xui/browser/browser.png" x="29" y="26" h="26" w="21" gammagroup="WindowText"/>
+ <bitmap id="browser.button.forth.down" file="xml/xui/browser/browser.png" x="29" y="52" h="26" w="21" gammagroup="WindowText"/>
+
+ <bitmap id="browser.button.reload.normal" file="xml/xui/browser/browser.png" x="50" y="0" h="26" w="21" gammagroup="WindowText"/>
+ <bitmap id="browser.button.reload.hover" file="xml/xui/browser/browser.png" x="50" y="26" h="26" w="21" gammagroup="WindowText"/>
+ <bitmap id="browser.button.reload.down" file="xml/xui/browser/browser.png" x="50" y="52" h="26" w="21" gammagroup="WindowText"/>
+
+ <bitmap id="browser.button.stop.normal" file="xml/xui/browser/browser.png" x="71" y="0" h="26" w="21" gammagroup="WindowText"/>
+ <bitmap id="browser.button.stop.hover" file="xml/xui/browser/browser.png" x="71" y="26" h="26" w="21" gammagroup="WindowText"/>
+ <bitmap id="browser.button.stop.down" file="xml/xui/browser/browser.png" x="71" y="52" h="26" w="21" gammagroup="WindowText"/>
+
+ <bitmap id="browser.button.home.normal" file="xml/xui/browser/browser.png" x="92" y="0" h="26" w="21" gammagroup="WindowText"/>
+ <bitmap id="browser.button.home.hover" file="xml/xui/browser/browser.png" x="92" y="26" h="26" w="21" gammagroup="WindowText"/>
+ <bitmap id="browser.button.home.down" file="xml/xui/browser/browser.png" x="92" y="52" h="26" w="21" gammagroup="WindowText"/>
+
+ <bitmap id="browser.button.links.normal" file="xml/xui/browser/browser.png" x="113" y="0" h="26" w="21" gammagroup="WindowText"/>
+ <bitmap id="browser.button.links.hover" file="xml/xui/browser/browser.png" x="113" y="26" h="26" w="21" gammagroup="WindowText"/>
+ <bitmap id="browser.button.links.down" file="xml/xui/browser/browser.png" x="113" y="52" h="26" w="21" gammagroup="WindowText"/>
+
+ <bitmap id="browser.button.search.winamp.normal" file="xml/xui/browser/browser.png" x="45" y="78" h="16" w="25" gammagroup="none"/>
+ <bitmap id="browser.button.search.google.normal" file="xml/xui/browser/browser.png" x="20" y="78" h="16" w="25" gammagroup="none"/>
+ <bitmap id="browser.button.search.aol.normal" file="xml/xui/browser/browser.png" x="70" y="78" h="16" w="25" gammagroup="none"/>
+ <bitmap id="browser.button.search.eventful.normal" file="xml/xui/browser/browser.png" x="95" y="78" h="16" w="25" gammagroup="none"/>
+ <bitmap id="browser.button.search.pollstar.normal" file="xml/xui/browser/browser.png" x="0" y="180" h="16" w="25" gammagroup="none"/>
+ <bitmap id="browser.button.search.wiki.normal" file="xml/xui/browser/browser.png" x="25" y="180" h="16" w="25" gammagroup="none"/>
+ <bitmap id="browser.button.search.bit.normal" file="xml/xui/browser/browser.png" x="50" y="180" h="16" w="25" gammagroup="none"/>
+ <bitmap id="browser.button.search.jambase.normal" file="xml/xui/browser/browser.png" x="75" y="180" h="16" w="25" gammagroup="none"/>
+ <bitmap id="browser.button.search.ln.normal" file="xml/xui/browser/browser.png" x="100" y="180" h="16" w="25" gammagroup="none"/>
+ <bitmap id="browser.button.search.ontour.normal" file="xml/xui/browser/browser.png" x="125" y="180" h="16" w="25" gammagroup="none"/>
+ <bitmap id="browser.button.search.truveo.normal" file="xml/xui/browser/browser.png" x="120" y="78" h="16" w="25" gammagroup="none"/>
+
+ <bitmap id="browser.button.scraper.hide.normal" file="xml/xui/browser/browser2.png" x="17" y="0" h="13" w="17" gammagroup="WindowText"/>
+ <bitmap id="browser.button.scraper.hide.hover" file="xml/xui/browser/browser2.png" x="17" y="13" h="13" w="17" gammagroup="WindowText"/>
+ <bitmap id="browser.button.scraper.hide.down" file="xml/xui/browser/browser2.png" x="17" y="26" h="13" w="17" gammagroup="WindowText"/>
+
+ <bitmap id="browser.button.scraper.show.normal" file="xml/xui/browser/browser2.png" x="0" y="0" h="13" w="17" gammagroup="WindowText"/>
+ <bitmap id="browser.button.scraper.show.hover" file="xml/xui/browser/browser2.png" x="0" y="13" h="13" w="17" gammagroup="WindowText"/>
+ <bitmap id="browser.button.scraper.show.down" file="xml/xui/browser/browser2.png" x="0" y="26" h="13" w="17" gammagroup="WindowText"/>
+
+ <bitmap id="browser.button.scraper.play.normal" file="xml/xui/browser/browser2.png" x="34" y="0" h="13" w="17" gammagroup="WindowText"/>
+ <bitmap id="browser.button.scraper.play.hover" file="xml/xui/browser/browser2.png" x="34" y="13" h="13" w="17" gammagroup="WindowText"/>
+ <bitmap id="browser.button.scraper.play.down" file="xml/xui/browser/browser2.png" x="34" y="26" h="13" w="17" gammagroup="WindowText"/>
+
+ <bitmap id="browser.button.scraper.download.normal" file="xml/xui/browser/browser2.png" x="51" y="0" h="13" w="17" gammagroup="WindowText"/>
+ <bitmap id="browser.button.scraper.download.hover" file="xml/xui/browser/browser2.png" x="51" y="13" h="13" w="17" gammagroup="WindowText"/>
+ <bitmap id="browser.button.scraper.download.down" file="xml/xui/browser/browser2.png" x="51" y="26" h="13" w="17" gammagroup="WindowText"/>
+
+ <bitmap id="browser.button.scraper.rescan.normal" file="xml/xui/browser/browser2.png" x="68" y="0" h="13" w="17" gammagroup="WindowText"/>
+ <bitmap id="browser.button.scraper.rescan.hover" file="xml/xui/browser/browser2.png" x="68" y="13" h="13" w="17" gammagroup="WindowText"/>
+ <bitmap id="browser.button.scraper.rescan.down" file="xml/xui/browser/browser2.png" x="68" y="26" h="13" w="17" gammagroup="WindowText"/>
+
+ <bitmap id="browser.button.scraper.normal" file="xml/xui/browser/browser2.png" x="0" y="39" h="18" w="20" gammagroup="WindowText"/>
+ <bitmap id="browser.button.scraper.hover" file="xml/xui/browser/browser2.png" x="0" y="57" h="18" w="20" gammagroup="WindowText"/>
+ <bitmap id="browser.button.scraper.down" file="xml/xui/browser/browser2.png" x="0" y="76" h="18" w="20" gammagroup="WindowText"/>
+
+ <bitmap id="browser.button.dlds.normal" file="xml/xui/browser/browser2.png" x="20" y="39" h="18" w="20" gammagroup="WindowText"/>
+ <bitmap id="browser.button.dlds.hover" file="xml/xui/browser/browser2.png" x="20" y="57" h="18" w="20" gammagroup="WindowText"/>
+ <bitmap id="browser.button.dlds.down" file="xml/xui/browser/browser2.png" x="20" y="76" h="18" w="20" gammagroup="WindowText"/>
+
+ <bitmap id="browser.button.settings.normal" file="xml/xui/browser/browser2.png" x="40" y="39" h="18" w="20" gammagroup="WindowText"/>
+ <bitmap id="browser.button.settings.hover" file="xml/xui/browser/browser2.png" x="40" y="57" h="18" w="20" gammagroup="WindowText"/>
+ <bitmap id="browser.button.settings.down" file="xml/xui/browser/browser2.png" x="40" y="76" h="18" w="20" gammagroup="WindowText"/>
+
+ <bitmap id="browser.list.label" file="xml/xui/browser/browser2.png" x="0" y="93" w="32" h="12" gammagroup="DisplayText"/>
+ <bitmap id="browser.list.label2" file="xml/xui/browser/browser2.png" x="0" y="93" w="16" h="12" gammagroup="DisplayText"/>
+
+ <color id="browser.text" value="172,172,172" gammagroup="WindowText" />
+ <color id="browser.text.active" value="238,238,238" gammagroup="WindowText" />
+
+</elements>
+
+<include file="stringtable.xml"/>
+<include file="icontextbutton.xml"/>
+
+<groupdef id="winamp.xui.browser" embed_xui="webbrowser" xuitag="Winamp:Browser">
+
+ <Button id="browser.back"
+ x="4" h="26" w="21" y="2" rectrgn="1"
+ image="browser.button.back.normal"
+ hoverImage="browser.button.back.hover"
+ downImage="browser.button.back.down"
+ tooltip="Go Back"
+ />
+ <Button id="browser.fwd"
+ x="25" h="26" w="21" y="2" rectrgn="1"
+ image="browser.button.forth.normal"
+ hoverImage="browser.button.forth.hover"
+ downImage="browser.button.forth.down"
+ tooltip="Go Forward"
+ />
+ <Button id="browser.refresh"
+ x="46" h="26" w="21" y="2" rectrgn="1"
+ image="browser.button.reload.normal"
+ hoverImage="browser.button.reload.hover"
+ downImage="browser.button.reload.down"
+ tooltip="Reload Page"
+ />
+ <Button id="browser.stop"
+ x="67" h="26" w="21" y="2" rectrgn="1"
+ image="browser.button.stop.normal"
+ hoverImage="browser.button.stop.hover"
+ downImage="browser.button.stop.down"
+ tooltip="Cancel Loading"
+ />
+ <Button id="browser.home"
+ x="88" h="26" w="21" y="2" rectrgn="1"
+ image="browser.button.home.normal"
+ hoverImage="browser.button.home.hover"
+ downImage="browser.button.home.down"
+ tooltip="Home"
+ />
+ <Button id="browser.links"
+ x="109" h="26" w="21" y="2" rectrgn="1"
+ image="browser.button.links.normal"
+ hoverImage="browser.button.links.hover"
+ downImage="browser.button.links.down"
+ tooltip="Quick Links"
+ />
+ <group id="browser.navurl" x="134" y="3" h="22" w="-303" relatw="1" />
+
+ <group id="browser.search" x="-167" y="3" h="22" w="163" relatx="1" />
+
+ <Wasabi:Frame id="browser.dualwnd" x="1" y="29" w="-2" relath="1" h="-28" from="bottom" relatw="1" orientation="h" maxheight="null" left="browser.itself" right="browser.scraper" minheight="55" height="100" jump="0"/>
+
+ <script file="xml/xui/browser/browser.maki" param="\"/>
+
+</groupdef>
+
+<groupdef id="browser.itself">
+
+ <browser id="webbrowser" fitparent="1" url="http://www.winamp.com" wantfocus="0"/>
+
+</groupdef>
+
+<groupdef id="browser.navurl">
+
+ <!-- kept for cPro1 backwards-compat -->
+ <button id="browser.navigate" x="0" h="0" w="0" y="0" visible="0" ghost="1" tooltip="Go to This URL"/>
+
+ <grid x="0" y="0" h="22" w="0" relatw="1"
+ left="browser.editframe.left"
+ middle="browser.editframe.center"
+ right="browser.editframe.right"
+ />
+
+ <Wasabi:HistoryEditBox id="browser.hedit" x="5" h="18" w="-10" relatw="1" y="2" text="http://www.winamp.com" navbuttons="0" wantfocus="0" antialias="0"/>
+
+</groupdef>
+
+<groupdef id="browser.search">
+
+ <!-- kept for cPro1 backwards-compat -->
+ <button id="search.go" x="0" h="0" w="0" y="0" visible="0" ghost="1"
+ tooltip="Go Search"
+ action="search" param="go" action_target="webbrowser"
+ />
+
+ <grid x="0" y="0" h="22" w="0" relatw="1"
+ left="browser.editframe.left"
+ middle="browser.editframe.center"
+ right="browser.editframe.right"
+ />
+
+ <Wasabi:Button id="search.choose" x="5" y="2" w="31" h="18"
+ tooltip="Choose Your Search Engine"
+ image="browser.button.search.winamp.normal" center_image="1"
+ action="search" param="choose" action_target="webbrowser"
+ />
+
+ <Wasabi:EditBox id="search.edit" x="36" y="2" relatw="1" w="-41" h="18" text=""/>
+
+</groupdef>
+
+<groupdef id="scraper.mode">
+
+ <Wasabi:IconButton id="browser.scraper.play" rectrgn="1"
+ x="-267" h="13" y="2" relatx="1"
+ icon_id="browser.button.scraper.play"
+ translate="2"
+ label="@nullsoft.browser#8"
+ label_y="-2"
+ label_x="18"
+ label_color="browser.text"
+ tooltip="@nullsoft.browser#9"
+ />
+
+ <Wasabi:IconButton id="browser.scraper.download" rectrgn="1"
+ x="-218" h="13" y="2" relatx="1"
+ icon_id="browser.button.scraper.download"
+ translate="2"
+ label="@nullsoft.browser#6"
+ label_y="-2"
+ label_x="18"
+ label_color="browser.text"
+ tooltip="@nullsoft.browser#7"
+ />
+
+ <Wasabi:IconButton id="browser.scraper.rescan" rectrgn="1"
+ x="-139" h="13" y="2" relatx="1"
+ icon_id="browser.button.scraper.rescan"
+ translate="2"
+ label="@nullsoft.browser#4"
+ label_y="-2"
+ label_x="18"
+ label_color="browser.text"
+ tooltip="@nullsoft.browser#5"
+ />
+
+ <Wasabi:IconButton id="scraper.switch" x="7" y="0" rectrgn="1" ghost="1"
+ icon_id="browser.button.scraper"
+ translate="2"
+ label="@nullsoft.browser#10"
+ label_y="0"
+ label_x="20"
+ label_color="browser.text.active"
+ />
+
+ <Wasabi:IconButton id="dlds.switch" x="110" y="0" rectrgn="1"
+ icon_id="browser.button.dlds"
+ translate="2"
+ label="@nullsoft.browser#12"
+ label_y="0"
+ label_x="20"
+ label_color="browser.text"
+ tooltip="@nullsoft.browser#13"
+ />
+
+ <List x="0" w="0" y="19" h="-19" relatw="1" relath="1"
+ id="scraper.results"
+ multiselect="1" autodeselect="1" sort="0" focusonclick="1"
+ numcolumns="2" columnwidths="270;-1" wa5style="1"
+ visible="1"
+ />
+
+</groupdef>
+
+<groupdef id="dlds.mode">
+
+ <Wasabi:IconButton id="scraper.switch" x="7" y="0" rectrgn="1"
+ icon_id="browser.button.scraper"
+ translate="2"
+ label="@nullsoft.browser#10"
+ label_y="0"
+ label_x="20"
+ label_color="browser.text"
+ tootip="@nullsoft.browser#11"
+ />
+
+ <Wasabi:IconButton id="dlds.switch" x="110" y="0" rectrgn="1" ghost="1"
+ icon_id="browser.button.dlds"
+ translate="2"
+ label="@nullsoft.browser#12"
+ label_y="0"
+ label_x="20"
+ label_color="browser.text.active"
+ />
+
+ <DownloadsList x="0" w="0" y="19" h="-19" relatw="1" relath="1"
+ id="scraper.downloads"
+ NOCOLHEADER="0"
+ />
+
+ <Wasabi:IconButton id="browser.dlds.play" rectrgn="1"
+ x="-118" h="13" y="2" relatx="1"
+ icon_id="browser.button.scraper.play"
+ translate="2"
+ label="@nullsoft.browser#8"
+ label_y="-2"
+ label_x="18"
+ label_color="browser.text"
+ action="PLAY_SELECTED"
+ action_target="scraper.downloads"
+ tooltip="@nullsoft.browser#9"
+ />
+
+</groupdef>
+
+<groupdef id="browser.scraper">
+
+ <rect x="0" y="18" w="0" relath="1" h="-18" relatw="1" filled="1" color="color.display.bg" />
+
+ <guiobject fitparent="1" wantfocus="1" />
+
+ <Wasabi:IconButton id="browser.dlds.settings" rectrgn="1"
+ x="196" y="0"
+ icon_id="browser.button.settings"
+ translate="2"
+ label="@nullsoft.browser#14"
+ label_y="0"
+ label_x="20"
+ label_color="browser.text"
+ tooltip="@nullsoft.browser#15"
+ />
+
+ <Wasabi:IconButton id="browser.scraper.show" rectrgn="1"
+ x="-56" h="13" y="2" relatx="1"
+ icon_id="browser.button.scraper.show"
+ translate="2"
+ label="@nullsoft.browser#2"
+ label_y="-2"
+ label_x="18"
+ label_color="browser.text"
+ tooltip="@nullsoft.browser#3"
+ />
+
+ <Wasabi:IconButton id="browser.scraper.hide" rectrgn="1"
+ x="-56" h="13" y="2" relatx="1"
+ icon_id="browser.button.scraper.hide"
+ translate="2"
+ label="@nullsoft.browser#0"
+ label_y="-2"
+ label_x="18"
+ label_color="browser.text"
+ tooltip="@nullsoft.browser#1"
+ />
+
+ <group id="scraper.mode" fitparent="1"/>
+ <group id="dlds.mode" fitparent="1" visible="0"/>
+
+</groupdef>
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/browser2.png b/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/browser2.png
new file mode 100644
index 00000000..364141a8
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/browser2.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/buttonpos.m b/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/buttonpos.m
new file mode 100644
index 00000000..e0b3f92d
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/buttonpos.m
@@ -0,0 +1,236 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: buttonpos.m
+Version: 1.0
+
+Type: maki
+Date: 03. Jun. 2008 - 21:29
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+Depending Files:
+ browser.maki
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#ifndef included
+#error This script can only be compiled as a #include
+#endif
+
+#define MARGIN_RIGHT 2
+#define HIDE_RESCAN_SPACER 16
+#define BUTTON_SPACER 8
+#define BIG_BUTTON_SPACER 10
+
+Function int max (int a, int b);
+Function setGuiX (GuiObject g, int x);
+
+Global GuiObject scr_open_xui, scr_close_xui, scr_rescan_xui, scr_download_xui, scr_play_xui, dld_play_xui;
+Global GuiObject switch_scr_xui, switch_scr2_xui, switch_dld_xui, switch_dld2_xui, settings_xui;
+Global Int x_open_close, x_rescan, x_download, x_play, x_dld_play;
+Global Int w_switch_scr, w_switch_dld, w_settings;
+Global Int margin_left;
+
+Global boolean done;
+
+Function initButtonPos();
+Function hideDownloads();
+initButtonPos()
+{
+ scr_open_xui = scr_open.getParent();
+ scr_close_xui = scr_close.getParent();
+ scr_rescan_xui = scr_rescan.getParent();
+ scr_download_xui = scr_download.getParent();
+ scr_play_xui = scr_play.getParent();
+ dld_play_xui = dld_play.getParent();
+
+ switch_scr_xui = switch_scr.getParent();
+ switch_scr2_xui = switch_scr2.getParent();
+ switch_dld_xui = switch_dld.getParent();
+ switch_dld2_xui = switch_dld2.getParent();
+
+ settings_xui = dld_settings.getParent();
+}
+
+/// HACK
+normal.onsetvisible(boolean a)
+{
+ if (done)
+ {
+ return;
+ }
+ if (!download)
+ {
+ hideDownloads();
+ done = 1;
+ return;
+ }
+
+ done = 1;
+
+ int i1 = scr_open_xui.onAction ("getwidth", "", 0,0,0,0,scr_open_xui);
+ int i2 = scr_close_xui.onAction ("getwidth", "", 0,0,0,0,scr_close_xui);
+ x_open_close = max(i1, i2) + MARGIN_RIGHT;
+ setGuiX(scr_open_xui, -x_open_close);
+ setGuiX(scr_close_xui, -x_open_close);
+
+ i1 = dld_play_xui.onAction ("getwidth", "", 0,0,0,0,dld_play_xui);
+ x_dld_play = i1 + x_open_close + HIDE_RESCAN_SPACER;
+ setGuiX(dld_play_xui, -x_dld_play);
+
+ i1 = scr_rescan_xui.onAction ("getwidth", "", 0,0,0,0,scr_rescan_xui);
+ x_rescan = i1 + x_open_close + HIDE_RESCAN_SPACER;
+ setGuiX(scr_rescan_xui, -x_rescan);
+
+ i1 = scr_download_xui.onAction ("getwidth", "", 0,0,0,0,scr_download_xui);
+ x_download = i1 + x_rescan + BUTTON_SPACER;
+ setGuiX(scr_download_xui, -x_download);
+
+ i1 = scr_play_xui.onAction ("getwidth", "", 0,0,0,0,scr_play_xui);
+ x_play = i1 + x_download + BUTTON_SPACER;
+ setGuiX(scr_play_xui, -x_play);
+
+
+ margin_left = switch_scr_xui.getGuiX();
+ w_switch_scr = switch_scr_xui.onAction ("getwidth", "", 0,0,0,0,switch_scr_xui) + margin_left + BIG_BUTTON_SPACER;
+ switch_scr2_xui.onAction ("getwidth", "", 0,0,0,0,switch_scr2_xui);
+
+ w_switch_dld = switch_dld_xui.onAction ("getwidth", "", 0,0,0,0,switch_dld_xui) + w_switch_scr + BIG_BUTTON_SPACER;
+ switch_dld2_xui.onAction ("getwidth", "", 0,0,0,0,switch_dld2_xui);
+ setGuiX(switch_dld_xui, w_switch_scr);
+ setGuiX(switch_dld2_xui, w_switch_scr);
+
+ w_settings = settings_xui.onAction ("getwidth", "", 0,0,0,0,settings_xui) + w_switch_dld + BIG_BUTTON_SPACER;
+ setGuiX(settings_xui, w_switch_dld);
+}
+
+hideDownloads ()
+{
+ if (download)
+ {
+ return;
+ }
+
+ int i1 = scr_open_xui.onAction ("getwidth", "", 0,0,0,0,scr_open_xui);
+ int i2 = scr_close_xui.onAction ("getwidth", "", 0,0,0,0,scr_close_xui);
+ x_open_close = max(i1, i2) + MARGIN_RIGHT;
+ setGuiX(scr_open_xui, -x_open_close);
+ setGuiX(scr_close_xui, -x_open_close);
+
+ i1 = scr_rescan_xui.onAction ("getwidth", "", 0,0,0,0,scr_rescan_xui);
+ x_rescan = i1 + x_open_close + HIDE_RESCAN_SPACER;
+ setGuiX(scr_rescan_xui, -x_rescan);
+
+ i1 = scr_play_xui.onAction ("getwidth", "", 0,0,0,0,scr_play_xui);
+ x_play = i1 + x_rescan + BUTTON_SPACER;
+ setGuiX(scr_play_xui, -x_play);
+
+ margin_left = switch_scr_xui.getGuiX();
+ w_switch_scr = switch_scr_xui.onAction ("getwidth", "", 0,0,0,0,switch_scr_xui) + margin_left + BIG_BUTTON_SPACER;
+ switch_scr2_xui.onAction ("getwidth", "", 0,0,0,0,switch_scr2_xui);
+
+ settings_xui.hide();
+ switch_dld2_xui.hide();
+ switch_dld_xui.hide();
+ dld_play.hide();
+ scr_download_xui.hide();
+}
+
+scr_mode.onResize (int x, int y, int w, int h)
+{
+ boolean isOpen = browser_scr_show_attrib.getData() == "1";
+
+ if (w > w_settings + x_play && isOpen)
+ {
+ scr_play_xui.show();
+ if (download) scr_download_xui.show();
+ scr_rescan_xui.show();
+ if (download) settings_xui.show();
+ scr_open_xui.setAlpha(255);
+ scr_close_xui.setAlpha(255);
+ }
+ else if (w > w_settings + x_download && isOpen)
+ {
+ scr_play_xui.hide();
+ if (download) scr_download_xui.show();
+ scr_rescan.show();
+ if (download) settings_xui.show();
+ scr_open_xui.setAlpha(255);
+ scr_close_xui.setAlpha(255);
+ }
+ else if (w > w_settings + x_rescan && isOpen)
+ {
+ scr_play_xui.hide();
+ if (download) scr_download_xui.hide();
+ scr_rescan_xui.show();
+ if (download) settings_xui.show();
+ scr_open_xui.setAlpha(255);
+ scr_close_xui.setAlpha(255);
+ }
+ else if (w > w_settings + x_open_close)
+ {
+ scr_play_xui.hide();
+ if (download) scr_download_xui.hide();
+ scr_rescan_xui.hide();
+ if (download) settings_xui.show();
+ scr_open_xui.setAlpha(255);
+ scr_close_xui.setAlpha(255);
+ }
+ else if (w > w_switch_dld + x_open_close)
+ {
+ scr_play_xui.hide();
+ if (download) scr_download_xui.hide();
+ scr_rescan_xui.hide();
+ if (download) settings_xui.hide();
+ scr_open_xui.setAlpha(255);
+ scr_close_xui.setAlpha(255);
+ }
+ else
+ {
+ scr_play_xui.hide();
+ if (download) scr_download_xui.hide();
+ scr_rescan_xui.hide();
+ if (download) settings_xui.hide();
+ scr_open_xui.setAlpha(0);
+ scr_close_xui.setAlpha(0);
+ }
+}
+
+dld_mode.onResize (int x, int y, int w, int h)
+{
+ if (!download)
+ {
+ return;
+ }
+ if (browser_scr_show_attrib.getData() == "0")
+ return;
+
+
+ if (w > w_settings + x_dld_play)
+ {
+ dld_play_xui.show();
+ }
+ else
+ {
+ dld_play_xui.hide();
+ }
+}
+
+int max (int a, int b)
+{
+ if (a > b)
+ {
+ return a;
+ }
+ else
+ {
+ return b;
+ }
+}
+
+setGuiX (GuiObject g, int x)
+{
+ g.setXmlParam("x", integerToString(x));
+}
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/gen_pageguids.m b/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/gen_pageguids.m
new file mode 100644
index 00000000..502df012
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/gen_pageguids.m
@@ -0,0 +1,106 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: gen_pageguids.m
+Version: 1.0
+
+Type: maki/page guid definitions
+Date: 03. Jul. 2006 - 18:29
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#ifndef included
+#error This script can only be compiled as a #include
+#endif
+
+#ifndef __GEN_PAGEGUIDS_M
+#define __GEN_PAGEGUIDS_M
+
+#include <lib/config.mi>
+
+Function initPages();
+
+/*--NON CHANGEABLE GUIDS:--------------------------*/
+
+// this is the page that maps its items to the options menu, you can add attribs or more pages (submenus)
+#define CUSTOM_OPTIONSMENU_ITEMS "{1828D28F-78DD-4647-8532-EBA504B8FC04}"
+Global ConfigItem optionsmenu_page;
+
+// this is the page that maps its items to the windows menu (aka View), you can add attribs or more pages (submenus)
+#define CUSTOM_WINDOWSMENU_ITEMS "{6559CA61-7EB2-4415-A8A9-A2AEEF762B7F}"
+Global ConfigItem custom_windows_page;
+
+// non exposed attribs page
+#define CUSTOM_PAGE_NONEXPOSED "{E9C2D926-53CA-400f-9A4D-85E31755A4CF}"
+Global ConfigItem custom_page_nonexposed;
+
+
+/*--DECLARE PAGES HERE:----------------------------*/
+
+initPages()
+{
+
+#ifndef __PAGES
+#define __PAGES
+
+ custom_page_nonexposed = Config.newItem("Hidden", CUSTOM_PAGE_NONEXPOSED);
+
+ // load up the cfgpage in which we'll insert our custom page
+ optionsmenu_page = Config.getItem(CUSTOM_OPTIONSMENU_ITEMS);
+
+ custom_windows_page = Config.getItem(CUSTOM_WINDOWSMENU_ITEMS);
+
+#endif
+
+}
+
+/*--GLOBAL DEFINITIONS:----------------------------*/
+
+#define NOOFF if (getData()=="0") { setData("1"); return; }
+Global Int attribs_mychange, attribs_mychange2;
+
+Global ConfigAttribute sep;
+Global Int sep_count = 0;
+
+Function addMenuSeparator(ConfigItem cfgmenupage);
+
+addMenuSeparator(ConfigItem cfgmenupage)
+{
+#ifdef MAIN_ATTRIBS_LOADER
+
+ sep_count = sep_count + 1;
+ sep = cfgmenupage.newAttribute(getSkinName() + "seperator" + integerToString(sep_count), "");
+ sep.setData("-");
+
+#endif
+}
+
+Function ConfigItem addConfigSubMenu(configitem parent, string name, string guid);
+
+ConfigItem addConfigSubMenu(configitem parent, string name, string guid)
+{
+ ConfigItem __ret = Config.newItem(name, guid);
+ ConfigAttribute __dret = parent.newAttribute(name, "");
+ __dret.setData(guid);
+ return __ret;
+}
+
+
+Function toggleAttrib(ConfigAttribute attrib);
+
+toggleAttrib(ConfigAttribute attrib)
+{
+ if (attrib.getData() == "0")
+ {
+ attrib.setData("1");
+ }
+ else
+ {
+ attrib.setData("0");
+ }
+}
+
+#endif \ No newline at end of file
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/icontextbutton.xml b/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/icontextbutton.xml
new file mode 100644
index 00000000..a4f6cd4e
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/icontextbutton.xml
@@ -0,0 +1,12 @@
+<groupdef id="wasabi.itb.xui" xuitag="Wasabi:IconButton" embed_xui="itb.button" autowidthsource="itb.text" autoheightsource="itb.layer">
+
+ <layer id="itb.layer" x="0" y="0"/>
+ <text id="itb.text" x="20" y="0" move="0" antialias="0" color="255,255,255" relath="1" valign="top"/>
+
+ <button id="itb.button" rectrgn="1"
+ x="0" y="0" w="0" h="0" relatw="1" relath="1"
+ />
+
+ <script file="xml/xui/browser/IconTextButton.maki"/>
+
+</groupdef> \ No newline at end of file
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/init_browser.m b/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/init_browser.m
new file mode 100644
index 00000000..3171f64c
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/init_browser.m
@@ -0,0 +1,133 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: init_browser.m
+Version: 1.1
+
+Type: maki/attrib definitions
+Date: 27. Jul. 2007 - 13:36
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+Depending Files:
+ scripts/browser.maki
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#ifndef included
+#error This script can only be compiled as a #include
+#endif
+
+#include "gen_pageguids.m"
+
+#define CUSTOM_PAGE_BROWSER "{0E17DBEA-9398-49e6-AE6F-3AB17D001DF3}"
+#define CUSTOM_PAGE_BROWSER_WASEARCH "{180E87DF-C482-41fe-A570-8575C673E1BA}"
+#define CUSTOM_PAGE_BROWSER_CONCERTSEARCH "{B8171DB3-ECF6-40c6-9332-DDEA57A8F13E}"
+
+Function initAttribs_browser();
+
+Class ConfigAttribute SearchAttribute;
+Function check (string unknown, SearchAttribute compare);
+
+#ifdef BROWSER_SCRIPT
+Global list SearchAttributeList;
+#endif
+#ifndef BROWSER_SCRIPT
+#define SearchAttributeList //
+#endif
+
+Global ConfigAttribute browser_scr_show_attrib, browser_search_attrib;
+Global SearchAttribute browser_search_winamp_mskins_attrib, browser_search_winamp_cskins_attrib, browser_search_winamp_plugins_attrib,
+ browser_search_winamp_web_attrib, browser_search_wiki_attrib, browser_c_pollstar_attrib, browser_c_bit_attrib,
+ browser_c_jambase_attrib;
+
+initAttribs_browser()
+{
+ initPages();
+
+ ConfigItem custom_page_browser = addConfigSubMenu(optionsmenu_page, "Browser", CUSTOM_PAGE_BROWSER);
+
+ browser_search_attrib = custom_page_nonexposed.newAttribute("Onesie browser Quicksearch", "Web Search");
+
+ SearchAttributeList = new List;
+ SearchAttributeList.addItem (custom_page_browser);
+
+ browser_search_winamp_web_attrib = custom_page_browser.newAttribute("Web Search", "1");
+ SearchAttributeList.addItem (browser_search_winamp_web_attrib);
+
+ browser_search_wiki_attrib = custom_page_browser.newAttribute("Wikipedia Search", "0");
+ SearchAttributeList.addItem (browser_search_wiki_attrib);
+
+ ConfigItem custom_page_browser_concertsearch = addConfigSubMenu(custom_page_browser, "Concert Search", CUSTOM_PAGE_BROWSER_CONCERTSEARCH);
+
+ browser_c_jambase_attrib = custom_page_browser_concertsearch.newAttribute("JamBase", "0");
+ SearchAttributeList.addItem (browser_c_jambase_attrib);
+
+ browser_c_pollstar_attrib = custom_page_browser_concertsearch.newAttribute("Pollstar", "0");
+ SearchAttributeList.addItem (browser_c_pollstar_attrib);
+
+ browser_c_bit_attrib = custom_page_browser_concertsearch.newAttribute("Bandsintown", "0");
+ SearchAttributeList.addItem (browser_c_bit_attrib);
+
+ ConfigItem custom_page_browser_winampsearch = addConfigSubMenu(custom_page_browser, "Winamp Search", CUSTOM_PAGE_BROWSER_WASEARCH);
+ browser_search_winamp_mskins_attrib = custom_page_browser_winampsearch.newAttribute("Modern Skins", "0");
+ SearchAttributeList.addItem (browser_search_winamp_mskins_attrib);
+ browser_search_winamp_cskins_attrib = custom_page_browser_winampsearch.newAttribute("Classic Skins", "0");
+ SearchAttributeList.addItem (browser_search_winamp_cskins_attrib);
+ browser_search_winamp_plugins_attrib = custom_page_browser_winampsearch.newAttribute("Plug-ins", "0");
+ SearchAttributeList.addItem (browser_search_winamp_plugins_attrib);
+
+ addMenuSeparator(custom_page_browser);
+
+ browser_scr_show_attrib = custom_page_browser.newAttribute("Show Media Monitor", "1");
+
+}
+
+#ifdef MAIN_ATTRIBS_MGR
+
+browser_search_attrib.onDataChanged ()
+{
+ if (attribs_mychange) return;
+ string dta = getData();
+ if (dta == "Modern Skins") browser_search_winamp_mskins_attrib.setData("1");
+ else if (dta == "Classic Skins") browser_search_winamp_plugins_attrib.setData("1");
+ else if (dta == "Plug-ins") browser_search_winamp_plugins_attrib.setData("1");
+ else if (dta == "Web Search with Google") browser_search_winamp_web_attrib.setData("1");
+ else if (dta == "Pollstar") browser_c_pollstar_attrib.setData("1");
+ else if (dta == "Bands in Town") browser_c_bit_attrib.setData("1");
+ else if (dta == "JamBase") browser_c_jambase_attrib.setData("1");
+ else if (dta == "Wikipedia Search") browser_search_wiki_attrib.setData("1");
+}
+
+SearchAttribute.onDataChanged()
+{
+ if (attribs_mychange) return;
+ NOOFF
+ attribs_mychange = 1;
+ String s = SearchAttribute.getAttributeName();
+ check (s, browser_search_winamp_mskins_attrib);
+ check (s, browser_search_winamp_cskins_attrib);
+ check (s, browser_search_winamp_plugins_attrib);
+ check (s, browser_search_winamp_web_attrib);
+ check (s, browser_c_jambase_attrib);
+ check (s, browser_c_bit_attrib);
+ check (s, browser_c_pollstar_attrib);
+ check (s, browser_search_wiki_attrib);
+
+ attribs_mychange = 0;
+}
+
+check (String unknown, SearchAttribute compare)
+{
+ if (unknown == compare.getAttributeName())
+ {
+ browser_search_attrib.setData(compare.getAttributeName());
+ }
+ else
+ {
+ compare.setData("0");
+ }
+}
+
+#endif \ No newline at end of file
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/stringtable.xml b/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/stringtable.xml
new file mode 100644
index 00000000..fd17917b
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/xui/browser/stringtable.xml
@@ -0,0 +1,31 @@
+<!-- Browser String Table -->
+
+<StringTable id="nullsoft.browser">
+
+ <!-- Monitor Buttons -->
+ <StringEntry id="0" string="Hide"/>
+ <StringEntry id="1" string="Hide Media Monitor"/>
+ <StringEntry id="2" string="Show"/>
+ <StringEntry id="3" string="Show Media Monitor"/>
+ <StringEntry id="4" string="Rescan"/>
+ <StringEntry id="5" string="Rescan Document"/>
+ <StringEntry id="6" string="Download"/>
+ <StringEntry id="7" string="Download selected Items"/>
+ <StringEntry id="8" string="Play"/>
+ <StringEntry id="9" string="Play selected Items"/>
+ <StringEntry id="10" string="Media Monitor"/>
+ <StringEntry id="11" string="Switch to Media Monitor"/>
+ <StringEntry id="12" string="Downloads"/>
+ <StringEntry id="13" string="Switch to Active Downloads"/>
+ <StringEntry id="14" string="Settings"/>
+ <StringEntry id="15" string="Download Settings"/>
+
+ <StringEntry id="16" string="Media From"/>
+ <StringEntry id="17" string="Location"/>
+ <StringEntry id="18" string="Transferred Data"/>
+ <StringEntry id="19" string="Status"/>
+ <StringEntry id="20" string="Title"/>
+
+ <StringEntry id="21" string="Autoopen Media Monitor on media results"/>
+
+</StringTable> \ No newline at end of file
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/xui/button/button.xml b/Src/resources/data/freeform/xml/wasabi/xml/xui/button/button.xml
new file mode 100644
index 00000000..341f4eec
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/xui/button/button.xml
@@ -0,0 +1,36 @@
+<!-- =======================================================================================================
+
+ <Wasabi:Button /> implementation
+
+ Available parameters :
+
+ - Everything from Group class
+ - Everything from Button class
+
+ Required objects :
+
+ - Button id="wasabi.button"
+
+======================================================================================================== -->
+
+<groupdef id="wasabi.button.group" xuitag="Wasabi:Button" embed_xui="wasabi.button" h="21" autowidthsource="wasabi.button">
+ <button
+ id="wasabi.button"
+ x="0" y="0"
+ w="0" h="0"
+ relatw="1" relath="1"
+ borders="1"
+ wantfocus="1"
+ />
+</groupdef>
+
+<groupdef id="wasabi.togglebutton.group" xuitag="Wasabi:ToggleButton" embed_xui="wasabi.button" h="21" autowidthsource="wasabi.button">
+ <Togglebutton
+ id="wasabi.button"
+ x="0" y="0"
+ w="0" h="0"
+ relatw="1" relath="1"
+ borders="1"
+ wantfocus="1"
+ />
+</groupdef>
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/xui/editbox/editbox.xml b/Src/resources/data/freeform/xml/wasabi/xml/xui/editbox/editbox.xml
new file mode 100644
index 00000000..99cccddf
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/xui/editbox/editbox.xml
@@ -0,0 +1,43 @@
+<!-- =======================================================================================================
+
+ <Wasabi:EditBox /> implementation
+
+======================================================================================================== -->
+
+<groupdef id="wasabi.edit" inherit_group="wasabi.objectframe.group" xuitag="Wasabi:EditBox" embed_xui="wasabi.edit.box" h="20">
+ <edit
+ id="wasabi.edit.box"
+ x="1" y="1"
+ w="-2" h="-2"
+ relatw="1" relath="1"
+ autoselect="1"
+ />
+</groupdef>
+
+<groupdef id="wasabi.multiline.edit" inherit_group="wasabi.objectframe.group" xuitag="Wasabi:Editor" embed_xui="wasabi.edit.box" h="60">
+ <edit
+ id="wasabi.edit.box"
+ x="1" y="1"
+ w="-2" h="-2"
+ relatw="1" relath="1"
+ multiline="1"
+ vscroll="1" autohscroll="1"
+ />
+</groupdef>
+
+
+
+<!-- This group is unused for now -->
+
+<!--
+
+<groupdef id="wasabi.edit.disabled" inherit_group="wasabi.objectframe.group" hideobject="wasabi.objectframe.center">
+ <text
+ id="wasabi.edit.box"
+ x="1" y="1"
+ w="-2" h="-2"
+ relatw="1" relath="1"
+ />
+</groupdef>
+
+-->
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/xui/slider/slider.xml b/Src/resources/data/freeform/xml/wasabi/xml/xui/slider/slider.xml
new file mode 100644
index 00000000..b8a9f992
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/xui/slider/slider.xml
@@ -0,0 +1,80 @@
+<!-- =======================================================================================================
+
+ <Wasabi:HSlider/> implementation
+
+======================================================================================================== -->
+
+<groupdef id="wasabi.slider.horizontal" embed_xui="slider.button" xuitag="Wasabi:HSlider" h="15" >
+
+ <layer
+ id="slider.background"
+ x="0" y="1"
+ image="wasabi.slider.horizontal.left"
+ />
+ <layer
+ id="slider.background"
+ x="8" y="1"
+ w="-16"
+ relatw="1"
+ image="wasabi.slider.horizontal.middle"
+ />
+ <layer
+ id="slider.background"
+ x="-8" y="1"
+ relatx="1"
+ image="wasabi.slider.horizontal.right"
+ />
+
+ <slider
+ id="slider.button"
+ x="0" y="0"
+ w="0" h="13"
+ relatw="1"
+ thumb="wasabi.slider.horizontal.button"
+ downThumb="wasabi.slider.horizontal.button.pressed"
+ wantfocus="1"
+ />
+
+</groupdef>
+
+<!-- =======================================================================================================
+
+ <Wasabi:VSlider/> implementation
+
+======================================================================================================== -->
+
+
+<groupdef id="wasabi.slider.vertical" embed_xui="slider.button" xuitag="Wasabi:VSlider" w="16"> <!-- default_h="100" -->
+
+ <layer
+ id="slider.background"
+ x="4" y="0"
+ image="wasabi.slider.vertical.top"
+ />
+ <layer
+ id="slider.background"
+ x="4" y="8"
+ h="-17"
+ relath="1"
+ image="wasabi.slider.vertical.middle"
+ />
+ <layer
+ id="slider.background"
+ x="4" y="-9"
+ relaty="1"
+ image="wasabi.slider.vertical.bottom"
+ />
+
+ <slider
+ id="slider.button"
+ x="0" y="0"
+ w="16" h="0"
+ relath="1"
+ thumb="wasabi.slider.vertical.button"
+ downThumb="wasabi.slider.vertical.button.pressed"
+ orientation="v"
+ wantfocus="1"
+ />
+
+</groupdef>
+
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/xui/standardframe/standardframe-elements.xml b/Src/resources/data/freeform/xml/wasabi/xml/xui/standardframe/standardframe-elements.xml
new file mode 100644
index 00000000..54091fb5
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/xui/standardframe/standardframe-elements.xml
@@ -0,0 +1,33 @@
+<elements>
+
+ <bitmap id="wasabi.frame.basetexture" file="window/background.png" gammagroup="Backgrounds" />
+ <elementalias id="component.basetexture" target="wasabi.frame.basetexture" />
+
+ <bitmap id="wasabi.frame.top.left" file="window/window-elements.png" x="0" y="0" h="15" w="15" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.frame.top" file="window/window-elements.png" x="11" y="0" h="15" w="15" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.frame.top.right" file="window/window-elements.png" x="21" y="0" h="15" w="15" gammagroup="Backgrounds"/>
+
+ <bitmap id="wasabi.frame.left" file="window/window-elements.png" x="0" y="15" h="15" w="5" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.frame.right" file="window/window-elements.png" x="31" y="15" h="15" w="5" gammagroup="Backgrounds"/>
+<!--
+ The bottom of the window is broken up into three levels, top, middle, and bottom. The reason for this
+ is because the same graphics are used to create a window with a status bar and resizer symbol and one
+ without.
+-->
+ <bitmap id="wasabi.frame.bottom.left.top" file="window/window-elements.png" x="0" y="32" h="2" w="15" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.frame.bottom.left" file="window/window-elements.png" x="0" y="34" h="1" w="15" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.frame.bottom.left.bottom" file="window/window-elements.png" x="0" y="35" h="2" w="15" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.frame.bottom.top" file="window/window-elements.png" x="11" y="32" h="2" w="15" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.frame.bottom" file="window/window-elements.png" x="11" y="34" h="1" w="15" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.frame.bottom.bottom" file="window/window-elements.png" x="11" y="35" h="2" w="15" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.frame.bottom.right.top" file="window/window-elements.png" x="21" y="32" h="2" w="15" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.frame.bottom.right" file="window/window-elements.png" x="21" y="34" h="1" w="15" gammagroup="Backgrounds"/>
+ <bitmap id="wasabi.frame.bottom.right.bottom" file="window/window-elements.png" x="21" y="35" h="2" w="15" gammagroup="Backgrounds"/>
+
+ <bitmap id="wasabi.frame.status.left" file="window/window-elements.png" x="94" y="0" h="12" w="12"/>
+ <bitmap id="wasabi.frame.status" file="window/window-elements.png" x="107" y="0" h="12" w="12"/>
+ <bitmap id="wasabi.frame.status.right" file="window/window-elements.png" x="120" y="0" h="12" w="12"/>
+
+ <bitmap id="wasabi.frame.resizer" file="window/window-elements.png" x="93" y="84" h="12" w="12"/>
+
+</elements>
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/xui/standardframe/standardframe.xml b/Src/resources/data/freeform/xml/wasabi/xml/xui/standardframe/standardframe.xml
new file mode 100644
index 00000000..3a5429d4
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/xui/standardframe/standardframe.xml
@@ -0,0 +1,335 @@
+<!-- =======================================================================================================
+
+ This file implements the following objects :
+
+ - Wasabi:StandardFrame:Status
+ - Wasabi:StandardFrame:NoStatus
+ - Wasabi:StandardFrame:Modal
+ - Wasabi:StandardFrame:Static
+
+ Available parameters :
+
+ padtitleleft : resizes the title from the left by the specified amount of pixels
+ padtitleright : resizes the title from the right by the specified amount of pixels
+ content : tells the object which group to instantiate in its client area
+
+======================================================================================================== -->
+
+<include file="standardframe-elements.xml" />
+
+
+
+<!-- =======================================================================================================
+
+ This group serves as a template for all the Wasabi:StandardFrame objects
+
+======================================================================================================== -->
+
+<groupdef id="wasabi.frame.layout">
+
+ <layer
+ id="window.top.left"
+ x="0" y="0"
+ image="wasabi.frame.top.left"
+ resize="topleft"
+ />
+ <layer
+ id="window.top"
+ x="15" y="0"
+ w="-30"
+ relatw="1"
+ image="wasabi.frame.top"
+ resize="top"
+ />
+ <layer
+ id="window.top.right"
+ x="-15" y="0"
+ relatx="1"
+ image="wasabi.frame.top.right"
+ resize="topright"
+ />
+
+ <layer
+ id="window.left"
+ x="0" y="15"
+ h="0"
+ relath="1"
+ image="wasabi.frame.left"
+ resize="left"
+ />
+ <layer
+ id="window.right"
+ x="-5" y="15"
+ h="0"
+ relatx="1" relath="1"
+ image="wasabi.frame.right"
+ resize="right"
+ />
+
+ <layer id="window.resize.disabler" x="5" y="5" w="-10" h="-10" relatw="1" relath="1"/>
+
+ <LayoutStatus id="sysmenu.status" bg="0" x="5" y="3" w="14" h="9" includeonly="{system}" />
+ <hideobject target="sysmenu.status"/>
+ <button
+ id="controlmenu.inactive"
+ action="controlmenu"
+ x="5" y="3"
+ image="wasabi.button.sysmenu.pressed"
+ downImage="wasabi.button.sysmenu"
+ tooltip="Control Menu"
+ activeAlpha="0"
+ />
+ <button
+ id="controlmenu"
+ action="controlmenu"
+ x="5" y="3"
+ image="wasabi.button.sysmenu"
+ downImage="wasabi.button.sysmenu.pressed"
+ tooltip="Control Menu"
+ inactiveAlpha="0"
+ />
+ <button
+ id="Close.inactive"
+ action="CLOSE"
+ x="-18" y="3"
+ relatx="1"
+ image="wasabi.button.close.pressed"
+ downImage="wasabi.button.close"
+ tooltip="Close Window"
+ activeAlpha="0"
+ />
+ <button
+ id="Close"
+ action="CLOSE"
+ x="-18" y="3"
+ relatx="1"
+ image="wasabi.button.close"
+ downImage="wasabi.button.close.pressed"
+ tooltip="Close Window"
+ inactiveAlpha="0"
+ />
+ <Wasabi:TitleBar
+ id="wasabi.titlebar"
+ x="22" y="2"
+ w="-42" h="11"
+ relatw="1"
+ />
+
+ </groupdef>
+
+
+<!-- =======================================================================================================
+
+ <Wasabi:StandardFrame:Status /> implementation
+
+======================================================================================================== -->
+
+ <groupdef id="wasabi.standardframe.statusbar" background="wasabi.frame.basetexture" sysregion="1" xuitag="Wasabi:StandardFrame:Status">
+
+ <group id="wasabi.frame.layout" x="0" y="0" w="0" relatw="1" h="-19" relath="1"/>
+
+ <layer
+ id="window.bottom.left.top"
+ x="0" y="-19"
+ relaty="1"
+ image="wasabi.frame.bottom.left.top"
+ resize="bottomleft"
+ />
+ <layer
+ id="window.bottom.left"
+ x="0" y="-17"
+ h="15"
+ relaty="1"
+ image="wasabi.frame.bottom.left"
+ resize="bottomleft"
+ />
+
+ <layer
+ id="window.bottom.left.bottom"
+ x="0" y="-2"
+ relaty="1"
+ image="wasabi.frame.bottom.left.bottom"
+ resize="bottomleft"
+ />
+
+ <layer
+ id="window.bottom.top"
+ x="15" y="-19"
+ w="-30"
+ relatw="1" relaty="1"
+ image="wasabi.frame.bottom.top"
+ />
+ <layer
+ id="window.bottom"
+ x="15" y="-17"
+ w="-30" h="15"
+ relatw="1" relaty="1"
+ image="wasabi.frame.bottom"
+ resize="bottom"
+ />
+ <layer
+ id="window.bottom.bottom"
+ x="15" y="-2"
+ w="-30"
+ relatw="1" relaty="1"
+ image="wasabi.frame.bottom.bottom"
+ resize="bottom"
+ />
+
+ <layer
+ id="window.bottom.right.top"
+ x="-15" y="-19"
+ relatx="1" relaty="1"
+ image="wasabi.frame.bottom.right.top"
+ resize="bottomright"
+ />
+ <layer
+ id="window.bottom.right"
+ x="-15" y="-17"
+ h="15"
+ relatx="1" relaty="1"
+ image="wasabi.frame.bottom.right"
+ resize="bottomright"
+ />
+ <layer
+ id="window.bottom.right.bottom"
+ x="-15" y="-2"
+ relatx="1" relaty="1"
+ image="wasabi.frame.bottom.right.bottom"
+ resize="bottomright"
+ />
+
+ <layer
+ id="window.resizer"
+ x="-16" y="-16"
+ relatx="1" relaty="1"
+ image="wasabi.frame.resizer"
+ resize="bottomright"
+ scale="bottomright"
+ />
+
+ <LayoutStatus id="standardframe.layoutstatus" x="4" y="-17" relaty="1" w="-23" relatw="1" h="15" exclude="{system}" />
+ <script id="standardframe.script" file="scripts/standardframe.maki" param="5,15,-10,-34,0,0,1,1" />
+
+</groupdef>
+
+
+<!-- =======================================================================================================
+
+ <Wasabi:StandardFrame:NoStatus /> implementation
+
+======================================================================================================== -->
+
+<groupdef id="wasabi.standardframe.nostatusbar" background="wasabi.frame.basetexture" sysregion="1" xuitag="Wasabi:StandardFrame:NoStatus">
+
+ <group id="wasabi.frame.layout" x="0" y="0" w="0" h="-5" relatw="1" relath="1"/>
+ <layer
+ id="window.bottom.left.top"
+ x="0" y="-5"
+ relaty="1"
+ image="wasabi.frame.bottom.left.top"
+ resize="bottomleft"
+ />
+ <layer
+ id="window.bottom.left"
+ x="0" y="-3"
+ h="1"
+ relaty="1"
+ image="wasabi.frame.bottom.left"
+ resize="bottomleft"
+ />
+ <layer
+ id="window.bottom.left.bottom"
+ x="0" y="-2"
+ relaty="1"
+ image="wasabi.frame.bottom.left.bottom"
+ resize="bottomleft"
+ />
+
+ <layer
+ id="window.bottom.top"
+ x="15" y="-5"
+ w="-30"
+ relatw="1" relaty="1"
+ image="wasabi.frame.bottom.top"
+ />
+ <layer
+ id="window.bottom"
+ x="15" y="-3"
+ w="-30" h="1"
+ relatw="1" relaty="1"
+ image="wasabi.frame.bottom"
+ resize="bottom"
+ />
+ <layer
+ id="window.bottom.bottom"
+ x="15" y="-2"
+ w="-30"
+ relatw="1" relaty="1"
+ image="wasabi.frame.bottom.bottom"
+ resize="bottom"
+ />
+
+ <layer
+ id="window.bottom.right.top"
+ x="-15" y="-5"
+ relatx="1" relaty="1"
+ image="wasabi.frame.bottom.right.top"
+ resize="bottomright"
+ />
+ <layer
+ id="window.bottom.right"
+ x="-15" y="-3"
+ h="1"
+ relatx="1" relaty="1"
+ image="wasabi.frame.bottom.right"
+ resize="bottomright"
+ />
+ <layer
+ id="window.bottom.right.bottom"
+ x="-15" y="-2"
+ relatx="1" relaty="1"
+ image="wasabi.frame.bottom.right.bottom"
+ resize="bottomright"
+ />
+
+ <script id="standardframe.script" file="scripts/standardframe.maki" param="5,15,-10,-20,0,0,1,1" />
+
+</groupdef>
+
+
+<!-- =======================================================================================================
+
+ <Wasabi:StandardFrame:Modal /> implementation
+
+======================================================================================================== -->
+
+<groupdef id="wasabi.standardframe.modal" inherit_group="wasabi.standardframe.nostatusbar" sysregion="1" xuitag="Wasabi:StandardFrame:Modal">
+ <group
+ id="wasabi.panel"
+ x="5" y="15"
+ w="-10" h="-20"
+ relatw="1" relath="1"
+ />
+ <hideobject target="controlmenu;controlmenu.inactive"/>
+ <sendparams target="wasabi.titlebar" x="4" w="-24" relatw="1" />
+ <sendparams target="window.top.left;window.top;window.top.right;window.left;window.right;window.bottom.left.top;window.bottom.left;window.bottom.left.bottom;window.bottom.top;window.bottom;window.bottom.bottom;window.bottom.right.top;window.bottom.right;window.bottom.right.bottom" resize="0" />
+</groupdef>
+
+
+<!-- =======================================================================================================
+
+ <Wasabi:StandardFrame:Static /> implementation
+
+======================================================================================================== -->
+
+<groupdef id="wasabi.standardframe.static" inherit_group="wasabi.standardframe.nostatusbar" sysregion="1" xuitag="Wasabi:StandardFrame:Static">
+ <group
+ id="wasabi.panel"
+ x="5" y="15"
+ w="-10" h="-20"
+ relatw="1" relath="1"
+ />
+ <sendparams target="window.top.left;window.top;window.top.right;window.left;window.right;window.bottom.left.top;window.bottom.left;window.bottom.left.bottom;window.bottom.top;window.bottom;window.bottom.bottom;window.bottom.right.top;window.bottom.right;window.bottom.right.bottom" resize="0" />
+<!-- <hideobject target="controlmenu;controlmenu.inactive"/> -->
+</groupdef>
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/xui/text/text.xml b/Src/resources/data/freeform/xml/wasabi/xml/xui/text/text.xml
new file mode 100644
index 00000000..21a4e759
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/xui/text/text.xml
@@ -0,0 +1,26 @@
+<!-- =======================================================================================================
+
+ <Wasabi:Text /> implementation
+
+ Available parameters :
+
+ - Everything from Group class
+ - Everything from Text class
+
+ Required objects :
+
+ - Text id="wasabi.text"
+
+======================================================================================================== -->
+
+<groupdef id="wasabi.text.group" xuitag="Wasabi:Text" embed_xui="wasabi.text" h="12">
+ <text
+ x="0" y="0"
+ w="0" h="0"
+ relatw="1" relath="1"
+ id="wasabi.text" font="tahoma"
+ color="white" fontsize="14"
+ display="ERROR" wrap="1" valign="top"
+ />
+
+</groupdef>
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/xui/titlebar/titlebar.xml b/Src/resources/data/freeform/xml/wasabi/xml/xui/titlebar/titlebar.xml
new file mode 100644
index 00000000..0fce7119
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/xui/titlebar/titlebar.xml
@@ -0,0 +1,108 @@
+<!-- =======================================================================================================
+
+ <Wasabi:TitleBar /> implmentation
+
+ Available parameters :
+
+ - All params for Group
+ - All params for Text
+
+ Required objects : (these objects are manipulated by the script, so overriding with script content inheritance
+ will require you to have these objects. Otherwise, you should be fine)
+
+ - Group id="wasabi.titlebar.streak.left"
+ - Group id="wasabi.titlebar.streak.right"
+ - Layer id="mousetrap" (this object shoud cover the content of the group)
+
+======================================================================================================== -->
+
+<groupdef id="wasabi.titlebar" xuitag="Wasabi:TitleBar" embed_xui="window.titlebar.title">
+ <group
+ id="wasabi.titlebar.streak"
+ instanceid="wasabi.titlebar.streak.left"
+ x="0" y="0"
+ w="95" h="11"
+ />
+ <sendparams group="wasabi.titlebar.streak.left" target="titlebar.center.active" w="-16"/>
+ <sendparams group="wasabi.titlebar.streak.left" target="titlebar.center.inactive" w="-16"/>
+ <sendparams group="wasabi.titlebar.streak.left" target="titlebar.right.active" x="-9"/>
+ <sendparams group="wasabi.titlebar.streak.left" target="titlebar.right.inactive" x="-9"/>
+
+ <text
+ id="window.titlebar.title"
+ x="100" y="0"
+ w="50" h="11"
+ default=":componentname"
+ font="studio.component.title"
+ inactiveAlpha="128"
+ />
+
+ <group
+ id="wasabi.titlebar.streak"
+ instanceid="wasabi.titlebar.streak.right"
+ x="155" y="0"
+ w="-155" relatw="1" h="11"
+ />
+ <sendparams group="wasabi.titlebar.streak.right" target="titlebar.center.active" x="9" w="-16"/>
+ <sendparams group="wasabi.titlebar.streak.right" target="titlebar.center.inactive" x="9" w="-16"/>
+ <sendparams group="wasabi.titlebar.streak.right" target="titlebar.left.active" x="2"/>
+ <sendparams group="wasabi.titlebar.streak.right" target="titlebar.left.inactive" x="2"/>
+
+ <layer id="mousetrap" x="0" y="0" w="0" h="0" relatw="1" relath="1" move="1"/>
+ <script id="titlebar" file="scripts/titlebar.maki" param="wasabi.titlebar.streak.left;window.titlebar.title;wasabi.titlebar.streak.right" />
+</groupdef>
+
+
+
+<!-- =======================================================================================================
+
+ This implements a title streak bar. Dependencies are limited to the wasabi.titlebar group, in other words, if you remove
+ the sendparams in the above group, none of these objects are required.
+
+======================================================================================================== -->
+
+<groupdef id="wasabi.titlebar.streak">
+
+ <layer
+ id="titlebar.left.active"
+ x="0" y="1"
+ image="wasabi.titlebar.left.active"
+ inactiveAlpha="0"
+ />
+ <layer
+ id="titlebar.center.active"
+ x="7" y="1" w="-14"
+ relatw="1"
+ image="wasabi.titlebar.center.active"
+ inactiveAlpha="0"
+ />
+ <layer
+ id="titlebar.right.active"
+ x="-7" y="1"
+ relatx="1"
+ image="wasabi.titlebar.right.active"
+ inactiveAlpha="0"
+ />
+
+ <layer
+ id="titlebar.left.inactive"
+ x="0" y="1"
+ image="wasabi.titlebar.left.inactive"
+ activeAlpha="0"
+ />
+ <layer
+ id="titlebar.center.inactive"
+ x="7" y="1" w="-14"
+ relatw="1"
+ image="wasabi.titlebar.center.inactive"
+ activeAlpha="0"
+ />
+ <layer
+ id="titlebar.right.inactive"
+ x="-7" relatx="1" y="1"
+ image="wasabi.titlebar.right.inactive"
+ activeAlpha="0"
+ />
+
+</groupdef>
+
diff --git a/Src/resources/data/freeform/xml/wasabi/xml/xui/xuiobjects.xml b/Src/resources/data/freeform/xml/wasabi/xml/xui/xuiobjects.xml
new file mode 100644
index 00000000..b5257ee7
--- /dev/null
+++ b/Src/resources/data/freeform/xml/wasabi/xml/xui/xuiobjects.xml
@@ -0,0 +1,7 @@
+<include file="editbox/editbox.xml" />
+<include file="slider/slider.xml" />
+<include file="titlebar/titlebar.xml" />
+<include file="standardframe/standardframe.xml" />
+<include file="text/text.xml" />
+<include file="button/button.xml" />
+<include file="browser/browser.xml" /> \ No newline at end of file
diff --git a/Src/resources/data/freeform/xml/winamp/cover/cover.xml b/Src/resources/data/freeform/xml/winamp/cover/cover.xml
new file mode 100644
index 00000000..7819745a
--- /dev/null
+++ b/Src/resources/data/freeform/xml/winamp/cover/cover.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<WinampAbstractionLayer version="0.7">
+<elements>
+ <bitmap id="winamp.cover.notfound" file="notfound.png"/> <!-- 120x120 px -->
+ <bitmap id="winamp.cover.notfound.60" file="notfound60.png"/> <!-- 60x60 px -->
+ <bitmap id="winamp.cover.notfound.90" file="notfound90.png"/> <!-- 90x90 px -->
+</elements>
+</WinampAbstractionLayer>
diff --git a/Src/resources/data/freeform/xml/winamp/cover/notfound.png b/Src/resources/data/freeform/xml/winamp/cover/notfound.png
new file mode 100644
index 00000000..e3c47387
--- /dev/null
+++ b/Src/resources/data/freeform/xml/winamp/cover/notfound.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/winamp/cover/notfound60.png b/Src/resources/data/freeform/xml/winamp/cover/notfound60.png
new file mode 100644
index 00000000..857b56a4
--- /dev/null
+++ b/Src/resources/data/freeform/xml/winamp/cover/notfound60.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/winamp/cover/notfound90.png b/Src/resources/data/freeform/xml/winamp/cover/notfound90.png
new file mode 100644
index 00000000..70f08487
--- /dev/null
+++ b/Src/resources/data/freeform/xml/winamp/cover/notfound90.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/winamp/thinger/library-hilited.png b/Src/resources/data/freeform/xml/winamp/thinger/library-hilited.png
new file mode 100644
index 00000000..7abf190f
--- /dev/null
+++ b/Src/resources/data/freeform/xml/winamp/thinger/library-hilited.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/winamp/thinger/library-selected.png b/Src/resources/data/freeform/xml/winamp/thinger/library-selected.png
new file mode 100644
index 00000000..904639f1
--- /dev/null
+++ b/Src/resources/data/freeform/xml/winamp/thinger/library-selected.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/winamp/thinger/library-unselected.png b/Src/resources/data/freeform/xml/winamp/thinger/library-unselected.png
new file mode 100644
index 00000000..a2a3d7a9
--- /dev/null
+++ b/Src/resources/data/freeform/xml/winamp/thinger/library-unselected.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/winamp/thinger/pledit-hover.png b/Src/resources/data/freeform/xml/winamp/thinger/pledit-hover.png
new file mode 100644
index 00000000..c4c7c5e9
--- /dev/null
+++ b/Src/resources/data/freeform/xml/winamp/thinger/pledit-hover.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/winamp/thinger/pledit-selected.png b/Src/resources/data/freeform/xml/winamp/thinger/pledit-selected.png
new file mode 100644
index 00000000..3438a11e
--- /dev/null
+++ b/Src/resources/data/freeform/xml/winamp/thinger/pledit-selected.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/winamp/thinger/pledit-unselected.png b/Src/resources/data/freeform/xml/winamp/thinger/pledit-unselected.png
new file mode 100644
index 00000000..b6293781
--- /dev/null
+++ b/Src/resources/data/freeform/xml/winamp/thinger/pledit-unselected.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/winamp/thinger/thinger.xml b/Src/resources/data/freeform/xml/winamp/thinger/thinger.xml
new file mode 100644
index 00000000..e37f3d82
--- /dev/null
+++ b/Src/resources/data/freeform/xml/winamp/thinger/thinger.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<WinampAbstractionLayer version="0.7">
+<elements>
+ <bitmap id="winamp.thinger.library.hilited" file="library-hilited.png" gammagroup="Thinger icons"/>
+ <bitmap id="winamp.thinger.library.selected" file="library-selected.png" gammagroup="Thinger icons"/>
+ <bitmap id="winamp.thinger.library" file="library-unselected.png" gammagroup="Thinger icons"/>
+
+ <bitmap id="winamp.thinger.video.hilited" file="video-hilited.png" gammagroup="Thinger icons"/>
+ <bitmap id="winamp.thinger.video.selected" file="video-selected.png" gammagroup="Thinger icons"/>
+ <bitmap id="winamp.thinger.video" file="video-unselected.png" gammagroup="Thinger icons"/>
+
+ <bitmap id="winamp.thinger.pledit.hilited" file="pledit-hover.png" gammagroup="Thinger icons"/>
+ <bitmap id="winamp.thinger.pledit.selected" file="pledit-selected.png" gammagroup="Thinger icons"/>
+ <bitmap id="winamp.thinger.pledit" file="pledit-unselected.png" gammagroup="Thinger icons"/>
+
+ <bitmap id="winamp.thinger.vis.hilited" file="vis-hilited.png" gammagroup="Thinger icons"/>
+ <bitmap id="winamp.thinger.vis.selected" file="vis-selected.png" gammagroup="Thinger icons"/>
+ <bitmap id="winamp.thinger.vis" file="vis-unselected.png" gammagroup="Thinger icons"/>
+
+</elements>
+</WinampAbstractionLayer> \ No newline at end of file
diff --git a/Src/resources/data/freeform/xml/winamp/thinger/video-hilited.png b/Src/resources/data/freeform/xml/winamp/thinger/video-hilited.png
new file mode 100644
index 00000000..4176634a
--- /dev/null
+++ b/Src/resources/data/freeform/xml/winamp/thinger/video-hilited.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/winamp/thinger/video-selected.png b/Src/resources/data/freeform/xml/winamp/thinger/video-selected.png
new file mode 100644
index 00000000..15a6027d
--- /dev/null
+++ b/Src/resources/data/freeform/xml/winamp/thinger/video-selected.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/winamp/thinger/video-unselected.png b/Src/resources/data/freeform/xml/winamp/thinger/video-unselected.png
new file mode 100644
index 00000000..fa58bedf
--- /dev/null
+++ b/Src/resources/data/freeform/xml/winamp/thinger/video-unselected.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/winamp/thinger/vis-hilited.png b/Src/resources/data/freeform/xml/winamp/thinger/vis-hilited.png
new file mode 100644
index 00000000..f9ac424c
--- /dev/null
+++ b/Src/resources/data/freeform/xml/winamp/thinger/vis-hilited.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/winamp/thinger/vis-selected.png b/Src/resources/data/freeform/xml/winamp/thinger/vis-selected.png
new file mode 100644
index 00000000..5d478429
--- /dev/null
+++ b/Src/resources/data/freeform/xml/winamp/thinger/vis-selected.png
Binary files differ
diff --git a/Src/resources/data/freeform/xml/winamp/thinger/vis-unselected.png b/Src/resources/data/freeform/xml/winamp/thinger/vis-unselected.png
new file mode 100644
index 00000000..b0074200
--- /dev/null
+++ b/Src/resources/data/freeform/xml/winamp/thinger/vis-unselected.png
Binary files differ