aboutsummaryrefslogtreecommitdiff
path: root/Src/resources/skins/Big Bento/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'Src/resources/skins/Big Bento/scripts')
-rw-r--r--Src/resources/skins/Big Bento/scripts/albumart.m135
-rw-r--r--Src/resources/skins/Big Bento/scripts/albumart.makibin0 -> 4539 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/attribs/gen_pageguids.m106
-rw-r--r--Src/resources/skins/Big Bento/scripts/attribs/init_Autoresize.m92
-rw-r--r--Src/resources/skins/Big Bento/scripts/attribs/init_appearance.m63
-rw-r--r--Src/resources/skins/Big Bento/scripts/attribs/init_browser.m133
-rw-r--r--Src/resources/skins/Big Bento/scripts/attribs/init_notifier.m327
-rw-r--r--Src/resources/skins/Big Bento/scripts/attribs/init_playlist.m39
-rw-r--r--Src/resources/skins/Big Bento/scripts/attribs/init_songticker.m82
-rw-r--r--Src/resources/skins/Big Bento/scripts/attribs/init_vis.m80
-rw-r--r--Src/resources/skins/Big Bento/scripts/attribs/init_windowpage.m309
-rw-r--r--Src/resources/skins/Big Bento/scripts/beatvisualization.m160
-rw-r--r--Src/resources/skins/Big Bento/scripts/beatvisualization.makibin0 -> 6472 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/buildall.bat8
-rw-r--r--Src/resources/skins/Big Bento/scripts/cbuttons.m293
-rw-r--r--Src/resources/skins/Big Bento/scripts/cbuttons.makibin0 -> 16345 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/colorthemes.m56
-rw-r--r--Src/resources/skins/Big Bento/scripts/colorthemes.makibin0 -> 2788 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/configtarget.m159
-rw-r--r--Src/resources/skins/Big Bento/scripts/configtarget.makibin0 -> 3424 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/coverflow.m229
-rw-r--r--Src/resources/skins/Big Bento/scripts/coverflow.makibin0 -> 7356 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/eq.m247
-rw-r--r--Src/resources/skins/Big Bento/scripts/eq.makibin0 -> 9863 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/fileinfo.m1277
-rw-r--r--Src/resources/skins/Big Bento/scripts/fileinfo.makibin0 -> 27221 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/gen_dropbox.m145
-rw-r--r--Src/resources/skins/Big Bento/scripts/gen_dropbox.makibin0 -> 2529 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/hoverstimulate.m83
-rw-r--r--Src/resources/skins/Big Bento/scripts/hoverstimulate.makibin0 -> 3065 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/imagecontrol.m99
-rw-r--r--Src/resources/skins/Big Bento/scripts/imagecontrol.makibin0 -> 3761 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/infoline.m44
-rw-r--r--Src/resources/skins/Big Bento/scripts/infoline.makibin0 -> 2482 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/lib/debug.m52
-rw-r--r--Src/resources/skins/Big Bento/scripts/lib/glow.m111
-rw-r--r--Src/resources/skins/Big Bento/scripts/loadattribs.m89
-rw-r--r--Src/resources/skins/Big Bento/scripts/loadattribs.makibin0 -> 17490 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/mainmenu.m164
-rw-r--r--Src/resources/skins/Big Bento/scripts/mainmenu.makibin0 -> 6612 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/maximize.m648
-rw-r--r--Src/resources/skins/Big Bento/scripts/maximize.makibin0 -> 14235 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/mcvcore.m469
-rw-r--r--Src/resources/skins/Big Bento/scripts/mcvcore.makibin0 -> 21650 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/mcvcore/defs.m98
-rw-r--r--Src/resources/skins/Big Bento/scripts/mcvcore/external_handles.m295
-rw-r--r--Src/resources/skins/Big Bento/scripts/mcvcore/load_handles.m138
-rw-r--r--Src/resources/skins/Big Bento/scripts/mcvcore/show_hide.m915
-rw-r--r--Src/resources/skins/Big Bento/scripts/mute.m162
-rw-r--r--Src/resources/skins/Big Bento/scripts/mute.makibin0 -> 5883 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/notifier.m827
-rw-r--r--Src/resources/skins/Big Bento/scripts/notifier.makibin0 -> 18404 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/playlistpro.m426
-rw-r--r--Src/resources/skins/Big Bento/scripts/playlistpro.makibin0 -> 12601 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/pledit.m619
-rw-r--r--Src/resources/skins/Big Bento/scripts/pledit.makibin0 -> 13283 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/seek.m90
-rw-r--r--Src/resources/skins/Big Bento/scripts/seek.makibin0 -> 3312 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/shadelinks.m74
-rw-r--r--Src/resources/skins/Big Bento/scripts/shadelinks.makibin0 -> 2896 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/shadesize.m217
-rw-r--r--Src/resources/skins/Big Bento/scripts/shadesize.makibin0 -> 7066 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/simplemaximize.m72
-rw-r--r--Src/resources/skins/Big Bento/scripts/simplemaximize.makibin0 -> 3031 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/songinfo.m214
-rw-r--r--Src/resources/skins/Big Bento/scripts/songinfo.makibin0 -> 5541 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/songticker.m190
-rw-r--r--Src/resources/skins/Big Bento/scripts/songticker.makibin0 -> 5930 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/standardframe.m68
-rw-r--r--Src/resources/skins/Big Bento/scripts/standardframe.makibin0 -> 3618 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/suicore.m410
-rw-r--r--Src/resources/skins/Big Bento/scripts/suicore.makibin0 -> 21112 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/suicore/external_handles.m767
-rw-r--r--Src/resources/skins/Big Bento/scripts/suicore/load_handles.m221
-rw-r--r--Src/resources/skins/Big Bento/scripts/suicore/show_hide.m870
-rw-r--r--Src/resources/skins/Big Bento/scripts/suicore/video_handles.m146
-rw-r--r--Src/resources/skins/Big Bento/scripts/syncbutton.m55
-rw-r--r--Src/resources/skins/Big Bento/scripts/syncbutton.makibin0 -> 2577 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/tabbutton.m87
-rw-r--r--Src/resources/skins/Big Bento/scripts/tabbutton.makibin0 -> 3444 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/tabcontrol.m122
-rw-r--r--Src/resources/skins/Big Bento/scripts/tabcontrol.makibin0 -> 4952 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/timecontrol.m89
-rw-r--r--Src/resources/skins/Big Bento/scripts/timecontrol.makibin0 -> 4107 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/videoresize.m196
-rw-r--r--Src/resources/skins/Big Bento/scripts/videoresize.makibin0 -> 5992 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/visbuttons.m148
-rw-r--r--Src/resources/skins/Big Bento/scripts/visbuttons.makibin0 -> 4908 bytes
-rw-r--r--Src/resources/skins/Big Bento/scripts/visualizer.m356
-rw-r--r--Src/resources/skins/Big Bento/scripts/visualizer.makibin0 -> 9967 bytes
90 files changed, 13571 insertions, 0 deletions
diff --git a/Src/resources/skins/Big Bento/scripts/albumart.m b/Src/resources/skins/Big Bento/scripts/albumart.m
new file mode 100644
index 00000000..f188973d
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/albumart.m
@@ -0,0 +1,135 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: albumart.m
+Version: 1.1
+
+Type: maki
+Date: 20. Sep. 2007 - 16:54
+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/com/songinfo.m>
+
+#define WEBCOVER_SHOUTCAST "winamp.cover.shoutcast"
+
+Function loadFileInfo();
+//Function loadPlaylistArtWork();
+
+Global Int plArtRetries = 0;
+Global Group scriptGroup;
+Global AlbumArtLayer l_albumart;
+Global String notfoundImage = "winamp.cover.notfound.xxl";
+
+System.onScriptLoaded ()
+{
+ scriptGroup = getScriptGroup();
+ l_albumart = scriptGroup.findObject(getToken(getParam(), ",", 0));
+ notfoundImage = getToken(getParam(), ",", 1);
+ loadFileInfo();
+}
+
+l_albumart.onRightButtonDown (int x, int y)
+{
+ popupmenu p = new popupmenu;
+
+ p.addCommand("Refresh Album Art", 1, 0, 0);
+ String path = getPath(getPlayItemMetaDataString("filename"));
+ if(path != "")
+ {
+ p.addCommand("Open Folder", 2, 0, 0);
+ }
+
+ int result = p.popatmouse();
+ delete p;
+
+ if (result == 1)
+ {
+ l_albumart.refresh();
+ }
+ else if (result == 2)
+ {
+ if(path != "")
+ {
+ System.navigateUrl(path);
+ }
+ else
+ {
+ String url = getPlayItemMetaDataString("streamurl");
+ if(url != "")
+ {
+ System.navigateUrl(url);
+ }
+ }
+ }
+}
+
+l_albumart.onLeftButtonDblClk (int x, int y)
+{
+ String path = getPath(getPlayItemMetaDataString("filename"));
+ if(path != "")
+ {
+ System.navigateUrl(path);
+ }
+ else
+ {
+ String url = getPlayItemMetaDataString("streamurl");
+ if(url != "")
+ {
+ System.navigateUrl(url);
+ }
+ }
+}
+
+loadFileInfo ()
+{
+ songinfo_reload(); // refresh vars
+ plArtRetries = 0;
+ l_albumart.setXMLParam("notfoundImage", notfoundImage);
+
+ //debugInt(songinfo_isStream);
+ if (songinfo_isStream)
+ {
+ // setCover either from a supplied url or from in-stream artwork or default to a generic image
+ if (songinfo_streamAlbumArt != "")
+ {
+ l_albumart.setXMLParam("image", songinfo_streamAlbumArt);
+ l_albumart.setXMLParam("notfoundImage", notfoundImage);
+ }
+
+ if(songinfo_streamType == SONGINFO_STREAMTYPE_SHOUTCAST || songinfo_streamType == SONGINFO_STREAMTYPE_SHOUTCAST2)
+ {
+ if(songinfo_streamType == SONGINFO_STREAMTYPE_SHOUTCAST2)
+ {
+ if(l_albumart.isInvalid() && plArtRetries < 5)
+ {
+ if(!plArtRetries)
+ {
+ l_albumart.setXMLParam("notfoundImage", WEBCOVER_SHOUTCAST);
+ }
+ plArtRetries += 1;
+ l_albumart.refresh();
+ }
+ }
+ else
+ {
+ l_albumart.setXMLParam("notfoundImage", WEBCOVER_SHOUTCAST);
+ }
+ }
+ }
+}
+
+// Hide branding of we start playback
+System.onPlay ()
+{
+ loadFileInfo();
+}
+
+System.onTitleChange (String newtitle)
+{
+ loadFileInfo();
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/albumart.maki b/Src/resources/skins/Big Bento/scripts/albumart.maki
new file mode 100644
index 00000000..f9248813
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/albumart.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/attribs/gen_pageguids.m b/Src/resources/skins/Big Bento/scripts/attribs/gen_pageguids.m
new file mode 100644
index 00000000..502df012
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/attribs/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/skins/Big Bento/scripts/attribs/init_Autoresize.m b/Src/resources/skins/Big Bento/scripts/attribs/init_Autoresize.m
new file mode 100644
index 00000000..9a7bbdf8
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/attribs/init_Autoresize.m
@@ -0,0 +1,92 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: init_Autoresize.m
+Version: 1.1
+
+Type: maki/attrib definitions
+Date: 23. Jan. 2008 - 20:31
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+Depending Files:
+ scripts/maximize.m
+ scripts/videoresize.maki
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#ifndef included
+#error This script can only be compiled as a #include
+#endif
+
+#include "gen_pageguids.m"
+
+
+Function initAttribs_Autoresize();
+
+
+#define CUSTOM_PAGE_RESIZE "{E704AB5A-108E-4309-B54B-43EBA5C0C3AA}"
+
+Global ConfigAttribute sui_autorsize_attrib, link_w_attrib, titlebar_dblclk_max_attib, titlebar_dblclk_shade_attib, collapse_top_attrib, collapse_bottom_attrib;
+Global ConfigAttribute video_inframe_attrib;
+
+initAttribs_Autoresize()
+{
+ initPages();
+
+ ConfigItem custom_page_autoresize = addConfigSubMenu(optionsmenu_page, "Window Sizing", CUSTOM_PAGE_RESIZE);
+
+ sui_autorsize_attrib = custom_page_autoresize.newAttribute("Autoresize Main Window if maximized", "0");
+ link_w_attrib = custom_page_autoresize.newAttribute("Link shade and player width", "1");
+ addMenuSeparator(custom_page_autoresize);
+ video_inframe_attrib = custom_page_autoresize.newAttribute("Enable Video in Window resizing", "0");
+ addMenuSeparator(custom_page_autoresize);
+ titlebar_dblclk_shade_attib = custom_page_autoresize.newAttribute("Switch to Shade on Titlebar Doubleclick", "1");
+ titlebar_dblclk_max_attib = custom_page_autoresize.newAttribute("Maximize Window on Titlebar Doubleclick", "0");
+ addMenuSeparator(custom_page_autoresize);
+ collapse_top_attrib = custom_page_autoresize.newAttribute("Collapse Window to Top", "1");
+ collapse_bottom_attrib = custom_page_autoresize.newAttribute("Collapse Window to Bottom", "0");
+}
+
+#ifdef MAIN_ATTRIBS_MGR
+
+titlebar_dblclk_shade_attib.onDataChanged()
+{
+ if (attribs_mychange) return;
+ NOOFF
+ attribs_mychange = 1;
+ if (getData() == "1") titlebar_dblclk_max_attib.setData("0");
+ if (getData() == "0") titlebar_dblclk_max_attib.setData("1");
+ attribs_mychange = 0;
+}
+titlebar_dblclk_max_attib.onDataChanged()
+{
+ if (attribs_mychange) return;
+ NOOFF
+ attribs_mychange = 1;
+ if (getData() == "1") titlebar_dblclk_shade_attib.setData("0");
+ if (getData() == "0") titlebar_dblclk_shade_attib.setData("1");
+ attribs_mychange = 0;
+}
+
+collapse_bottom_attrib.onDataChanged()
+{
+ if (attribs_mychange) return;
+ NOOFF
+ attribs_mychange = 1;
+ if (getData() == "1") collapse_top_attrib.setData("0");
+ if (getData() == "0") collapse_top_attrib.setData("1");
+ attribs_mychange = 0;
+}
+collapse_top_attrib.onDataChanged()
+{
+ if (attribs_mychange) return;
+ NOOFF
+ attribs_mychange = 1;
+ if (getData() == "1") collapse_bottom_attrib.setData("0");
+ if (getData() == "0") collapse_bottom_attrib.setData("1");
+ attribs_mychange = 0;
+}
+
+#endif \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/attribs/init_appearance.m b/Src/resources/skins/Big Bento/scripts/attribs/init_appearance.m
new file mode 100644
index 00000000..29419bd9
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/attribs/init_appearance.m
@@ -0,0 +1,63 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: init_appearance.m
+Version: 2.2
+
+Type: maki/attrib definitions
+Date: 28. Jun. 2007 - 22:08
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+Depending Files:
+ scripts/mainmenu.maki
+ scripts/visualizer.maki
+ scripts/beatvisualization.maki
+ scripts/shadesize.maki
+ scripts/mcvcore.maki
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#ifndef included
+#error This script can only be compiled as a #include
+#endif
+
+#include "gen_pageguids.m"
+
+Function initAttribs_Appearance();
+
+#define CUSTOM_PAGE_APPEARANCE "{F1036C9C-3919-47ac-8494-366778CF10F9}"
+
+Global ConfigAttribute vis_reflection_attrib;
+Global ConfigAttribute timer_reflection_attrib;
+Global ConfigAttribute menubar_main_attrib;
+Global configAttribute beatvis_attrib;
+//Global configAttribute artist_info_buttons_attrib;
+Global ConfigAttribute pl_tab_attrib;
+Global ConfigItem custom_page_appearance;
+
+initAttribs_Appearance()
+{
+
+ initPages();
+
+ custom_page_appearance = addConfigSubMenu(optionsmenu_page, "Appearance", CUSTOM_PAGE_APPEARANCE);
+
+ menubar_main_attrib = custom_page_appearance.newAttribute("Show Main Window Menu", "1");
+
+ addMenuSeparator(custom_page_appearance);
+
+ vis_reflection_attrib = custom_page_appearance.newAttribute("Show Visualizer Reflection", "1");
+ timer_reflection_attrib = custom_page_appearance.newAttribute("Show Timer Reflection", "1");
+
+ addMenuSeparator(custom_page_appearance);
+
+ //artist_info_buttons_attrib = custom_page_appearance.newAttribute("Show Artist-Information Buttons", "0");
+ pl_tab_attrib = custom_page_appearance.newAttribute("Show Playlist Tab", "0");
+
+ addMenuSeparator(custom_page_appearance);
+
+ beatvis_attrib = custom_page_appearance.newAttribute("Enable Beat Visualization", "1");
+
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/attribs/init_browser.m b/Src/resources/skins/Big Bento/scripts/attribs/init_browser.m
new file mode 100644
index 00000000..3171f64c
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/attribs/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/skins/Big Bento/scripts/attribs/init_notifier.m b/Src/resources/skins/Big Bento/scripts/attribs/init_notifier.m
new file mode 100644
index 00000000..82435b38
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/attribs/init_notifier.m
@@ -0,0 +1,327 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: init_notifier.m
+
+Type: maki/attrib definitions
+Version: 1.1
+Date: 12. Jul. 2006 - 16:15
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+Depending Files:
+ wasabi/notifier/notifier.maki
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#ifndef included
+#error This script can only be compiled as a #include
+#endif
+
+#include "gen_pageguids.m"
+
+
+Function initAttribs_notifier();
+
+
+#define CUSTOM_PAGE_NOTIFIER "{1AB968B3-8687-4a35-BA70-FCF6D92FB57F}"
+
+#define CUSTOM_PAGE_NOTIFIER_AA "{7BF45B05-2B98-4de8-8778-E5CCC9639ED1}"
+
+#define CUSTOM_PAGE_NOTIFIER_LOC "{715B2C0D-1DF0-4bb2-9D74-0FACAE27CE97}"
+
+#define CUSTOM_PAGE_NOTIFIER_FDIN "{D9891A39-7A38-45d8-9D51-A08F7270C836}"
+
+#define CUSTOM_PAGE_NOTIFIER_FDOUT "{560EAE41-1379-4927-AC55-FB5F4D47C9B8}"
+
+
+Global ConfigAttribute notifier_minimized_attrib;
+Global ConfigAttribute notifier_always_attrib;
+Global ConfigAttribute notifier_never_attrib;
+Global ConfigAttribute notifier_fadeintime_attrib;
+Global ConfigAttribute notifier_fadeouttime_attrib;
+Global ConfigAttribute notifier_holdtime_attrib;
+Global ConfigAttribute notifier_hideinfullscreen_attrib;
+Global ConfigAttribute notifier_windowshade_attrib;
+
+//Global ConfigAttribute notifier_opennowplaying_attrib;
+Global ConfigAttribute notifier_artworkinnotification_attrib;
+
+Global ConfigAttribute notifier_fdout_alpha;
+Global ConfigAttribute notifier_fdout_hslide;
+Global ConfigAttribute notifier_fdout_vslide;
+
+Global ConfigAttribute notifier_fdin_alpha;
+Global ConfigAttribute notifier_fdin_hslide;
+Global ConfigAttribute notifier_fdin_vslide;
+
+Global ConfigAttribute notifier_loc_br_attrib;
+Global ConfigAttribute notifier_loc_bl_attrib;
+Global ConfigAttribute notifier_loc_tr_attrib;
+Global ConfigAttribute notifier_loc_tl_attrib;
+Global ConfigAttribute notifier_loc_bc_attrib;
+Global ConfigAttribute notifier_loc_tc_attrib;
+
+Global ConfigAttribute notifier_loc_vport_attrib;
+Global ConfigAttribute notifier_loc_monitor_attrib;
+
+
+initAttribs_notifier()
+{
+ initPages();
+
+ ConfigItem custom_page_notifier = addConfigSubMenu(optionsmenu_page, "Notifications", CUSTOM_PAGE_NOTIFIER);
+
+ notifier_always_attrib = custom_page_notifier.newAttribute("Show always", "1");
+ notifier_windowshade_attrib = custom_page_notifier.newAttribute("Show with windowshade and when minimized", "0");
+ notifier_minimized_attrib = custom_page_notifier.newAttribute("Show only when minimized", "0");
+ notifier_minimized_attrib = custom_page_notifier.newAttribute("Show only when minimized", "0");
+ notifier_never_attrib = custom_page_notifier.newAttribute("Never show", "0");
+ addMenuSeparator(custom_page_notifier);
+
+ ConfigItem custom_page_notifier_loc = addConfigSubMenu(custom_page_notifier, "Location", CUSTOM_PAGE_NOTIFIER_LOC);
+
+ ConfigItem custom_page_notifier_fdin = addConfigSubMenu(custom_page_notifier, "Fade In Effect", CUSTOM_PAGE_NOTIFIER_FDIN);
+
+ ConfigItem custom_page_notifier_fdout = addConfigSubMenu(custom_page_notifier, "Fade Out Effect", CUSTOM_PAGE_NOTIFIER_FDOUT);
+
+ addMenuSeparator(custom_page_notifier);
+ notifier_hideinfullscreen_attrib = custom_page_notifier.newAttribute("Disable in fullscreen", "1");
+ addMenuSeparator(custom_page_notifier);
+ //notifier_opennowplaying_attrib = custom_page_notifier.newAttribute("Open Now Playing on Click", "1");
+ sep = custom_page_notifier.newAttribute("sep333", ""); sep.setData("-");
+ notifier_artworkinnotification_attrib = custom_page_notifier.newAttribute("Show Now Playing Artwork", "1");
+
+ notifier_fadeintime_attrib = custom_page_nonexposed.newAttribute("Notifications fade in time", "1000");
+ notifier_fadeouttime_attrib = custom_page_nonexposed.newAttribute("Notifications fade out time", "5000");
+ notifier_holdtime_attrib = custom_page_nonexposed.newAttribute("Notifications display time", "2000");
+
+
+// Notifications > Location
+ notifier_loc_bl_attrib = custom_page_notifier_loc.newAttribute("Bottom Left", "0");
+ notifier_loc_bc_attrib = custom_page_notifier_loc.newAttribute("Bottom Center", "0");
+ notifier_loc_br_attrib = custom_page_notifier_loc.newAttribute("Bottom Right", "1");
+ notifier_loc_tl_attrib = custom_page_notifier_loc.newAttribute("Top Left", "0");
+ notifier_loc_tc_attrib = custom_page_notifier_loc.newAttribute("Top Center", "0");
+ notifier_loc_tr_attrib = custom_page_notifier_loc.newAttribute("Top Right", "0");
+ addMenuSeparator(custom_page_notifier_loc);
+ notifier_loc_vport_attrib = custom_page_notifier_loc.newAttribute("Relative to Viewport", "1");
+ notifier_loc_monitor_attrib = custom_page_notifier_loc.newAttribute("Relative to Monitor", "0");
+
+// Notifications > Fade...
+ notifier_fdout_alpha = custom_page_notifier_fdout.newAttribute("Alpha Fade ", "1");
+ notifier_fdout_vslide = custom_page_notifier_fdout.newAttribute("Vertical Slide ", "0");
+ notifier_fdout_hslide = custom_page_notifier_fdout.newAttribute("Horizontal Slide ", "0");
+
+ // Martin> We need a additional spacer for the last 3 attribs, so we won't cross withe the 3 below in studio.xnf
+
+ notifier_fdin_alpha = custom_page_notifier_fdin.newAttribute("Alpha Fade", "1");
+ notifier_fdin_vslide = custom_page_notifier_fdin.newAttribute("Vertical Slide", "0");
+ notifier_fdin_hslide = custom_page_notifier_fdin.newAttribute("Horizontal Slide", "0");
+
+}
+
+#ifdef MAIN_ATTRIBS_MGR
+
+notifier_always_attrib.onDataChanged()
+{
+ if (attribs_mychange) return;
+ NOOFF
+ attribs_mychange = 1;
+ notifier_never_attrib.setData("0");
+ notifier_minimized_attrib.setData("0");
+ notifier_windowshade_attrib.setData("0");
+ attribs_mychange = 0;
+}
+
+notifier_never_attrib.onDataChanged()
+{
+ if (attribs_mychange) return;
+ NOOFF
+ attribs_mychange = 1;
+ notifier_always_attrib.setData("0");
+ notifier_minimized_attrib.setData("0");
+ notifier_windowshade_attrib.setData("0");
+ attribs_mychange = 0;
+}
+
+notifier_minimized_attrib.onDataChanged()
+{
+ if (attribs_mychange) return;
+ NOOFF
+ attribs_mychange = 1;
+ notifier_never_attrib.setData("0");
+ notifier_always_attrib.setData("0");
+ notifier_windowshade_attrib.setData("0");
+ attribs_mychange = 0;
+}
+
+notifier_windowshade_attrib.onDataChanged()
+{
+ if (attribs_mychange) return;
+ NOOFF
+ attribs_mychange = 1;
+ notifier_never_attrib.setData("0");
+ notifier_always_attrib.setData("0");
+ notifier_minimized_attrib.setData("0");
+ attribs_mychange = 0;
+}
+
+notifier_fdout_alpha.onDataChanged()
+{
+ if (attribs_mychange) return;
+ NOOFF
+ attribs_mychange = 1;
+ notifier_fdout_hslide.setData("0");
+ notifier_fdout_vslide.setData("0");
+ attribs_mychange = 0;
+}
+
+notifier_fdout_hslide.onDataChanged()
+{
+ if (attribs_mychange) return;
+ NOOFF
+ attribs_mychange = 1;
+ notifier_fdout_alpha.setData("0");
+ notifier_fdout_vslide.setData("0");
+ attribs_mychange = 0;
+}
+
+notifier_fdout_vslide.onDataChanged()
+{
+ if (attribs_mychange) return;
+ NOOFF
+ attribs_mychange = 1;
+ notifier_fdout_hslide.setData("0");
+ notifier_fdout_alpha.setData("0");
+ attribs_mychange = 0;
+}
+
+notifier_fdin_alpha.onDataChanged()
+{
+ if (attribs_mychange) return;
+ NOOFF
+ attribs_mychange = 1;
+ notifier_fdin_hslide.setData("0");
+ notifier_fdin_vslide.setData("0");
+ attribs_mychange = 0;
+}
+
+notifier_fdin_hslide.onDataChanged()
+{
+ if (attribs_mychange) return;
+ NOOFF
+ attribs_mychange = 1;
+ notifier_fdin_alpha.setData("0");
+ notifier_fdin_vslide.setData("0");
+ attribs_mychange = 0;
+}
+
+notifier_fdin_vslide.onDataChanged()
+{
+ if (attribs_mychange) return;
+ NOOFF
+ attribs_mychange = 1;
+ notifier_fdin_hslide.setData("0");
+ notifier_fdin_alpha.setData("0");
+ attribs_mychange = 0;
+}
+
+notifier_loc_br_attrib.onDataChanged()
+{
+ if (attribs_mychange) return;
+ NOOFF
+ attribs_mychange = 1;
+ notifier_loc_bl_attrib.setData("0");
+ notifier_loc_tr_attrib.setData("0");
+ notifier_loc_tl_attrib.setData("0");
+ notifier_loc_tc_attrib.setData("0");
+ notifier_loc_bc_attrib.setData("0");
+ attribs_mychange = 0;
+}
+
+notifier_loc_bl_attrib.onDataChanged()
+{
+ if (attribs_mychange) return;
+ NOOFF
+ attribs_mychange = 1;
+ notifier_loc_br_attrib.setData("0");
+ notifier_loc_tr_attrib.setData("0");
+ notifier_loc_tl_attrib.setData("0");
+ notifier_loc_tc_attrib.setData("0");
+ notifier_loc_bc_attrib.setData("0");
+ attribs_mychange = 0;
+}
+
+notifier_loc_tl_attrib.onDataChanged()
+{
+ if (attribs_mychange) return;
+ NOOFF
+ attribs_mychange = 1;
+ notifier_loc_bl_attrib.setData("0");
+ notifier_loc_tr_attrib.setData("0");
+ notifier_loc_br_attrib.setData("0");
+ notifier_loc_tc_attrib.setData("0");
+ notifier_loc_bc_attrib.setData("0");
+ attribs_mychange = 0;
+}
+
+notifier_loc_tr_attrib.onDataChanged()
+{
+ if (attribs_mychange) return;
+ NOOFF
+ attribs_mychange = 1;
+ notifier_loc_bl_attrib.setData("0");
+ notifier_loc_br_attrib.setData("0");
+ notifier_loc_tl_attrib.setData("0");
+ notifier_loc_tc_attrib.setData("0");
+ notifier_loc_bc_attrib.setData("0");
+ attribs_mychange = 0;
+}
+
+notifier_loc_tc_attrib.onDataChanged()
+{
+ if (attribs_mychange) return;
+ NOOFF
+ attribs_mychange = 1;
+ notifier_loc_bl_attrib.setData("0");
+ notifier_loc_br_attrib.setData("0");
+ notifier_loc_tl_attrib.setData("0");
+ notifier_loc_tr_attrib.setData("0");
+ notifier_loc_bc_attrib.setData("0");
+ attribs_mychange = 0;
+}
+
+notifier_loc_bc_attrib.onDataChanged()
+{
+ if (attribs_mychange) return;
+ NOOFF
+ attribs_mychange = 1;
+ notifier_loc_bl_attrib.setData("0");
+ notifier_loc_br_attrib.setData("0");
+ notifier_loc_tl_attrib.setData("0");
+ notifier_loc_tc_attrib.setData("0");
+ notifier_loc_tr_attrib.setData("0");
+ attribs_mychange = 0;
+}
+
+notifier_loc_vport_attrib.onDataChanged()
+{
+ if (attribs_mychange) return;
+ NOOFF
+ attribs_mychange = 1;
+ notifier_loc_monitor_attrib.setData("0");
+ attribs_mychange = 0;
+}
+
+notifier_loc_monitor_attrib.onDataChanged()
+{
+ if (attribs_mychange) return;
+ NOOFF
+ attribs_mychange = 1;
+ notifier_loc_vport_attrib.setData("0");
+ attribs_mychange = 0;
+}
+
+#endif \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/attribs/init_playlist.m b/Src/resources/skins/Big Bento/scripts/attribs/init_playlist.m
new file mode 100644
index 00000000..5c8f0e4d
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/attribs/init_playlist.m
@@ -0,0 +1,39 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: init_playlist.m
+Version: 1.0
+
+Type: maki/attrib definitions
+Date: 23. Okt. 2006 - 16:58
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+Depending Files:
+ config/configsystem.maki
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#ifndef included
+#error This script can only be compiled as a #include
+#endif
+
+#include "gen_pageguids.m"
+
+#define COSTUM_PAGE_PLAYLIST "{0167CFD9-5D35-404a-8F03-80ED5B89DEDF}"
+
+
+Function initAttribs_playlist();
+
+Global ConfigAttribute playlist_enlarge_attrib;
+Global ConfigAttribute playlist_cover_attrib;
+
+initAttribs_Playlist()
+{
+ initPages();
+
+ ConfigItem playlist_parent = addConfigSubMenu(optionsmenu_page, "Playlist", COSTUM_PAGE_PLAYLIST);
+ playlist_enlarge_attrib = playlist_parent.newAttribute("Enlarge Playlist", "1");
+ playlist_cover_attrib = playlist_parent.newAttribute("Show Album Art if Playlist is enlarged", "1");
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/attribs/init_songticker.m b/Src/resources/skins/Big Bento/scripts/attribs/init_songticker.m
new file mode 100644
index 00000000..c7e96f3f
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/attribs/init_songticker.m
@@ -0,0 +1,82 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: init_songticker.m
+Version: 1.0
+
+Type: maki/attrib definitions
+Date: 01. Sep. 2007 - 01:10
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+Depending Files:
+ scripts/songticker.maki
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#ifndef included
+#error This script can only be compiled as a #include
+#endif
+
+#include "gen_pageguids.m"
+
+Function initAttribs_Songticker();
+
+Class ConfigAttribute ScrollingAttribute;
+
+#define CUSTOM_PAGE_SONGTICKER "{7061FDE0-0E12-11D8-BB41-0050DA442EF4}"
+
+
+Global ScrollingAttribute songticker_scrolling_disabled_attrib;
+Global ScrollingAttribute songticker_style_modern_attrib;
+Global ScrollingAttribute songticker_style_old_attrib;
+
+
+initAttribs_Songticker()
+{
+
+ initPages();
+
+ ConfigItem custom_page_songticker = addConfigSubMenu(optionsmenu_page, "Songticker", CUSTOM_PAGE_SONGTICKER);
+
+ songticker_scrolling_disabled_attrib = custom_page_songticker.newAttribute("Disable Songticker Scrolling", "0");
+ songticker_style_modern_attrib = custom_page_songticker.newAttribute("Modern Songticker Scrolling", "1");
+ songticker_style_old_attrib = custom_page_songticker.newAttribute("Classic Songticker Scrolling", "0");
+
+}
+
+#ifdef MAIN_ATTRIBS_MGR
+
+
+songticker_scrolling_disabled_attrib.onDataChanged()
+{
+ if (attribs_mychange) return;
+ NOOFF
+ attribs_mychange = 1;
+ songticker_style_modern_attrib.setData("0");
+ songticker_style_old_attrib.setData("0");
+ attribs_mychange = 0;
+}
+
+
+songticker_style_old_attrib.onDataChanged()
+{
+ if (attribs_mychange) return;
+ NOOFF
+ attribs_mychange = 1;
+ songticker_style_modern_attrib.setData("0");
+ songticker_scrolling_disabled_attrib.setData("0");
+ attribs_mychange = 0;
+}
+songticker_style_modern_attrib.onDataChanged()
+{
+ if (attribs_mychange) return;
+ NOOFF
+ attribs_mychange = 1;
+ songticker_scrolling_disabled_attrib.setData("0");
+ songticker_style_old_attrib.setData("0");
+ attribs_mychange = 0;
+}
+
+#endif \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/attribs/init_vis.m b/Src/resources/skins/Big Bento/scripts/attribs/init_vis.m
new file mode 100644
index 00000000..55aa0c61
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/attribs/init_vis.m
@@ -0,0 +1,80 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: init_vis.m
+Version: 1.0
+
+Type: maki/attrib definitions
+Date: 03. Nov. 2006 - 18:12
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+Depending Files:
+ scripts/infocompcore.maki
+ scripts/suicore.maki
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#ifndef included
+#error This script can only be compiled as a #include
+#endif
+
+#include "gen_pageguids.m"
+
+
+Function initAttribs_vis();
+
+Global ConfigAttribute vis_lefttoplayer_attrib, vis_inbig_attrib, vis_lefttoplayer_full_attrib;
+
+#define CUSTOM_PAGE_VIS "{090B63DE-FD24-4528-ABE5-A522615E8AE9}"
+
+
+initAttribs_vis()
+{
+ initPages();
+
+ // System.isSafeMode() is not recognized by mc.exe
+ // if (!System.isSafeMode())
+ // {
+ ConfigItem vis_parent = addConfigSubMenu(optionsmenu_page, "Visualization", CUSTOM_PAGE_VIS);
+
+ vis_inbig_attrib = vis_parent.newAttribute("Open in Big Component View", "1");
+ vis_lefttoplayer_full_attrib = vis_parent.newAttribute("Open in Multi Content View (stretched)", "0");
+ vis_lefttoplayer_attrib = vis_parent.newAttribute("Open in Multi Content View (mini)", "0");
+ // }
+}
+
+#ifdef MAIN_ATTRIBS_MGR
+
+vis_lefttoplayer_attrib.onDataChanged()
+{
+ if (attribs_mychange) return;
+ NOOFF
+ attribs_mychange = 1;
+ vis_inbig_attrib.setData("0");
+ vis_lefttoplayer_full_attrib.setData("0");
+ attribs_mychange = 0;
+}
+
+vis_inbig_attrib.onDataChanged()
+{
+ if (attribs_mychange) return;
+ NOOFF
+ attribs_mychange = 1;
+ vis_lefttoplayer_attrib.setData("0");
+ vis_lefttoplayer_full_attrib.setData("0");
+ attribs_mychange = 0;
+}
+
+vis_lefttoplayer_full_attrib.onDataChanged()
+{
+ if (attribs_mychange) return;
+ NOOFF
+ attribs_mychange = 1;
+ vis_lefttoplayer_attrib.setData("0");
+ vis_inbig_attrib.setData("0");
+ attribs_mychange = 0;
+}
+
+#endif \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/attribs/init_windowpage.m b/Src/resources/skins/Big Bento/scripts/attribs/init_windowpage.m
new file mode 100644
index 00000000..17a9eb0d
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/attribs/init_windowpage.m
@@ -0,0 +1,309 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: init_windowpage.m
+Version: 1.1
+
+Type: maki/attrib definitions
+Date: 08. Jul. 2006 - 17:28
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+Depending Files:
+ scripts/mcvcompcore.maki
+ scripts/suicore.maki
+ scripts/browser.maki
+ scripts/fileinfo.maki
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#ifndef included
+#error This script can only be compiled as a #include
+#endif
+
+#include "gen_pageguids.m"
+
+//#define DOHIDEMCV
+//#define IC_COVERFLOW
+
+
+#define CUSTOM_PAGE_FILEINFO "{6A619628-6A91-46e3-A3F3-5C1B2D93DF4F}"
+
+Function initAttribs_windowpage();
+
+Global ConfigAttribute sui_browser_attrib, sui_eq_attrib, sui_config_attrib;
+Global ConfigAttribute ic_fileinfo, ic_cover_fileinfo, ic_vis, ic_vis_fileinfo, ic_hidden, ic_eq, ic_config, _plsc_ic_attrib;
+#ifdef IC_COVERFLOW
+Global ConfigAttribute _cflow_ic_attrib;
+#else
+#define _cflow_ic_attrib //
+#endif
+
+#ifdef DOHIDEMCV
+Global ConfigAttribute ic_hidden;
+#endif
+Global ConfigItem custom_page_fileinfo;
+
+#ifndef DOHIDEMCV
+#define ic_hidden //
+#endif
+
+#define CUSTOM_PAGE_INFOCOMP "{8D3829F9-5790-4c8e-9C3A-C397D3602FF9}"
+Class ConfigAttribute InfoLineAttribute;
+Global InfoLineAttribute infocomp_show_rating, infocomp_show_genre, infocomp_show_year, infocomp_show_track, infocomp_show_publisher, infocomp_show_composer, infocomp_show_albumartist, infocomp_show_format, infocomp_show_disc;
+Global ConfigAttribute infocomp_cycle, infocomp_nowplaying, infocomp_browser;
+
+initAttribs_windowpage()
+{
+ initPages();
+
+ sui_eq_attrib = custom_windows_page.newAttribute("Equalizer\tAlt+G", "0");
+ // sui_browser_attrib = custom_windows_page.newAttribute("Web Browser\tAlt+X", "0");
+ sui_config_attrib = custom_windows_page.newAttribute("Skin Settings\tAlt+C", "0");
+
+ custom_page_fileinfo = addConfigSubMenu(optionsmenu_page, "Multi Content View", CUSTOM_PAGE_FILEINFO);
+
+ ic_fileinfo = custom_page_fileinfo.newAttribute("File Info", "1");
+ _cflow_ic_attrib = custom_page_fileinfo.newAttribute("Cover Flow", "0");
+ ic_vis = custom_page_fileinfo.newAttribute("Visualization ", "0");
+ _plsc_ic_attrib = custom_page_fileinfo.newAttribute("Stored Playlists", "0");
+ ic_eq = custom_page_fileinfo.newAttribute("Equalizer", sui_eq_attrib.getData());
+ ic_config = custom_page_fileinfo.newAttribute("Skin Settings", sui_config_attrib.getData());
+#ifdef DOHIDEMCV
+ ic_hidden = custom_page_fileinfo.newAttribute("Hide Multi Content View", "0");
+#endif
+ addMenuSeparator(custom_page_fileinfo);
+ ConfigItem fileinfo_parent = addConfigSubMenu(custom_page_fileinfo, "File Info Components", CUSTOM_PAGE_INFOCOMP);
+
+ ic_vis_fileinfo = fileinfo_parent.newAttribute("Visualization ", "0");
+ ic_cover_fileinfo = fileinfo_parent.newAttribute("Album Art", "1");
+ addMenuSeparator(fileinfo_parent);
+ infocomp_show_track = fileinfo_parent.newAttribute("Show Track #", "1");
+ infocomp_show_year = fileinfo_parent.newAttribute("Show Year", "1");
+ infocomp_show_genre = fileinfo_parent.newAttribute("Show Genre", "1");
+ infocomp_show_disc = fileinfo_parent.newAttribute("Show Disc", "1");
+ infocomp_show_albumartist = fileinfo_parent.newAttribute("Show Album Artist", "1");
+ infocomp_show_composer = fileinfo_parent.newAttribute("Show Composer", "1");
+ infocomp_show_publisher = fileinfo_parent.newAttribute("Show Publisher", "1");
+ infocomp_show_format = fileinfo_parent.newAttribute("Show Decoder", "1");
+ infocomp_show_rating = fileinfo_parent.newAttribute("Show Song Rating", "1");
+ addMenuSeparator(fileinfo_parent);
+ infocomp_cycle = fileinfo_parent.newAttribute("Cycle File Info", "1");
+ addMenuSeparator(fileinfo_parent);
+ //infocomp_nowplaying = fileinfo_parent.newAttribute("Open Links in Now Playing", "1");
+ //infocomp_browser = fileinfo_parent.newAttribute("Open Links in Browser", "0");
+}
+
+#ifdef MAIN_ATTRIBS_MGR
+System.onKeyDown(String key) {
+ if (key == "alt+x")
+ {
+ if (sui_browser_attrib.getData() == "0") sui_browser_attrib.setData("1");
+ else sui_browser_attrib.setData("0");
+ complete;
+ }
+ /*if (key == "alt+n")
+ {
+ if (sui_browser_attrib.getData() == "0") sui_browser_attrib.setData("1");
+ else sui_browser_attrib.setData("0");
+ complete;
+ }*/
+ /*if (key == "alt+c")
+ {
+ if (sui_cover_attrib.getData() == "0") sui_cover_attrib.setData("1");
+ else sui_cover_attrib.setData("0");
+ complete;
+ }*/
+ if (key == "alt+c")
+ {
+ if (sui_config_attrib.getData() == "0") sui_config_attrib.setData("1");
+ else sui_config_attrib.setData("0");
+ complete;
+ }
+ if (key == "alt+g")
+ {
+ if (sui_eq_attrib.getData() == "0") sui_eq_attrib.setData("1");
+ else sui_eq_attrib.setData("0");
+ complete;
+ }
+ /*if (key == "ctrl+f") {
+ navigateUrl(getPath(getPlayItemString()));
+ complete;
+ }*/
+}
+
+ic_fileinfo.onDataChanged()
+{
+ //debugString("ic_fileinfo.setData(" + getData() + ")", 9);
+ if (attribs_mychange2) return;
+ NOOFF
+ attribs_mychange2 = 1;
+ ic_vis.setData("0");
+ ic_eq.setData("0");
+ ic_config.setData("0");
+ _plsc_ic_attrib.setData("0");
+ _cflow_ic_attrib.setData("0");
+ ic_hidden.setdata("0");
+ attribs_mychange2 = 0;
+}
+
+ic_vis.onDataChanged()
+{
+ //debugString("ic_vis.setData(" + getData() + ")", 9);
+ if (attribs_mychange2) return;
+ NOOFF
+ attribs_mychange2 = 1;
+ ic_fileinfo.setData("0");
+ ic_eq.setData("0");
+ ic_config.setData("0");
+ _plsc_ic_attrib.setData("0");
+ _cflow_ic_attrib.setData("0");
+ ic_hidden.setdata("0");
+ attribs_mychange2 = 0;
+}
+
+ic_eq.onDataChanged()
+{
+ if (!attribs_mychange)
+ {
+ attribs_mychange = 1;
+ sui_eq_attrib.setData(getData());
+ if (getData() == "1") sui_config_attrib.setData("0");
+ attribs_mychange = 0;
+ }
+ //debugString("ic_vis_fileinfo.setData(" + getData() + ")", 9);
+ if (attribs_mychange2) return;
+ NOOFF
+ attribs_mychange2 = 1;
+ ic_fileinfo.setData("0");
+ ic_vis.setData("0");
+ ic_config.setData("0");
+ _plsc_ic_attrib.setData("0");
+ _cflow_ic_attrib.setData("0");
+ ic_hidden.setdata("0");
+ attribs_mychange2 = 0;
+}
+
+ic_config.onDataChanged()
+{
+ if (!attribs_mychange)
+ {
+ attribs_mychange = 1;
+ sui_config_attrib.setData(getData());
+ if (getData() == "1") sui_eq_attrib.setData("0");
+ attribs_mychange = 0;
+ }
+ //debugString("ic_vis_fileinfo.setData(" + getData() + ")", 9);
+ if (attribs_mychange2) return;
+ NOOFF
+ attribs_mychange2 = 1;
+ ic_fileinfo.setData("0");
+ ic_vis.setData("0");
+ ic_eq.setData("0");
+ _plsc_ic_attrib.setData("0");
+ _cflow_ic_attrib.setData("0");
+ ic_hidden.setdata("0");
+ attribs_mychange2 = 0;
+}
+
+_plsc_ic_attrib.onDataChanged()
+{
+ //debugString("ic_fileinfo.setData(" + getData() + ")", 9);
+ if (attribs_mychange2) return;
+ NOOFF
+ attribs_mychange2 = 1;
+ ic_vis.setData("0");
+ ic_eq.setData("0");
+ ic_config.setData("0");
+ ic_fileinfo.setData("0");
+ _cflow_ic_attrib.setData("0");
+ ic_hidden.setdata("0");
+ attribs_mychange2 = 0;
+}
+
+#ifdef IC_COVERFLOW
+
+_cflow_ic_attrib.onDataChanged()
+{
+ //debugString("ic_fileinfo.setData(" + getData() + ")", 9);
+ if (attribs_mychange2) return;
+ NOOFF
+ attribs_mychange2 = 1;
+ ic_vis.setData("0");
+ ic_eq.setData("0");
+ ic_config.setData("0");
+ ic_fileinfo.setData("0");
+ _plsc_ic_attrib.setData("0");
+ ic_hidden.setdata("0");
+ attribs_mychange2 = 0;
+}
+
+#endif
+
+#ifdef DOHIDEMCV
+ic_hidden.onDataChanged()
+{
+ //debugString("ic_fileinfo.setData(" + getData() + ")", 9);
+ if (attribs_mychange2) return;
+ NOOFF
+ attribs_mychange2 = 1;
+ ic_vis.setData("0");
+ ic_eq.setData("0");
+ ic_config.setData("0");
+ ic_fileinfo.setData("0");
+ _plsc_ic_attrib.setdata("0");
+ _cflow_ic_attrib.setData("0");
+ attribs_mychange2 = 0;
+}
+#endif
+
+sui_eq_attrib.onDataChanged()
+{
+ //debugString("ic_vis_fileinfo.setData(" + getData() + ")", 9);
+ if (attribs_mychange) return;
+ attribs_mychange = 1;
+ if (getData() == "1")
+ {
+ ic_eq.setData("1");
+ sui_config_attrib.setData("0");
+ }
+ else ic_fileinfo.setData("1");
+ attribs_mychange = 0;
+}
+
+sui_config_attrib.onDataChanged()
+{
+ //debugString("ic_vis_fileinfo.setData(" + getData() + ")", 9);
+ if (attribs_mychange) return;
+ attribs_mychange = 1;
+ if (getData() == "1")
+ {
+ ic_config.setData("1");
+ sui_eq_attrib.setData("0");
+ }
+ else ic_fileinfo.setData("1");
+ attribs_mychange = 0;
+}
+
+
+/* infocomp_nowplaying.onDataChanged()
+{
+ if (attribs_mychange) return;
+ NOOFF
+ attribs_mychange = 1;
+ infocomp_browser.setData("0");
+ attribs_mychange = 0;
+}
+
+
+infocomp_browser.onDataChanged()
+{
+ if (attribs_mychange) return;
+ NOOFF
+ attribs_mychange = 1;
+ infocomp_nowplaying.setData("0");
+ attribs_mychange = 0;
+}
+*/
+#endif \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/beatvisualization.m b/Src/resources/skins/Big Bento/scripts/beatvisualization.m
new file mode 100644
index 00000000..17e72f03
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/beatvisualization.m
@@ -0,0 +1,160 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: beatvisualization.m
+Version: 1.0
+
+Type: maki
+Date: 24. Sep. 2007 - 21:11
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+
+ Based on Winamp Modern
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#include <lib/std.mi>
+#include attribs/init_appearance.m
+
+Function updateObj(int w);
+
+#define CENTER_VAR CONTENTGRP
+Global Group contentGroup;
+#include <lib/com/centerlayer.m>
+#undef CENTER_VAR
+
+Global Group scriptGroup;
+Global animatedLayer beatVisL, beatVisR;
+Global int lastBeatLeft, lastBeatRight;
+Global Timer refreshVis;
+Global Int totalFrames;
+Global GuiObject SongTicker;
+
+System.onScriptLoaded ()
+{
+ initAttribs_Appearance();
+
+ scriptGroup = getScriptGroup();
+
+ contentGroup = scriptGroup.getObject("player.display.beatvis.content");
+
+ beatVisL = contentGroup.getObject("beatvisleft");
+ beatVisR = contentGroup.getObject("beatvisright");
+
+ _CONTENTGRPInit(contentGroup, scriptGroup, 1, 0);
+
+ SongTicker = contentGroup.getParent().findObject("Songticker");
+
+ totalFrames = beatVisR.getLength() - 1;
+
+ lastBeatLeft = 0;
+ lastBeatRight = 0;
+
+ refreshVis = new Timer;
+ refreshVis.setDelay(10);
+
+ updateObj(scriptGroup.getWidth());
+ vis_reflection_attrib.onDataChanged();
+}
+
+System.onScriptUnloading ()
+{
+ refreshVis.stop();
+ delete refreshVis;
+}
+
+scriptGroup.onResize (int x, int y, int w, int h)
+{
+ updateObj(w);
+}
+
+updateObj (int w)
+{
+ if (w > 98)
+ {
+ if (scriptGroup.isVisible()) return;
+ scriptGroup.show();
+ if (beatvis_attrib.getData() == "1") refreshVis.start();
+ //SongTicker.sendAction("setGuiX", "", 191,0,0,0);
+
+ }
+ else
+ {
+ refreshVis.stop();
+ scriptGroup.hide();
+ //SongTicker.sendAction("restoreGuiX", "", 0,0,0,0);
+ }
+}
+
+refreshVis.onTimer ()
+{
+ if (beatvis_attrib.getData() == "0")
+ {
+ lastBeatLeft--;
+ if (lastBeatLeft<0) lastBeatLeft=0;
+ lastBeatRight--;
+ if (lastBeatRight<0) lastBeatRight=0;
+
+ beatVisL.gotoframe(lastBeatLeft);
+ beatVisR.gotoframe(lastBeatRight);
+
+ if (lastBeatLeft + lastBeatRight == 0)
+ {
+ refreshVis.stop();
+ }
+ return;
+ }
+
+ int beatLeft= System.getLeftVuMeter();
+ int beatRight= System.getRightVuMeter();
+
+ int frameLeft=beatLeft/(totalFrames+7);
+ int frameRight=beatRight/(totalFrames+7);
+
+ if (frameLeft>totalFrames) frameLeft=totalFrames;
+ if (frameRight>totalFrames) frameRight=totalFrames;
+
+ if (frameLeft<lastBeatLeft)
+ {
+ frameLeft=lastBeatLeft-1;
+ if (frameLeft<0) frameLeft=0;
+ }
+
+ if (frameRight<lastBeatRight)
+ {
+ frameRight=lastBeatRight-1;
+ if (frameRight<0) frameRight=0;
+ }
+
+ lastBeatLeft=frameLeft;
+ lastBeatRight=frameRight;
+
+ beatVisL.gotoframe(frameLeft);
+ beatVisR.gotoframe(frameRight);
+}
+
+beatvis_attrib.onDataChanged ()
+{
+ if (getData() == "1" )
+ {
+ if (scriptGroup.isVisible())
+ {
+ refreshVis.start();
+ }
+ }
+}
+
+vis_reflection_attrib.onDataChanged ()
+{
+ if (getdata() == "1")
+ {
+ beatVisR.setXmlParam("image", "player.beatvis.right");
+ beatVisL.setXmlParam("image", "player.beatvis.left");
+ }
+ else
+ {
+ beatVisR.setXmlParam("image", "player.beatvis.right.wo");
+ beatVisL.setXmlParam("image", "player.beatvis.left.wo");
+ }
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/beatvisualization.maki b/Src/resources/skins/Big Bento/scripts/beatvisualization.maki
new file mode 100644
index 00000000..b4cda446
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/beatvisualization.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/buildall.bat b/Src/resources/skins/Big Bento/scripts/buildall.bat
new file mode 100644
index 00000000..caceb43b
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/buildall.bat
@@ -0,0 +1,8 @@
+@echo off
+
+pushd %~dp0..\..\..\..\wasabi\
+set basedir=%cd%
+popd
+
+for %%a in (*.m) do "%basedir%\mc.exe" %%a
+pause \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/cbuttons.m b/Src/resources/skins/Big Bento/scripts/cbuttons.m
new file mode 100644
index 00000000..0b662f4c
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/cbuttons.m
@@ -0,0 +1,293 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: cbuttons.m
+Version: 1.0
+
+Type: maki
+Date: 03. Nov. 2006 - 17:02
+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/pldir.mi>
+
+#define GLOW_OBJECT Prev
+#include <lib/com/glow.m>
+#define GLOW_OBJECT Next
+#include <lib/com/glow.m>
+#define GLOW_OBJECT Play
+#include <lib/com/glow.m>
+#define GLOW_OBJECT Pause
+#include <lib/com/glow.m>
+#define GLOW_OBJECT Stop
+#include <lib/com/glow.m>
+#define GLOW_OBJECT Eject
+#include <lib/com/glow.m>
+#define GLOW_OBJECT Repeat
+#include <lib/com/glow.m>
+#define GLOW_OBJECT Shuffle
+#include <lib/com/glow.m>
+#define GLOW_OBJECT Bolt
+#include <lib/com/glow.m>
+
+Class Button InfoButton;
+Class ToggleButton InfoToggleButton;
+
+Global InfoButton b_play, b_pause, b_eject, b_prev, b_next, b_stop, b_bolt;
+Global InfoToggleButton b_repeat, b_shuffle;
+Global GuiObject SongTicker;
+Global Group buttongroup;
+Global GuiObject shuffleActive, repeatActive, boltGlow;
+Global Int shuffleActive_Y, repeatActive_Y, minW, boltX, grabbX;
+Global Layer mainframe_grabber;
+Global Timer beatvis;
+
+System.onScriptLoaded ()
+{
+ buttongroup = getScriptGroup().findObject("player.cbuttons");
+
+ b_play = buttongroup.getObject("Play");
+ b_pause = buttongroup.getObject("Pause");
+ b_eject = buttongroup.getObject("Eject");
+ b_prev = buttongroup.getObject("Prev");
+ b_next = buttongroup.getObject("Next");
+ b_stop = buttongroup.getObject("Stop");
+ b_repeat = buttongroup.getObject("repeat");
+ b_shuffle = buttongroup.getObject("shuffle");
+ b_bolt = buttongroup.getParentLayout().getObject("bolt");
+ boltGlow = buttongroup.getParentLayout().getObject("bolt.glow");
+ shuffleActive = getScriptGroup().findObject("shuffle.active");
+ shuffleActive_Y = shuffleActive.getGuiY();
+ repeatActive = getScriptGroup().findObject("repeat.active");
+ repeatActive_Y = repeatActive.getGuiY();
+ mainframe_grabber = buttongroup.getParentLayout().getObject("player.mainframe.grabber");
+
+ beatvis = new Timer;
+ beatvis.setDelay(33);
+
+ minW = stringToInteger(getParam());
+ boltX = b_bolt.getGuiX();
+ grabbX = mainframe_grabber.getGuiX();
+
+ b_bolt.setXmlParam("x", integerToString(boltX + buttongroup.GetWidth() - minW));
+ boltGlow.setXmlParam("x", integerToString(boltX + buttongroup.GetWidth() - minW));
+ mainframe_grabber.setXmlParam("x", integerToString(grabbX + buttongroup.GetWidth() - minW));
+
+ _Play_GlowInit (b_play, buttongroup.findObject("Play.glow"), 0.3);
+ _Pause_GlowInit (b_pause, buttongroup.findObject("Pause.glow"), 0.3);
+ _Stop_GlowInit (b_stop, buttongroup.findObject("Stop.glow"), 0.3);
+ _Prev_GlowInit (b_prev, buttongroup.findObject("Prev.glow"), 0.3);
+ _Next_GlowInit (b_next, buttongroup.findObject("Next.glow"), 0.3);
+ _Eject_GlowInit (b_eject, buttongroup.findObject("Eject.glow"), 0.3);
+ _Repeat_GlowInit (b_repeat, buttongroup.findObject("repeat.glow"), 0.3);
+ _Shuffle_GlowInit (b_shuffle, buttongroup.findObject("shuffle.glow"), 0.3);
+ _Bolt_GlowInit (b_bolt, buttongroup.getParentLayout().getObject("bolt.glow"), 0.7);
+
+ SongTicker = buttongroup.getParentLayout().findObject("songticker");
+}
+
+system.onScriptUnloading ()
+{
+ beatvis.stop();
+ delete beatvis;
+}
+
+InfoButton.onLeftButtonDown (int x, int y)
+{
+ if (InfoButton == b_play)
+ {
+ if (getStatus() == -1)
+ {
+ SongTicker.sendAction("showinfo", "Resume Playback", 0, 0, 0, 0);
+ }
+ else if (getStatus() == 0)
+ {
+ SongTicker.sendAction("showinfo", "Start Playback", 0, 0, 0, 0);
+ }
+ else if (getStatus() == 1)
+ {
+ SongTicker.sendAction("showinfo", "Restart Playback", 0, 0, 0, 0);
+ }
+ }
+ else if (InfoButton == b_pause)
+ {
+ if (getStatus() == -1)
+ {
+ SongTicker.sendAction("showinfo", "Resume Playback", 0, 0, 0, 0);
+ }
+ else if (getStatus() == 1)
+ {
+ SongTicker.sendAction("showinfo", "Pause Playback", 0, 0, 0, 0);
+ }
+ }
+ else if (InfoButton == b_pause)
+ {
+ if (getStatus() == 1)
+ {
+ SongTicker.sendAction("showinfo", "Pause Playback", 0, 0, 0, 0);
+ }
+ }
+ else
+ {
+ string info = InfoButton.getXmlParam("tooltip");
+ SongTicker.sendAction("showinfo", info, 0, 0, 0, 0);
+ }
+}
+
+InfoToggleButton.onLeftButtonDown (int x, int y)
+{
+ if (InfoToggleButton == b_shuffle)
+ {
+ if (getCurCfgVal() == 1)
+ {
+ SongTicker.sendAction("showinfo", "Shuffle: On", 0, 0, 0, 0);
+ }
+ else
+ {
+ SongTicker.sendAction("showinfo", "Shuffle: Off", 0, 0, 0, 0);
+ }
+ }
+ else if (InfoToggleButton == b_repeat)
+ {
+ if (getCurCfgVal() == 1)
+ {
+ SongTicker.sendAction("showinfo", "Repeat: Playlist", 0, 0, 0, 0);
+ }
+ else if (getCurCfgVal() == -1)
+ {
+ SongTicker.sendAction("showinfo", "Repeat: Track", 0, 0, 0, 0);
+ }
+ else if (getCurCfgVal() == 0)
+ {
+ SongTicker.sendAction("showinfo", "Repeat: Off", 0, 0, 0, 0);
+ }
+ }
+}
+
+InfoToggleButton.onLeftButtonUp (int x, int y)
+{
+ if (InfoToggleButton == b_shuffle)
+ {
+ if (getCurCfgVal() == 1)
+ {
+ SongTicker.sendAction("showinfo", "Shuffle: On", 0, 0, 0, 0);
+ }
+ else
+ {
+ SongTicker.sendAction("showinfo", "Shuffle: Off", 0, 0, 0, 0);
+ }
+ }
+ else if (InfoToggleButton == b_repeat)
+ {
+ if (getCurCfgVal() == 1)
+ {
+ SongTicker.sendAction("showinfo", "Repeat: Playlist", 0, 0, 0, 0);
+ }
+ else if (getCurCfgVal() == -1)
+ {
+ SongTicker.sendAction("showinfo", "Repeat: Track", 0, 0, 0, 0);
+ }
+ else if (getCurCfgVal() == 0)
+ {
+ SongTicker.sendAction("showinfo", "Repeat: Off", 0, 0, 0, 0);
+ }
+ }
+}
+
+Global Boolean shuffleDown, repeatDown;
+b_shuffle.onLeftButtonDown (int x, int y)
+{
+ shuffleDown = 1;
+ shuffleActive.setXmlParam("y", integerToString(shuffleActive_Y+1));
+}
+
+b_shuffle.onLeftButtonUp (int x, int y)
+{
+ shuffleDown = 0;
+ shuffleActive.setXmlParam("y", integerToString(shuffleActive_Y));
+}
+
+b_shuffle.onleaveArea ()
+{
+ shuffleActive.setXmlParam("y", integerToString(shuffleActive_Y));
+}
+
+b_shuffle.onEnterArea ()
+{
+ if (shuffleDown) shuffleActive.setXmlParam("y", integerToString(shuffleActive_Y+1));
+}
+
+b_repeat.onLeftButtonDown (int x, int y)
+{
+ repeatDown = 1;
+ repeatActive.setXmlParam("y", integerToString(repeatActive_Y+1));
+}
+
+b_repeat.onLeftButtonUp (int x, int y)
+{
+ repeatDown = 0;
+ repeatActive.setXmlParam("y", integerToString(repeatActive_Y));
+}
+
+b_repeat.onleaveArea ()
+{
+ repeatActive.setXmlParam("y", integerToString(repeatActive_Y));
+}
+
+b_repeat.onEnterArea ()
+{
+ if (repeatDown) repeatActive.setXmlParam("y", integerToString(repeatActive_Y+1));
+}
+
+buttongroup.onResize (int x, int y, int w, int h)
+{
+ b_bolt.setXmlParam("x", integerToString(boltX + buttongroup.GetWidth() - minW));
+ boltGlow.setXmlParam("x", integerToString(boltX + buttongroup.GetWidth() - minW));
+ mainframe_grabber.setXmlParam("x", integerToString(grabbX + buttongroup.GetWidth() - minW));
+}
+
+b_bolt.onLeftButtonUp (int x, int y)
+{
+ if (isKeyDown(VK_ALT) && isKeyDown(VK_SHIFT) && isKeyDown(VK_CONTROL))
+ {
+ if (beatvis.isRunning())
+ {
+ beatvis.stop();
+ }
+ else
+ {
+ beatvis.start();
+ }
+ complete;
+ }
+}
+
+beatvis.onTimer ()
+{
+ int value = (getRightVuMeter() + getLeftVuMeter()) / 2;
+ boltGlow.setAlpha(value);
+}
+/*
+System.onKeyDown (String key)
+{
+ if (key == "space")
+ {
+ PlEdit.showCurrentlyPlayingTrack();
+
+ complete;
+ }
+}*/
+
+System.onAccelerator (String action, String section, String key)
+{
+ if (strupper(action) == "SHOW_CURRENT_TRACK")
+ {
+ PlEdit.showCurrentlyPlayingTrack();
+
+ complete;
+ }
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/cbuttons.maki b/Src/resources/skins/Big Bento/scripts/cbuttons.maki
new file mode 100644
index 00000000..c61f2a1c
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/cbuttons.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/colorthemes.m b/Src/resources/skins/Big Bento/scripts/colorthemes.m
new file mode 100644
index 00000000..1d231b98
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/colorthemes.m
@@ -0,0 +1,56 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: colorthemes.m
+Version: 1.0
+
+Type: maki
+Date: 29. Jun. 2007 - 13:06
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#include <lib/std.mi>
+
+Global Group scriptGroup;
+Global GuiObject ColorthemesList, parent;
+Global string sgID;
+
+Global Button getmore;
+
+
+System.onScriptLoaded ()
+{
+ scriptGroup = getScriptGroup();
+ sgID = scriptGroup.getID();
+ ColorthemesList = scriptGroup.getObject("colorthemes");
+ parent = scriptGroup.getParent().findObject("skin.config.target");
+
+ getmore = scriptGroup.getObject("colorthemes.more");
+}
+
+scriptGroup.onTargetReached ()
+{
+ if (getAlpha() == 0) ColorthemesList.hide();
+ else ColorthemesList.show();
+}
+
+parent.onAction(String action, String param, int x, int y, int p1, int p2, GuiObject source)
+{
+ if (getToken(action,";",0) == "switchto")
+ {
+ if (getToken(action, ";", 1) == sgID)
+ {
+ ColorthemesList.show();
+ }
+ else ColorthemesList.hide();
+ }
+}
+
+getmore.onLeftClick ()
+{
+ group sui = scriptGroup.getParentLayout().findObject("sui.content");
+ sui.sendAction ("browser_navigate", "http://forums.winamp.com/showthread.php?threadid=276371", 0, 0, 0, 0);
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/colorthemes.maki b/Src/resources/skins/Big Bento/scripts/colorthemes.maki
new file mode 100644
index 00000000..a3ddb897
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/colorthemes.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/configtarget.m b/Src/resources/skins/Big Bento/scripts/configtarget.m
new file mode 100644
index 00000000..a1841046
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/configtarget.m
@@ -0,0 +1,159 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: configtarget.m
+Version: 2.1
+
+Type: maki
+Date: 04. Jan. 2007 - 22:46
+Edited by: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+
+Note: This script is based on configtarget.m
+ from Winamp Modern
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#include <lib/std.mi>
+
+// ------------------------------------------------------------------------------------
+Global GuiObject target;
+Global ComponentBucket buck;
+
+Global GuiObject last, current;
+// ------------------------------------------------------------------------------------
+Function turnAllOffExcept(GuiObject except);
+Function turnOn(GuiObject obj);
+Function turnOff(GuiObject obj);
+
+//Member int target.fff;
+
+//function fff();
+//Member button int fff();
+// ------------------------------------------------------------------------------------
+
+
+// ------------------------------------------------------------------------------------
+// init
+// ------------------------------------------------------------------------------------
+System.onScriptLoaded()
+{
+ target = getScriptGroup().findObject("skin.config.target");
+ buck = getScriptGroup().findObject("my.bucket");
+
+ last = NULL;
+ current = NULL;
+
+ //debugInt(guiobject.fff);ffff
+
+// target.fff = 4;
+
+ // turn off all
+ GuiObject o = NULL;
+ turnAllOffExcept(o);
+}
+
+// ------------------------------------------------------------------------------------
+// save scroller position
+// ------------------------------------------------------------------------------------
+/*System.onScriptUnloading()
+{
+ if (buck)
+ {
+ setPrivateInt(getSkinName(), "", buck.getScroll());
+ }
+}*/
+
+// ------------------------------------------------------------------------------------
+// turn on last open
+// ------------------------------------------------------------------------------------
+buck.onStartup()
+{
+ //setScroll(getPrivateInt(getSkinName(), "settings_last_pos", 0));
+ Group g = buck.enumChildren(getPrivateInt(getSkinName(), "settings_last_pos", 0));
+ if (!g) g = buck.enumChildren(0);
+ if (!g) return;
+ ToggleButton btn = g.getObject("btn");
+ if (btn) btn.leftClick();
+}
+
+// ------------------------------------------------------------------------------------
+// this is called by the bucket button to switch to a new group
+// ------------------------------------------------------------------------------------
+target.onAction(String action, String param, int x, int y, int p1, int p2, GuiObject source)
+{
+ if (getToken(action,";",0) == "switchto")
+ {
+ String grp = getToken(action, ";", 1);
+ String is_subpage = getToken(action, ";", 2);
+
+ if (current != NULL)
+ {
+ last = current;
+ }
+
+ target.setXmlParam("groupid", grp);
+
+ current = getScriptGroup().findObject(grp);
+
+ // setPrivateInt(getSkinName(), "settings_last_pos", stringToInteger(param));
+
+ if (is_subpage!="subpage") turnAllOffExcept(source.getParent()); // getParent because the source is the button itself, the parent is the whole group item in the bucket
+ }
+}
+
+// Hack to hide last item
+
+last.onTargetReached ()
+{
+ if (getAlpha() == 0)
+ {
+ hide();
+ }
+}
+
+// ------------------------------------------------------------------------------------
+// turn off all buttons except for the parameter, also save last_page param based on param item
+// ------------------------------------------------------------------------------------
+turnAllOffExcept(GuiObject except)
+{
+ if (!buck) return;
+ int i=0;
+ // enumerate all inserted groups, turn them off if they're not our exception
+ while (i<buck.getNumChildren())
+ {
+ GuiObject obj = buck.enumChildren(i);
+ if (obj == except)
+ { // otherwise record last page
+ setPrivateInt(getSkinName(), "settings_last_pos", i);
+ i++;
+ continue;
+ }
+ if (obj == NULL) { break; } // shoundnt happen
+ turnOff(obj);
+ i++;
+ }
+ // turn on the clicked item
+ if (except) turnOn(except);
+}
+
+// ------------------------------------------------------------------------------------
+turnOn(GuiObject obj)
+{
+ Group gobj = obj;
+
+ // otherwise we just need this :
+ ToggleButton tg = gobj.getObject("btn");
+ tg.setActivated(1);
+}
+
+// ------------------------------------------------------------------------------------
+turnOff(GuiObject obj)
+{
+ Group gobj = obj;
+
+ // otherwise we just need this :
+ ToggleButton tg = gobj.getObject("btn");
+ tg.setActivated(0);
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/configtarget.maki b/Src/resources/skins/Big Bento/scripts/configtarget.maki
new file mode 100644
index 00000000..d48dcfb1
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/configtarget.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/coverflow.m b/Src/resources/skins/Big Bento/scripts/coverflow.m
new file mode 100644
index 00000000..a9ca1c7c
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/coverflow.m
@@ -0,0 +1,229 @@
+/********************************************************\
+** Filename: coverflow.m **
+** Version: 1.0 **
+** Date: 20. Nov. 2007 - 15:25 **
+**********************************************************
+** Type: winamp.wasabi/maki **
+** Project: Cover Flow **
+**********************************************************
+** Author: Martin Poehlmann aka Deimos **
+** E-Mail: martin@skinconsortium.com **
+** Internet: http://www.skinconsortium.com **
+** http://home.cs.tum.edu/~poehlman **
+\********************************************************/
+
+
+#include <lib/std.mi>
+#include <lib/pldir.mi>
+
+Function update();
+Function fade (GuiObject o, int alpha, float s);
+
+Class GuiObject AlbumCover;
+Class AlbumCover playButton;
+
+Global AlbumCover prev2, prev1, curr, next1, next2;
+Global String sprev2, sprev1, scurr, snext1, snext2;
+Global playButton bprev2, bprev1, bcurr, bnext1, bnext2;
+Global text info;
+
+#define CENTER_VAR SGrp
+Global Group sg;
+#include <lib/com/centerlayer.m>
+#undef CENTER_VAR
+
+Global PlEdit PleditListener;
+
+Global Timer delay;
+
+System.onScriptLoaded ()
+{
+ sg = getScriptGroup();
+
+ PleditListener = new PlEdit;
+
+ prev2 = sg.getObject("aa.prev2");
+ prev1 = sg.getObject("aa.prev1");
+ curr = sg.getObject("aa.curr");
+ next1 = sg.getObject("aa.next1");
+ next2 = sg.getObject("aa.next2");
+
+ bprev2 = sg.getObject("play.prev2");
+ bprev1 = sg.getObject("play.prev1");
+ bcurr = sg.getObject("play.curr");
+ bnext1 = sg.getObject("play.next1");
+ bnext2 = sg.getObject("play.next2");
+
+ info = sg.getParent().findObject("info");
+
+ _SGrpInit(sg, sg.getParent(), 1, 0);
+
+ delay = new Timer;
+ delay.setDelay(10);
+
+ update();
+}
+
+System.onScriptUnloading ()
+{
+ delete delay;
+}
+
+System.onTitleChange (String newtitle)
+{
+ update();
+}
+
+update ()
+{
+ int cur = PlEdit.getCurrentIndex();
+ int max = PlEdit.getNumTracks();
+
+ if (cur > 1)
+ {
+ prev2.setXmlParam("source", PlEdit.getFileName(cur-2));
+ prev2.show();
+ sprev2 = PlEdit.getTitle(cur-2);
+ }
+ else prev2.hide();
+
+ if (cur > 0)
+ {
+ prev1.setXmlParam("source", PlEdit.getFileName(cur-1));
+ prev1.show();
+ sprev1 = PlEdit.getTitle(cur-1);
+ }
+ else prev1.hide();
+
+ scurr = PlEdit.getTitle(cur);
+
+ if (cur < max-2)
+ {
+ next2.setXmlParam("source", PlEdit.getFileName(cur+2));
+ next2.show();
+ snext2 = PlEdit.getTitle(cur+2);
+ }
+ else next2.hide();
+
+ if (cur < max-1)
+ {
+ next1.setXmlParam("source", PlEdit.getFileName(cur+1));
+ next1.show();
+ snext1 = PlEdit.getTitle(cur+1);
+ }
+ else next1.hide();
+}
+
+PleditListener.onPleditModified ()
+{
+ if (delay) delay.start();
+}
+
+delay.onTimer ()
+{
+ delay.stop();
+ update();
+}
+
+AlbumCover.onRightButtonDown (int x, int y)
+{
+ popupmenu p = new popupmenu;
+
+ p.addCommand("Get Album Art", 1, 0, 0);
+ p.addCommand("Refresh Album Art", 2, 0, 0);
+ p.addCommand("Open Folder", 3, 0, 0);
+
+ int result = p.popatmouse();
+ delete p;
+
+ String pis = getXmlParam("source");
+ if (pis == "") pis = system.getPlayItemString();
+
+ if (result == 1)
+ {
+ if (system.getAlbumArt(pis) > 0)
+ {
+ setXmlParam("notfoundimage", getXmlParam("notfoundimage")); // a nesty refresh - isn't it?
+ }
+ }
+ else if (result == 2)
+ {
+ setXmlParam("notfoundimage", getXmlParam("notfoundimage")); // a nesty refresh - isn't it?
+ }
+ else if (result == 3)
+ {
+ System.navigateUrl(getPath(pis));
+ }
+}
+
+AlbumCover.onLeftButtonDblClk (int x, int y)
+{
+ if (AlbumCover == playButton)
+ return;
+
+ String pis = getXmlParam("source");
+ if (pis == "") pis = system.getPlayItemString();
+ System.navigateUrl(getPath(pis));
+}
+
+AlbumCover.onEnterArea ()
+{
+ if (!findObject("aa." + getToken(getId(), ".", 1)).isVisible())
+ {
+ return;
+ }
+
+ int cur = PlEdit.getCurrentIndex();
+
+ if (AlbumCover == prev2 || AlbumCover == bprev2)
+ info.setText(sprev2);
+ else if (AlbumCover == prev1 || AlbumCover == bprev1)
+ info.setText(sprev1);
+ else if (AlbumCover == curr || AlbumCover == bcurr)
+ info.setText(scurr);
+ else if (AlbumCover == next1 || AlbumCover == bnext1)
+ info.setText(snext1);
+ else if (AlbumCover == next2 || AlbumCover == bnext2)
+ info.setText(snext2);
+
+ GuiObject o = sg.findObject("play." + getToken(getId(), ".", 1));
+ if (o )
+ {
+ fade(o, 255, 0.133);
+ }
+}
+
+AlbumCover.onLeaveArea ()
+{
+ info.setText("");
+
+ GuiObject o = sg.findObject("play." + getToken(getId(), ".", 1));
+ if (o)
+ {
+ fade(o, 0, 0.3);
+ }
+}
+
+playButton.onLeftButtonUp (int x, int y)
+{
+ int cur = PlEdit.getCurrentIndex();
+ if (playButton == bprev2)
+ PlEdit.playTrack(cur-2);
+ else if (playButton == bprev1)
+ PlEdit.playTrack(cur-1);
+ else if (playButton == bnext1)
+ PlEdit.playTrack(cur+1);
+ else if (playButton == bnext2)
+ PlEdit.playTrack(cur+2);
+
+ setAlpha(0);
+ info.setTexT("");
+}
+
+fade (GuiObject o, int alpha, float s)
+{
+ o.cancelTarget();
+ o.setTargetA(alpha);
+ o.setTargetSpeed(s);
+ o.gotoTarget();
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/coverflow.maki b/Src/resources/skins/Big Bento/scripts/coverflow.maki
new file mode 100644
index 00000000..54b59008
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/coverflow.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/eq.m b/Src/resources/skins/Big Bento/scripts/eq.m
new file mode 100644
index 00000000..f450ee45
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/eq.m
@@ -0,0 +1,247 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: eq.m
+Version: 2.0
+
+Type: maki
+Date: 25. Jun. 2007 - 11:30
+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/winampconfig.mi>
+
+#define CENTER_VAR eqGroup
+#include <lib/com/centerlayer.m>
+
+#define ISOBANDS "31.5 Hz,63 Hz,125 Hz,250 Hz,500 Hz,1 KHz,2 KHz,4 KHz,8 KHz,16 KHz"
+#define WINAMPBANDS "70 Hz,180 Hz,320 Hz,600 Hz,1 KHz,3 KHz,6 KHz,12 KHz,14 KHz,16 KHz"
+
+Class Button Eqbutton;
+Member int EqButton.setTo;
+
+Global Group frameGroup, buttongroup;
+Global Slider slidercb, Balance;
+Global Text fadertext;
+Global Button CFIncrease, CFDecrease, eqon, eqauto;
+Global ToggleButton Crossfade;
+Global GuiObject CrossfadeActive, eqonActive, eqautoActive, SongTicker;
+Global Int CrossfadeActive_Y, eqonActive_Y, eqautoActive_Y;
+Global Eqbutton btnEQp12,btnEQ0,btnEQm12;
+Global layer frequencyLabel;
+
+System.onScriptLoaded()
+{
+ buttongroup = getScriptGroup().findObject("player.cbuttons");
+ WinampConfigGroup eqwcg = WinampConfig.getGroup("{72409F84-BAF1-4448-8211-D84A30A1591A}");
+
+ int freqmode = eqwcg.getInt("frequencies"); // returns 0 for classical winamp levels, 1 for ISO levels
+
+ frameGroup = getScriptGroup();
+ _eqGroupInit(frameGroup.findObject("info.component.eq.content"), frameGroup, 1, 0);
+ slidercb = frameGroup.findObject("sCrossfade");
+ fadertext = frameGroup.findObject("CFDisplay");
+ CFIncrease = frameGroup.findObject("CrossfadeIncrease");
+ CFDecrease = frameGroup.findObject("CrossfadeDecrease");
+ Crossfade = frameGroup.findObject("Crossfade");
+ CrossfadeActive = frameGroup.findObject("CrossfadeActive");
+ CrossfadeActive_Y = CrossfadeActive.getGuiY();
+
+ eqon = frameGroup.findObject("eqonoff");
+ eqonActive = frameGroup.findObject("eqonoffActive");
+ eqonActive_Y = eqonActive.getGuiY();
+
+ eqauto = frameGroup.findObject("eqauto");
+ eqautoActive = frameGroup.findObject("eqautoActive");
+ eqautoActive_Y = eqautoActive.getGuiY();
+
+ btnEQp12 = frameGroup.findObject("EQ_p12");
+ btnEQp12.setTo = 127;
+ btnEQ0 = frameGroup.findObject("EQ_0");
+ btnEQ0.setTo = 0;
+ btnEQm12 = frameGroup.findObject("EQ_m12");
+ btnEQm12.setTo = -127;
+
+ Balance = frameGroup.findObject("Balance");
+ SongTicker = buttongroup.getParentLayout().findObject("songticker");
+
+ frequencyLabel = frameGroup.findObject("frequency.labels");
+
+ system.onEqFreqChanged(freqmode);
+
+ slidercb.onSetPosition(slidercb.getPosition());
+
+ Crossfade.onToggle(Crossfade.getActivated());
+}
+
+Balance.onSetPosition(int newpos)
+{
+ string t=translate("Balance")+":";
+ if (newpos==127) t+= " " + translate("Center");
+ if (newpos<127) t += " " + integerToString((100-(newpos/127)*100))+"% "+translate("Left");
+ if (newpos>127) t += " " + integerToString(((newpos-127)/127)*100)+"% "+translate("Right");
+
+ SongTicker.sendAction("showinfo", t, 0, 0, 0, 0);
+}
+
+slidercb.onSetPosition(int val)
+{
+ String s = IntegerToString(val);
+ fadertext.setText(s);
+}
+
+CFIncrease.onLeftClick()
+{
+ slidercb.SetPosition(slidercb.getPosition()+1);
+}
+
+CFDecrease.onLeftClick()
+{
+ slidercb.SetPosition(slidercb.getPosition()-1);
+}
+
+Crossfade.onToggle(boolean on)
+{
+ if (!on)
+ {
+ fadertext.setAlpha(150);
+ CFIncrease.setAlpha(150);
+ CFDecrease.setXmlParam("ghost" , "1");
+ CFDecrease.setAlpha(150);
+ CFIncrease.setXmlParam("ghost" , "1");
+ CrossfadeActive.hide();
+ }
+ else
+ {
+ fadertext.setAlpha(255);
+ CFIncrease.setAlpha(255);
+ CFDecrease.setAlpha(255);
+ CFIncrease.setXmlParam("ghost" , "0");
+ CFDecrease.setXmlParam("ghost" , "0");
+ CrossfadeActive.show();
+ }
+}
+
+Global Boolean cfDown, onDown, autoDown, manual_set;
+Crossfade.onLeftButtonDown (int x, int y)
+{
+ cfDown = 1;
+ CrossfadeActive.setXmlParam("y", integerToString(CrossfadeActive_Y+1));
+}
+
+Crossfade.onLeftButtonUp (int x, int y)
+{
+ cfDown = 0;
+ CrossfadeActive.setXmlParam("y", integerToString(CrossfadeActive_Y));
+}
+
+Crossfade.onleaveArea ()
+{
+ CrossfadeActive.setXmlParam("y", integerToString(CrossfadeActive_Y));
+}
+
+Crossfade.onEnterArea ()
+{
+ if (cfDown) CrossfadeActive.setXmlParam("y", integerToString(CrossfadeActive_Y+1));
+}
+
+eqon.onEnterArea ()
+{
+ if (onDown) eqonActive.setXmlParam("y", integerToString(eqonActive_Y+1));
+}
+
+eqon.onLeftButtonDown (int x, int y)
+{
+ onDown = 1;
+ eqonActive.setXmlParam("y", integerToString(eqonActive_Y+1));
+}
+
+eqon.onLeftButtonUp (int x, int y)
+{
+ onDown = 0;
+ eqonActive.setXmlParam("y", integerToString(eqonActive_Y));
+}
+
+eqon.onleaveArea ()
+{
+ eqonActive.setXmlParam("y", integerToString(eqonActive_Y));
+}
+
+eqauto.onLeftButtonDown (int x, int y)
+{
+ autoDown = 1;
+ eqautoActive.setXmlParam("y", integerToString(eqautoActive_Y+1));
+}
+
+eqauto.onLeftButtonUp (int x, int y)
+{
+ autoDown = 0;
+ eqautoActive.setXmlParam("y", integerToString(eqautoActive_Y));
+}
+
+eqauto.onleaveArea ()
+{
+ eqautoActive.setXmlParam("y", integerToString(eqautoActive_Y));
+}
+
+eqauto.onEnterArea ()
+{
+ if (autoDown) eqautoActive.setXmlParam("y", integerToString(eqautoActive_Y+1));
+}
+
+
+EqButton.onLeftClick()
+{
+ manual_set = 1;
+ for(int i=0; i<10; i++) setEqBand(i, EqButton.setTo);
+ manual_set = 0;
+}
+
+System.onEqFreqChanged (boolean isoonoff)
+{
+ if (isoonoff == 1)
+ {
+ frequencyLabel.setXmlParam("image", "equalizer.labels.iso");
+ for(int i=0; i<10; i++) frameGroup.findObject("eq"+integerToString(i+1)).setXmlParam("tooltip", getToken(ISOBANDS,",",i));
+ }
+ else
+ {
+ frequencyLabel.setXmlParam("image", "equalizer.labels.winamp");
+ for(int i=0; i<10; i++) frameGroup.findObject("eq"+integerToString(i+1)).setXmlParam("tooltip", getToken(WINAMPBANDS,",",i));
+ }
+}
+
+system.onEqBandChanged(int band, int value)
+{
+ if (manual_set) return;
+ String t;
+ Float f = value;
+ f = f / 10.5;
+ WinampConfigGroup eqwcg = WinampConfig.getGroup("{72409F84-BAF1-4448-8211-D84A30A1591A}");
+ if (eqwcg.getInt("frequencies") == 1) {
+ if (f >= 0) t = "EQ: " + translate(getToken(ISOBANDS,",",band)) + ": +" + floattostring(f, 1) + " "+ translate("dB");
+ else t = "EQ: " + translate(getToken(ISOBANDS,",",band)) + ": " + floattostring(f, 1) + " "+ translate("dB");
+ }
+ else {
+ if (f >= 0) t = "EQ: " + translate(getToken(WINAMPBANDS,",",band)) + ": +" + floattostring(f, 1) + " "+ translate("dB");
+ else t = "EQ: " + translate(getToken(WINAMPBANDS,",",band)) + ": " + floattostring(f, 1) + " "+ translate("dB");
+ }
+
+ SongTicker.sendAction("showinfo", t, 0, 0, 0, 0);
+}
+
+system.onEqPreampChanged(int value)
+{
+ slider s = getScriptGroup().findObject("preamp");
+ value = s.getPosition(); // Somehow this function returns a range from [-127;125] with hotpos -3, so we take the slider instead
+ String t = "EQ: " + translate("Preamp:") + " ";
+ Float f = value;
+ f = f / 10.5;
+ if (f >= 0) t += "+"+floattostring(f, 1) + " "+ translate("dB");
+ else t += floattostring(f, 1) + " "+ translate("dB");
+ SongTicker.sendAction("showinfo", t, 0, 0, 0, 0);
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/eq.maki b/Src/resources/skins/Big Bento/scripts/eq.maki
new file mode 100644
index 00000000..109d1b51
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/eq.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/fileinfo.m b/Src/resources/skins/Big Bento/scripts/fileinfo.m
new file mode 100644
index 00000000..b9faecb2
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/fileinfo.m
@@ -0,0 +1,1277 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: fileinfo.m
+Version: 3.3
+Type: maki
+Date: 10. Aug. 2007 - 20:42
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#include <lib/std.mi>
+#include attribs/init_windowpage.m
+
+#include <lib/com/songinfo.m>
+
+//#define DEBUG
+#define FILE_NAME "fileinfo.m"
+#include <lib/com/debug.m>
+
+#define WEBCOVER_SHOUTCAST "winamp.cover.shoutcast"
+
+Function loadFileInfo();
+Function loadPlaylistArtWork();
+Class GuiObject TextObject;
+Class GuiObject CycleObject;
+Function refreshRating(int rating);
+Class Button RatingButton;
+Function showBranding();
+Class Group Infoline;
+Function getTextHeight(InfoLine gn);
+
+Global Group scriptGroup, g_cover;
+Global AlbumArtLayer l_albumart;
+Global AlbumArtLayer AlbumArt;
+Global InfoLine g_rating, g_title, g_album, g_artist, g_year, g_genre, g_track, g_publisher, g_sname, g_surl, g_albumartist, g_composer, g_format, g_disc;
+Global InfoLine g_target;
+Global Text t_title, t_album, t_artist, t_year, t_genre, t_track, t_publisher, t_sname, t_surl, t_composer, t_albumartist, t_format, t_disc, t_rating;
+Global Timer cycler;
+// Global String stationLink = "";
+
+Global List cycle;
+Global Boolean cycler_paused, quick_change, HAVE_ML = TRUE;
+Global List ratingStars;
+
+#define CENTER_VAR Branding
+Global layer l_branding;
+#include <lib/com/centerlayer.m>
+#undef CENTER_VAR
+
+Global TextObject TextArtist, TextAlbum, TextTitle, TextGenre, TextPublisher, TextSURl, TextSname;
+Global CycleObject cycleGenre, cyclePublisher, cycleTrack, cycleYear, cycleComposer, cycleAlbumartist, cycleFormat, cycleDisc;
+
+Global RatingButton rate1, rate2, rate3, rate4, rate5, rate0;
+Global Layer star1, star2, star3, star4, star5;
+
+Global Int startwith = 0;
+Global Int artRetries = 0;
+Global Int maxlines;
+
+Global timer delayLoad;
+
+System.onScriptLoaded()
+{
+ initAttribs_windowpage();
+
+ HAVE_ML = stringToInteger(getToken(getParam(), ",", 0));
+ maxlines = stringToInteger(getToken(getParam(), ",", 1));
+
+ scriptGroup = getScriptGroup();
+
+ cycler = new Timer;
+ cycler.setDelay(4000);
+
+ delayLoad = new Timer;
+ delayLoad.setDelay(10);
+
+ //debug(getWinampVersion() + "#" + integerToString(getBuildNumber()));
+
+ g_rating = scriptGroup.findObject("infodisplay.line.rating");
+ g_title = scriptGroup.findObject("infodisplay.line.title");
+ g_album = scriptGroup.findObject("infodisplay.line.album");
+ g_artist = scriptGroup.findObject("infodisplay.line.artist");
+ g_year = scriptGroup.findObject("infodisplay.line.year");
+ g_genre = scriptGroup.findObject("infodisplay.line.genre");
+ g_track = scriptGroup.findObject("infodisplay.line.track");
+ g_publisher = scriptGroup.findObject("infodisplay.line.publisher");
+ g_sname = scriptGroup.findObject("infodisplay.line.sname");
+ g_surl = scriptGroup.findObject("infodisplay.line.surl");
+ g_composer = scriptGroup.findObject("infodisplay.line.composer");
+ g_albumartist = scriptGroup.findObject("infodisplay.line.albumartist");
+ g_format = scriptGroup.findObject("infodisplay.line.format");
+ g_disc = scriptGroup.findObject("infodisplay.line.disc");
+
+ t_title = g_title.findObject("text");
+ t_album = g_album.findObject("text");
+ t_artist = g_artist.findObject("text");
+ t_year = g_year.findObject("text");
+ t_genre = g_genre.findObject("text");
+ t_track = g_track.findObject("text");
+ t_Publisher = g_publisher.findObject("text");
+ t_sname = g_sname.findObject("text");
+ t_surl = g_surl.findObject("text");
+ t_albumartist = g_albumartist.findObject("text");
+ t_composer = g_composer.findObject("text");
+ t_format = g_format.findObject("text");
+ t_disc = g_disc.findObject("text");
+
+ textArtist = g_artist.findObject("text");
+ textAlbum = g_album.findObject("text");
+ textTitle = g_title.findObject("text");
+ textsUrl = g_surl.findObject("text");
+ textSname = g_sname.findObject("text");
+ cycleGenre = g_genre.findObject("link");
+ cyclePublisher = g_publisher.findObject("link");
+ cycleTrack = g_track.findObject("link");
+ cycleYear = g_year.findObject("link");
+ cycleAlbumartist = g_albumartist.findObject("text");
+ cycleComposer = g_composer.findObject("text");
+ cycleFormat = g_format.findObject("link");
+ cycleDisc = g_disc.findObject("link");
+
+ cycle = new List;
+ ratingStars = new List;
+
+ group parent = scriptGroup.getParent();
+ l_branding = parent.findObject("branding");
+ g_cover = parent.findObject("info.component.cover");
+ _BrandingInit(l_branding, parent, 1, 0);
+
+ l_albumart = g_cover.getObjecT("winamp.albumart");
+
+ rate1 = g_rating.findObject("rate.1");
+ rate2 = g_rating.findObject("rate.2");
+ rate3 = g_rating.findObject("rate.3");
+ rate4 = g_rating.findObject("rate.4");
+ rate5 = g_rating.findObject("rate.5");
+ rate0 = g_rating.findObject("rate.0");
+ ratingStars.addItem(rate1);
+ ratingStars.addItem(rate2);
+ ratingStars.addItem(rate3);
+ ratingStars.addItem(rate4);
+ ratingStars.addItem(rate5);
+
+ star1 = g_rating.findObject("star.1");
+ star2 = g_rating.findObject("star.2");
+ star3 = g_rating.findObject("star.3");
+ star4 = g_rating.findObject("star.4");
+ star5 = g_rating.findObject("star.5");
+
+ t_rating = g_rating.findObject("label");
+ t_rating.onTextChanged ("");
+
+ refreshRating(System.getCurrentTrackRating());
+ loadFileInfo();
+ if (ic_fileinfo.getData() == "1")
+ {
+ if (getStatus() == STATUS_STOPPED && songinfo_location == "") showBranding(); // show branding if playback is stopped and the playlist is empty
+ if (removePath(getPlayItemString()) == "demo.mp3") // Show branding if playing DJ Mike
+ {
+ if (getPlayitemmetadatastring("artist") == "DJ Mike Llama" && getplayitemmetadatastring("title") == "Llama Whippin' Intro")
+ {
+ showBranding();
+ }
+ }
+ }
+}
+
+System.onScriptUnloading ()
+{
+ cycler.stop();
+ delete cycler;
+
+ delayLoad.stop();
+ delete delayLoad;
+}
+
+// Reload fileInfo if track has changed
+
+delayLoad.onTimer()
+{
+ System.onTitleChange (getPlayItemString());
+
+ delayLoad.stop();
+}
+
+System.onTitleChange (String newtitle)
+{
+ // Get rid of "" calls
+ if (newtitle == "" && getplayitemmetadatastring("title") == "" && !delayLoad.isRunning())
+ {
+ delayLoad.start();
+ }
+
+ // Get rid of buffering during stream connection & playback
+ if (StrLeft(newtitle, 1) == "[") {
+ if (StrLeft(newtitle, 7) == "[Buffer" || StrLeft(newtitle, 4) == "[ICY") return;
+ }
+ // Show branding for DJ Mike
+ if (removePath(getPlayItemString()) == "demo.mp3")
+ {
+ if (getPlayitemmetadatastring("artist") == "DJ Mike Llama" && getplayitemmetadatastring("title") == "Llama Whippin' Intro")
+ {
+ showBranding();
+ return;
+ }
+ }
+
+ debugString(DEBUG_PREFIX "System.onTitleChange() -> loadFileInfo();", D_WTF);
+ refreshRating(System.getCurrentTrackRating());
+ loadFileInfo();
+}
+
+// Reload fileInfo if textline attribs have changed
+
+InfoLineAttribute.onDataChanged ()
+{
+ if (l_branding.isVisible()) return;
+ loadFileInfo ();
+}
+
+/*l_albumart.onAlbumArtLoaded(boolean success)
+{
+ if(songinfo_streamType == SONGINFO_STREAMTYPE_SHOUTCAST2)
+ {
+ if(!l_albumart.isInvalid())
+ {
+ l_albumart.show();
+ l_webcover.hide();
+ }
+ }
+}*/
+
+//----------------------------------------------------------------------------------------------------------------
+// Our main machine.
+//----------------------------------------------------------------------------------------------------------------
+
+loadPlaylistArtWork()
+{
+ Group g_cover2;
+ Container player;
+ Frame dualwnd, pl_dualwnd, mainframe;
+ Layout mainframe;
+
+ player = getContainer("main");
+ if(player)
+ {
+ mainframe=player.getLayout("normal");
+ if(mainframe)
+ {
+ dualwnd = mainframe.findObject("player.dualwnd");
+ if(dualwnd)
+ {
+ pl_dualwnd = dualwnd.findObject("playlist.dualwnd");
+ if(pl_dualwnd)
+ {
+ g_cover2 = pl_dualwnd.findObject("player.component.playlist.albumart");
+ if(g_cover2)
+ {
+ AlbumArt = g_cover2.findObject("winamp.albumart");
+ }
+ }
+ }
+ }
+ }
+}
+
+loadFileInfo ()
+{
+ songinfo_reload(); // refresh vars
+ debugString(DEBUG_PREFIX "loadFileInfo() {", D_WTF);
+ debugString(DEBUG_PREFIX " songinfo_location: " + songinfo_location, D_WTF);
+ debugString(DEBUG_PREFIX " songinfo_displayTitle: " + songinfo_displayTitle, D_WTF);
+
+ // cancel g_target
+ if (g_target) g_target.cancelTarget();
+ if (g_target) g_target.setAlpha(255);
+ g_target = NULL;
+
+ // hide all lines and cycle buttons
+ g_rating.hide();
+ g_title.hide();
+ g_album.hide();
+ g_artist.hide();
+ g_year.hide();
+ g_genre.hide();
+ l_branding.hide();
+ g_track.hide();
+ g_publisher.hide();
+ g_cover.setAlpha(255);
+ g_surl.hide();
+ g_sname.hide();
+ g_albumartist.hide();
+ g_composer.hide();
+ g_format.hide();
+ g_disc.hide();
+ cycleTrack.hide();
+ cycleGenre.hide();
+ cyclePublisher.hide();
+ cycleFormat.hide();
+ cycleYear.hide();
+ cycleDisc.hide();
+ cycler.stop();
+ cycler_paused = 0;
+// stationLink = "";
+
+ artRetries = 0;
+ l_albumart.setXMLParam("notfoundImage", "winamp.cover.notfound.xxl");
+
+ Boolean _cycle = (infocomp_cycle.getData() == "1");
+ Boolean _rating = (infocomp_show_rating.getData() == "1");
+
+ // empty cycle list
+ cycle.removeAll();
+
+ int pos = 1;
+
+ if (maxlines > 5)
+ {
+ pos += 2;
+ }
+
+ int n = 0;
+
+ debugString(DEBUG_PREFIX " songinfo_streamName: " + songinfo_streamName, D_WTF);
+ debugString(DEBUG_PREFIX " songinfo_streamType: " + integerToString(songinfo_streamType), D_WTF);
+ if (songinfo_isStream)
+ {
+ debugString(DEBUG_PREFIX " -> A stream is detected!", D_WTF);
+
+ debugString(DEBUG_PREFIX " songinfo_artist: " + songinfo_artist, D_WTF);
+ debugString(DEBUG_PREFIX " songinfo_title: " + songinfo_title, D_WTF);
+
+ if (songinfo_title != "")
+ {
+ // Title
+ if (n > 0) pos += getTextHeight(g_title);
+ t_title.setText(songinfo_title);
+ g_title.setXmlParam("y", integerToString(pos));
+ g_title.show();
+ n++;
+ cycle.addItem(g_title);
+
+ // Artist
+ if (songinfo_artist != "")
+ {
+ if (n > 0) pos += getTextHeight(g_artist);
+ t_artist.setText(songinfo_artist);
+ g_artist.setXmlParam("y", integerToString(pos));
+ g_artist.show();
+ n++;
+ cycle.addItem(g_artist);
+ }
+ }
+ else
+ {
+ debugString(DEBUG_PREFIX " songinfo_streamtitle: " + songinfo_streamtitle, D_WTF);
+ if (songinfo_streamtitle != "")
+ {
+ int v = strsearch(songinfo_streamtitle, " - ");
+ if (v > 0) {
+ string s1 = strleft (songinfo_streamtitle, v);
+ string s2 = strright (songinfo_streamtitle, strlen(songinfo_streamtitle) - 3 - v);
+
+ // Title
+ if (n > 0) pos += getTextHeight(g_title);
+ t_title.setText(s2);
+ g_title.setXmlParam("y", integerToString(pos));
+ g_title.show();
+ n++;
+ cycle.addItem(g_title);
+
+ // Artist
+ if (n > 0) pos += getTextHeight(g_artist);
+ if (songinfo_artist == "") t_artist.setText(s1);
+ else t_artist.setText(songinfo_artist);
+ g_artist.setXmlParam("y", integerToString(pos));
+ g_artist.show();
+ n++;
+ cycle.addItem(g_artist);
+ }
+ else
+ {
+ // Title
+ if (n > 0) pos += getTextHeight(g_title);
+ t_title.setText(songinfo_streamtitle);
+ g_title.setXmlParam("y", integerToString(pos));
+ g_title.show();
+ n++;
+ cycle.addItem(g_title);
+
+ // Artist
+ if (songinfo_artist != "") {
+ if (n > 0) pos += getTextHeight(g_artist);
+ t_artist.setText(songinfo_artist);
+ g_artist.setXmlParam("y", integerToString(pos));
+ g_artist.show();
+ n++;
+ cycle.addItem(g_artist);
+ }
+ }
+ }
+ }
+
+ // Stream Album
+ debugString(DEBUG_PREFIX " songinfo_album: " + songinfo_album, D_WTF);
+ if (songinfo_album != "")
+ {
+ if (n > 0) pos += getTextHeight(g_album);
+ t_album.setText(songinfo_album);
+ g_album.setXmlParam("y", integerToString(pos));
+ g_album.show();
+ n++;
+ cycle.addItem(g_album);
+ }
+
+ // Stream Genre
+ String s = getPlayItemMetaDataString("streamgenre");
+ debugString(DEBUG_PREFIX " System.getPlayItemMetaDataString(streamgenre): " + s, D_WTF);
+ if (s != "")
+ {
+ t_genre.setText(s);
+ cycleGenre.setXmlParam("w", "0");
+ cycle.addItem(g_genre);
+ if (n > 0) pos += getTextHeight(g_genre);
+ g_genre.setXmlParam("y", integerToString(pos));
+ g_genre.show();
+ n++;
+ }
+
+ // Set Stream Name
+ if (songinfo_streamName != "")
+ {
+ if (n > 0) pos += getTextHeight(g_sname);
+ t_sname.setText(songinfo_streamName);
+ g_sname.setXmlParam("y", integerToString(pos));
+ g_sname.show();
+ n++;
+ cycle.addItem(g_sname);
+ }
+
+ // Stream URL (only visible if we have less than 4 lines till now)
+ debugString(DEBUG_PREFIX " songinfo_streamURL: " + songinfo_streamURL, D_WTF);
+ if (songinfo_streamURL != "")
+ {
+ if (n > 0) pos += getTextHeight(g_surl);
+ t_surl.setText(songinfo_streamURL);
+ g_surl.setXmlParam("y", integerToString(pos));
+ g_surl.show();
+ n++;
+ cycle.addItem(g_surl);
+ }
+
+ // setCover either from a supplied url or from in-stream artwork or default to a generic image
+ if (songinfo_streamAlbumArt != "")
+ {
+ debugString(DEBUG_PREFIX " songinfo_streamAlbumArt: " + songinfo_streamAlbumArt, D_WTF);
+ l_albumart.setXMLParam("image", songinfo_streamAlbumArt);
+ l_albumart.setXMLParam("notfoundImage", "winamp.cover.notfound.xxl");
+ }
+
+ if(songinfo_streamType == SONGINFO_STREAMTYPE_SHOUTCAST || songinfo_streamType == SONGINFO_STREAMTYPE_SHOUTCAST2)
+ {
+ if(songinfo_streamType == SONGINFO_STREAMTYPE_SHOUTCAST2)
+ {
+ if(l_albumart.isInvalid() && artRetries < 3)
+ {
+ if(!artRetries)
+ {
+ l_albumart.setXMLParam("notfoundImage", WEBCOVER_SHOUTCAST);
+ }
+ artRetries += 1;
+ l_albumart.refresh();
+ if(!AlbumArt) loadPlaylistArtWork();
+ if(AlbumArt) AlbumArt.refresh();
+ }
+ }
+ else
+ {
+ l_albumart.setXMLParam("notfoundImage", WEBCOVER_SHOUTCAST);
+ }
+ }
+ }
+
+ // ---------- Local Info ----------
+ else
+ {
+ debugString(DEBUG_PREFIX " -> No stream is detected! we do the normal procedure", D_WTF);
+ string s = songinfo_title;
+ if (s == "") songinfo_displayTitle;
+ if (s != "")
+ {
+ t_title.setText(s);
+ g_title.setXmlParam("y", integerToString(pos));
+ g_title.show();
+ n++;
+ cycle.addItem(g_title);
+ }
+
+ if (songinfo_artist != "")
+ {
+ if (n > 0) pos += getTextHeight(g_artist);
+ t_artist.setText(songinfo_artist);
+ g_artist.setXmlParam("y", integerToString(pos));
+ g_artist.show();
+ n++;
+ cycle.addItem(g_artist);
+ }
+
+ if (songinfo_album != "")
+ {
+ if (n > 0) pos += getTextHeight(g_album);
+ t_album.setText(songinfo_album);
+ g_album.setXmlParam("y", integerToString(pos));
+ g_album.show();
+ n++;
+ cycle.addItem(g_album);
+ }
+
+ if (infocomp_show_track.getData() == "1")
+ {
+ s = getPlayitemMetaDataString("track");
+ if (s != "" && s != "-1")
+ {
+ // if tracknumber is like 1/9 we display 1 of 9
+ if (strsearch(s, "/") != -1)
+ {
+ s = getToken(s, "/", 0) + translate(" of ") + getToken(s, "/", 1);
+ }
+ if (n > 0) pos += getTextHeight(g_track);
+ t_track.setText(s);
+ g_track.setXmlParam("y", integerToString(pos));
+ g_track.show();
+ n++;
+ cycle.addItem(g_track);
+ }
+ }
+
+ if (infocomp_show_year.getData() == "1")
+ {
+ s = getPlayItemMetaDataString("year");
+ if (s != "")
+ {
+ t_year.setText(s);
+ cycle.addItem(g_year);
+ if ((!_rating && n < maxlines) || (_rating && n < maxlines-1))
+ {
+ if (n > 0) pos += getTextHeight(g_year);
+ g_year.setXmlParam("y", integerToString(pos));
+ g_year.show();
+ n++;
+ }
+ else
+ {
+ if (g_Track.getGuiY() == pos) cycleTrack.show();
+ cycleYear.show();
+ g_year.setXmlParam("y", integerToString(pos));
+ if (_cycle) cycler.start();
+ else if (getPrivateString (getSkinName(), "FileInfo_usersel", "") == "year")
+ {
+ if (g_Track.getGuiY() == pos) g_track.hide();
+ startwith = cycle.getNumitems() - 1;
+ g_year.show();
+ }
+ }
+ }
+ }
+
+ if (infocomp_show_genre.getData() == "1")
+ {
+ s = getPlayItemMetaDataString("genre");
+ if (s != "")
+ {
+ t_genre.setText(s);
+ cycle.addItem(g_genre);
+ if ((!_rating && n < maxlines) || (_rating && n < maxlines-1))
+ {
+ if (n > 0) pos += getTextHeight(g_genre);
+ g_genre.setXmlParam("y", integerToString(pos));
+ g_genre.show();
+ n++;
+ }
+ else
+ {
+ if (g_Track.getGuiY() == pos) cycleTrack.show();
+ if (g_year.getGuiY() == pos) cycleYear.show();
+ cycleGenre.show();
+ g_genre.setXmlParam("y", integerToString(pos));
+ if (_cycle) cycler.start();
+ else if (getPrivateString (getSkinName(), "FileInfo_usersel", "") == "genre")
+ {
+ if (g_Track.getGuiY() == pos) g_Track.hide();
+ if (g_year.getGuiY() == pos) g_year.hide();
+ startwith = cycle.getNumitems() - 1;
+ g_genre.show();
+ }
+ }
+ }
+ }
+
+ if (infocomp_show_disc.getData() == "1")
+ {
+ s = getPlayItemMetaDataString("disc");
+ if (s != "")
+ {
+ t_disc.setText(s);
+ cycle.addItem(g_disc);
+ if ((!_rating && n < maxlines) || (_rating && n < maxlines-1))
+ {
+ if (n > 0) pos += getTextHeight(g_disc);
+ g_disc.setXmlParam("y", integerToString(pos));
+ g_disc.show();
+ n++;
+ }
+ else
+ {
+ if (g_Track.getGuiY() == pos) cycleTrack.show();
+ if (g_year.getGuiY() == pos) cycleYear.show();
+ if (g_genre.getGuiY() == pos) cycleGenre.show();
+ cycleDisc.show();
+ g_disc.setXmlParam("y", integerToString(pos));
+ if (_cycle) cycler.start();
+ else if (getPrivateString (getSkinName(), "FileInfo_usersel", "") == "disc")
+ {
+ if (g_Track.getGuiY() == pos) g_Track.hide();
+ if (g_year.getGuiY() == pos) g_year.hide();
+ if (g_genre.getGuiY() == pos) g_genre.hide();
+ startwith = cycle.getNumitems() - 1;
+ g_disc.show();
+ }
+ }
+ }
+ }
+
+ if (infocomp_show_albumartist.getData() == "1")
+ {
+ s = getPlayItemMetaDataString("albumartist");
+ if (s != "")
+ {
+ t_albumartist.setText(s);
+ cycle.addItem(g_albumartist);
+ if ((!_rating && n < maxlines) || (_rating && n < maxlines-1))
+ {
+ if (n > 0) pos += getTextHeight(g_albumartist);
+ g_albumartist.setXmlParam("y", integerToString(pos));
+ g_albumartist.show();
+ n++;
+ }
+ else
+ {
+ if (g_Track.getGuiY() == pos) cycleTrack.show();
+ if (g_year.getGuiY() == pos) cycleYear.show();
+ if (g_genre.getGuiY() == pos) cycleGenre.show();
+ if (g_disc.getGuiY() == pos) cycleDisc.show();
+ cycleAlbumartist.show();
+ g_albumartist.setXmlParam("y", integerToString(pos));
+ if (_cycle) cycler.start();
+ else if (getPrivateString (getSkinName(), "FileInfo_usersel", "") == "albumartist")
+ {
+ if (g_Track.getGuiY() == pos) g_Track.hide();
+ if (g_year.getGuiY() == pos) g_year.hide();
+ if (g_genre.getGuiY() == pos) g_genre.hide();
+ if (g_disc.getGuiY() == pos) cycleDisc.show();
+ startwith = cycle.getNumitems() - 1;
+ g_albumartist.show();
+ }
+ }
+ }
+ }
+
+ if (infocomp_show_composer.getData() == "1")
+ {
+ s = getPlayItemMetaDataString("composer");
+ if (s != "")
+ {
+ t_composer.setText(s);
+ cycle.addItem(g_composer);
+ if ((!_rating && n < maxlines) || (_rating && n < maxlines-1))
+ {
+ if (n > 0) pos += getTextHeight(g_composer);
+ g_composer.setXmlParam("y", integerToString(pos));
+ g_composer.show();
+ n++;
+ }
+ else
+ {
+ if (g_Track.getGuiY() == pos) cycleTrack.show();
+ if (g_year.getGuiY() == pos) cycleYear.show();
+ if (g_genre.getGuiY() == pos) cycleGenre.show();
+ if (g_disc.getGuiY() == pos) cycleDisc.show();
+ if (g_albumartist.getGuiY() == pos) cycleAlbumartist.show();
+ cycleComposer.show();
+ g_composer.setXmlParam("y", integerToString(pos));
+ if (_cycle) cycler.start();
+ else if (getPrivateString (getSkinName(), "FileInfo_usersel", "") == "composer")
+ {
+ if (g_Track.getGuiY() == pos) g_Track.hide();
+ if (g_year.getGuiY() == pos) g_year.hide();
+ if (g_genre.getGuiY() == pos) g_genre.hide();
+ if (g_disc.getGuiY() == pos) cycleDisc.show();
+ if (g_albumartist.getGuiY() == pos) g_albumartist.hide();
+ startwith = cycle.getNumitems() - 1;
+ g_composer.show();
+ }
+ }
+ }
+ }
+
+ if (infocomp_show_publisher.getData() == "1")
+ {
+ s = getPlayItemMetaDataString("publisher");
+ if (s != "")
+ {
+ t_publisher.setText(s);
+ cycle.addItem(g_publisher);
+ if ((!_rating && n < maxlines) || (_rating && n < maxlines-1))
+ {
+ if (n > 0) pos += getTextHeight(g_publisher);
+ g_publisher.setXmlParam("y", integerToString(pos));
+ g_publisher.show();
+ n++;
+ }
+ else
+ {
+ if (g_Track.getGuiY() == pos) cycleTrack.show();
+ if (g_year.getGuiY() == pos) cycleYear.show();
+ if (g_genre.getGuiY() == pos) cycleGenre.show();
+ if (g_disc.getGuiY() == pos) cycleDisc.show();
+ if (g_albumartist.getGuiY() == pos) cycleAlbumartist.show();
+ if (g_composer.getGuiY() == pos) cycleComposer.show();
+ cyclePublisher.show();
+ g_publisher.setXmlParam("y", integerToString(pos));
+ if (_cycle) cycler.start();
+ else if (getPrivateString (getSkinName(), "FileInfo_usersel", "") == "publisher")
+ {
+ if (g_Track.getGuiY() == pos) g_Track.hide();
+ if (g_year.getGuiY() == pos) g_year.hide();
+ if (g_genre.getGuiY() == pos) g_genre.hide();
+ if (g_disc.getGuiY() == pos) cycleDisc.show();
+ if (g_albumartist.getGuiY() == pos) g_albumartist.hide();
+ if (g_composer.getGuiY() == pos) g_composer.hide();
+ startwith = cycle.getNumitems() - 1;
+ g_publisher.show();
+ }
+ }
+ }
+ }
+
+ if (infocomp_show_format.getData() == "1")
+ {
+ s = system.getDecoderName(system.getPlayItemString());
+ if (s != "")
+ {
+ t_format.setText(s);
+ cycle.addItem(g_format);
+ if ((!_rating && n < maxlines) || (_rating && n < maxlines-1))
+ {
+ if (n > 0) pos += getTextHeight(g_format);
+ g_format.setXmlParam("y", integerToString(pos));
+ g_format.show();
+ n++;
+ }
+ else
+ {
+ if (g_Track.getGuiY() == pos) cycleTrack.show();
+ if (g_year.getGuiY() == pos) cycleYear.show();
+ if (g_genre.getGuiY() == pos) cycleGenre.show();
+ if (g_disc.getGuiY() == pos) cycleDisc.show();
+ if (g_disc.getGuiY() == pos) cycleDisc.show();
+ if (g_albumartist.getGuiY() == pos) cycleAlbumartist.show();
+ if (g_composer.getGuiY() == pos) cycleComposer.show();
+ if (g_publisher.getGuiY() == pos) cyclePublisher.show();
+ cycleFormat.show();
+ g_format.setXmlParam("y", integerToString(pos));
+ if (_cycle) cycler.start();
+ else if (getPrivateString (getSkinName(), "FileInfo_usersel", "") == "format")
+ {
+ if (g_Track.getGuiY() == pos) g_Track.hide();
+ if (g_year.getGuiY() == pos) g_year.hide();
+ if (g_genre.getGuiY() == pos) g_genre.hide();
+ if (g_albumartist.getGuiY() == pos) g_albumartist.hide();
+ if (g_composer.getGuiY() == pos) g_composer.hide();
+ if (g_publisher.getGuiY() == pos) g_publisher.hide();
+ startwith = cycle.getNumitems() - 1;
+ g_format.show();
+ }
+ }
+ }
+ }
+
+ // check the media library status as well as input plug-in support
+ // to help determine if we show the rating control or not for here
+ if (_rating)
+ {
+ if (!HAVE_ML)
+ {
+ s = getPlayitemMetaDataString("rateable");
+ if (s != "" && s == "1")
+ {
+ if (n > 0) pos += getTextHeight(g_rating);
+ g_rating.setXmlParam("y", integerToString(pos));
+ g_rating.show();
+ }
+ } else {
+ if (n > 0) pos += getTextHeight(g_rating);
+ g_rating.setXmlParam("y", integerToString(pos));
+ g_rating.show();
+ }
+ }
+ }
+
+ if (n==0)
+ {
+ showBranding();
+ }
+ debugString(DEBUG_PREFIX "}", D_WTF);
+}
+
+//----------------------------------------------------------------------------------------------------------------
+// Item Cycler: Only active if we have more items to display as lines
+// if you click on a cycle line, this group is saved as g_target
+//----------------------------------------------------------------------------------------------------------------
+
+cycler.onTimer ()
+{
+ // Important: stop the cycler if branding is visible
+ if (l_branding.isvisible()) cycler.stop();
+ if (infocomp_cycle.getData() == "0" && !quick_change) { cycler.stop(); return; }
+
+ // g_target is defined --> we save the currently shown line as g_target
+ if (!g_target)
+ {
+ // check if rating is visible...
+ if (infocomp_show_rating.getData() == "1")
+ {
+ // if auto-cycler is disabled, and not the default line is shown, the line number is stored in startwith.
+ if (startwith)
+ {
+ // resort the cycle list and set startwith to 0
+ for ( int i = maxlines-2; i < startwith; i++ )
+ {
+ g_target = cycle.enumItem(maxlines-2);
+ cycle.removeItem(maxlines-2);
+ cycle.addItem(g_target);
+ }
+ startwith = 0;
+ }
+
+ // save g_target and remove from cycle
+ g_target = cycle.enumItem(maxlines-2);
+ cycle.removeItem(maxlines-2);
+ }
+ else
+ {
+ if (startwith)
+ {
+ for ( int i = maxlines-1; i < startwith; i++ )
+ {
+ g_target = cycle.enumItem(maxlines-1);
+ cycle.removeItem(maxlines-1);
+ cycle.addItem(g_target);
+ }
+ startwith = 0;
+ }
+ g_target = cycle.enumItem(maxlines-1);
+ cycle.removeItem(maxlines-1);
+ }
+ // put g_target at the end of cycle
+ cycle.addItem(g_target);
+ }
+
+ // otherwise g_target is the last item of cycle
+ else g_target = cycle.enumItem(cycle.getNumItems()-1);
+
+ // TODO verify fix from pieter!
+ if (g_target == null)
+ return;
+
+
+ // fade out g_target
+ g_target.setTargetA(0);
+ g_target.setTargetY(g_target.getGuiY());
+ if (!quick_change) g_target.setTargetSpeed(0.25); // fade or quick show/hide
+ else g_target.setTargetSpeed(0);
+ g_target.gotoTarget();
+}
+
+g_target.onTargetReached ()
+{
+ if (g_target.getAlpha() == 0)
+ {
+ // setback g_target to default values
+ g_target.hide();
+ g_target.setAlpha(255);
+ // detect if rating stars are visible and store the line tb shown in g_target
+ if (infocomp_show_rating.getData() == "1")
+ {
+ g_target = cycle.enumItem(maxlines-2);
+ cycle.removeItem(maxlines-2);
+ }
+ else
+ {
+ g_target = cycle.enumItem(maxlines-1);
+ cycle.removeItem(maxlines-1);
+ }
+ // better set g-target alpha to 0 and, show this line and fade in
+ g_target.setAlpha(0);
+ g_target.show();
+ g_target.setTargetA(255);
+ g_target.setTargetY(getGuiY());
+ if (!quick_change) g_target.setTargetSpeed(0.25); // fade or quick show/hide
+ else
+ {
+ g_target.setTargetSpeed(0);
+ string v = getToken(g_target.getID(), ".", 2);
+ setPrivateString (getSkinName(), "FileInfo_usersel", v); // save current line
+ }
+ g_target.gotoTarget();
+ // add g_target to end of cycle
+ cycle.addItem(g_target);
+ if (infocomp_cycle.getData() == "1" && !cycler.isRunning()) cycler.start(); // check if we should start cycler
+ quick_change = 0;
+ }
+}
+
+// Automatic cycling through items on/off
+infocomp_cycle.onDataChanged ()
+{
+ if (l_branding.isVisible()) return;
+ if (getData() == "1")
+ {
+ if (cycler_paused) cycler.start();
+ else loadFileInfo();
+ cycler_paused = 0;
+ }
+ else
+ {
+ if (cycler.isRunning()) cycler_paused = 1;
+ cycler.stop();
+ if (g_track.isVisible()) setPrivateString (getSkinName(), "FileInfo_usersel", "track");
+ else if (g_year.isVisible()) setPrivateString (getSkinName(), "FileInfo_usersel", "year");
+ else if (g_genre.isVisible()) setPrivateString (getSkinName(), "FileInfo_usersel", "genre");
+ else if (g_publisher.isVisible()) setPrivateString (getSkinName(), "FileInfo_usersel", "publisher");
+ else if (g_albumartist.isVisible()) setPrivateString (getSkinName(), "FileInfo_usersel", "albumartist");
+ else if (g_composer.isVisible()) setPrivateString (getSkinName(), "FileInfo_usersel", "composer");
+ else if (g_format.isVisible()) setPrivateString (getSkinName(), "FileInfo_usersel", "format");
+ else if (g_disc.isVisible()) setPrivateString (getSkinName(), "FileInfo_usersel", "disc");
+ }
+}
+
+// Visual Stuff
+CycleObject.onEnterArea ()
+{
+ CycleObject.getParent().findObject("label").setAlpha(255);
+}
+
+CycleObject.onLeaveArea ()
+{
+ CycleObject.getParent().findObject("label").setAlpha(180);
+}
+
+CycleObject.onLeftButtonDown (int x, int y)
+{
+ CycleObject.getParent().findObject("label").setAlpha(220);
+}
+
+CycleObject.onLeftButtonUp (int x, int y)
+{
+ if (getAlpha() < 255) return;
+
+ setAlpha(255);
+
+ if (quick_change) return;
+ quick_change = 1;
+
+ cycler.onTimer ();
+}
+
+//----------------------------------------------------------------------------------------------------------------
+// If user clicks on a link item (artist, album, title), let's start a web search
+// Therefore we will send an action to the group "sui.content". This action is either "browser_navigate" or
+// "browser_search". This action is then proccessed by suicore.maki (showing browser) and then (again) delivered
+// to browser.maki (from suicore.maki)
+//----------------------------------------------------------------------------------------------------------------
+
+/*
+
+LinkObject.onEnterArea ()
+{
+ LinkObject.getParent().findObject("label").setAlpha(255);
+}
+
+LinkObject.onLeaveArea ()
+{
+ LinkObject.getParent().findObject("label").setAlpha(180);
+}
+
+LinkObject.onLeftButtonDown (int x, int y)
+{
+ LinkObject.getParent().findObject("label").setAlpha(220);
+}
+
+LinkObject.onLeftButtonUp (int x, int y)
+{
+ if (getAlpha() < 255) return;
+
+ setAlpha(255);
+
+ // 5.56: special handling for url/streamname
+ if (LinkObject == linkSurl || LinkObject == linkSname)
+ {
+ String nav = t_surl.getText();
+ group sui = scriptGroup.getParentLayout().findObject("sui.content");
+ if (nav != "")
+ {
+ sui.sendAction ("browser_navigate", nav, 0, 0, 0, 0);
+ return;
+ }
+ }
+
+ string s;
+ if (infocomp_browser.getData() == "1")
+ {
+ if (LinkObject == linkArtist) s = t_artist.getText();
+ if (LinkObject == linkAlbum) s = t_artist.getText() + " " + t_album.getText();
+ if (LinkObject == linkTitle) s = t_artist.getText() + " " + t_title.getText();
+
+ if (s == "") return;
+
+ group sui = scriptGroup.getParentLayout().findObject("sui.content");
+ sui.sendAction ("browser_search", s, 0, 0, 0, 0);
+
+ return;
+ }
+
+ if (stationLink != "" && ( LinkObject == linkSname || LinkObject == linkSurl))
+ {
+ group sui = scriptGroup.getParentLayout().findObject("sui.content");
+ sui.sendAction ("browser_navigate", stationLink, 0, 0, 0, 0);
+
+ return;
+ }
+
+ String icid = "fileinfotitle";
+ if (LinkObject == linkArtist) icid = "fileinfoartist";
+ if (LinkObject == linkAlbum) icid = "fileinfoalbum";
+
+ String artist = t_artist.getText();
+ if (artist == "") return;
+ System.navigateUrlBrowser("http://client.winamp.com/nowplaying/artist/?artistName=" + artist);
+}
+
+*/
+
+//----------------------------------------------------------------------------------------------------------------
+// Rating System
+//----------------------------------------------------------------------------------------------------------------
+
+System.onCurrentTrackRated (int rating)
+{
+ refreshRating(rating);
+}
+
+RatingButton.onLeftButtonDown (int x, int y)
+{
+ RatingButton.setAlpha(255);
+ RatingButton.getParent().findObject("label").setAlpha(220);
+}
+
+RatingButton.onleftClick ()
+{
+ int rating = stringToInteger(getToken(getId(), ".", 1));
+ refreshRating(rating);
+ setCurrentTrackRating(rating);
+ for ( int i = 1; i <= rating; i++ )
+ {
+ guiobject o = ratingStars.enumItem(i-1);
+ o.setAlpha(255);
+ }
+}
+
+RatingButton.onEnterArea ()
+{
+ RatingButton.getParent().findObject("label").setAlpha(255);
+
+ int pos = stringToInteger(getToken(getId(), ".", 1));
+ int rating = System.getCurrentTrackRating();
+
+ star1.hide();
+ star2.hide();
+ star3.hide();
+ star4.hide();
+ star5.hide();
+
+ if (pos >= 1) star1.show();
+ if (pos >= 2) star2.show();
+ if (pos >= 3) star3.show();
+ if (pos >= 4) star4.show();
+ if (pos >= 5) star5.show();
+
+ if (pos > rating)
+ {
+ for ( int i = 1; i <= 5; i++ )
+ {
+ guiobject o = ratingStars.enumItem(i-1);
+ if ( i > pos || i <= rating)
+ {
+ o.setAlpha(255);
+ }
+ else
+ {
+ o.setAlpha(0);
+ }
+ }
+ }
+ else
+ {
+ rate1.setAlpha(255);
+ rate2.setAlpha(255);
+ rate3.setAlpha(255);
+ rate4.setAlpha(255);
+ rate5.setAlpha(255);
+ }
+}
+
+RatingButton.onLeaveArea ()
+{
+ RatingButton.getParent().findObject("label").setAlpha(180);
+
+ star1.hide();
+ star2.hide();
+ star3.hide();
+ star4.hide();
+ star5.hide();
+ rate1.setAlpha(255);
+ rate2.setAlpha(255);
+ rate3.setAlpha(255);
+ rate4.setAlpha(255);
+ rate5.setAlpha(255);
+}
+
+refreshRating (int rating)
+{
+ rate1.setActivated(rating >= 1);
+ rate2.setActivated(rating >= 2);
+ rate3.setActivated(rating >= 3);
+ rate4.setActivated(rating >= 4);
+ rate5.setActivated(rating >= 5);
+}
+
+RatingButton.onRightButtonUp (int x, int y)
+{
+ popupmenu rmenu = new popupmenu;
+ rmenu.addcommand("Remove Rating", 1, 0,0);
+ int result = rmenu.popAtMouse();
+ if (result == 1)
+ {
+ setCurrentTrackRating(0);
+ refreshRating(0);
+ }
+ complete;
+}
+
+t_rating.onTextChanged (String newtxt)
+{
+ int w = t_rating.getAutoWidth();
+
+ group g = g_rating.findObject("infodisplay.line.rating.stars");
+ g.setXmlParam("x", integerToString(w));
+ g.setXmlParam("w", integerToString(-w));
+ rate0.setXmlParam("w", integerToString(w));
+}
+
+//----------------------------------------------------------------------------------------------------------------
+// Winamp Branding
+//----------------------------------------------------------------------------------------------------------------
+
+showBranding()
+{
+ // stop cycler and hide all infolines
+ cycler.stop();
+ g_cover.setAlpha(0);
+ g_rating.hide();
+ g_title.hide();
+ g_album.hide();
+ g_artist.hide();
+ g_year.hide();
+ g_genre.hide();
+ g_track.hide();
+ g_publisher.hide();
+ g_composer.hide();
+ g_format.hide();
+ g_albumartist.hide();
+ g_surl.hide();
+ g_sname.hide();
+ g_disc.hide();
+
+ if (ic_vis_fileinfo.getData() == "1")
+ {
+ _BrandingsetXSpace((g_cover.getGuiW() + 2) / 2);
+ _BrandingsetWSpace(-2);
+ }
+ else
+ {
+ _BrandingsetXSpace(2);
+ _BrandingsetWSpace(-2);
+ }
+ _BrandinghandleResize();
+ l_branding.show();
+}
+
+_BrandingsizeError (boolean iserror)
+{
+ if (iserror)
+ {
+ l_branding.setAlpha(0);
+ }
+ else
+ {
+ l_branding.setAlpha(255);
+ }
+}
+
+// Hide branding of we start playback
+System.onPlay ()
+{
+ if (ic_fileinfo.getData() == "1" && removePath(getPlayItemString()) == "demo.mp3")
+ {
+ if (getPlayitemmetadatastring("artist") == "DJ Mike Llama" && getplayitemmetadatastring("title") == "Llama Whippin' Intro")
+ {
+ showBranding();
+ return;
+ }
+ }
+ refreshRating(System.getCurrentTrackRating());
+ loadFileInfo();
+}
+
+ic_fileinfo.onDataChanged ()
+{
+ if (getData() == "0")
+ {
+ cycler.stop();
+ l_branding.hide();
+ }
+ else if (l_branding.isVisible())
+ {
+ showBranding();
+ }
+ else
+ {
+ loadFileInfo();
+ }
+}
+
+ic_cover_fileinfo.onDataChanged ()
+{
+ if (l_branding.isVisible())
+ {
+ showBranding();
+ }
+}
+
+ic_vis_fileinfo.onDataChanged ()
+{
+ if (l_branding.isVisible())
+ {
+ showBranding();
+ }
+}
+
+getTextHeight (InfoLine gn)
+{
+ return stringToInteger(gn.getXmlParam("h"));
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/fileinfo.maki b/Src/resources/skins/Big Bento/scripts/fileinfo.maki
new file mode 100644
index 00000000..e2eaa995
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/fileinfo.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/gen_dropbox.m b/Src/resources/skins/Big Bento/scripts/gen_dropbox.m
new file mode 100644
index 00000000..c5834017
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/gen_dropbox.m
@@ -0,0 +1,145 @@
+#include <lib/std.mi>
+
+#define GUID_DROPBOX "{E2E4AD32-D87B-4B9E-BF58-46A1336DDC8F}"
+#define GUID_DROPBOX_ "{E2E4AD32-D87B-4b9e-BF58-46A1336DDC8F}"
+#define USE_BIG_HACK
+
+Global Frame dualwnd;
+Global Group sui_window;
+Global Group dropbox;
+
+Global Timer box_tmr;
+Global windowholder dropbox_wdh;
+
+Global Container main;
+
+Global int MIN_WIDTH;
+
+System.onScriptLoaded ()
+{
+ dualwnd = getScriptGroup().findObject("wdh.ml.dualwnd");
+ sui_window = getScriptGroup().getParentLayout().findObject("sui.content");
+ dropbox = dualwnd.findObject("wdh.ml.dualwnd.dropbox");
+ dropbox_wdh = dropbox.findObject("wdh");
+
+ main = dropbox.getParentLayout().getContainer();
+
+ //showWindow(GUID_DROPBOX, "", false);
+
+ MIN_WIDTH = stringToInteger(dualwnd.getXmlParam("minwidth"));
+ dualwnd.setXmlParam("resizable", "0");
+ dualwnd.setPosition(0);
+
+ box_tmr = new Timer;
+ box_tmr.setDelay(1);
+}
+
+System.onScriptUnloading ()
+{
+ delete box_tmr;
+
+ int w = dualwnd.getPosition();
+ if (w >= MIN_WIDTH)
+ {
+ setPrivateInt(getSkinName(), "gen_dropbox_poppler", w);
+ }
+}
+#ifdef 0
+Global Boolean gettingclosed;
+
+System.onGetCancelComponent (String guid, boolean goingvisible)
+{
+
+ if (guid != GUID_DROPBOX)
+ {
+ return FALSE;
+ }
+
+ if (goingvisible && !gettingclosed)
+ {
+ box_tmr.start();
+ return TRUE;
+ }
+ else
+ {
+ if (gettingclosed)
+ {
+ gettingclosed = false;
+ }
+ else
+ {
+
+ /*int w = dualwnd.getPosition();
+ if (w >= MIN_WIDTH)
+ {
+ setPrivateInt(getSkinName(), "gen_dropbox_poppler", w);
+ }
+ dualwnd.setXmlParam("resizable", "0");
+ dualwnd.setPosition(0);*/
+ }
+
+
+ }
+
+
+ RETURN FALSE;
+}
+
+box_tmr.onTimer ()
+{
+ box_tmr.stop();
+ int w = getPrivateInt(getSkinName(), "gen_dropbox_poppler", 200);
+ if (w < MIN_WIDTH)
+ w = MIN_WIDTH;
+
+ dualwnd.setXmlParam("resizable", "1");
+
+ System.showWindow("{6B0EDF80-C9A5-11D3-9F26-00C04F39FFC6}", "", 0);
+ //sui_window.sendAction("opentab", "ml", 0,0,0,0);
+
+ dualwnd.setPosition(w);
+ dropbox.hide();
+ dropbox_wdh.hide();
+ //dropbox_wdh.setXMLParam("hold", "");
+ dropbox_wdh.show();
+ //dropbox_wdh.setXMLParam("hold", "@all@");
+ dropbox.show();
+}
+
+#ifdef USE_BIG_HACK
+
+sui_window.onAction (String action, String param, Int x, int y, int p1, int p2, GuiObject source)
+{
+ if (action == "callback")
+ {
+ if (param == "onbeforehidesui")
+ {
+ /*//dualwnd.setPosition(0);
+ //dropbox.findObject("wdh").setXmlParam("relatw", "0");
+ //dropbox.findObject("wdh").setXmlParam("w", "0");
+ int i = dualwnd.getLeft() + dualwnd.getWidth();
+ dualwnd.setShaded(dualwnd.clientToScreenX(dualwnd.getLeft() +dualwnd.getWidth()),dualwnd.clientToScreenX(dualwnd.getLeft() + dualwnd.getWidth()-dualwnd.getPosition()-4));
+ debugInt(dualwnd.clientToScreenX(dualwnd.getLeft() +dualwnd.getWidth()));*/
+ dropbox.hide();
+gettingclosed = true;
+ //dualwnd.setPosition(0);
+ }
+ else if (param == "onshowsui")
+ {
+ //dualwnd.setPosition(200);
+ }
+ }
+}
+
+main.onBeforeSwitchToLayout (Layout oldlayout, Layout newlayout)
+{
+ if (newLayout.getID() == "shade")
+ {
+dropbox.hide();
+gettingclosed = true;
+ }
+
+}
+
+#endif
+#endif
diff --git a/Src/resources/skins/Big Bento/scripts/gen_dropbox.maki b/Src/resources/skins/Big Bento/scripts/gen_dropbox.maki
new file mode 100644
index 00000000..e7c12f31
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/gen_dropbox.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/hoverstimulate.m b/Src/resources/skins/Big Bento/scripts/hoverstimulate.m
new file mode 100644
index 00000000..5b337ef8
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/hoverstimulate.m
@@ -0,0 +1,83 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: hoverstimulate.m
+Version: 1.0
+
+Type: maki
+Date: 03. Jul. 2007 - 23:09
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#include <lib/std.mi>
+
+Global Button mainButton;
+Global Layer overlay;
+Global Boolean mouseDown;
+Global String img_normal, img_hover, img_down, img_active;
+
+System.onScriptLoaded ()
+{
+ mainButton = getScriptGroup().findObject(getToken(getParam(), ";", 0));
+ overlay = getScriptGroup().findObject(getToken(getParam(), ";", 1));
+ img_normal = getToken(getParam(), ";", 2);
+ img_hover = getToken(getParam(), ";", 3);
+ img_down = getToken(getParam(), ";", 4);
+ img_active = getToken(getParam(), ";", 5);
+}
+
+mainButton.onSetVisible (Boolean onoff)
+{
+ if (onoff)
+ {
+ overlay.show();
+ }
+ else
+ {
+ overlay.hide();
+ }
+}
+
+mainButton.onLeftButtonDown (int x, int y)
+{
+ mouseDown = 1;
+ if (img_down != "NULL") overlay.setXmlParam("image", img_down);
+}
+
+mainButton.onLeftButtonUp (int x, int y)
+{
+ mouseDown = 0;
+ if (img_hover != "NULL" && !getActivated() && isMouseOverRect()) overlay.setXmlParam("image", img_hover);
+}
+
+mainButton.onleaveArea ()
+{
+ if (!getActivated())
+ {
+ if (img_normal != "NULL") overlay.setXmlParam("image", img_normal);
+ }
+ else
+ {
+ if (img_active != "NULL") overlay.setXmlParam("image", img_active);
+ }
+}
+
+mainButton.onEnterArea ()
+{
+ if (img_hover != "NULL") overlay.setXmlParam("image", img_hover);
+}
+
+mainButton.onActivate (int activated)
+{
+ if (activated)
+ {
+ if (img_active != "NULL") overlay.setXmlParam("image", img_active);
+ }
+ else
+ {
+ if (img_normal != "NULL") overlay.setXmlParam("image", img_normal);
+ }
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/hoverstimulate.maki b/Src/resources/skins/Big Bento/scripts/hoverstimulate.maki
new file mode 100644
index 00000000..f66a9a1d
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/hoverstimulate.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/imagecontrol.m b/Src/resources/skins/Big Bento/scripts/imagecontrol.m
new file mode 100644
index 00000000..fb12f445
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/imagecontrol.m
@@ -0,0 +1,99 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: imagecontrol.m
+Version: 1.0
+
+Type: maki
+Date: 29. Jun. 2007 - 12:28
+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>
+
+Function updateAttrib ();
+Class ConfigAttribute ImageAttribute;
+
+Global ImageAttribute a1, a2, a3, a4, a5, a6;
+Global String img1, img2, img3, img4, img5, img6;
+Global layer Display;
+Global boolean myChange;
+
+System.onScriptLoaded ()
+{
+ string param = getParam();
+
+ string objects = getToken(param, "|", 0);
+ group scriptGroup = getScriptGroup();
+ Display = scriptGroup.findObject(objects);
+
+
+ int n = stringToInteger(getToken(param, "|", 1)) + 1;
+ int i = 2;
+ if (i <= n)
+ {
+ objects = getToken(param, "|", i);
+ a1 = config.getItemByGuid(getToken(objects, ";", 0)).getattribute(getToken(objects, ";", 1));
+ img1 = getToken(objects, ";", 2);
+ i++;
+ }
+ if (i <= n)
+ {
+ objects = getToken(param, "|", i);
+ a2 = config.getItemByGuid(getToken(objects, ";", 0)).getattribute(getToken(objects, ";", 1));
+ img2 = getToken(objects, ";", 2);
+ i++;
+ }
+ if (i <= n)
+ {
+ objects = getToken(param, "|", i);
+ a3 = config.getItemByGuid(getToken(objects, ";", 0)).getattribute(getToken(objects, ";", 1));
+ img3 = getToken(objects, ";", 2);
+ i++;
+ }
+ if (i <= n)
+ {
+ objects = getToken(param, "|", i);
+ a4 = config.getItemByGuid(getToken(objects, ";", 0)).getattribute(getToken(objects, ";", 1));
+ img4 = getToken(objects, ";", 2);
+ i++;
+ }
+ if (i <= n)
+ {
+ objects = getToken(param, "|", i);
+ a5 = config.getItemByGuid(getToken(objects, ";", 0)).getattribute(getToken(objects, ";", 1));
+ img5 = getToken(objects, ";", 2);
+ i++;
+ }
+ if (i <= n)
+ {
+ objects = getToken(param, "|", i);
+ a6 = config.getItemByGuid(getToken(objects, ";", 0)).getattribute(getToken(objects, ";", 1));
+ img6 = getToken(objects, ";", 2);
+ i++;
+ }
+
+ updateAttrib ();
+}
+
+ImageAttribute.onDataChanged ()
+{
+ if (myChange) return;
+ updateAttrib ();
+}
+
+updateAttrib ()
+{
+ myChange = 1;
+ if (a1) if (a1.getData() == "1") Display.setXmlParam("image", img1);
+ if (a2) if (a2.getData() == "1") Display.setXmlParam("image", img2);
+ if (a3) if (a3.getData() == "1") Display.setXmlParam("image", img3);
+ if (a4) if (a4.getData() == "1") Display.setXmlParam("image", img4);
+ if (a5) if (a5.getData() == "1") Display.setXmlParam("image", img5);
+ if (a6) if (a6.getData() == "1") Display.setXmlParam("image", img6);
+ myChange = 0;
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/imagecontrol.maki b/Src/resources/skins/Big Bento/scripts/imagecontrol.maki
new file mode 100644
index 00000000..65566a4d
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/imagecontrol.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/infoline.m b/Src/resources/skins/Big Bento/scripts/infoline.m
new file mode 100644
index 00000000..1719ed9a
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/infoline.m
@@ -0,0 +1,44 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: infoline.m
+Version: 1.0
+
+Type: maki
+Date: 06. Nov. 2007 - 22:40
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#include <lib/std.mi>
+
+Global Text txt;
+Global Text label;
+Global Layer link;
+Global Group sg;
+Global Int shift = 0;
+
+System.onScriptLoaded ()
+{
+ sg = getScriptGroup();
+
+ txt = sg.getObject("text");
+ label = sg.getObject("label");
+ link = sg.getObject("link");
+}
+
+System.onSetXuiParam (String param, String value)
+{
+ if (strlower(param) == "shift") shift = stringToInteger(value);
+ if (strlower(param) == "label") label.setText(value);
+ if (strlower(param) == "link") link.setXmlparam("tooltip", value);
+}
+
+label.onTextChanged (String newtxt)
+{
+ int w = label.getAutoWidth() + shift;
+ txt.setXmlParam("x", integerToString(w));
+ txt.setXmlParam("w", integerToString(-w));
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/infoline.maki b/Src/resources/skins/Big Bento/scripts/infoline.maki
new file mode 100644
index 00000000..4a1562e5
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/infoline.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/lib/debug.m b/Src/resources/skins/Big Bento/scripts/lib/debug.m
new file mode 100644
index 00000000..cca40f07
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/lib/debug.m
@@ -0,0 +1,52 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: debug.m
+Version: 1.2
+
+Type: maki/attrib loader
+Date: 29. Aug. 2006 - 23:43
+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 DEBUG
+#define debugString //
+#endif
+
+#ifdef DEBUG
+
+#define DEBUG_PREFIX "["+ FILE_NAME +": " + getTimeStamp() + "] " +
+
+Function String getTimeStamp();
+String getTimeStamp()
+{
+ int msc = getTimeOfDay();
+ int h = msc / 1000 / 3600;
+ msc -= h * 1000 * 3600;
+ int m = msc / 1000 / 60;
+ msc -= m * 1000 * 60;
+ int s = msc / 1000;
+ msc -= s * 1000;
+ string zeros = "";
+ if (msc < 100)
+ {
+ zeros += "0";
+ }
+ if (msc < 10)
+ {
+ zeros += "0";
+ }
+ return integerToString(h)+":"+integerToString(m)+":"+integerToString(s)+"."+zeros+integerToString(msc);
+}
+
+#define D_WTF 9
+#define D_NWTF 9
+
+#endif \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/lib/glow.m b/Src/resources/skins/Big Bento/scripts/lib/glow.m
new file mode 100644
index 00000000..12e0406b
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/lib/glow.m
@@ -0,0 +1,111 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: glow.m
+Version: 1.0
+
+Type: maki/glow class
+Date: 16. Jun. 2007 - 23:13
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+
+Usage: 1: #include glow.m
+ 2: #define GLOW_OBJECT MyGlow
+ 3: call _MyGlow_GlowInit (someObj, otherObj)
+ to init the objects.
+ You can also call _MyGlow_GlowInit (NULL, otherObj)
+ and load a bunch of GuiObjects in _MyGlow_GlowTrigger
+ or load up to 5 objects via _MyGlow_addTarget(obj);
+
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#ifndef included
+#error This script can only be compiled as a #include
+#endif
+
+#ifndef GLOW_OBJECT
+#error GLOW_OBJECT not defined!
+#endif
+
+Class GuiObject _##GLOW_OBJECT##_GlowTrigger;
+Global _##GLOW_OBJECT##_GlowTrigger _##GLOW_OBJECT##_trigger0, _##GLOW_OBJECT##_trigger1, _##GLOW_OBJECT##_trigger2, _##GLOW_OBJECT##_trigger3, _##GLOW_OBJECT##_trigger4, _##GLOW_OBJECT##_trigger5;
+Global GuiObject _##GLOW_OBJECT##_glow;
+Global float _##GLOW_OBJECT##_fdoutspeed;
+Global boolean _##GLOW_OBJECT##_mouseDown;
+
+Function _##GLOW_OBJECT##_GlowInit (GuiObject triggerObject, GuiObject glowObject, float fdoutspeed);
+Function _##GLOW_OBJECT##_addTrigger (GuiObject triggerObject);
+
+_##GLOW_OBJECT##_GlowInit (GuiObject triggerObject, GuiObject glowObject, float fdoutspeed)
+{
+ if (triggerObject) _##GLOW_OBJECT##_trigger0 = triggerObject;
+ if (glowObject) _##GLOW_OBJECT##_glow = glowObject;
+
+ _##GLOW_OBJECT##_fdoutspeed = fdoutspeed;
+}
+
+_##GLOW_OBJECT##_addTrigger(GuiObject triggerObject)
+{
+ if (triggerObject)
+ {
+ if (!_##GLOW_OBJECT##_trigger1)
+ {
+ _##GLOW_OBJECT##_trigger1 = triggerObject;
+ return;
+ }
+ if (!_##GLOW_OBJECT##_trigger2)
+ {
+ _##GLOW_OBJECT##_trigger2 = triggerObject;
+ return;
+ }
+ if (!_##GLOW_OBJECT##_trigger3)
+ {
+ _##GLOW_OBJECT##_trigger3 = triggerObject;
+ return;
+ }
+ if (!_##GLOW_OBJECT##_trigger4)
+ {
+ _##GLOW_OBJECT##_trigger4 = triggerObject;
+ return;
+ }
+ if (!_##GLOW_OBJECT##_trigger5)
+ {
+ _##GLOW_OBJECT##_trigger5 = triggerObject;
+ return;
+ }
+ }
+}
+
+_##GLOW_OBJECT##_GlowTrigger.onEnterArea ()
+{
+ _##GLOW_OBJECT##_glow.cancelTarget();
+ _##GLOW_OBJECT##_glow.setAlpha(255);
+}
+
+_##GLOW_OBJECT##_GlowTrigger.onLeftButtonDown (int x, int y)
+{
+ _##GLOW_OBJECT##_mouseDown = 1;
+ _##GLOW_OBJECT##_glow.cancelTarget();
+ _##GLOW_OBJECT##_glow.setAlpha(0);
+}
+
+_##GLOW_OBJECT##_GlowTrigger.onLeftButtonUp (int x, int y)
+{
+ _##GLOW_OBJECT##_mouseDown = 0;
+ _##GLOW_OBJECT##_glow.cancelTarget();
+ if (_##GLOW_OBJECT##_GlowTrigger.isMouseOverRect()) _##GLOW_OBJECT##_glow.setAlpha(255);
+}
+
+_##GLOW_OBJECT##_GlowTrigger.onLeaveArea ()
+{
+ if (_##GLOW_OBJECT##_mouseDown) return;
+ _##GLOW_OBJECT##_glow.cancelTarget();
+ _##GLOW_OBJECT##_glow.setTargetA(0);
+ _##GLOW_OBJECT##_glow.setTargetX(_##GLOW_OBJECT##_glow.getGuiX());
+ _##GLOW_OBJECT##_glow.setTargetSpeed(_##GLOW_OBJECT##_fdoutspeed);
+ _##GLOW_OBJECT##_glow.gotoTarget();
+}
+
+#undef GLOW_OBJECT \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/loadattribs.m b/Src/resources/skins/Big Bento/scripts/loadattribs.m
new file mode 100644
index 00000000..67f4b0e8
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/loadattribs.m
@@ -0,0 +1,89 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: loadattribs.m
+Version: 1.2
+
+Type: maki/attrib loader
+Date: 29. Aug. 2006 - 23:43
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#define MAIN_ATTRIBS_MGR
+#define MAIN_ATTRIBS_LOADER
+
+#include <lib/std.mi>
+
+#include attribs/init_windowpage.m
+#include attribs/init_playlist.m
+#include attribs/init_Autoresize.m
+#include attribs/init_Vis.m
+#include attribs/init_appearance.m
+#include attribs/init_songticker.m
+#include attribs/init_notifier.m
+
+Global Configattribute FontRenderer, findOpenRect;
+Global String FontRenderer_default, findOpenRect_default;
+Global configAttribute skin_attrib;
+
+System.onScriptLoaded()
+{
+ initAttribs_Appearance();
+ initAttribs_Songticker();
+ initAttribs_Autoresize();
+ initAttribs_notifier();
+ initAttribs_Vis();
+
+ //without optionsmenu entry:
+ initAttribs_windowpage();
+ initAttribs_Playlist();
+
+ // Add skin switcher to Appearance menu
+
+ addMenuSeparator(custom_page_appearance);
+
+ if (getParam() == "big")
+ {
+ skin_attrib = custom_page_appearance.newAttribute("Switch to Bento with Small Buttons", "0");
+ }
+ else
+ {
+ skin_attrib = custom_page_appearance.newAttribute("Switch to Bento with Big Buttons", "0");
+ }
+
+ // Turn 'find open rect' temporary off
+
+ findOpenRect = config.getItemByGuid("{280876CF-48C0-40BC-8E86-73CE6BB462E5}").getAttribute("Find open rect");
+ findOpenRect_default = findOpenRect.getData();
+ findOpenRect.setData("0");
+
+}
+
+System.onScriptUnloading ()
+{
+ findOpenRect.setData(findOpenRect_default);
+}
+
+findOpenRect.onDataChanged ()
+{
+ if (getData() == "0") return;
+ findOpenRect.setData("0");
+}
+
+global boolean passtrough;
+
+skin_attrib.onDataChanged ()
+{
+ if (passtrough)
+ {
+ return;
+ }
+ passtrough = TRUE;
+ setData("0");
+ if (getParam() == "big") switchSkin("Bento");
+ else switchSkin("Big Bento");
+ passtrough = FALSE;
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/loadattribs.maki b/Src/resources/skins/Big Bento/scripts/loadattribs.maki
new file mode 100644
index 00000000..e6c41c20
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/loadattribs.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/mainmenu.m b/Src/resources/skins/Big Bento/scripts/mainmenu.m
new file mode 100644
index 00000000..af51143b
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/mainmenu.m
@@ -0,0 +1,164 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: songinfo.m
+Version: 1.0
+
+Type: maki
+Date: 20. Nov. 2006 - 22:47
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#include <lib/std.mi>
+#include attribs/init_appearance.m
+
+Class Layer LinkedLayer;
+
+Function initLL(linkedLayer l);
+Function fadeLL(linkedLayer l, boolean in);
+Function setLL(linkedLayer l, boolean in);
+
+Global Group MenuBar;
+Global GuiObject mousetrap;
+Global Int texth;
+
+Global LinkedLayer _play, _options, _file, _view, _help;
+Global int xpos;
+
+Global guiObject titlebargrid;
+
+
+System.onScriptLoaded()
+{
+ initAttribs_Appearance();
+ MenuBar = getscriptgroup().findobject("player.mainmenu");
+ xpos = 0;
+
+ titlebargrid = getScriptGroup().findObject("titlebar.grid.right");
+
+ _file = MenuBar.getObject("menu.text.file");
+ initLL(_file);
+
+ _play = MenuBar.getObject("menu.text.play");
+ initLL(_play);
+
+ _options = MenuBar.getObject("menu.text.options");
+ initLL(_options);
+
+ _view = MenuBar.getObject("menu.text.view");
+ initLL(_view);
+
+ _help = MenuBar.getObject("menu.text.help");
+ initLL(_help);
+
+ mousetrap = MenuBar.findObjecT("menu.hidden.mousetrap");
+
+ texth = _file.getGuiH();
+
+ if (menubar_main_attrib.getData() == "1")
+ {
+ _options.setXmlParam("h", integerToString(texth));
+ _file.setXmlParam("h", integerToString(texth));
+ _help.setXmlParam("h", integerToString(texth));
+ _view.setXmlParam("h", integerToString(texth));
+ _play.setXmlParam("h", integerToString(texth));
+ mousetrap.hide();
+ }
+ else
+ {
+ _options.setXmlParam("h", "0");
+ _file.setXmlParam("h", "0");
+ _help.setXmlParam("h", "0");
+ _view.setXmlParam("h", "0");
+ _play.setXmlParam("h", "0");
+ mousetrap.show();
+ }
+}
+
+menubar_main_attrib.onDataChanged() {
+ if (getData() == "1")
+ {
+ mousetrap.hide();
+ fadeLL(_play, 1);
+ fadeLL(_view, 1);
+ fadeLL(_help, 1);
+ fadeLL(_file, 1);
+ fadeLL(_options, 1);
+ }
+ else
+ {
+ mousetrap.show();
+ fadeLL(_play, 0);
+ fadeLL(_view, 0);
+ fadeLL(_help, 0);
+ fadeLL(_file, 0);
+ fadeLL(_options, 0);
+ }
+}
+
+System.onAccelerator(String action, String section, String key) {
+ if (menubar_main_attrib.getData() == "0") return;
+
+ Layout l = getScriptGroup().getParentLayout();
+ if (!l.isActive()) return;
+ if (action == "MENUHOTKEY_FILE")
+ {
+ MenuBar.findObject("file.menu").sendAction("open", "", 0, 0, 0, 0);
+ complete;
+ }
+ if (action == "MENUHOTKEY_PLAY")
+ {
+ MenuBar.findObject("play.menu").sendAction("open", "", 0, 0, 0, 0);
+ complete;
+ }
+ if (action == "MENUHOTKEY_OPTIONS")
+ {
+ MenuBar.findObject("options.menu").sendAction("open", "", 0, 0, 0, 0);
+ complete;
+ }
+ if (action == "MENUHOTKEY_VIEW")
+ {
+ MenuBar.findObject("view.menu").sendAction("open", "", 0, 0, 0, 0);
+ complete;
+ }
+ if (action == "MENUHOTKEY_HELP")
+ {
+ MenuBar.findObject("help.menu").sendAction("open", "", 0, 0, 0, 0);
+ complete;
+ }
+}
+
+initLL (LinkedLayer l)
+{
+ int w = l.getAutoWidth();
+ String id = getToken(l.getId(), ".", 2);
+ GuiObject o = MenuBar.findObject("menu.layer." + id + ".normal");
+ if (o) o.setXmlParam("w", integerToString(w));
+ if (o) o.setXmlParam("x", integerToString(xpos));
+
+ o = MenuBar.findObject("menu.layer." + id + ".hover");
+ if (o) o.setXmlParam("w", integerToString(w));
+ if (o) o.setXmlParam("x", integerToString(xpos));
+
+ o = MenuBar.findObject("menu.layer." + id + ".down");
+ if (o) o.setXmlParam("w", integerToString(w));
+ if (o) o.setXmlParam("x", integerToString(xpos));
+
+ Menu m = MenuBar.findObject(id + ".menu");
+ if (m) m.setXmlParam("w", integerToString(w));
+ if (m) m.setXmlParam("x", integerToString(xpos));
+
+ l.setXmlParam("x", integerToString(xpos));
+ xpos += w;
+}
+
+fadeLL (linkedLayer l, boolean in)
+{
+ l.cancelTarget();
+ l.setTargetH(texth*in);
+ l.setTargetSpeed(0.5);
+ l.gotoTarget();
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/mainmenu.maki b/Src/resources/skins/Big Bento/scripts/mainmenu.maki
new file mode 100644
index 00000000..eca152f8
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/mainmenu.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/maximize.m b/Src/resources/skins/Big Bento/scripts/maximize.m
new file mode 100644
index 00000000..b944362b
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/maximize.m
@@ -0,0 +1,648 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: maximize.m
+Version: 3.4
+
+Type: maki
+Date: 13. Sep. 2007 - 15:05
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#include <lib/std.mi>
+#include attribs/init_Autoresize.m
+
+Function setImages(boolean isMaximized);
+Function maximizeShade(boolean save);
+Function restoreShade();
+Function maximizePlayer(boolean save);
+Function restorePlayer();
+Function setWndToScreen();
+
+#define SAVEPOS_SHADE 2
+#define SAVEPOS_NORMAL 1
+#define SAVEPOS_ALL 0
+Function savePos(int code);
+
+Class GuiObject Mousetrap;
+
+Global Button Maximize, MaximizeShade, Restore, RestoreShade;
+Global Mousetrap noResizerTB, MousetrapTB, MousetrapShade, MousetrapMenu;
+Global Layout normal, shade;
+Global Boolean tgst;
+Global Layer resizer, noResizer, resizerShade, resizerShade2, topResizer;
+Global Container player;
+Global GuiObject shadeticker, slamclose;
+
+Global Group regions, regionsShade;
+Global Layer regionBlack, regionBlackShade;
+
+Global Int DEFAULT_PLAYER_H, DEFAULT_SHADE_H;
+Global Int old_x, old_y, old_h, old_w;
+
+System.onScriptLoaded ()
+{
+ initAttribs_Autoresize();
+
+ player = System.getContainer("main");
+ normal = player.getLayout("normal");
+
+ Maximize = normal.findObject("player.titlebar.button.maximize");
+ Restore = normal.findObject("player.titlebar.button.restore");
+ MousetrapTB = normal.findObject("player.mousetrap.maximize");
+ resizer = normal.findObject("player.resizer.bottomright");
+ noResizer = normal.findObject("player.resizer.disable");
+ noResizerTB = normal.findObject("titlebar.resizer.disable");
+ regions = normal.findObject("window.background.regions");
+ regionBlack = normal.findObject("window.background.maximize");
+ topResizer = normal.findObject("titlebar.resizer.top");
+ slamclose = normal.findObject("maximize.slam.close");
+ MousetrapMenu = normal.findObject("menu.hidden.mousetrap");
+
+ shade = player.getLayout("shade");
+ shadeticker = shade.findObject("Songticker");
+
+ MaximizeShade = shade.findObject("shade.button.maximize");
+ RestoreShade = shade.findObject("shade.button.restore");
+ resizerShade = shade.findObject("shade.resizer.right");
+ resizerShade2 = shade.findObject("shade.resizer.right2");
+ MousetrapShade = shade.findObject("shade.mousetrap");
+ regionsShade = Shade.findObject("window.background.regions");
+ regionBlackShade = Shade.findObject("window.background.maximize");
+
+ DEFAULT_PLAYER_H = stringToInteger(getToken(getParam(), "," , 0));
+ DEFAULT_SHADE_H = stringToInteger(getToken(getParam(), "," , 1));
+
+ if (getPrivateInt(getSkinName(), "isMainWndMaximized", 0))
+ {
+ maximizePlayer (FALSE);
+ maximizeShade (FALSE);
+ setImages (1);
+ }
+ else
+ {
+ if (getPrivateInt(getSkinName(), "First Start", 1)) setWndToScreen();
+ else
+ {
+ restorePlayer ();
+ restoreShade ();
+ }
+ }
+}
+
+// ------------------------------------------------------------------------------
+// Cope with viewport changes so we're happy with Windows 8.x snapping mode, etc
+// ------------------------------------------------------------------------------
+
+System.onViewPortChanged(int width, int height)
+{
+ if (getPrivateInt(getSkinName(), "isMainWndMaximized", 0))
+ {
+ if (normal == player.getCurLayout()) maximizePlayer (FALSE);
+ else if (shade == player.getCurLayout()) maximizeShade (FALSE);
+ }
+}
+
+// ------------------------------------------------------------------------------
+// Save all our window positions on skin unloading
+// ------------------------------------------------------------------------------
+
+System.onScriptUnloading ()
+{
+// if (player.getCurLayout() == normal) savePos(SAVEPOS_NORMAL);
+// else if (player.getCurLayout() == shade) savePos(SAVEPOS_SHADE);
+}
+
+// ------------------------------------------------------------------------------
+// Prohibit autoresizing by Video if we're in maximized player (layout_normal)
+// ------------------------------------------------------------------------------
+
+sui_autorsize_attrib.onDataChanged ()
+{
+ if (getData() == "1")
+ {
+ normal.setXMLParam("lockminmax", "0");
+ }
+ else
+ {
+ double d = normal.getScale();
+ if (normal.getLeft() == getViewportLeft() && normal.getTop() == getViewportTop() && normal.getWidth() == getViewPortWidthfromGuiObject(normal)/d && normal.getHeight() == getViewPortHeightfromGuiObject(normal)/d)
+ {
+ normal.setXMLParam("lockminmax", "1");
+ }
+ }
+}
+
+System.onKeyDown (String key)
+{
+ if (key == "ctrl+w" && (shade.isActive() || normal.isActive()))
+ {
+ if (shade != player.getCurLayout())
+ {
+ player.switchToLayout("shade");
+ }
+ else
+ {
+ player.switchToLayout("normal");
+ }
+ complete;
+ }
+}
+
+// ------------------------------------------------------------------------------
+// Button clicks
+// ------------------------------------------------------------------------------
+
+Maximize.onLeftClick ()
+{
+ if (!getPrivateInt(getSkinName(), "isMainWndMaximized", 0))
+ {
+ maximizePlayer (TRUE);
+ }
+}
+
+Restore.onLeftClick ()
+{
+ if (getPrivateInt(getSkinName(), "isMainWndMaximized", 0))
+ {
+ restorePlayer ();
+ }
+}
+
+MaximizeShade.onLeftClick ()
+{
+ if (getPrivateInt(getSkinName(), "isMainWndMaximized", 0))
+ {
+ restoreShade ();
+ }
+ else
+ {
+ maximizeShade (TRUE);
+ }
+}
+
+RestoreShade.onLeftClick ()
+{
+ if (getPrivateInt(getSkinName(), "isMainWndMaximized", 0))
+ {
+ restoreShade ();
+ }
+ else
+ {
+ maximizeShade (TRUE);
+ }
+}
+
+/** This will detect the second down click */
+
+Mousetrap.onLeftButtonDblClk (int x, int y)
+{
+ tgst = true;
+}
+
+/** Once the button gets up, we'll toggle the maximized state */
+
+mousetrap.onLeftButtonUp (int x, int y)
+{
+ if (tgst)
+ {
+ if (shade == player.getCurLayout())
+ {
+ if (titlebar_dblclk_max_attib.getData() == "1")
+ {
+ if (!getPrivateInt(getSkinName(), "isMainWndMaximized", 0))
+ {
+ maximizeShade (TRUE);
+ }
+ else
+ {
+ restoreShade();
+ }
+ }
+ else
+ {
+ player.switchToLayout("normal");
+ }
+ }
+ else
+ {
+ if (titlebar_dblclk_max_attib.getData() == "1")
+ {
+ if (!getPrivateInt(getSkinName(), "isMainWndMaximized", 0))
+ {
+ maximizePlayer (TRUE);
+ }
+ else
+ {
+ restorePlayer();
+ }
+ }
+ else
+ {
+ player.switchToLayout("shade");
+ }
+ }
+ }
+ tgst = false;
+}
+
+topResizer.onLeftButtonDblClk (int x, int y)
+{
+ if (titlebar_dblclk_max_attib.getData() == "1")
+ {
+ if (!getPrivateInt(getSkinName(), "isMainWndMaximized", 0))
+ {
+ maximizePlayer (TRUE);
+ }
+ else
+ {
+ restorePlayer();
+ }
+ }
+ else
+ {
+ player.switchToLayout("shade");
+ }
+}
+
+// ------------------------------------------------------------------------------
+// Detect maximized states on window resize
+// ------------------------------------------------------------------------------
+
+normal.onEndMove ()
+{
+ savePos(SAVEPOS_NORMAL);
+}
+
+normal.onResize (int x, int y, int w, int nh)
+{
+ //debugString("onResize("+integertoString(x)+","+integertoString(y)+","+integertoString(w)+","+integertoString(nh)+");", 9);
+ y = normal.getTop();
+ // prohibit to set nh = 0
+ if (nh == 0 || w == 0)
+ {
+ //debug("error setting player_normal w=" + integerToString(w) + " , h=" + integerToString(nh));
+ normal.resize(getLeft(), getTop(), getWidth(), DEFAULT_PLAYER_H);
+ return;
+ }
+
+ if (normal != player.getCurLayout()) return;
+
+ if (old_x == x && old_y == y && old_h = nh && old_w == w) return;
+ old_x = x; old_y = y; old_h = nh; old_w = w;
+
+ if (getPrivateString(getSkinName(), "Component", "Media Library") == "Hidden")
+ {
+ double d = normal.getScale();
+ if (w == getViewPortWidthfromGuiObject(normal)/d && x == getViewportLeft() && y == getViewportTop())
+ {
+ //setPrivateInt(getSkinName(), "isMainWndMaximized", 1);
+ //setImages (1);
+ }
+ else
+ {
+ setPrivateInt(getSkinName(), "isMainWndMaximized", 0);
+ setImages (0);
+ }
+ }
+ else
+ {
+ double d = normal.getScale();
+ if (w == getViewPortWidthfromGuiObject(normal)/d && nh == getViewPortHeightfromGuiObject(normal)/d)
+ {
+ //setPrivateInt(getSkinName(), "isMainWndMaximized", 1);
+ //setImages (1);
+ }
+ else
+ {
+ setPrivateInt(getSkinName(), "isMainWndMaximized", 0);
+ setImages (0);
+ }
+ }
+ savePos(SAVEPOS_NORMAL);
+}
+
+shade.onEndMove ()
+{
+ savePos(SAVEPOS_SHADE);
+}
+
+shade.onResize (int x, int y, int w, int nh)
+{
+ y = shade.getTop();
+ // prohibit to set nh = 0
+ if (nh == 0 || w == 0)
+ {
+ debug("error setting player_shade w=" + integerToString(w) + " , h=" + integerToString(nh));
+ shade.resize(getLeft(), getTop(), getWidth(), DEFAULT_SHADE_H);
+ return;
+ }
+
+ if (shade != player.getCurLayout()) return;
+
+ if (old_x == x && old_y == y && old_h = nh && old_w == w) return;
+ old_x = x; old_y = y; old_h = nh; old_w = w;
+
+ double d = shade.getScale();
+ if (w == getViewPortWidthfromGuiObject(shade)/d && y == getViewportTop() && x == getViewportLeft())
+ {
+ //setPrivateInt(getSkinName(), "isMainWndMaximized", 1);
+ //setImages (1);
+ }
+ else
+ {
+ setPrivateInt(getSkinName(), "isMainWndMaximized", 0);
+ setImages (0);
+ }
+ savePos(SAVEPOS_SHADE);
+}
+
+// ------------------------------------------------------------------------------
+// Resize our window on scale if we are maximized
+// ------------------------------------------------------------------------------
+
+normal.onScale (Double newscalevalue)
+{
+ if (normal != player.getCurLayout()) return;
+ if (getPrivateInt(getSkinName(), "isMainWndMaximized", 0))
+ {
+ maximizePlayer(FALSE);
+ }
+ savePos(SAVEPOS_NORMAL);
+}
+
+shade.onScale (Double newscalevalue)
+{
+ if (shade != player.getCurLayout()) return;
+ if (getPrivateInt(getSkinName(), "isMainWndMaximized", 0))
+ {
+ maximizeShade(FALSE);
+ }
+ savePos(SAVEPOS_SHADE);
+}
+
+// ------------------------------------------------------------------------------
+// Before we switch between layouts, check all images and window sizes
+// ------------------------------------------------------------------------------
+
+player.onBeforeSwitchToLayout (Layout _layoutnow, Layout _layouttobe)
+{
+ if (_layoutnow == normal) savePos(SAVEPOS_NORMAL);
+ else if (_layoutnow == shade) savePos(SAVEPOS_SHADE);
+ if (getPrivateInt(getSkinName(), "isMainWndMaximized", 0))
+ {
+ if (_layouttobe == normal) maximizePlayer (FALSE);
+ else if (_layouttobe == shade) maximizeShade (FALSE);
+ setImages (1);
+ }
+ else
+ {
+ if (_layouttobe == normal) restorePlayer ();
+ else if (_layouttobe == shade) restoreShade ();
+ }
+}
+
+// ------------------------------------------------------------------------------
+// Save wnd position before we go to collapsed state
+// ------------------------------------------------------------------------------
+
+normal.onAction (String action, String param, Int x, int y, int p1, int p2, GuiObject source)
+{
+ if (action == "sui" && param == "tonocomp" && x == 0)
+ {
+ savePos (SAVEPOS_NORMAL);
+ }
+}
+
+// ******************************************************************************
+// Our Function Handles
+// ******************************************************************************
+
+setImages (boolean isMaximized)
+{
+ if (isMaximized)
+ {
+ // Normal
+ Maximize.hide();
+ Restore.show();
+
+ if (getPrivateString(getSkinName(), "Component", "Media Library") == "Hidden")
+ {
+ MousetrapTB.setXMLparam("move", "0");
+ MousetrapMenu.setXMLparam("move", "0");
+ noResizerTB.setXMLparam("ghost", "0");
+ }
+ else
+ {
+ MousetrapTB.setXMLparam("move", "0");
+ MousetrapMenu.setXMLparam("move", "0");
+ noResizerTB.setXMLparam("ghost", "0");
+ }
+
+ if (sui_autorsize_attrib.getData() == "0") normal.setXMLParam("lockminmax", "1");
+ else normal.setXMLParam("lockminmax", "0");
+ resizer.hide();
+ noResizer.show();
+ regions.hide();
+ regionBlack.show();
+ // Shade
+ MousetrapShade.setXMLparam("move", "0");
+ shadeticker.setXmlParam("move", "0");
+ MaximizeShade.hide();
+ RestoreShade.show();
+ resizerShade.hide();
+ regionsShade.hide();
+ resizerShade2.hide();
+ regionBlackShade.show();
+ slamclose.show();
+ }
+ else
+ {
+ // Normal
+ resizer.show();
+ noResizer.hide();
+ MousetrapTB.setXMLparam("move", "1");
+ noResizerTB.setXMLparam("ghost", "1");
+ MousetrapMenu.setXMLparam("move", "1");
+ normal.setXMLParam("lockminmax", "0");
+ Maximize.show();
+ Restore.hide();
+ regions.show();
+ regionBlack.hide();
+ // Shade
+ MousetrapShade.setXMLparam("move", "1");
+ shadeticker.setXmlParam("move", "1");
+ resizerShade.show();
+ resizerShade2.show();
+ MaximizeShade.show();
+ RestoreShade.hide();
+ regionsShade.show();
+ regionBlackShade.hide();
+ slamclose.hide();
+ }
+}
+
+maximizeShade (boolean save)
+{
+ if (save)
+ {
+ savePos(SAVEPOS_SHADE);
+
+ setPrivateInt(getSkinName(), "isMainWndMaximized", 1);
+ setImages (1);
+ }
+ double newscalevalue = shade.getScale();
+ int sh = shade.getHeight();
+ if (sh < 1) sh = DEFAULT_SHADE_H;
+ shade.resize(getViewPortLeftfromGuiObject(shade),getViewPortTopfromGuiObject(shade),getViewportWidthfromGuiObject(shade)/newscalevalue, sh);
+}
+
+restoreShade ()
+{
+ if (link_w_attrib.getData() == "0")
+ {
+ shade.resize(
+ getPrivateInt(getSkinName(), "shade_nomax_x", shade.getLeft()),
+ getPrivateInt(getSkinName(), "shade_nomax_y", shade.getTop()),
+ getPrivateInt(getSkinName(), "shade_nomax_w", 500),
+ DEFAULT_SHADE_H
+ );
+ }
+ else
+ {
+ shade.resize(
+ getPrivateInt(getSkinName(), "nomax_x", shade.getLeft()),
+ getPrivateInt(getSkinName(), "nomax_y", shade.getTop()),
+ getPrivateInt(getSkinName(), "nomax_w", 700),
+ DEFAULT_SHADE_H
+ );
+ }
+ setPrivateInt(getSkinName(), "isMainWndMaximized", 0);
+ setImages (0);
+}
+
+maximizePlayer (boolean save)
+{
+ if (save)
+ {
+ savePos(SAVEPOS_NORMAL);
+ setPrivateInt(getSkinName(), "isMainWndMaximized", 1);
+ setImages (1);
+ }
+
+ double newscalevalue = normal.getScale();
+ int nh;
+ if (getPrivateString(getSkinName(), "Component", "Media Library") == "Hidden")
+ {
+ nh = DEFAULT_PLAYER_H;
+ }
+ else
+ {
+ nh = getViewPortHeightfromGuiObject(normal)/newscalevalue;
+ }
+ if (nh < 1) nh = DEFAULT_PLAYER_H;
+ normal.resize(getViewPortLeftfromGuiObject(normal), getViewPortTopfromGuiObject(normal), getViewPortWidthfromGuiObject(normal)/newscalevalue, nh);
+}
+
+restorePlayer ()
+{
+ //messagebox("restorePlayer", "", 0, "");
+
+ int x, y, w, h;
+ x = getPrivateInt(getSkinName(), "nomax_x", normal.getLeft());
+ y = getPrivateInt(getSkinName(), "nomax_y", normal.getTop());
+ w = getPrivateInt(getSkinName(), "nomax_w", normal.getWidth());
+
+ if (getPrivateString(getSkinName(), "Component", "Media Library") == "Hidden")
+ {
+ h = DEFAULT_PLAYER_H;
+ }
+ else
+ {
+ h = getPrivateInt(getSkinName(), "nomax_h", normal.getHeight());
+
+ }
+ // check if player_w is too small
+ if (w < stringToInteger(normal.getXmlParam("minimum_w"))) w = stringToInteger(normal.getXmlParam("minimum_w"));
+
+ normal.resize(x, y, w, h);
+ normal.sendAction("pledit_posupdate", "", 0,0,0,0);
+
+ setPrivateInt(getSkinName(), "isMainWndMaximized", 0);
+ setImages (0);
+}
+
+savePos (int code)
+{
+ if (!getPrivateInt(getSkinName(), "isMainWndMaximized", 0))
+ {
+ if (code == SAVEPOS_NORMAL || code == SAVEPOS_ALL)
+ {
+ if (getPrivateString(getSkinName(), "Component", "Media Library") != "Hidden")
+ {
+ int nnh = normal.getHeight();
+
+ //martin> i really dunno why i've added this code:
+ //if (nnh > 0 && nnh < 200) setPrivateInt(getSkinName(), "nomax_h", normal.getHeight());
+ //So lets try it again w/o switch in order to fix resizing - goto shade - goback - size not remembered bug
+ if (nnh > 200) setPrivateInt(getSkinName(), "nomax_h", normal.getHeight());
+ // ^ otherwise we save in collapsed mode
+ }
+ setPrivateInt(getSkinName(), "nomax_x", normal.getLeft());
+ setPrivateInt(getSkinName(), "nomax_y", normal.getTop());
+ if (normal.getWidth() > 0) setPrivateInt(getSkinName(), "nomax_w", normal.getWidth());
+ //debugInt(getPrivateInt(getSkinName(), "nomax_w", normal.getWidth()));
+ }
+ if (code == SAVEPOS_SHADE || code == SAVEPOS_ALL)
+ {
+ if (link_w_attrib.getData() == "0")
+ {
+ setPrivateInt(getSkinName(), "shade_nomax_x", shade.getLeft());
+ setPrivateInt(getSkinName(), "shade_nomax_y", shade.getTop());
+ if (shade.getWidth() > 0) setPrivateInt(getSkinName(), "shade_nomax_w", shade.getWidth());
+ }
+ else
+ {
+ if (shade.getWidth() > 0) setPrivateInt(getSkinName(), "nomax_w", shade.getWidth());
+ setPrivateInt(getSkinName(), "nomax_x", shade.getLeft());
+ setPrivateInt(getSkinName(), "nomax_y", shade.getTop());
+ }
+ //debugInt(getPrivateInt(getSkinName(), "nomax_w", shade.getWidth()));
+ //debugInt(getPrivateInt(getSkinName(), "shade_nomax_w", shade.getWidth()));
+ }
+ }
+ if (code == SAVEPOS_NORMAL || code == SAVEPOS_ALL)
+ {
+ if (getPrivateString(getSkinName(), "Component", "Media Library") == "Hidden") setPrivateInt(getSkinName(), "nomax_y_h", normal.getTop());
+ }
+ //debugInt(getPrivateInt(getSkinName(), "nomax_w", shade.getWidth()));
+}
+
+setWndToScreen ()
+{
+ int y = getViewPortTop();
+ int x = getViewPortLeft();
+ int h = getViewPortHeight();
+ int w = getViewPortWidth();
+
+ int sw = 0.8 * w;
+ int sh = 0.85 * h;
+
+ int mh = stringToInteger(normal.getXmlParam("minimum_h"));
+ int mw = stringToInteger(normal.getXmlParam("minimum_w"));
+
+ if (sh < mh) sh = mh;
+ if (sw < mw) sw = mw;
+
+/* int sx = x + (w-sw)/2;
+ int sy = y + (h-sh)/2;*/
+
+ normal.resize(normal.getLeft(), normal.getTop(), sw, sh);
+
+ setPrivateInt(getSkinName(), "First Start", 0);
+ setPrivateInt(getSkinName(), "isMainWndMaximized", 0);
+ setImages (0);
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/maximize.maki b/Src/resources/skins/Big Bento/scripts/maximize.maki
new file mode 100644
index 00000000..413673ca
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/maximize.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/mcvcore.m b/Src/resources/skins/Big Bento/scripts/mcvcore.m
new file mode 100644
index 00000000..e8a12077
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/mcvcore.m
@@ -0,0 +1,469 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: mcvcore.m
+Version: 4.5
+
+Type: maki
+Date: 13. Aug. 2007 - 11:22
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+
+Note: This script is based on drawer.m
+ from Winamp Modern, but extended to
+ 5 components presets!
+ Like in drawer.m I warn everybody not
+ to modify this script, cause it can be
+ harmed very fast! And you don't want
+ a buggy winamp skin, want you?
+
+ Since script version 3.1
+ (onesie build #022)
+ the script is devided into subscripts
+ for better debugging.
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#include <lib/std.mi>
+#include attribs/init_windowpage.m
+#include attribs/init_vis.m
+#include attribs/init_appearance.m
+
+//define DEBUG
+#define FILE_NAME "infocompcore.m"
+#include <lib/com/debug.m>
+
+#define VIS_GUID "{0000000A-000C-0010-FF7B-01014263450C}"
+
+#ifndef DOHIDEMCV
+#define updateSaving //
+#endif
+
+//define FIT_W2_COMP fit(sui_fi, 159, 0, 2, 0, -162, 1, 76, 0)
+#define FIT_W2_COMP fit(sui_fi, 234, 0, 2, 0, -236, 1, 117, 0)
+//define FIT_W_COMP fit(sui_fi, 81, 0, 2, 0, -84, 1, 76, 0)
+#define FIT_W_COMP fit(sui_fi, 119, 0, 2, 0, -121, 1, 117, 0)
+#define FIT_WO_COMP fit(sui_fi, 4, 0, 2, 0, -6, 1, 117, 0)
+
+Global Boolean bypasscancel;
+Global Timer callbackTimer, tempDisable;
+
+#define CURR_COMP plsc
+#include mcvcore/defs.m
+
+#ifdef IC_COVERFLOW
+#undef CURR_COMP
+#define CURR_COMP cflow
+#include mcvcore/defs.m
+#endif
+
+Function fit (group g, int x, int rx, int y, int ry, int w, int rw, int h, int rh);
+
+Function switchToIcOnly();
+Function switchToCover();
+Function switchToVisCover();
+Function switchToVis();
+Function switchToEQ();
+Function switchToCfg();
+Function switchToVis_Full();
+Function updateFileInfo();
+
+Function hideFi();
+Function showFi();
+Function hideCover();
+Function showCover();
+Function hideVis();
+Function showVis();
+Function hideVis_Full();
+Function showVis_Full();
+Function hideEq();
+Function showEq();
+Function hideCfg();
+Function showCfg();
+Function openIC();
+Function closeIC();
+Function openLC();
+Function closeLC();
+#ifdef DOHIDEMCV
+Function hideMCV();
+#endif
+
+Function onHideFi();
+Function onShowFi();
+Function onHideCover();
+Function onShowCover();
+Function onHideVis();
+Function onShowVis();
+Function onHideVis_Full();
+Function onShowVis_Full();
+Function onHideEq();
+Function onShowEq();
+Function onHideCfg();
+Function onShowCfg();
+Function onCloseIC();
+Function onOpenIC();
+Function onhideMCV();
+
+Function dc_hideFi();
+Function dc_showFi();
+Function dc_showEq();
+Function dc_hideEq();
+Function dc_showCfg();
+Function dc_hideCfg();
+Function dc_hideCover();
+Function dc_showCover();
+Function dc_hideVis();
+Function dc_showVis();
+Function dc_hideVis_Full();
+Function dc_showVis_Full();
+
+Function updateFooter();
+
+Function ProcessMenuResult (int a);
+
+#ifdef DOHIDEMCV
+function updateSaving (int l);
+#endif
+
+Global Group sg, sui_cover, sui_vis_full, sui_vis, sui_fi, sui_eq, sui_cfg, g_footer, g_visbtns;
+Global WindowHolder sui_vis_wdh, sui_vis_full_wdh;
+Global Layout main;
+Global Boolean callback_showing_vis, callback_hiding_vis, callback_showing_vis_full, callback_hiding_vis_full, callback_showing_cover, callback_hiding_cover, callback_showing_fi, callback_hiding_fi, callback_hiding_eq, callback_showing_eq, callback_hiding_cfg, callback_showing_cfg;
+Global Boolean showing_vis, hiding_vis, showing_vis_full, hiding_vis_full, showing_cover, hiding_cover, hiding_fi, showing_fi, showing_eq, hiding_eq, showing_cfg, hiding_cfg;
+Global Boolean Mychange;
+Global Boolean prevent_vis = 1;
+Global Frame dualwnd, mainframe;
+Global GuiObject footerGrid, sendToBtn;
+
+Global Popupmenu compMenu;
+// Global Button compChoose, nowPlayingBtn, webSearchBtn;
+Global Button compChoose;
+Global Boolean startup_done;
+Global Int substract = 0;
+
+#ifdef DOHIDEMCV
+Global Int last_menu_sel;
+#endif
+
+// script loading/unloading goes here
+#include mcvcore/load_handles.m
+
+// open / hiding components not caused by button clicks
+#include mcvcore/external_handles.m
+
+// showing and hiding the components
+#include mcvcore/show_hide.m
+
+
+/* Switching menu */
+compChoose.onRightButtonUp(int x, int y)
+{
+ complete;
+}
+
+compChoose.onRightClick () {
+ compChoose.onLeftClick ();
+}
+
+compChoose.onLeftClick ()
+{
+ compMenu = new Popupmenu;
+ popupmenu fiSub = new Popupmenu;
+ compMenu.addCommand("File Info", 1, ic_fileinfo.getData() == "1", 0);
+#ifdef IC_COVERFLOW
+ compMenu.addCommand("Cover Flow", 7, _cflow_ic_attrib.getData() == "1", 0);
+#endif
+ // System.isSafeMode() is not recognized by mc.exe
+ // if(!System.isSafeMode())
+ // {
+ compMenu.addCommand("Visualization", 2, ic_vis.getData() == "1", 0);
+ // }
+ compMenu.addCommand("Stored Playlists", 3, _plsc_ic_attrib.getData() == "1", 0);
+ compMenu.addCommand("Equalizer", 4, ic_eq.getData() == "1", 0);
+ compMenu.addCommand("Skin Settings", 5, ic_config.getData() == "1", 0);
+#ifdef DOHIDEMCV
+ compMenu.addCommand("Hide Multi Content View", 6, ic_hidden.getData() == "1", 0);
+#endif
+ compMenu.addSeparator();
+ compMenu.addSubmenu(fiSub, "File Info Components");
+
+ // System.isSafeMode() is not recognized by mc.exe
+ // if(!System.isSafeMode())
+ // {
+ fiSub.addCommand("Visualization", 12, ic_vis_fileinfo.getData() == "1", 0);
+ // }
+ fiSub.addCommand("Album Art", 11, ic_cover_fileinfo.getData() == "1", 0);
+ fiSub.addSeparator();
+ fiSub.addCommand("Show Track #", 24, infocomp_show_track.getData() == "1", 0);
+ fiSub.addCommand("Show Year", 21, infocomp_show_year.getData() == "1", 0);
+ fiSub.addCommand("Show Genre", 22, infocomp_show_genre.getData() == "1", 0);
+ fiSub.addCommand("Show Disc", 28, infocomp_show_disc.getData() == "1", 0);
+ fiSub.addCommand("Show Album Artist", 25, infocomp_show_albumartist.getData() == "1", 0);
+ fiSub.addCommand("Show Composer", 26, infocomp_show_composer.getData() == "1", 0);
+ fiSub.addCommand("Show Publisher", 23, infocomp_show_publisher.getData() == "1", 0);
+ fiSub.addCommand("Show Decoder", 27, infocomp_show_format.getData() == "1", 0);
+ fiSub.addCommand("Show Song Rating", 20, infocomp_show_rating.getData() == "1", 0);
+ fiSub.addSeparator();
+ fiSub.addCommand("Cycle File Info", 30, infocomp_cycle.getData() == "1", 0);
+ fiSub.addSeparator();
+ //fiSub.addCommand("Open Links in Now Playing", 40, infocomp_nowplaying.getData() == "1", 0);
+ //fiSub.addCommand("Open Links in Browser", 41, infocomp_browser.getData() == "1", 0);
+
+ ProcessMenuResult (compMenu.popAtXY(clientToScreenX(compChoose.getLeft()), clientToScreenY(compChoose.getTop() + compChoose.getHeight())));
+ delete compMenu;
+ delete fiSub;
+ complete;
+}
+
+ProcessMenuResult (int a)
+{
+ if (a < 1) return;
+ if (a == 1)
+ {
+ ic_fileinfo.setData("1");
+ }
+ else if (a == 2)
+ {
+ ic_vis.setData("1");
+ }
+ else if (a == 3)
+ {
+ _plsc_ic_attrib.setData("1");
+ }
+#ifdef IC_COVERFLOW
+ else if (a == 7)
+ {
+ _cflow_ic_attrib.setData("1");
+ }
+#endif
+ else if (a == 4)
+ {
+ ic_eq.setData("1");
+ }
+ else if (a == 5)
+ {
+ ic_config.setData("1");
+ }
+#ifdef DOHIDEMCV
+ else if (a == 6)
+ {
+ ic_hidden.setData("1");
+ }
+#endif
+ else if (a == 11)
+ {
+ toggleAttrib(ic_cover_fileinfo);
+ }
+ else if (a == 12)
+ {
+ toggleAttrib(ic_vis_fileinfo);
+ }
+ else if (a == 20)
+ {
+ toggleAttrib(infocomp_show_rating);
+ }
+ else if (a == 21)
+ {
+ toggleAttrib(infocomp_show_year);
+ }
+ else if (a == 22)
+ {
+ toggleAttrib(infocomp_show_genre);
+ }
+ else if (a == 23)
+ {
+ toggleAttrib(infocomp_show_publisher);
+ }
+ else if (a == 24)
+ {
+ toggleAttrib(infocomp_show_track);
+ }
+ else if (a == 25)
+ {
+ toggleAttrib(infocomp_show_albumartist);
+ }
+ else if (a == 26)
+ {
+ toggleAttrib(infocomp_show_composer);
+ }
+ else if (a == 27)
+ {
+ toggleAttrib(infocomp_show_format);
+ }
+ else if (a == 28)
+ {
+ toggleAttrib(infocomp_show_disc);
+ }
+ else if (a == 30)
+ {
+ toggleAttrib(infocomp_cycle);
+ }
+/* else if (a == 40)
+ {
+ toggleAttrib(infocomp_nowplaying);
+ }
+ else if (a == 41)
+ {
+ toggleAttrib(infocomp_browser);
+ }
+*/
+}
+
+// Hiding footer buttons (for file info view)
+
+/* artist_info_buttons_attrib.onDataChanged ()
+{
+
+ updateFooter ();
+}
+*/
+g_footer.onResize (int x, int y, int w, int h)
+{
+ if (substract == 1)
+ w += stringToInteger(dualwnd.getXmlParam("maxwidth")) + 78;
+ else if (substract == 2)
+ w += stringToInteger(dualwnd.getXmlParam("maxwidth")) + 102;
+
+/* if (artist_info_buttons_attrib.getData() == "1")
+ {
+ if (w < 132) footerGrid.hide();
+ else footerGrid.show();
+
+ if (w < 125) nowPlayingBtn.hide();
+ else nowPlayingBtn.show();
+
+ if (w < 94) webSearchBtn.hide();
+ else webSearchBtn.show();
+ }
+ else
+ {
+ if (w < 70) footerGrid.hide();
+ else footerGrid.show();
+ nowPlayingBtn.hide();
+ webSearchBtn.hide();
+ }
+*/
+ if (w < 63) sendToBtn.hide();
+ else sendToBtn.show();
+
+ if (w < 32) compChoose.hide();
+ else compChoose.show();
+}
+
+updateFooter ()
+{
+ g_footer.onResize (0, 0, g_footer.getWidth(), 0);
+}
+
+#ifdef DOHIDEMCV
+// Switching back from no comp
+
+sg.onResize (int x, int y, int w, int h)
+{
+
+ if (ic_hidden.getData() == "0" || last_menu_sel == 0 || w == 0)// && dualwnd.getXmlParam("from") == "left")
+ {
+ return;
+ }
+ ProcessMenuResult (getPrivateInt(getSkinName(), "MCV last sel", 1));
+}
+
+// save last pos
+
+updateSaving (int l)
+{
+ if (last_menu_sel == l)
+ {
+ return;
+ }
+ if (last_menu_sel != 0) setPrivateInt(getSkinName(), "MCV last sel", last_menu_sel);
+ last_menu_sel = l;
+}
+#endif
+
+/** OSD */
+/*
+Global boolean mouse_is_over = FALSE;
+
+osd_trigger.onEnterArea ()
+{
+ //setXmlParam("ghost", "1");
+}
+
+osd_trigger.onMouseMove (int x, int y)
+{
+ if (!isMouseOverRect() && mouse_is_over)
+ {
+ mouse_is_over = 0;
+ component c = sui_vis_full.findObject("vis");
+ c.sendAction("setregion", "vis.normal.region", 0, 0, 0, 0);
+ c = sui_vis.findObject("vis");
+ c.sendAction("setregion", "vis.normal.region", 0, 0, 0, 0);
+ }
+ else if (isMouseOverRect() && !mouse_is_over)
+ {
+ mouse_is_over = 1;
+ component c = sui_vis_full.findObject("vis");
+ c.sendAction("setregion", "vis.button.region", 0, 0, 0, 0);
+ c = sui_vis.findObject("vis");
+ c.sendAction("setregion", "vis.button.region", 0, 0, 0, 0);
+ }
+}
+
+osd_trigger.onLeaveArea ()
+{
+ component c = sui_vis_full.findObject("vis");
+ c.sendAction("setregion", "vis.normal.region", 0, 0, 0, 0);
+}*/
+
+/** Calls after comp is shown */
+
+onCloseIC() {}
+onOpenIC() {}
+
+onShowCover() {}
+
+onHideCover() {}
+
+onShowFi() {}
+
+onHideFi() {}
+
+onShowEq() {}
+
+onHideEq() {}
+
+onShowCfg() {}
+
+onHideCfg() {}
+
+onShowVis()
+{
+ g_visbtns.show();
+}
+onHideVis()
+{
+ g_visbtns.hide();
+}
+
+onShowVis_Full() {}
+
+onHideVis_Full() {}
+
+#ifdef DOHIDEMCV
+onhideMCV() {}
+#endif
+
+fit (group g, int x, int rx, int y, int ry, int w, int rw, int h, int rh)
+{
+ if (!g) return;
+ g.setXmlParam("x", integerToString(x));
+ g.setXmlParam("y", integerToString(y));
+ g.setXmlParam("w", integerToString(w));
+ g.setXmlParam("h", integerToString(h));
+ g.setXmlParam("relatx", integerToString(rx));
+ g.setXmlParam("relaty", integerToString(ry));
+ g.setXmlParam("relatw", integerToString(rw));
+ g.setXmlParam("relath", integerToString(rh));
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/mcvcore.maki b/Src/resources/skins/Big Bento/scripts/mcvcore.maki
new file mode 100644
index 00000000..4a5139f2
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/mcvcore.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/mcvcore/defs.m b/Src/resources/skins/Big Bento/scripts/mcvcore/defs.m
new file mode 100644
index 00000000..eb75a680
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/mcvcore/defs.m
@@ -0,0 +1,98 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: defs.m
+Version: 1.0
+
+Type: maki
+Date: 08. Jun. 2007 - 23:32
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+Depending Files:
+ scripts/infocompcore.maki
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#ifndef included
+#error This script can only be compiled as a #include
+#endif
+
+
+Function _##CURR_COMP##_switchTo();
+Function _##CURR_COMP##_show();
+Function _##CURR_COMP##_hide();
+
+Function _##CURR_COMP##_onHide();
+Function _##CURR_COMP##_onShow();
+
+Function _##CURR_COMP##_dc_show();
+Function _##CURR_COMP##_dc_hide();
+
+Global Group _##CURR_COMP##_sui;
+Global Boolean _##CURR_COMP##_callback_hiding, _##CURR_COMP##_callback_showing;
+Global Boolean _##CURR_COMP##_showing, _##CURR_COMP##_hiding;
+
+
+
+_##CURR_COMP##_show()
+{
+ debugString(DEBUG_PREFIX "_##CURR_COMP##_show() {", D_WTF);
+
+ _##CURR_COMP##_showing = 1;
+ GuiObject o = _##CURR_COMP##_sui;
+ if (o != NULL)
+ {
+ bypasscancel = 1;
+ if (o) o.show();
+ bypasscancel = 0;
+ debugString(DEBUG_PREFIX " --> ok", D_WTF);
+ }
+#ifdef DEBUG
+ else debugString(DEBUG_PREFIX " --> (!) ##CURR_COMP## object not provided (show)", D_WTF);
+#endif
+ _##CURR_COMP##_onShow();
+ _##CURR_COMP##_showing = 0;
+
+ debugString(DEBUG_PREFIX "}", D_WTF);
+}
+
+_##CURR_COMP##_hide()
+{
+ debugString(DEBUG_PREFIX "_##CURR_COMP##_hide() {", D_WTF);
+
+ _##CURR_COMP##_hiding = 1;
+ GuiObject o = _##CURR_COMP##_sui;
+ if (o != NULL) {
+ bypasscancel = 1;
+ if (o) o.hide();
+ bypasscancel = 0;
+ debugString(DEBUG_PREFIX " --> ok", D_WTF);
+ }
+#ifdef DEBUG
+ else debugString(DEBUG_PREFIX " --> (!) ##CURR_COMP## object not provided (hide)", D_WTF);
+#endif
+ _##CURR_COMP##_onHide();
+ _##CURR_COMP##_hiding = 0;
+
+ debugString(DEBUG_PREFIX "}", D_WTF);
+}
+
+_##CURR_COMP##_dc_show ()
+{
+ debugString(DEBUG_PREFIX "_##CURR_COMP##__dc_show();", D_WTF);
+ _##CURR_COMP##_callback_showing = 1;
+ _##CURR_COMP##_callback_hiding = 0;
+ callbackTimer.start();
+}
+
+_##CURR_COMP##_dc_hide()
+{
+ _##CURR_COMP##_callback_showing = 0;
+ _##CURR_COMP##_callback_hiding = 1;
+ callbackTimer.start();
+}
+
+_##CURR_COMP##_onShow() {}
+_##CURR_COMP##_onHide() {} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/mcvcore/external_handles.m b/Src/resources/skins/Big Bento/scripts/mcvcore/external_handles.m
new file mode 100644
index 00000000..7d86bf6f
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/mcvcore/external_handles.m
@@ -0,0 +1,295 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: external_handles.m
+Version: 1.0
+
+Type: maki
+Date: 29. Nov. 2006 - 15:57
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+Depending Files:
+ scripts/suicore.maki
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#ifndef included
+#error This script can only be compiled as a #include
+#endif
+
+#ifdef DEBUG
+/** has only debug aims :) */
+/*
+System.onLookForComponent(String guid) {
+debugString(DEBUG_PREFIX "System.onLookForComponent ( "+ guid + " )", D_WTF);
+}*/
+#endif
+
+#ifdef IC_COVERFLOW
+#define ACTIONPERFORMED showing_Fi || hiding_Fi || showing_Cover || hiding_Cover || showing_Vis || hiding_Vis || showing_Vis_Full || hiding_Vis_Full || hiding_eq || showing_eq || hiding_cfg || showing_cfg || _plsc_hiding || _plsc_showing || _cflow_hiding || _cflow_showing
+#endif
+#ifndef IC_COVERFLOW
+#define ACTIONPERFORMED showing_Fi || hiding_Fi || showing_Cover || hiding_Cover || showing_Vis || hiding_Vis || showing_Vis_Full || hiding_Vis_Full || hiding_eq || showing_eq || hiding_cfg || showing_cfg || _plsc_hiding || _plsc_showing
+#endif
+/** the component switching */
+
+System.onGetCancelComponent(String guid, boolean goingvisible) {
+ debugString(DEBUG_PREFIX "System.onGetCancelComponent ( "+ guid + " , " + integerToString(goingvisible) + " ) {", D_WTF);
+
+ if (bypasscancel)
+ {
+ debugString(DEBUG_PREFIX " --> bypasscancel", 0);
+ debugString(DEBUG_PREFIX " return FALSE;", 0);
+ debugString(DEBUG_PREFIX "}", 0);
+
+ return FALSE;
+ }
+ if (guid == VIS_GUID && !goingvisible && hiding_vis)
+ {
+ debugString(DEBUG_PREFIX " --> hiding_vis", D_WTF);
+ debugString(DEBUG_PREFIX " return FALSE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+
+ return FALSE;
+ }
+ if (guid == VIS_GUID && goingvisible && showing_vis)
+ {
+ debugString(DEBUG_PREFIX " --> showing_vis", D_WTF);
+ debugString(DEBUG_PREFIX " return FALSE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+
+ return FALSE;
+ }
+ if (guid == VIS_GUID && !goingvisible && hiding_vis_full)
+ {
+ debugString(DEBUG_PREFIX " --> hiding_vis", D_WTF);
+ debugString(DEBUG_PREFIX " return FALSE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+
+ return FALSE;
+ }
+ if (guid == VIS_GUID && goingvisible && showing_vis_full)
+ {
+ debugString(DEBUG_PREFIX " --> showing_vis", D_WTF);
+ debugString(DEBUG_PREFIX " return FALSE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+
+ return FALSE;
+ }
+
+ if (!main.isVisible())
+ {
+ debugString(DEBUG_PREFIX " --> main layout isn't visible", 0);
+ debugString(DEBUG_PREFIX " return FALSE;", 0);
+ debugString(DEBUG_PREFIX "}", 0);
+
+ return FALSE;
+ }
+
+ if (goingvisible) {
+ if (guid == VIS_GUID)
+ {
+ if (vis_inbig_attrib.getData() == "1") return FALSE;
+ debugString(DEBUG_PREFIX " --> external showing_vis --- start Timer", D_WTF);
+ if (vis_lefttoplayer_attrib.getData() == "1" && !sui_vis.isVisible())
+ {
+ sui_vis_wdh.setXmlParam("autoopen", "0");
+ //showVis();
+ callback_showing_vis = 1;
+ callback_hiding_vis = 0;
+ callbackTimer.onTimer();
+
+ sui_vis_wdh.setXmlParam("autoopen", "1");
+
+ debugString(DEBUG_PREFIX " --> open SMALL", D_WTF);
+ debugString(DEBUG_PREFIX " return TRUE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+ return FALSE;
+ }
+ if (vis_lefttoplayer_full_attrib.getData() == "1" && !sui_vis_full.isVisible())
+ {
+ sui_vis_full_wdh.setXmlParam("autoopen", "0");
+ //switchToVis_Full();
+ callback_showing_vis_full = 1;
+ callback_hiding_vis_full = 0;
+ callbackTimer.onTimer();
+ sui_vis_full_wdh.setXmlParam("autoopen", "1");
+
+ debugString(DEBUG_PREFIX " --> open FULL", D_WTF);
+ debugString(DEBUG_PREFIX " return TRUE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+ return FALSE;
+ }
+ debugString(DEBUG_PREFIX " return FALSE; (other handle?)", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+ return FALSE;
+ }
+ }
+ if (!goingvisible) {
+ if (guid == VIS_GUID && (sui_vis.isVisible() || sui_vis_full.isVisible())) {
+ if (vis_inbig_attrib.getData() == "1") return FALSE;
+ debugString(DEBUG_PREFIX " --> external hiding_vis", D_WTF);
+
+ if (ic_vis.getdata() == "1")
+ {
+ ic_fileinfo.setdata("1");
+ }
+
+ ic_vis_fileinfo.setData("0");
+
+ debugString(DEBUG_PREFIX " return FALSE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+ return FALSE;
+ }
+ }
+
+ debugString(DEBUG_PREFIX " --> Went thru", D_WTF);
+ debugString(DEBUG_PREFIX " return FALSE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+
+ return FALSE;
+}
+
+ic_cover_fileinfo.onDataChanged ()
+{
+ if (ic_fileinfo.getData() == "0") return;
+ if ( ACTIONPERFORMED ) return;
+ if (mychange) return;
+ mychange = 1;
+ updateFileInfo();
+ mychange = 0;
+}
+
+ic_fileinfo.onDataChanged ()
+{
+ if ( ACTIONPERFORMED ) return;
+ if (mychange) return;
+ mychange = 1;
+ if (getData() == "1")
+ {
+ updateFileInfo();
+ }
+ mychange = 0;
+}
+
+ic_eq.onDataChanged ()
+{
+ if ( ACTIONPERFORMED ) return;
+ if (mychange) return;
+ mychange = 1;
+ if (getData() == "1")
+ {
+ switchToEq();
+ }
+ mychange = 0;
+}
+
+ic_config.onDataChanged ()
+{
+ if ( ACTIONPERFORMED ) return;
+ if (mychange) return;
+ mychange = 1;
+ if (getData() == "1")
+ {
+ switchToCfg();
+ }
+ mychange = 0;
+}
+
+_plsc_ic_attrib.onDataChanged ()
+{
+ if ( ACTIONPERFORMED ) return;
+ if (mychange) return;
+ mychange = 1;
+ if (getData() == "1")
+ {
+ _Plsc_switchTo();
+ }
+ mychange = 0;
+}
+
+#ifdef IC_COVERFLOW
+_cflow_ic_attrib.onDataChanged ()
+{
+ if ( ACTIONPERFORMED ) return;
+ if (mychange) return;
+ mychange = 1;
+ if (getData() == "1")
+ {
+ _Cflow_switchTo();
+ }
+ mychange = 0;
+}
+#endif
+
+ic_vis.onDataChanged ()
+{
+ if ( ACTIONPERFORMED ) return;
+ if (mychange) return;
+ mychange = 1;
+ if (getData() == "1")
+ {
+ ic_vis_fileinfo.setData("0");
+ switchToVis_Full();
+ }
+ mychange = 0;
+}
+
+ic_vis_fileinfo.onDataChanged ()
+{
+ if (ic_fileinfo.getData() == "0") return;
+ if ( ACTIONPERFORMED ) return;
+ if (mychange) return;
+ mychange = 1;
+ updateFileInfo();
+ mychange = 0;
+}
+#ifdef DOHIDEMCV
+ic_hidden.onDataChanged ()
+{
+ if ( ACTIONPERFORMED ) return;
+ if (mychange) return;
+ mychange = 1;
+ if (getData() == "1")
+ {
+ hideMCV();
+ }
+ mychange = 0;
+}
+#endif
+vis_lefttoplayer_attrib.onDataChanged ()
+{
+ if (mychange) return;
+ String window_content = getPrivateString(getSkinName(), "Component", "Media Library");
+ int xg = getPrivateInt(getSkinName(), "ComponentXgive", 0);
+ if (getData() == "1" && (window_content == "Vis" || ic_vis.getData() == "1" || xg))
+ {
+ if (xg) setPrivateInt(getSkinName(), "ComponentXgive", 0);
+ ic_vis_fileinfo.setData("1");
+ ic_fileinfo.setData("0");
+ }
+ else if (getData() == "0" && sui_vis.isVisible() && vis_lefttoplayer_full_attrib.getData() != "1")
+ {
+ setPrivateInt(getSkinName(), "ComponentXgive", 1);
+ ic_vis_fileinfo.setData("0");
+ }
+}
+
+vis_lefttoplayer_full_attrib.onDataChanged ()
+{
+ if (mychange) return;
+ String window_content = getPrivateString(getSkinName(), "Component", "Media Library");
+ int xg = getPrivateInt(getSkinName(), "ComponentXgive", 0);
+ if (getData() == "1" && (window_content == "Vis" || ic_vis_fileinfo.getData() == "1" || xg))
+ {
+ if (xg) setPrivateInt(getSkinName(), "ComponentXgive", 0);
+ switchToVis_Full();
+ }
+ else if (getData() == "0" && sui_vis_full.isVisible() && vis_lefttoplayer_attrib.getData() != "1")
+ {
+ setPrivateInt(getSkinName(), "ComponentXgive", 1);
+ updateFileInfo();
+ }
+}
diff --git a/Src/resources/skins/Big Bento/scripts/mcvcore/load_handles.m b/Src/resources/skins/Big Bento/scripts/mcvcore/load_handles.m
new file mode 100644
index 00000000..00a1f78a
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/mcvcore/load_handles.m
@@ -0,0 +1,138 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: load_handles.m
+Version: 1.0
+
+Type: maki
+Date: 28. Dez. 2006 - 08:40
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+Depending Files:
+ scripts/infocompcore.maki
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#ifndef included
+#error This script can only be compiled as a #include
+#endif
+
+System.onScriptLoaded ()
+{
+ initAttribs_windowpage();
+ initAttribs_vis();
+ initAttribs_Appearance();
+
+ debugString(DEBUG_PREFIX "System.onScriptLoded() {", 0);
+
+ sg = getScriptGroup();
+ main = sg.getParentLayout();
+
+ if (getParam() == "big")
+ {
+ mainframe = main.getObject("player.mainframe.big");
+ }
+ else
+ {
+ mainframe = main.getObject("player.mainframe");
+ }
+
+ dualwnd = mainframe.findObject("player.dualwnd");
+
+ sui_cover = sg.findObject("info.component.cover");
+ sui_vis = sg.findObject("info.component.vis");
+ sui_vis_full = sg.findObject("info.component.vis.full");
+ sui_vis_wdh = sui_vis.getObject("vis");
+ sui_vis_full_wdh = sui_vis_full.getObject("vis");
+ sui_fi = sg.findObject("info.component.infodisplay");
+ sui_eq = sg.findObject("info.component.eq");
+ sui_cfg = sg.findObject("info.component.config");
+ _plsc_sui = sg.findObject("info.component.plsidecar");
+#ifdef IC_COVERFLOW
+ _cflow_sui = sg.findObject("info.component.coverflow");
+#endif
+ g_footer = sg.findObject("infocomp.background.footer");
+ g_visbtns = g_footer.findObject("infocomp.visbuttons");
+ footerGrid = g_footer.findObject("footer.background.grid");
+
+ compChoose = sg.findObject("comp.menu");
+ sendToBtn = sg.findObject("sendTo");
+ //nowPlayingBtn = sg.findObject("nowplaying");
+ //webSearchBtn = sg.findObject("search");
+#ifdef DOHIDEMCV
+ last_menu_sel = getPrivateInt(getSkinName(), "MCV last sel", 1);
+#endif
+ callbackTimer = new Timer;
+ callbackTimer.setDelay(1);
+ tempDisable = new Timer;
+ tempDisable.setDelay(50);
+
+ if (ic_fileinfo.getData() == "1")
+ {
+ updateFileInfo ();
+ }
+ else if (ic_vis.getData() == "1")
+ {
+ switchToVis_Full();
+ }
+ else if (ic_eq.getData() == "1")
+ {
+ switchToEq();
+ }
+ else if (ic_config.getData() == "1")
+ {
+ switchToCfg();
+ }
+ else if (_plsc_ic_attrib.getData() == "1")
+ {
+ _plsc_switchTo();
+ }
+#ifdef IC_COVERFLOW
+ else if (_cflow_ic_attrib.getData() == "1")
+ {
+ _cflow_switchTo();
+ }
+#endif
+#ifdef DOHIDEMCV
+ else if (ic_hidden.getData() == "1")
+ {
+ hideMCV();
+ }
+#endif
+ startup_done = 1;
+ debugString(DEBUG_PREFIX "}", 0);
+ prevent_vis = 0;
+}
+
+updateFileInfo ()
+{
+ if (ic_vis_fileinfo.getData() == "1" && ic_cover_fileinfo.getData() == "1")
+ {
+ switchToVisCover();
+ }
+ else if (ic_vis_fileinfo.getData() == "1")
+ {
+ switchToVis();
+ }
+ else if (ic_cover_fileinfo.getData() == "1")
+ {
+ switchToCover();
+ }
+ else
+ {
+ switchToIcOnly();
+ }
+}
+
+System.onScriptUnloading ()
+{
+ debugString(DEBUG_PREFIX "System.onScriptUnloading() {", 0);
+
+ delete callbackTimer;
+ delete tempDisable;
+
+ debugString(DEBUG_PREFIX " delete Timers;", 0);
+ debugString(DEBUG_PREFIX "}", 0);
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/mcvcore/show_hide.m b/Src/resources/skins/Big Bento/scripts/mcvcore/show_hide.m
new file mode 100644
index 00000000..28a6f2f3
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/mcvcore/show_hide.m
@@ -0,0 +1,915 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: show_hide.m
+Version: 1.0
+
+Type: maki
+Date: 29. Nov. 2006 - 15:57
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+Depending Files:
+ scripts/infocompcore.maki
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#ifndef included
+#error This script can only be compiled as a #include
+#endif
+
+switchToCover ()
+{
+ if (callbackTimer.isRunning()) return;
+ if (tempDisable.isRunning()) return;
+ tempDisable.start();
+ hideVis();
+ hideVis_Full();
+ hideEq();
+ hideCfg();
+ openIC();
+ _Plsc_hide();
+#ifdef IC_COVERFLOW
+ _Cflow_hide();
+#endif
+ mychange = 1;
+ if (startup_done)
+ {
+ ic_cover_fileinfo.setData("1");
+ ic_fileinfo.setData("1");
+ }
+ mychange = 0;
+ substract = 0;
+ sui_cover.setXmlParam("x", "4");
+
+ dualwnd.setXmlParam("maxwidth", "-127");
+ dualwnd.sendAction("set_maxwidth", "", -127, 0 , 0, 0);
+
+ g_footer.setXmlParam("x", "117");
+ g_footer.setXmlParam("w", "-118");
+
+ updateFooter();
+
+#ifdef DOHIDEMCV
+ dualwnd.setXmlParam("from", "right");
+ dualwnd.setXmlParam("minwidth", "147");
+#endif
+ showCover();
+ FIT_W_COMP;
+ updateSaving(1);
+}
+
+switchToVisCover ()
+{
+ if (callbackTimer.isRunning()) return;
+ if (tempDisable.isRunning()) return;
+ tempDisable.start();
+ hideVis_Full();
+ hideEq();
+ hideCfg();
+ openIC();
+ _Plsc_hide();
+#ifdef IC_COVERFLOW
+ _Cflow_hide();
+#endif
+ mychange = 1;
+ if (startup_done)
+ {
+ ic_cover_fileinfo.setData("1");
+ ic_vis_fileinfo.setData("1");
+ vis_lefttoplayer_attrib.setData("1");
+ ic_fileinfo.setData("1");
+ }
+ mychange = 0;
+ substract = 0;
+ sui_cover.setXmlParam("x", "119");
+
+ dualwnd.setXmlParam("maxwidth", "-242");
+ dualwnd.sendAction("set_maxwidth", "", -242, 0 , 0, 0);
+
+ g_footer.setXmlParam("x", "232");
+ g_footer.setXmlParam("w", "-234");
+
+ updateFooter();
+
+#ifdef DOHIDEMCV
+ dualwnd.setXmlParam("from", "right");
+ dualwnd.setXmlParam("minwidth", "147");
+#endif
+ showCover();
+ showVis();
+ FIT_W2_COMP;
+ updateSaving(1);
+}
+switchToVis ()
+{
+ debugString(DEBUG_PREFIX "switchToVis();", D_WTF);
+ if (callbackTimer.isRunning()) return;
+ if (tempDisable.isRunning()) return;
+ tempDisable.start();
+ hideCover();
+ hideVis_Full();
+ hideEq();
+ hideCfg();
+ openIC();
+ _Plsc_hide();
+#ifdef IC_COVERFLOW
+ _Cflow_hide();
+#endif
+ mychange = 1;
+ if (startup_done)
+ {
+ ic_vis_fileinfo.setData("1");
+ vis_lefttoplayer_attrib.setData("1");
+ ic_fileinfo.setData("1");
+ }
+ mychange = 0;
+ substract = 1;
+
+ dualwnd.setXmlParam("maxwidth", "-127");
+ dualwnd.sendAction("set_maxwidth", "", -127, 0 , 0, 0);
+
+ g_footer.setXmlParam("x", "117");
+ g_footer.setXmlParam("w", "-118");
+
+ updateFooter();
+
+#ifdef DOHIDEMCV
+ dualwnd.setXmlParam("from", "right");
+ dualwnd.setXmlParam("minwidth", "147");
+#endif
+
+ showVis();
+ FIT_W_COMP;
+ updateSaving(1);
+}
+
+switchToIcOnly ()
+{
+ if (callbackTimer.isRunning()) return;
+ if (tempDisable.isRunning()) return;
+ tempDisable.start();
+ hideVis_Full();
+ hideVis();
+ hideCover();
+ hideEq();
+ hideCfg();
+ _Plsc_hide();
+#ifdef IC_COVERFLOW
+ _Cflow_hide();
+#endif
+ mychange = 1;
+ if (startup_done) ic_fileinfo.setData("1");
+ //ic_vis_fileinfo.setData("0");
+ //ic_vis.setData("0");
+ mychange = 0;
+ substract = 0;
+
+ dualwnd.setXmlParam("maxwidth", "-127");
+ dualwnd.sendAction("set_maxwidth", "", -127, 0 , 0, 0);
+
+ g_footer.setXmlParam("x", "6");
+ g_footer.setXmlParam("w", "-7");
+
+ updateFooter();
+
+#ifdef DOHIDEMCV
+ dualwnd.setXmlParam("from", "right");
+ dualwnd.setXmlParam("minwidth", "147");
+#endif
+ showFi();
+ FIT_WO_COMP;
+ updateSaving(1);
+}
+
+switchToEq ()
+{
+ if (callbackTimer.isRunning()) return;
+ if (tempDisable.isRunning()) return;
+ tempDisable.start();
+ hideVis_Full();
+ hideVis();
+ hideCover();
+ hideFi();
+ hideCfg();
+ _Plsc_hide();
+#ifdef IC_COVERFLOW
+ _Cflow_hide();
+#endif
+ mychange = 1;
+ substract = 1;
+ ic_eq.setData("1");
+ //ic_vis_fileinfo.setData("0");
+ //ic_vis.setData("0");
+ mychange = 0;
+
+ dualwnd.setXmlParam("maxwidth", "-196");
+ dualwnd.sendAction("set_maxwidth", "", -196, 0 , 0, 0);
+
+ g_footer.setXmlParam("x", "6");
+ g_footer.setXmlParam("w", "-7");
+
+ updateFooter();
+
+#ifdef DOHIDEMCV
+ dualwnd.setXmlParam("from", "right");
+ dualwnd.setXmlParam("minwidth", "147");
+#endif
+
+ showEq();
+ updateSaving(4);
+}
+
+switchToCfg ()
+{
+ if (callbackTimer.isRunning()) return;
+ if (tempDisable.isRunning()) return;
+ tempDisable.start();
+ hideVis_Full();
+ hideVis();
+ hideCover();
+ hideFi();
+ hideEq();
+ _Plsc_hide();
+#ifdef IC_COVERFLOW
+ _Cflow_hide();
+#endif
+ mychange = 1;
+ ic_config.setData("1");
+ //ic_vis_fileinfo.setData("0");
+ //ic_vis.setData("0");
+ mychange = 0;
+ substract = 2;
+
+ dualwnd.setXmlParam("maxwidth", "-242");
+ dualwnd.sendAction("set_maxwidth", "", -242, 0 , 0, 0);
+
+ g_footer.setXmlParam("x", "6");
+ g_footer.setXmlParam("w", "-7");
+
+ updateFooter();
+
+#ifdef DOHIDEMCV
+ dualwnd.setXmlParam("from", "right");
+ dualwnd.setXmlParam("minwidth", "147");
+#endif
+
+ showCfg();
+ updateSaving(5);
+}
+
+_Plsc_switchTo ()
+{
+ if (callbackTimer.isRunning()) return;
+ if (tempDisable.isRunning()) return;
+ tempDisable.start();
+ hideVis_Full();
+ hideVis();
+ hideCover();
+ hideFi();
+ hideEq();
+ hideCfg();
+#ifdef IC_COVERFLOW
+ _Cflow_hide();
+#endif
+ mychange = 1;
+ _plsc_ic_attrib.setData("1");
+ //ic_vis_fileinfo.setData("0");
+ //ic_vis.setData("0");
+ mychange = 0;
+ substract = 0;
+
+ dualwnd.setXmlParam("maxwidth", "-156");
+ dualwnd.sendAction("set_maxwidth", "", -156, 0 , 0, 0);
+
+ g_footer.setXmlParam("x", "6");
+ g_footer.setXmlParam("w", "-7");
+
+ updateFooter();
+
+#ifdef DOHIDEMCV
+ dualwnd.setXmlParam("from", "right");
+ dualwnd.setXmlParam("minwidth", "147");
+#endif
+
+ _Plsc_show();
+ updateSaving(3);
+}
+
+#ifdef IC_COVERFLOW
+_Cflow_switchTo ()
+{
+ if (callbackTimer.isRunning()) return;
+ if (tempDisable.isRunning()) return;
+ tempDisable.start();
+ hideVis_Full();
+ hideVis();
+ hideCover();
+ hideFi();
+ hideEq();
+ hideCfg();
+ _Plsc_hide();
+ mychange = 1;
+ _cflow_ic_attrib.setData("1");
+ //ic_vis_fileinfo.setData("0");
+ //ic_vis.setData("0");
+ mychange = 0;
+ substract = 0;
+
+ dualwnd.setXmlParam("maxwidth", "-156");
+ dualwnd.sendAction("set_maxwidth", "", -156, 0 , 0, 0);
+
+ g_footer.setXmlParam("x", "6");
+ g_footer.setXmlParam("w", "-7");
+
+ updateFooter();
+
+#ifdef DOHIDEMCV
+ dualwnd.setXmlParam("from", "right");
+ dualwnd.setXmlParam("minwidth", "147");
+#endif
+
+ _Cflow_show();
+ updateSaving(3);
+}
+#endif
+
+switchToVis_Full ()
+{
+ debugString(DEBUG_PREFIX "switchToVis_FULL();", D_WTF);
+ if (callbackTimer.isRunning()) return;
+ if (tempDisable.isRunning()) return;
+ tempDisable.start();
+ closeIC();
+ hideVis();
+ hideCover();
+ hideEq();
+ //hideFi();
+ hideCfg();
+ _Plsc_hide();
+#ifdef IC_COVERFLOW
+ _Cflow_hide();
+#endif
+ mychange = 1;
+ ic_vis.setData("1");
+ vis_lefttoplayer_full_attrib.setData("1");
+ mychange = 0;
+ substract = 1;
+
+ dualwnd.setXmlParam("maxwidth", "-196");
+ dualwnd.sendAction("set_maxwidth", "", -196, 0 , 0, 0);
+
+ g_footer.setXmlParam("x", "6");
+ g_footer.setXmlParam("w", "-7");
+
+ updateFooter();
+
+#ifdef DOHIDEMCV
+ dualwnd.setXmlParam("from", "right");
+ dualwnd.setXmlParam("minwidth", "147");
+#endif
+ showVis_Full();
+ updateSaving(2);
+}
+
+#ifdef DOHIDEMCV
+hideMCV ()
+{
+ debugString(DEBUG_PREFIX "hideMCV();", D_WTF);
+ if (callbackTimer.isRunning()) return;
+ if (tempDisable.isRunning()) return;
+ tempDisable.start();
+ hideVis_Full();
+ closeIC();
+ hideVis();
+ hideCover();
+ hideEq();
+ //hideFi();
+ hideCfg();
+ _Plsc_hide();
+#ifdef IC_COVERFLOW
+ _Cflow_hide();
+#endif
+ mychange = 1;
+ ic_hidden.setData("1");
+ mychange = 0;
+ updateSaving(0);
+ /*g_footer.setXmlParam("x", "6");
+ g_footer.setXmlParam("w", "-7");
+ dualwnd.setXmlParam("maxwidth", "-156");
+ dualwnd.sendAction("set_maxwidth", "", -156, 0 , 0, 0);*/
+// dualwnd.setXmlParam("maxwidth", "-8");
+// dualwnd.sendAction("set_maxwidth", "", -8, 0 , 0, 0);
+ dualwnd.setXmlParam("from", "left");
+ dualwnd.setXmlParam("minwidth", integerToString(8 - stringtoInteger(dualwnd.getXmlParam("maxwidth"))));
+ dualwnd.setXmlParam("maxwidth", "-155");
+ dualwnd.sendAction("set_maxwidth", "", -155, 0 , 0, 0);
+ dualwnd.setPosition(0);
+ updateSaving(6);
+}
+#endif
+
+tempDisable.onTimer()
+{
+ stop();
+}
+
+closeLC ()
+{
+ if (callbackTimer.isRunning()) return;
+ if (tempDisable.isRunning()) return;
+ tempDisable.start();
+ hideVis();
+ hideCover();
+ hideCfg();
+ hideEq();
+ hideVis_Full();
+ _Plsc_hide();
+#ifdef IC_COVERFLOW
+ _Cflow_hide();
+#endif
+}
+
+closeIC ()
+{
+ debugString(DEBUG_PREFIX "closeIC() {", 0);
+
+ hideFi();
+
+ onCloseIC();
+
+ debugString(DEBUG_PREFIX "}", 0);
+}
+
+openIC ()
+{
+ debugString(DEBUG_PREFIX "openIC() {", 0);
+
+ showFi();
+
+ onOpenIC();
+
+ debugString(DEBUG_PREFIX "}", 0);
+}
+
+showFi()
+{
+ debugString(DEBUG_PREFIX "showFi() {", 0);
+
+ showing_fi = 1;
+ setPrivateString(getSkinName(), "Component3", "File Info");
+ GuiObject o = sui_fi;
+ if (o != NULL)
+ {
+ bypasscancel = 1;
+ if (o) o.show();
+ bypasscancel = 0;
+ debugString(DEBUG_PREFIX " --> ok", 0);
+ }
+#ifdef DEBUG
+ else debugString(DEBUG_PREFIX " --> (!) fi object not provided (show)", 0);
+#endif
+ onShowFi();
+ showing_Fi = 0;
+
+ debugString(DEBUG_PREFIX "}", 0);
+}
+
+hideFi()
+{
+ debugString(DEBUG_PREFIX "hideFi() {", 0);
+
+ hiding_Fi = 1;
+ GuiObject o = sui_fi;
+ if (o != NULL) {
+ bypasscancel = 1;
+ if (o) o.hide();
+ bypasscancel = 0;
+ debugString(DEBUG_PREFIX " --> ok", 0);
+ }
+#ifdef DEBUG
+ else debugString(DEBUG_PREFIX " --> (!) sfi object not provided (hide)", 0);
+#endif
+ onHideFi();
+ hiding_Fi = 0;
+
+ debugString(DEBUG_PREFIX "}", 0);
+}
+
+showVis()
+{
+ //if (vis_inbig_attrib.getData() == "1") return;
+ debugString(DEBUG_PREFIX "showVis() {", D_WTF);
+ showing_vis = 1;
+ GuiObject o = sui_vis;
+ if (o != NULL)
+ {
+ bypasscancel = 1;
+ if (o) o.show();
+ bypasscancel = 0;
+ debugString(DEBUG_PREFIX " --> ok", D_WTF);
+ }
+#ifdef DEBUG
+ else debugString(DEBUG_PREFIX " --> (!) vis object not provided (show)", D_WTF);
+#endif
+ onShowVis();
+ showing_vis = 0;
+
+ debugString(DEBUG_PREFIX "}", D_WTF);
+}
+
+hideVis()
+{
+ debugString(DEBUG_PREFIX "hideVis() {", D_WTF);
+
+ hiding_vis = 1;
+ GuiObject o = sui_vis;
+ if (o != NULL) {
+ bypasscancel = 1;
+ if (o) o.hide();
+ bypasscancel = 0;
+ debugString(DEBUG_PREFIX " --> ok", D_WTF);
+ }
+#ifdef DEBUG
+ else debugString(DEBUG_PREFIX " --> (!) vis object not provided (hide)", D_WTF);
+#endif
+ onHideVis();
+ hiding_vis = 0;
+
+ debugString(DEBUG_PREFIX "}", D_WTF);
+}
+
+showCover()
+{
+ debugString(DEBUG_PREFIX "showCover() {", 0);
+
+ showing_Cover = 1;
+ GuiObject o = sui_Cover;
+ if (o != NULL)
+ {
+ bypasscancel = 1;
+ if (o) o.show();
+ bypasscancel = 0;
+ debugString(DEBUG_PREFIX " --> ok", 0);
+ }
+#ifdef DEBUG
+ else debugString(DEBUG_PREFIX " --> (!) Cover object not provided (show)", 0);
+#endif
+ onShowCover();
+ showing_Cover = 0;
+
+ debugString(DEBUG_PREFIX "}", 0);
+}
+
+hideCover()
+{
+ debugString(DEBUG_PREFIX "hideCover() {", 0);
+
+ hiding_Cover = 1;
+ GuiObject o = sui_Cover;
+ if (o != NULL) {
+ bypasscancel = 1;
+ if (o) o.hide();
+ bypasscancel = 0;
+ debugString(DEBUG_PREFIX " --> ok", 0);
+ }
+#ifdef DEBUG
+ else debugString(DEBUG_PREFIX " --> (!) Cover object not provided (hide)", 0);
+#endif
+ onHideCover();
+ hiding_Cover = 0;
+
+ debugString(DEBUG_PREFIX "}", 0);
+}
+
+showVis_Full()
+{
+ debugString(DEBUG_PREFIX "showVis_Full() {", D_WTF);
+
+ showing_vis_full = 1;
+ GuiObject o = sui_vis_full;
+ if (o != NULL)
+ {
+ bypasscancel = 1;
+ if (o) o.show();
+ bypasscancel = 0;
+ debugString(DEBUG_PREFIX " --> ok", D_WTF);
+ }
+#ifdef DEBUG
+ else debugString(DEBUG_PREFIX " --> (!) Vis_Full object not provided (show)", D_WTF);
+#endif
+ onShowVis_Full();
+ showing_vis_full = 0;
+
+ debugString(DEBUG_PREFIX "}", D_WTF);
+}
+
+hideVis_Full()
+{
+ debugString(DEBUG_PREFIX "hideVis_Full() {", D_WTF);
+
+ hiding_vis_full = 1;
+ GuiObject o = sui_vis_full;
+ if (o != NULL) {
+ bypasscancel = 1;
+ if (o) o.hide();
+ bypasscancel = 0;
+ debugString(DEBUG_PREFIX " --> ok", D_WTF);
+ }
+#ifdef DEBUG
+ else debugString(DEBUG_PREFIX " --> (!) Vis_Full object not provided (hide)", D_WTF);
+#endif
+ onHideVis_Full();
+ hiding_vis_full = 0;
+
+ debugString(DEBUG_PREFIX "}", D_WTF);
+}
+
+showEq()
+{
+ debugString(DEBUG_PREFIX "showEq() {", D_WTF);
+
+ showing_eq = 1;
+ GuiObject o = sui_eq;
+ if (o != NULL)
+ {
+ bypasscancel = 1;
+ if (o) o.show();
+ bypasscancel = 0;
+ debugString(DEBUG_PREFIX " --> ok", D_WTF);
+ }
+#ifdef DEBUG
+ else debugString(DEBUG_PREFIX " --> (!) Vis_Full object not provided (show)", D_WTF);
+#endif
+ onShowEq();
+ showing_eq = 0;
+
+ debugString(DEBUG_PREFIX "}", D_WTF);
+}
+
+hideEq()
+{
+ debugString(DEBUG_PREFIX "hideVis_Full() {", D_WTF);
+
+ hiding_eq = 1;
+ GuiObject o = sui_eq;
+ if (o != NULL) {
+ bypasscancel = 1;
+ if (o) o.hide();
+ bypasscancel = 0;
+ debugString(DEBUG_PREFIX " --> ok", D_WTF);
+ }
+#ifdef DEBUG
+ else debugString(DEBUG_PREFIX " --> (!) Eq object not provided (hide)", D_WTF);
+#endif
+ onHideEq();
+ hiding_eq = 0;
+
+ debugString(DEBUG_PREFIX "}", D_WTF);
+}
+
+showCfg()
+{
+ debugString(DEBUG_PREFIX "showCfg() {", D_WTF);
+
+ showing_cfg = 1;
+ GuiObject o = sui_cfg;
+ if (o != NULL)
+ {
+ bypasscancel = 1;
+ if (o) o.show();
+ bypasscancel = 0;
+ debugString(DEBUG_PREFIX " --> ok", D_WTF);
+ }
+#ifdef DEBUG
+ else debugString(DEBUG_PREFIX " --> (!) cfg_Full object not provided (show)", D_WTF);
+#endif
+ onShowcfg();
+ showing_cfg = 0;
+
+ debugString(DEBUG_PREFIX "}", D_WTF);
+}
+
+hideCfg()
+{
+ debugString(DEBUG_PREFIX "hideVis_Full() {", D_WTF);
+
+ hiding_cfg = 1;
+ GuiObject o = sui_cfg;
+ if (o != NULL) {
+ bypasscancel = 1;
+ if (o) o.hide();
+ bypasscancel = 0;
+ debugString(DEBUG_PREFIX " --> ok", D_WTF);
+ }
+#ifdef DEBUG
+ else debugString(DEBUG_PREFIX " --> (!) cfg object not provided (hide)", D_WTF);
+#endif
+ onHidecfg();
+ hiding_cfg = 0;
+
+ debugString(DEBUG_PREFIX "}", D_WTF);
+}
+
+callbackTimer.onTimer()
+{
+ callbackTimer.stop();
+
+ debugString(DEBUG_PREFIX "callbackTimer();", D_WTF);
+
+ int _callback_showing_vis = callback_showing_vis;
+ int _callback_hiding_vis = callback_hiding_vis;
+ int _callback_showing_fi = callback_showing_fi;
+ int _callback_hiding_fi = callback_hiding_fi;
+ int _callback_showing_cover = callback_showing_cover;
+ int _callback_hiding_cover = callback_hiding_cover;
+ int _callback_showing_vis_full = callback_showing_vis_full;
+ int _callback_hiding_vis_full = callback_hiding_vis_full;
+ int _callback_showing_eq = callback_showing_eq;
+ int _callback_hiding_eq = callback_hiding_eq;
+ int _callback_showing_cfg = callback_showing_cfg;
+ int _callback_hiding_cfg = callback_hiding_cfg;
+ int _plsc_callback_showing_temp = _plsc_callback_showing;
+ int _plsc_callback_hiding_temp = _plsc_callback_hiding;
+#ifdef IC_COVERFLOW
+ int _cflow_callback_showing_temp = _cflow_callback_showing;
+ int _cflow_callback_hiding_temp = _cflow_callback_hiding;
+#endif
+
+ callback_showing_vis = 0;
+ callback_hiding_vis = 0;
+ callback_showing_fi = 0;
+ callback_hiding_fi = 0;
+ callback_showing_cover = 0;
+ callback_hiding_cover = 0;
+ callback_showing_vis_full = 0;
+ callback_hiding_vis_full = 0;
+ callback_showing_eq = 0;
+ callback_hiding_eq = 0;
+ callback_showing_cfg = 0;
+ callback_hiding_cfg = 0;
+ _plsc_callback_showing = 0;
+ _plsc_callback_hiding = 0;
+#ifdef IC_COVERFLOW
+ _cflow_callback_showing = 0;
+ _cflow_callback_hiding = 0;
+#endif
+
+ if (_callback_showing_vis == 1)
+ {
+ ic_vis_fileinfo.setData("1");
+ ic_fileinfo.setData("1");
+ }
+ if (_callback_hiding_vis == 1)
+ {
+ ic_vis_fileinfo.setData("0");
+ }
+ if (_callback_showing_fi == 1)
+ {
+ showFi();
+ }
+ if (_callback_hiding_fi == 1)
+ {
+ hideFi();
+ }
+ if (_callback_showing_cover == 1)
+ {
+ ic_cover_fileinfo.setData("1");
+ ic_fileinfo.setData("1");
+ }
+ if (_callback_hiding_cover == 1)
+ {
+ ic_cover_fileinfo.setData("0");
+ }
+ if (_callback_showing_vis_full == 1)
+ {
+ switchToVis_Full();
+ }
+ if (_callback_hiding_vis_full == 1)
+ {
+ hideVis_Full();
+ }
+ if (_callback_showing_eq == 1)
+ {
+ switchToEq();
+ }
+ if (_callback_hiding_eq == 1)
+ {
+ hideEq();
+ }
+ if (_callback_showing_cfg == 1)
+ {
+ switchTocfg();
+ }
+ if (_callback_hiding_cfg == 1)
+ {
+ hidecfg();
+ }
+ if (_plsc_callback_showing_temp == 1)
+ {
+ _Plsc_switchTo();
+ }
+ if (_plsc_callback_hiding_temp == 1)
+ {
+ _Plsc_hide();
+ }
+#ifdef IC_COVERFLOW
+ if (_cflow_callback_showing_temp == 1)
+ {
+ _Cflow_switchTo();
+ }
+ if (_cflow_callback_hiding_temp == 1)
+ {
+ _Cflow_hide();
+ }
+#endif
+}
+
+dc_showFi ()
+{
+ callback_showing_fi = 1;
+ callback_hiding_fi = 0;
+ callbackTimer.start();
+}
+
+dc_hideFi ()
+{
+ callback_showing_fi = 0;
+ callback_hiding_fi = 1;
+ callbackTimer.start();
+}
+
+dc_showCover ()
+{
+ callback_showing_cover = 1;
+ callback_hiding_cover = 0;
+ callbackTimer.start();
+}
+
+dc_hideCover ()
+{
+ callback_showing_cover = 0;
+ callback_hiding_cover = 1;
+ callbackTimer.start();
+}
+
+dc_showVis ()
+{
+ debugString(DEBUG_PREFIX "dc_showVis();", D_WTF);
+ callback_showing_vis = 1;
+ callback_hiding_vis = 0;
+ callbackTimer.start();
+}
+
+dc_hideVis ()
+{
+ callback_showing_vis = 0;
+ callback_hiding_vis = 1;
+ callbackTimer.start();
+}
+
+dc_showVis_Full ()
+{
+ debugString(DEBUG_PREFIX "dc_showVis_Full();", D_WTF);
+ callback_showing_vis_full = 1;
+ callback_hiding_vis_full = 0;
+ callbackTimer.start();
+}
+
+dc_hideVis_Full ()
+{
+ callback_showing_vis_full = 0;
+ callback_hiding_vis_full = 1;
+ callbackTimer.start();
+}
+
+dc_showEq ()
+{
+ debugString(DEBUG_PREFIX "dc_showVis_Full();", D_WTF);
+ callback_showing_eq = 1;
+ callback_hiding_eq = 0;
+ callbackTimer.start();
+}
+
+dc_hideEq ()
+{
+ callback_showing_eq = 0;
+ callback_hiding_eq = 1;
+ callbackTimer.start();
+}
+
+dc_showCfg ()
+{
+ debugString(DEBUG_PREFIX "dc_showVis_Full();", D_WTF);
+ callback_showing_Cfg = 1;
+ callback_hiding_Cfg = 0;
+ callbackTimer.start();
+}
+
+dc_hideCfg ()
+{
+ callback_showing_Cfg = 0;
+ callback_hiding_Cfg = 1;
+ callbackTimer.start();
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/mute.m b/Src/resources/skins/Big Bento/scripts/mute.m
new file mode 100644
index 00000000..6a55eb79
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/mute.m
@@ -0,0 +1,162 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: mute.m
+Version: 1.1
+
+Type: maki
+Date: 13. Jun. 2007 - 12:39
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+
+Note: This script is based on mute.m
+ from Winamp Modern
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#include <lib/std.mi>
+
+#define GLOW_OBJECT MuteButton
+#include <lib/com/glow.m>
+
+Class Button GlowButton;
+
+Global int VOLUME_FILL_MAX_W;
+
+Global Group frameGroup;
+Global Button MuteBtn, DeMuteBtn;
+Global GuiObject SongTicker;
+Global Float VolumeLevel;
+Global Boolean Muted,BtnPressed;
+Global GuiObject fill;
+Global GuiObject muteActive;
+Global Int muteActive_Y;
+Global Boolean demuteDown;
+Global Boolean isShade;
+
+System.onScriptLoaded()
+{
+ frameGroup = system.getScriptGroup();
+ isShade = (frameGroup.getParentlayout().getID() == "shade");
+
+ MuteBtn = frameGroup.findObject("mute");
+ DeMuteBtn = frameGroup.findObject("etum");
+ fill = frameGroup.findObject("player.volume.fill");
+ muteActive = frameGroup.findObject("mute.active");
+ SongTicker = frameGroup.findObject("songticker");
+
+ if (!isShade) muteActive_Y = muteActive.getGuiY();
+
+ if (!isShade) _MuteButton_GlowInit (MuteBtn, frameGroup.findObject("mute.glow"), 0.3);
+ if (!isShade) _MuteButton_addTrigger (DeMuteBtn);
+
+ Muted = getPrivateInt("winamp5", "muted", 0);
+ VolumeLevel = getPrivateInt("winamp5", "old_volume", 0);
+
+ VOLUME_FILL_MAX_W = stringToInteger(getParam());
+
+ fill.setXmlParam("w", integerToString(VOLUME_FILL_MAX_W*getVolume()/255));
+
+ if (Muted)
+ {
+ SongTicker.sendAction("showinfo", "Mute ON", 0, 0, 0, 0);
+ MuteBtn.hide();
+ DeMuteBtn.show();
+ if (!isShade) muteActive.show();
+ }
+ else
+ {
+ MuteBtn.show();
+ DeMuteBtn.hide();
+ if (!isShade) muteActive.hide();
+ }
+
+ BtnPressed = 0;
+}
+
+
+System.onScriptUnloading()
+{
+ setPrivateInt("winamp5", "muted", Muted);
+ setPrivateInt("winamp5", "old_volume", VolumeLevel);
+}
+
+MuteBtn.onLeftClick()
+{
+ BtnPressed = 1;
+
+ VolumeLevel = System.getVolume();
+ System.setVolume(0);
+ Muted = 1;
+ DeMuteBtn.show();
+ MuteBtn.hide();
+ if (!isShade) muteActive.show();
+}
+
+MuteBtn.onLeftButtonDown (int x, int y)
+{
+ SongTicker.sendAction("showinfo", "Mute: Off", 0, 0, 0, 0);
+}
+
+DeMuteBtn.onLeftButtonDown (int x, int y)
+{
+ SongTicker.sendAction("showinfo", "Mute: On", 0, 0, 0, 0);
+ if (!isShade) demuteDown = 1;
+ if (!isShade) muteActive.setXmlParam("y", integerToString(muteActive_Y+1));
+}
+
+MuteBtn.onLeftButtonUp (int x, int y)
+{
+ if (Muted) SongTicker.sendAction("showinfo", "Mute: On", 0, 0, 0, 0);
+}
+
+DeMuteBtn.onLeftButtonUp (int x, int y)
+{
+ if (!Muted) SongTicker.sendAction("showinfo", "Mute: Off", 0, 0, 0, 0);
+ if (!isShade) demuteDown = 0;
+ if (!isShade) muteActive.setXmlParam("y", integerToString(muteActive_Y));
+}
+
+DeMuteBtn.onLeftClick()
+{
+ BtnPressed = 1;
+
+ System.setVolume(VolumeLevel);
+ Muted = 0;
+ DeMuteBtn.hide();
+ MuteBtn.show();
+ if (!isShade) muteActive.hide();
+}
+
+DeMuteBtn.onleaveArea ()
+{
+ if (!isShade) muteActive.setXmlParam("y", integerToString(muteActive_Y));
+}
+
+DeMuteBtn.onEnterArea ()
+{
+ if (!isShade && demuteDown) muteActive.setXmlParam("y", integerToString(muteActive_Y+1));
+}
+
+System.onvolumechanged(int newvol)
+{
+ fill.setXmlParam("w", integerToString(VOLUME_FILL_MAX_W*getVolume()/255));
+ if (!BtnPressed)
+ {
+ SongTicker.sendAction
+ (
+ "showinfo",
+ translate("Volume") + ": " + integerToString(newvol/2.55) + "%",
+ 0, 0, 0, 0
+ );
+ if (Muted)
+ {
+ Muted = 0;
+ MuteBtn.show();
+ DeMuteBtn.hide();
+ if (!isShade) muteActive.hide();
+ }
+ }
+ BtnPressed = 0;
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/mute.maki b/Src/resources/skins/Big Bento/scripts/mute.maki
new file mode 100644
index 00000000..254c8063
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/mute.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/notifier.m b/Src/resources/skins/Big Bento/scripts/notifier.m
new file mode 100644
index 00000000..91fd8ae0
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/notifier.m
@@ -0,0 +1,827 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: notifier.m
+Version: 1.3
+
+Type: maki/notifier
+Date: 14. Mrz. 2007 - 14:50
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+
+Note: Based on notifier.m from Winamp Modern
+
+
+
+-----------------------------------------------------
+// Workaround for Winamp bug by Pieter Nieuwoudt (pjn123) - pjn123@outlook.com \\
+
+Temparary fix for the Winamp bug where the...
+extern AlbumArtLayer.onAlbumArtLoaded(boolean success);
+...event stops working.
+
+Please note that this workaround only kicks in if the above event stops responding.
+If you want to test the workaround, just add // after the FORCE_BUG_MODE below.
+Once the above event stop responding the first notifier trigger will be delayed (3 sec),
+but after that there will be no delays anymore.
+
+To remove this fix in the future just search //BUGFIX for steps ;)
+
+-----------------------------------------------------
+---------------------------------------------------*/
+#define FORCE_BUG_MODE
+
+#include <lib/std.mi>
+#include attribs/init_notifier.m
+#define DEBUG
+#define DebugString //
+
+Function reset();
+Function createNotifier(boolean cancel);
+Function showNotifier(Int w);
+Function onNext();
+function cancelAnimation();
+
+Function Int fillNextTrackInfo(String corneroverride);
+Function Int fillCustomInfo(String customstring);
+Function prepareAlbumArtNotifier();
+
+Function checkPref(int bypassfs);
+
+Function getArtist();
+
+Function onAlbumArt(Boolean success);
+
+Global Container notifier_container;
+Global Layout notifier_layout;
+Global Timer notifier_timer;
+Global String last_autotitle, last_autopis, cur_status;
+
+Global Boolean b_tohide = 0;
+Global boolean handleAACalback = false;
+
+Global AlbumArtLayer cover;
+
+Global Boolean triggerBug; //BUGFIX remove this
+Global Timer fallbackTempFix; //BUGFIX remove this
+
+#define WEBCOVER_SHOUTCAST "winamp.cover.shoutcast"
+
+// ------------------------------------------------------------------------------
+// init
+// ------------------------------------------------------------------------------
+System.onScriptLoaded() {
+ initAttribs_notifier();
+ notifier_timer = new Timer;
+ fallbackTempFix = new Timer; //BUGFIX remove this
+ fallbackTempFix.setDelay(3000); //BUGFIX remove this / Time that onAlbumArtLoaded have to execute before bug mode is ON
+}
+
+// ------------------------------------------------------------------------------
+// shutdown
+// ------------------------------------------------------------------------------
+System.onScriptUnloading() {
+ delete notifier_timer;
+ delete fallbackTempFix; //BUGFIX remove this
+}
+
+// ------------------------------------------------------------------------------
+// called by the system when the global hotkey for notification is pressed
+// ------------------------------------------------------------------------------
+System.onShowNotification() {
+ //if (checkPref(1)) return; --mp: if we push the hotkey, we want to show the notifier, no matter what the pref settings are.
+ createNotifier(false);
+ if (getStatus() == STATUS_PLAYING) cur_status = "Playing";
+ if (getStatus() == STATUS_PAUSED) cur_status = "Playback Paused";
+ if (getStatus() == STATUS_STOPPED) cur_status = "Playback Stopped";
+ prepareAlbumArtNotifier();
+ complete; // prevents other scripts from getting the message
+ return 1; // tells anybody else that might watch the returned value that, yes, we implemented that
+}
+
+// ------------------------------------------------------------------------------
+// called by the system when the title for the playing item changes, this could be the result of the player
+// going to the next track, or of an update in the track title
+// ------------------------------------------------------------------------------
+// mpdeimos> seems like we get an onTitleChange callback sometimes on pause/resume, d'oh
+Global String lastUrl = 0;
+System.onTitleChange(String newtitle) {
+ if (getPlayItemMetaDataString("streamtype") == "0" && lastUrl == getPlayItemString())
+ {
+ return;
+ }
+ lastUrl = getPlayItemString();
+
+ if (StrLeft(newtitle, 1) == "[") {
+ if (StrLeft(newtitle, 7) == "[Buffer" ||
+ StrLeft(newtitle, 4) == "[ICY") return;
+ }
+ //String newpis = System.getPlayItemString();
+ //if (last_autotitle == newtitle && last_autopis == newpis) return;
+ //last_autotitle = newtitle;
+ //last_autopis = newpis;
+ DebugString("onTitleChange: "+getPlayItemString(), 9);
+
+ onNext();
+
+ fallbackTempFix.stop(); //BUGFIX remove later
+ fallbackTempFix.start(); //BUGFIX remove later
+}
+
+// ------------------------------------------------------------------------------
+// called by the system when the user clicks the next button
+// ------------------------------------------------------------------------------
+onNext() {
+ if (checkPref(0)) return;
+ createNotifier(false);
+ cur_status = "";
+ prepareAlbumArtNotifier();
+}
+
+// ------------------------------------------------------------------------------
+// called by the system when the user clicks the play button
+// ------------------------------------------------------------------------------
+System.onPlay() {
+ if (checkPref(0)) return;
+ createNotifier(false);
+ cur_status = "Playing";
+ prepareAlbumArtNotifier();
+}
+
+// ------------------------------------------------------------------------------
+// called by the system when the user clicks the pause button
+// ------------------------------------------------------------------------------
+System.onPause() {
+ fallbackTempFix.stop();
+ if (checkPref(0)) return;
+ DebugString("onPause",9);
+ createNotifier(true);
+ showNotifier(fillCustomInfo("Playback Paused"));
+}
+
+// ------------------------------------------------------------------------------
+// called by the system when the user clicks the pause button again
+// ------------------------------------------------------------------------------
+System.onResume() {
+ if (checkPref(0)) return;
+ DebugString("onResume",9);
+ createNotifier(false);
+ cur_status = "Resuming Playback";
+ prepareAlbumArtNotifier();
+}
+
+// ------------------------------------------------------------------------------
+// called by the system when the user clicks the play button
+// ------------------------------------------------------------------------------
+System.onStop() {
+ fallbackTempFix.stop();
+ if (checkPref(0)) return;
+ createNotifier(true);
+ showNotifier(fillCustomInfo("End of Playback"));
+}
+
+// ------------------------------------------------------------------------------
+// checks if we should display anything
+// ------------------------------------------------------------------------------
+Int checkPref(int bypassfs) {
+ if (!bypassfs && notifier_hideinfullscreen_attrib.getData() == "1" && isVideoFullscreen()) return 1;
+ if (notifier_never_attrib.getData() == "1") return 1;
+ if (notifier_minimized_attrib.getData() == "1" && !isMinimized()) return 1;
+ if (notifier_windowshade_attrib.getData() == "1") {
+ if (isMinimized()) return 0;
+ Container c = getContainer("main");
+ if (!c) return 1;
+ Layout l = c.getCurLayout();
+ if (!l) return 1;
+ if (l.getId() != "shade") return 1;
+ }
+ return 0;
+}
+
+// ------------------------------------------------------------------------------
+// fade in/out completed
+// ------------------------------------------------------------------------------
+// TODO: on dual monitors the notif stays on 2nd monitor :(
+notifier_layout.onTargetReached() {
+ if (b_tohide) {
+ notifier_layout.setAlpha(0);
+ reset();
+ return;
+ }
+ int a = notifier_layout.getAlpha();
+ if (a == 255 && !b_tohide) {
+ notifier_timer.setDelay(StringToInteger(notifier_holdtime_attrib.getData()));
+ notifier_timer.start();
+ }
+ else if (a == 0) {
+ reset();
+ }
+}
+
+// ------------------------------------------------------------------------------
+// hold time elapsed
+// ------------------------------------------------------------------------------
+notifier_timer.onTimer() {
+ stop();
+ if (notifier_fdout_alpha.getData() == "1") {
+ if (notifier_layout.isTransparencySafe()) {
+ notifier_layout.setTargetA(0);
+ notifier_layout.setTargetSpeed(StringToInteger(notifier_fadeouttime_attrib.getData()) / 1000);
+ notifier_layout.gotoTarget();
+ return;
+ }
+ else {
+ reset();
+ return;
+ }
+ }
+ else if (notifier_fdout_vslide.getData() == "1") {
+ b_tohide = 1;
+ int sy;
+ int geth;
+
+ Layout m = getContainer("main").getCurLayout();
+ if (notifier_loc_vport_attrib.getData() == "1")
+ {
+ geth = getViewportHeightFromGuiObject(m);
+ }
+ else
+ {
+ geth = getMonitorHeightFromGuiObject(m);
+ }
+ if (notifier_layout.getGuiY() == 2) sy = -80;
+ else sy = geth + 80;
+ notifier_layout.setTargetY(sy);
+ notifier_layout.setTargetSpeed(StringToInteger(notifier_fadeintime_attrib.getData()) / 1000);
+ notifier_layout.gotoTarget();
+ return;
+ }
+ else {
+ if (b_tohide) return;
+ b_tohide = 1;
+ int sx;
+ int getw;
+
+ Layout m = getContainer("main").getCurLayout();
+ if (notifier_loc_vport_attrib.getData() == "1") {
+ getw = getViewportWidthFromGuiObject(m);
+ }
+ else {
+ getw = getMonitorWidthFromGuiObject(m);
+ }
+
+ if (notifier_layout.getGuiX() == 2) sx = -notifier_layout.getWidth();
+ else sx = getw + notifier_layout.getWidth();
+ notifier_layout.setTargetX(sx);
+ notifier_layout.setTargetSpeed(StringToInteger(notifier_fadeintime_attrib.getData()) / 1000);
+ notifier_layout.gotoTarget();
+ return;
+ }
+}
+
+// ------------------------------------------------------------------------------
+// when notifier is clicked, bring back the app from minimized state if its minimized and focus it
+// ------------------------------------------------------------------------------
+notifier_layout.onLeftButtonDown(int x, int y) {
+ cancelAnimation();
+ restoreApplication();
+ activateApplication();
+ /*if (notifier_opennowplaying_attrib.getData() == "1")
+ {
+ String artist = getArtist();
+ if (artist == "") return;
+ System.navigateUrlBrowser("http://client.winamp.com/nowplaying/artist/?icid=notifierbento&artistName=" + artist);
+ }*/
+ reset();
+}
+
+notifier_layout.onRightButtonUp(int x, int y) {
+ cancelAnimation();
+ reset();
+ complete;
+ return;
+}
+
+//TODO merge w/ code below
+String getArtist ()
+{
+ String artist = getPlayItemMetaDataString("artist");
+ if (artist == "") artist = getPlayItemMetaDataString("uvox/artist");
+ if (artist == "") artist = getPlayItemMetaDataString("cbs/artist");
+ if (artist == "") artist = getPlayItemMetaDataString("streamtitle");
+ if (artist == "") artist = getPlayItemDisplayTitle();
+
+ return artist;
+}
+
+// ------------------------------------------------------------------------------
+// close the notifier window, destroys the container automatically because it's dynamic
+// ------------------------------------------------------------------------------
+reset() {
+ notifier_container.close();
+ notifier_container = NULL;
+ notifier_layout = NULL;
+ handleAACalback = FALSE;
+}
+
+// ------------------------------------------------------------------------------
+createNotifier(boolean cancel) {
+ if (notifier_container == NULL) {
+ notifier_container = newDynamicContainer("notifier");
+ if (!notifier_container) return; // reinstall duh!
+ if (isDesktopAlphaAvailable())
+ notifier_layout = notifier_container.getLayout("desktopalpha");
+ else
+ notifier_layout = notifier_container.getLayout("normal");
+ if (!notifier_layout) return; // reinstall twice, man
+ } else if (cancel) {
+ cancelAnimation();
+ }
+}
+
+cancelAnimation()
+{
+ notifier_layout.cancelTarget();
+ notifier_timer.stop();
+}
+
+// ------------------------------------------------------------------------------
+showNotifier(int w) {
+ DebugString(IntegerToString(w), 0);
+ b_tohide = 0;
+ int x; int y;
+ int sy; int sx;
+ w = w + 30;
+
+ int getx, gety, geth, getw;
+
+ Layout m = getContainer("main").getCurLayout();
+ if (notifier_loc_vport_attrib.getData() == "1")
+ {
+ getx = getViewportLeftFromGuiObject(m);
+ gety = getViewportTopFromGuiObject(m);
+ geth = getViewportHeightFromGuiObject(m);
+ getw = getViewportWidthFromGuiObject(m);
+ }
+ else
+ {
+ getx = getMonitorLeftFromGuiObject(m);
+ gety = getMonitorTopFromGuiObject(m);
+ geth = getMonitorHeightFromGuiObject(m);
+ getw = getMonitorWidthFromGuiObject(m);
+ }
+ if (notifier_loc_br_attrib.getData() == "1") {
+ x = getw + getx - w - 2;
+ y = geth + gety - 80 - 2;
+ }
+ else if (notifier_loc_bl_attrib.getData() == "1") {
+ x = getx + 2;
+ y = geth + gety - 80 - 2;
+ }
+ else if (notifier_loc_bc_attrib.getData() == "1") {
+ x = getx + ((getw - w) / 2);
+ y = geth + gety - 80 - 2;
+ }
+ else if (notifier_loc_tr_attrib.getData() == "1") {
+ x = getw + getx - w - 2;
+ y = 2;
+ }
+ else if (notifier_loc_tc_attrib.getData() == "1") {
+ x = getx + ((getw - w) / 2);
+ y = 2;
+ }
+ else {
+ x = getx + 2;
+ y = 2;
+ }
+ if (notifier_fdin_alpha.getData() == "1") {
+ if (!notifier_layout.isVisible()) notifier_layout.resize(x, y, w, 80);
+ else
+ {
+ notifier_layout.resize(notifier_layout.getguiX(), y, notifier_layout.getGuiW(), 80);
+ }
+ if (notifier_layout.isTransparencySafe()) {
+ notifier_layout.show();
+ notifier_layout.settargetA(255);
+ notifier_layout.setTargetX(x);
+ notifier_layout.setTargetY(y);
+ notifier_layout.setTargetW(w);
+ notifier_layout.setTargetH(80);
+ notifier_layout.setTargetSpeed(StringToInteger(notifier_fadeintime_attrib.getData()) / 1000);
+ notifier_layout.gotoTarget();
+ } else {
+ notifier_layout.setAlpha(255);
+ notifier_layout.show();
+ notifier_layout.settargetA(255);
+ notifier_layout.setTargetX(x);
+ notifier_layout.setTargetY(y);
+ notifier_layout.setTargetW(w);
+ notifier_layout.setTargetH(80);
+ notifier_timer.setDelay(StringToInteger(notifier_holdtime_attrib.getData()));
+ notifier_timer.start();
+ }
+ }
+ else if (notifier_fdin_vslide.getData() == "1") {
+ if (y == 2) sy = -80;
+ else sy = geth + 80;
+ if (!notifier_layout.isVisible()) notifier_layout.resize(x, sy, w, 80);
+ else
+ {
+ notifier_layout.resize(notifier_layout.getguiX(), y, notifier_layout.getGuiW(), 80);
+ }
+ notifier_layout.show();
+ notifier_layout.setAlpha(255);
+ notifier_layout.setTargetX(x);
+ notifier_layout.setTargetY(y);
+ notifier_layout.setTargetW(w);
+ notifier_layout.setTargetH(80);
+ notifier_layout.setTargetSpeed(StringToInteger(notifier_fadeintime_attrib.getData()) / 1000);
+ notifier_layout.gotoTarget();
+ }
+ else {
+ if (x < (getw + getx)/2) sx = -w;
+ else sx = getw + w;
+ if (!notifier_layout.isVisible()) {
+ notifier_layout.resize(sx, y, w, 80);
+ }
+ else {
+ notifier_layout.resize(notifier_layout.getguiX(), y, notifier_layout.getGuiW(), 80);
+ }
+ notifier_layout.show();
+ notifier_layout.setAlpha(255);
+ notifier_layout.setTargetX(x);
+ notifier_layout.setTargetY(y);
+ notifier_layout.setTargetW(w);
+ notifier_layout.setTargetH(80);
+ notifier_layout.setTargetSpeed(StringToInteger(notifier_fadeintime_attrib.getData()) / 1000);
+ notifier_layout.gotoTarget();
+ }
+}
+// ------------------------------------------------------------------------------
+
+prepareAlbumArtNotifier()
+{
+ if (!notifier_layout) return;
+ Group g_albumart = notifier_layout.findObject("notifier.albumart");
+
+ DebugString("prepareAlbumArtNotifier: handleAACalback="+integerToString(handleAACalback), 9);
+ if (g_albumart)
+ {
+ cover = g_albumart.findObject("notifier.cover");
+ DebugString("prepareAlbumArtNotifier: cover.isLoading="+integerToString(cover.isLoading()), 9);
+ DebugString("prepareAlbumArtNotifier: cover.isInvalid="+integerToString(cover.isInvalid()), 9);
+ handleAACalback = true;
+ cover.refresh();
+ }
+}
+
+cover.onAlbumArtLoaded(boolean success)
+{
+ /*
+ Created a seperate function for the code that was here because for some reason I couldn't force this
+ event (from the fallbackTempFix.onTimer) with cover.onAlbumArtLoaded(success) after the Winamp bug appears.
+ Weird, yes.
+ */
+ FORCE_BUG_MODE onAlbumArt(success);
+}
+
+// ------------------------------------------------------------------------------
+Int fillNextTrackInfo(String corneroverride) {
+ Int maxv = 0;
+ Int stream = 0;
+
+ if (!notifier_layout) return 0;
+
+ Group g_text = notifier_layout.findObject("notifier.text");
+ Group g_albumart = notifier_layout.findObject("notifier.albumart");
+
+ Text plentry = g_text.findObject("plentry");
+ Text nexttrack = g_text.findObject("nexttrack");
+ Text _title = g_text.findObject("title");
+ Text album = g_text.findObject("album");
+ Text artist = g_text.findObject("artist");
+ Text endofplayback = notifier_layout.findObject("endofplayback");
+ Text s_plentry = g_text.findObject("plentry.shadow");
+ Text s_nexttrack = g_text.findObject("nexttrack.shadow");
+ Text s_title = g_text.findObject("title.shadow");
+ Text s_album = g_text.findObject("album.shadow");
+ Text s_artist = g_text.findObject("artist.shadow");
+ Text s_endofplayback = notifier_layout.findObject("endofplayback.shadow");
+
+ DebugString("got callback for " + getPlayItemString(), 0);
+
+ // Get Stream Name - if no stream returns ""
+ string s = getPlayItemMetaDataString("streamname");
+ string stype = getPlayItemMetaDataString("streamtype"); //"streamtype" will return "2" for SHOUTcast and "5" for SHOUTcast 2
+ if (stype == "2" || stype == "5") stream = 1;
+
+ if (endofplayback) endofplayback.hide();
+ if (s_endofplayback) s_endofplayback.hide();
+
+ if (plentry)
+ {
+ plentry.setText(integerToString(getPlaylistIndex()+1)+translate(" of ")+integerToString(getPlaylistLength()));
+ plentry.show();
+ s_plentry.setText(integerToString(getPlaylistIndex()+1)+translate(" of ")+integerToString(getPlaylistLength()));
+ s_plentry.show();
+ }
+ if (nexttrack) {
+ if (corneroverride == "") {
+ if (!stream) {
+ if (!isVideo())
+ {
+ nexttrack.setText("New track");
+ s_nexttrack.setText("New track");
+ }
+ else
+ {
+ nexttrack.setText("New video");
+ s_nexttrack.setText("New video");
+ }
+ }
+ else
+ {
+ nexttrack.setText("On air");
+ s_nexttrack.setText("On air");
+ }
+ }
+ else
+ {
+ nexttrack.setText(corneroverride);
+ s_nexttrack.setText(corneroverride);
+ }
+ nexttrack.show();
+ s_nexttrack.show();
+ }
+ string set_artist = "";
+ string set = "";
+ if (_title) {
+ _title.setXmlParam("ticker", "0");
+ _title.setXmlParam("display", "");
+ s_title.setXmlParam("ticker", "0");
+ s_title.setXmlParam("display", "");
+ String str;
+ if (!stream)
+ {
+ str = getPlayitemMetaDataString("title");
+ if (str == "") str = getPlayitemDisplayTitle();
+ String l = getPlayItemMetaDataString("length");
+ if (l != "") {
+ str += " (" + integerToTime(stringtointeger(l)) + ")";
+ }
+ _title.setText(str);
+ s_title.setText(str);
+ }
+ else
+ {
+ if (str = getPlayItemMetaDataString("streamtitle") != "")
+ {
+ int v = strsearch(str, " - "); // We divide the string by a " - " sublimiter - no luck for old / wrong tagged stations
+ if (v > 0) {
+ set_artist = strleft (str, v); // Store artist
+ string str = strright (str, strlen(str) - 3 - v);
+ _title.setText(str);
+ s_title.setText(str);
+ }
+ else
+ {
+ _title.setXmlParam("ticker", "1"); // These titles can be _very_ long
+ s_title.setXmlParam("ticker", "1");
+ _title.setText(str);
+ s_title.setText(str);
+ }
+ } else {
+ _title.setXmlParam("ticker", "1");
+ _title.setXmlParam("display", "songtitle");
+ _title.setText("");
+ s_title.setXmlParam("ticker", "1");
+ s_title.setXmlParam("display", "songtitle");
+ s_title.setText("");
+ }
+ }
+ _title.show();
+ s_title.show();
+ }
+ if (artist) {
+ if (!stream) {
+ if (isVideo())
+ {
+ artist.setText("");
+ s_artist.setText("");
+ }
+ else
+ {
+ artist.setText(getPlayitemMetaDataString("artist"));
+ s_artist.setText(getPlayitemMetaDataString("artist"));
+ }
+ }
+ else
+ {
+ // Perhaps we've stored the artist before?
+ if (set_artist != "")
+ {
+ artist.setText(set_artist);
+ s_artist.setText(set_artist);
+ }
+ // Then display the station name
+ else if (s != "")
+ {
+ artist.setText(s);
+ s_artist.setText(s);
+ }
+ // So, we've had no luck - just display a static text :(
+ else
+ {
+ if (isVideo())
+ {
+ artist.setText("Internet TV");
+ s_artist.setText("Internet TV");
+ }
+ else
+ {
+ artist.setText("Internet Radio");
+ s_artist.setText("Internet Radio");
+ }
+ }
+ }
+ artist.show();
+ s_artist.show();
+ }
+ if (album) {
+ String str;
+ if (!stream && !isVideo()) {
+ s_album.setXmlParam("display", "");
+ album.setXmlParam("display", "");
+ str = getPlayitemMetaDataString("album");
+ String l = getPlayitemMetaDataString("track");
+ if (l != "" && l != "-1") str += " (" + translate("Track ") + l + ")";
+ album.setText(str);
+ s_album.setText(str);
+ }
+ else
+ {
+ album.setXmlParam("display", "");
+ s_album.setXmlParam("display", "");
+ // we have divided the songname - let's display the station name
+ if (set_artist != "" && s != "")
+ {
+ album.setText(s);
+ s_album.setText(s);
+ }
+ // no luck either...
+ else
+ {
+ album.setText("");
+ album.setXmlParam("display", "songinfo_localise");
+ s_album.setText("");
+ s_album.setXmlParam("display", "songinfo_localise");
+ }
+ }
+ album.show();
+ s_album.show();
+ }
+
+ // Album Art Stuff
+
+ Layer webcover;
+ if (g_albumart)
+ {
+ cover = g_albumart.findObject("notifier.cover");
+ webcover = g_albumart.findObject("notifier.webcover");
+ }
+
+ Boolean showAlbumArt = FALSE;
+
+ if (cover != NULL && webcover != NULL && notifier_artworkinnotification_attrib.getData() == "1")
+ {
+ if (stream)
+ {
+ if(stype == "2" || stype == "5" && cover.isInvalid())
+ {
+ webcover.setXMLParam("image", WEBCOVER_SHOUTCAST);
+ cover.hide();
+ webcover.show();
+ showAlbumArt = TRUE;
+ }
+ else if(stype == "5" && !cover.isInvalid())
+ {
+ webcover.hide();
+ cover.show();
+ showAlbumArt = TRUE;
+ }
+ }
+ else
+ {
+ if (cover.isInvalid()) // Check if the album art obj shows a pic
+ {
+ showAlbumArt = FALSE;
+ }
+ else
+ {
+ webcover.hide();
+ cover.show();
+ showAlbumArt = TRUE;
+ }
+ }
+ }
+
+ if (showAlbumArt)
+ {
+ if (g_albumart) g_albumart.show();
+ if (g_text) g_text.setXmlParam("x", "75");
+ if (g_text) g_text.setXmlParam("w", "-95");
+ }
+ else
+ {
+ if (g_albumart) g_albumart.hide();
+ if (g_text) g_text.setXmlParam("x", "15");
+ if (g_text) g_text.setXmlParam("w", "-35");
+ }
+
+ if (g_text) g_text.show();
+
+ maxv = artist.getAutoWidth();
+ if (maxv < album.getAutoWidth()) maxv = album.getAutoWidth();
+ if (maxv < _title.getAutoWidth()) maxv = _title.getAutoWidth();
+ if (maxv < (plentry.getAutoWidth() + nexttrack.getAutoWidth())) maxv = (plentry.getAutoWidth() + nexttrack.getAutoWidth());
+ if (maxv < 128) maxv = 128;
+
+ int getw;
+
+ Layout m = getContainer("main").getCurLayout();
+ if (notifier_loc_vport_attrib.getData() == "1")
+ {
+ //getw = getViewportWidth();
+ getw = getViewportWidthFromGuiObject(m);
+ }
+ else
+ {
+ getw = getMonitorWidthFromGuiObject(m);
+ }
+
+ if (maxv > getw/4) maxv = getw/4;
+
+ return maxv + ( showAlbumArt * 60 ) + 1; // Adds 60 extra pixels if album art is visible
+
+}
+
+// ------------------------------------------------------------------------------
+Int fillCustomInfo(String customtext)
+{
+ Group g_text = notifier_layout.findObject("notifier.text");
+ Group g_albumart = notifier_layout.findObject("notifier.albumart");
+
+ Text endofplayback = notifier_layout.findObject("endofplayback");
+ Text s_endofplayback = notifier_layout.findObject("endofplayback.shadow");
+
+ if (g_text) { g_text.hide(); }
+ if (g_albumart) g_albumart.hide();
+
+ if (endofplayback != NULL && s_endofplayback != NULL) {
+ endofplayback.setText(translate(customtext)+" ");
+ s_endofplayback.setText(translate(customtext)+" ");
+ int aw = endofplayback.getAutoWidth();
+ endofplayback.show();
+ s_endofplayback.show();
+ if (aw > 128)
+ return aw;
+ }
+ return 128;
+}
+
+//BUGFIX remove this timer later
+fallbackTempFix.onTimer() //As soon as this timer run, bug mode is ON ;)
+{
+ if (checkPref(0)) return;
+
+ if (!notifier_layout) onNext();
+
+ if(!triggerBug)
+ {
+ triggerBug = true;
+
+ onAlbumArt(cover.isInvalid()); //First time we see the bug
+ fallbackTempFix.setDelay(30);
+
+ DebugString("Hello Bug", 9);
+ }
+ else if(triggerBug && !cover.isLoading()) onAlbumArt(cover.isInvalid());
+}
+
+onAlbumArt(Boolean success){
+ fallbackTempFix.stop(); //BUGFIX remove later
+
+ DebugString("onAlbumArtLoaded: success="+integerToString(success), 9);
+ DebugString("onAlbumArtLoaded: handleAACalback="+integerToString(handleAACalback), 9);
+ DebugString("onAlbumArtLoaded: cover.isLoading="+integerToString(cover.isLoading()), 9);
+ DebugString("onAlbumArtLoaded: cover.isInvalid="+integerToString(cover.isInvalid()), 9);
+ if (!handleAACalback || !notifier_layout /*|| isLoading()*/)
+ {
+ return;
+ }
+
+ handleAACalback = cover.isLoading();
+ cancelAnimation();
+ showNotifier(fillNextTrackInfo(cur_status));
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/notifier.maki b/Src/resources/skins/Big Bento/scripts/notifier.maki
new file mode 100644
index 00000000..266ad93c
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/notifier.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/playlistpro.m b/Src/resources/skins/Big Bento/scripts/playlistpro.m
new file mode 100644
index 00000000..7c123991
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/playlistpro.m
@@ -0,0 +1,426 @@
+/*
+
+PlaylistPro build 005
+Originally done by pjn123 (www.skinconsortium.com) for the Classic Pro plugin
+
+*/
+
+#include "lib/std.mi"
+#include "lib/pldir.mi"
+#include "attribs/init_Playlist.m"
+
+Function resizeResults(int items);
+Function doSearch(String input);
+Function setSearchBox(boolean onOff);
+Function clearSearchBox();
+Function int getPlEntry(int search_item);
+Function String replaceString(string baseString, string toreplace, string replacedby);
+
+Global Group frameGroup, topbar;
+Global Edit searchBox;
+Global Text helpSearch, searchNews;// fakeText;
+Global GuiObject fakeSB, searchXUI, searchButtonXui;
+Global Button searchButton, clearButton, clearButtonText;
+Global GuiList searchResults;
+Global Boolean foundsomething;
+Global int tn, h_tune;
+Global String temptoken;
+Global Windowholder plwh;
+GLobal Timer refreshActiveCheck;
+Global PopupMenu search_rc;
+
+Global Container results_container;
+Global Layout results_layout, main_layout;
+
+System.onScriptLoaded() {
+ frameGroup = getScriptGroup();
+ topbar = frameGroup.findObject("PlaylistPro.topbar");
+ plwh = frameGroup.findObject("wdh.playlist");
+
+ searchBox = frameGroup.findObject("wasabi.edit.box");
+ searchXUI = frameGroup.findObject("pl.search.edit");
+ searchButton = frameGroup.findObject("pl.search.go");
+ searchButtonXui = frameGroup.findObject("pl.search.go");
+ fakeSB = frameGroup.findObject("pl.search.edit.rect");
+ clearButton = frameGroup.findObject("pl.search.edit.clear");
+ clearButtonText = frameGroup.findObject("pl.search.edit.clear.text");
+ helpSearch = frameGroup.findObject("pl.search.edit.searchhelp");
+ //fakeText = frameGroup.findObject("pl.search.go.text.fake");
+
+ results_container = newDynamicContainer("searchresults");
+ results_layout = results_container.getLayout("normal");
+ searchResults = results_layout.findObject("PlaylistPro.list");
+ searchResults.setFontSize(16);
+ searchNews = results_layout.findObject("PlaylistPro.list.news");
+
+ main_layout = getContainer("main").getLayout("normal");
+
+ initAttribs_Playlist();
+
+ //translation workaround
+ /*searchButtonXui.setXmlParam("text", System.translate("Search"));
+ searchButtonXui.setXmlParam("x", integerToString(-1*fakeText.getAutoWidth()-4));
+ searchButtonXui.setXmlParam("w", integerToString(fakeText.getAutoWidth()+2));
+ searchXUI.setXmlParam("w", integerToString(-1*fakeText.getAutoWidth()-9));*/
+
+ refreshActiveCheck = new Timer;
+ refreshActiveCheck.setDelay(100);
+}
+System.onScriptUnLoading() {
+ delete refreshActiveCheck;
+}
+
+refreshActiveCheck.onTimer(){
+ if((!System.isAppActive() || System.isMinimized()) && results_layout.isVisible() ) results_layout.hide();
+}
+
+results_layout.onSetVisible(boolean onOff){
+ if(onOff){
+ refreshActiveCheck.start();
+ }
+ else{
+ refreshActiveCheck.stop();
+ }
+}
+
+System.onShowLayout(Layout _layout){
+ if(main_layout.isVisible()) results_layout.setXmlParam("ontop", "1");
+}
+
+frameGroup.onSetVisible(boolean onOff){
+ if(!onOff) clearSearchBox();
+}
+
+searchButton.onLeftClick(){
+ doSearch(searchBox.getText());
+}
+
+resizeResults(int items){
+ /*results_layout.setTargetX(results_layout.getLeft());
+ results_layout.setTargetY(results_layout.getTop());
+ results_layout.setTargetW(results_layout.getWidth());
+ results_layout.setTargetH(500);
+ results_layout.setTargetSpeed(1);
+ results_layout.gotoTarget();*/
+
+ //items++; //temp add one extra for info... xx items found
+ if(items>20) items=20;
+
+
+ if(items>=1) h_tune=29;
+ else h_tune=25;
+
+ //results_layout.setXmlParam("h", integerToString(20+items*18));
+
+ /*results_layout.setTargetX(results_layout.getLeft());
+ results_layout.setTargetY(results_layout.getTop());
+ results_layout.setTargetW(results_layout.getWidth());
+ results_layout.setTargetH(h_tune+items*16);
+ results_layout.setTargetSpeed(0.3);
+ results_layout.gotoTarget();*/
+ results_layout.resize(results_layout.getLeft(), results_layout.getTop(), results_layout.getWidth(), h_tune+items*16);
+}
+
+searchBox.onEnter(){
+ doSearch(searchBox.getText());
+}
+
+doSearch(String input){
+ if(input==""){
+ clearSearchBox();
+ return;
+ }
+
+ //search history stuff
+ String history = getPublicString("cPro.PlaylistPro.history", "");
+ history = replaceString(history, input, "");
+ history = replaceString(history, ";;", ";");
+ if(strleft(history, 1)==";") history = strright(history, strlen(history)-1);
+ if(strright(history, 1)==";") history = strleft(history, strlen(history)-1);
+ if(history=="") history= input;
+ else history= input+";"+history;
+
+ String output = getToken(history, ";", 0);
+ for(int i = 1; i<15; i++){
+ if(getToken(history, ";", i)=="") break;
+ output+=";"+getToken(history, ";", i);
+ }
+ setPublicString("cPro.PlaylistPro.history", history);
+
+
+ int itemsfound = 0;
+ input = strlower(input);
+
+ results_layout.setXmlParam("x", integerToString(fakeSB.clientToScreenX(fakeSB.getLeft()-2)));
+ results_layout.setXmlParam("y", integerToString(fakeSB.clientToScreenY(fakeSB.getTop() + fakeSB.getHeight())));
+ results_layout.setXmlParam("w", integerToString(frameGroup.getWidth()-19));
+
+ if(!results_layout.isVisible()) results_layout.setXmlParam("h", "1");
+
+ searchResults.deleteAllItems();
+ searchResults.scrollToItem(0);
+
+ for(int i = 0; i<PlEdit.getNumTracks(); i++){
+ foundsomething=false;
+
+ for(tn = 0; tn<10; tn++){
+ if(getToken(input, " ", tn)==""){
+ break;
+ }
+
+ temptoken = getToken(input, " ", tn);
+ if(strsearch(strlower(PlEdit.getTitle(i) + " " + PlEdit.getFileName(i)), temptoken)>=0){
+ foundsomething=true;
+ }
+ else{
+ foundsomething=false;
+ }
+
+ if(!foundsomething){
+ break;
+ }
+ }
+
+ if(foundsomething){
+ itemsfound++;
+ searchResults.addItem(integerToString(i+1)+". " + PlEdit.getTitle(i));
+ if(itemsfound>500){
+ searchNews.setText("Search result limited to 500 items");
+ break;
+ }
+ }
+ }
+
+ if(itemsfound==0){
+ searchNews.setText("Nothing was found");
+ }
+ else if(itemsfound<=500){
+ searchNews.setText(System.translate("Items found: ") +integerToString(itemsfound));
+ }
+
+ if(!results_layout.isVisible()) results_layout.show();
+
+ // Fix if always on top is enabled.. it just refresh the ontop ;)
+ results_layout.setXmlParam("ontop", "1");
+
+ resizeResults(itemsfound);
+}
+
+searchResults.onDoubleClick(Int itemnum){
+ PlEdit.playTrack (getPlEntry(itemnum));
+ setSearchBox(false);
+}
+
+searchResults.onRightClick(Int itemnum){
+ search_rc = new PopupMenu;
+ search_rc.addCommand("Move selected to top", 1, 0, 0);
+ search_rc.addCommand("Move selected to bottom", 2, 0, 0);
+ search_rc.addCommand("Move selected after current", 3, 0, 0);
+ search_rc.addCommand("Move selected together", 4, 0, 0);
+ search_rc.addSeparator();
+ search_rc.addCommand("Remove selected from playlist", 5, 0, 0);
+ int result = search_rc.popAtMouse();
+ delete search_rc;
+
+ int lastselected = searchResults.getFirstItemSelected();
+ int itemcounter = 1;
+
+ if(result==1){
+ PlEdit.moveTo (getPlEntry(lastselected), 0);
+ while(searchResults.getNextItemSelected(lastselected) != -1){
+ lastselected = searchResults.getNextItemSelected(lastselected);
+ PlEdit.moveTo (getPlEntry(lastselected), itemcounter);
+ itemcounter++;
+ }
+ PlEdit.showTrack(0);
+ }
+ else if(result==2){
+ PlEdit.moveTo (getPlEntry(lastselected), PlEdit.getNumTracks ()-1);
+ while(searchResults.getNextItemSelected(lastselected) != -1){
+ lastselected = searchResults.getNextItemSelected(lastselected);
+ PlEdit.moveTo (getPlEntry(lastselected)-itemcounter, PlEdit.getNumTracks ()-1);
+ itemcounter++;
+ }
+ PlEdit.showTrack(PlEdit.getNumTracks ()-1);
+ }
+ else if(result==3){
+ int align = 0;
+ int orignalPos = PlEdit.getCurrentIndex();
+ int temp = getPlEntry(lastselected);
+ if(PlEdit.getCurrentIndex() > temp) align++;
+
+ if(orignalPos > getPlEntry(lastselected)) PlEdit.moveTo (getPlEntry(lastselected), PlEdit.getCurrentIndex());
+ else PlEdit.moveTo (getPlEntry(lastselected), PlEdit.getCurrentIndex()+1);
+
+ while(searchResults.getNextItemSelected(lastselected) != -1){
+ lastselected = searchResults.getNextItemSelected(lastselected);
+
+ if(orignalPos != getPlEntry(lastselected)){
+ if(orignalPos > getPlEntry(lastselected)){
+ PlEdit.moveTo (getPlEntry(lastselected)-align, PlEdit.getCurrentIndex()+itemcounter);
+ }
+ else{
+ PlEdit.moveTo (getPlEntry(lastselected), PlEdit.getCurrentIndex()+itemcounter+1);
+ }
+
+ temp = getPlEntry(lastselected);
+ if(orignalPos > temp) align++;
+ itemcounter++;
+ }
+ }
+ PlEdit.showCurrentlyPlayingTrack();
+ }
+ else if(result==4){
+ int startpos = getPlEntry(lastselected);
+ while(searchResults.getNextItemSelected(lastselected) != -1){
+ lastselected = searchResults.getNextItemSelected(lastselected);
+ PlEdit.moveTo (getPlEntry(lastselected), startpos+itemcounter);
+ itemcounter++;
+ }
+ PlEdit.showTrack(startpos);
+ }
+ else if(result==5){
+ PlEdit.removeTrack (getPlEntry(lastselected));
+ while(searchResults.getNextItemSelected(lastselected) != -1){
+ lastselected = searchResults.getNextItemSelected(lastselected);
+ PlEdit.removeTrack (getPlEntry(lastselected)-itemcounter);
+ itemcounter++;
+ }
+ }
+
+ else return;
+
+ //hides the search
+ setSearchBox(false);
+}
+
+int getPlEntry(int search_item){
+ return stringToInteger(getToken(searchResults.getItemLabel(search_item,0), ". ", 0))-1;
+}
+
+setSearchBox(boolean onOff){
+ if(onOff){
+ searchBox.show();
+ clearButton.show();
+ clearButtonText.show();
+ helpSearch.hide();
+ searchBox.setFocus();
+ }
+ else{
+ searchBox.hide();
+ clearButton.hide();
+ clearButtonText.hide();
+ helpSearch.show();
+ results_layout.hide();
+ }
+}
+
+fakeSB.onLeftButtonDown(int x, int y){
+ setSearchBox(true);
+}
+fakeSB.onRightButtonDown(int x, int y){
+ search_rc = new PopupMenu;
+ search_rc.addCommand("** Search history **", 0, 0, 1);
+ search_rc.addSeparator();
+
+ String history = getPublicString("cPro.PlaylistPro.history", "");
+ boolean historyfound=false;
+ for(int i=0;i<15;i++){
+ String historyitem = getToken(history, ";", i);
+ if(historyitem==""){
+ if(i>0) historyfound=true;
+ break;
+ }
+ search_rc.addCommand(historyitem, i+1, 0, 0);
+ }
+ if(historyfound) search_rc.addSeparator();
+ search_rc.addCommand("Clear History", 100, 0, 0);
+
+ int result = search_rc.popAtMouse();
+ delete search_rc;
+
+ if(result>0 && result<100){
+ setSearchBox(true);
+ searchBox.setText(getToken(history, ";", result-1));
+ searchButton.leftClick();
+ }
+ else if(result==100){
+ setPublicString("cPro.PlaylistPro.history", "");
+ }
+}
+
+clearSearchBox(){
+ searchBox.setText("");
+ setSearchBox(false);
+}
+
+main_layout.onMove(){
+ if(results_layout.isVisible()){
+ results_layout.setXmlParam("x", integerToString(fakeSB.clientToScreenX(fakeSB.getLeft()-2)));
+ results_layout.setXmlParam("y", integerToString(fakeSB.clientToScreenY(fakeSB.getTop() + fakeSB.getHeight())));
+ results_layout.setXmlParam("ontop", "1");
+ }
+}
+main_layout.onResize(int x, int y, int w, int h){
+ if(results_layout.isVisible()) clearSearchBox();
+}
+
+frameGroup.onResize(int x, int y, int w, int h){
+ if(results_layout.isVisible()) clearSearchBox();
+
+ //if(playlist_search_attib.getData()=="0") return;
+
+ if(h<102 || playlist_search_attrib.getData()=="0"){
+
+ if(!topbar.isVisible()) return; //Don't do the same code over and over
+
+ topbar.hide();
+ plwh.setXmlParam("y", "0");
+ plwh.setXmlParam("h", "0");
+ }
+ else{
+ if(topbar.isVisible()) return; //Don't do the same code over and over
+
+ topbar.show();
+ plwh.setXmlParam("y", "30");
+ plwh.setXmlParam("h", "-30");
+ }
+}
+
+clearButton.onLeftClick(){
+ clearSearchBox();
+}
+
+playlist_search_attrib.onDataChanged(){
+ frameGroup.onResize(frameGroup.getLeft(), frameGroup.getTop(), frameGroup.getWidth(), frameGroup.getHeight());
+ //debug("abc " + getData());
+
+ if (getData() == "0"){
+ topbar.hide();
+ plwh.setXMLParam("y", "0");
+ plwh.setXMLParam("h", "0");
+ }
+ else if(getData() == "1"){
+
+ topbar.show();
+ plwh.setXMLParam("y", "30");
+ plwh.setXMLParam("h", "-30");
+
+ }
+}
+
+
+
+String replaceString(string baseString, string toreplace, string replacedby){
+ if (toreplace == "") return baseString;
+ string sf1 = strupper(baseString);
+ string sf2 = strupper(toreplace);
+ int i = strsearch(sf1, sf2);
+ if (i == -1) return baseString;
+ string left = "", right = "";
+ if (i != 0) left = strleft(baseString, i);
+ if (strlen(basestring) - i - strlen(toreplace) != 0) {
+ right = strright(basestring, strlen(basestring) - i - strlen(toreplace));
+ }
+ return left + replacedby + right;
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/playlistpro.maki b/Src/resources/skins/Big Bento/scripts/playlistpro.maki
new file mode 100644
index 00000000..3db3ab8f
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/playlistpro.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/pledit.m b/Src/resources/skins/Big Bento/scripts/pledit.m
new file mode 100644
index 00000000..c3ed4ba3
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/pledit.m
@@ -0,0 +1,619 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: pledit.m
+Version: 3.1
+
+Type: maki
+Date: 18. Sep. 2007 - 19:42
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#include "lib/std.mi"
+
+//#define DEBUG
+#define FILE_NAME "pledit.m"
+#include "lib/com/debug.m"
+
+#define PL_GUID "{45F3F7C1-A6F3-4EE6-A15E-125E92FC3F8D}"
+#define PLC_POPPLER_POS 200
+
+#include "attribs/init_playlist.m"
+
+Function fitContent (int playlistw, int playlistx);
+Function fit (group g, int x, int rx, int y, int ry, int w, int rw, int h, int rh);
+Function int updatePoppler(int w);
+Function int updateMainPoppler(int w);
+
+Global Frame dualwnd, pl_dualwnd, mainframe;
+
+Global Group g_playlist, g_player, g_sui, g_buttons, g_mcv, g_cover, g_upper, wdh_pl;
+Global Button p_enlarge, p_small;
+Global Button p_resize;
+Global int down_x, down_gx, isresizing;
+Global layout normal;
+Global Container player;
+//Global WindowHolder wdh_pl;
+Global Text pl_time;
+
+Global Button pe_add, pe_rem, pe_sel, pe_misc, pe_manage;
+
+Global Boolean startup, isBig, bypass_nocomp;
+
+Global Timer dc_openPl, dc_closePl, dc_loadWnd;
+
+Global Int COMP_Y, COMP_H, SUI_Y, SUI_H, BOTTOMSPACER, MAX_PL_H;
+Global Int DEF_PL_W, SIDESPACER;
+
+Global Int min_infowidth;
+
+
+System.onScriptLoaded ()
+{
+ initAttribs_Playlist();
+ normal = getScriptGroup();
+ player = normal.getContainer();
+
+ isBig = (getParam() == "big");
+ if (isBig)
+ {
+ mainframe = normal.getObject("player.mainframe.big");
+ }
+ else
+ {
+ mainframe = normal.getObject("player.mainframe");
+ }
+
+ dualwnd = mainframe.findObject("player.dualwnd");
+ g_mcv = dualwnd.findObject("player.component.fileinfo");
+ g_upper = dualwnd.findObject("player.component.playlist.frame");
+ pl_dualwnd = dualwnd.findObject("playlist.dualwnd");
+ g_playlist = pl_dualwnd.findObject("player.component.playlist");
+ g_cover = pl_dualwnd.findObject("player.component.playlist.albumart");
+ g_player = dualwnd.findObject("player.layout");
+ g_sui = normal.getObject("sui.content");
+ g_buttons = g_playlist.getObject("player.component.playlist.buttons");
+ p_enlarge = g_buttons.getObject("player.playlist.enlarge");
+ p_small = g_buttons.getObject("player.playlist.small");
+ p_resize = g_playlist.getObject("player.resize");
+ wdh_pl = g_playlist.getObject("playlistpro");
+ pl_time = g_buttons.getObject("PLTime");
+
+ pe_add = g_buttons.getObject("player.playlist.add");
+ pe_rem = g_buttons.getObject("player.playlist.rem");
+ pe_sel = g_buttons.getObject("player.playlist.sel");
+ pe_misc = g_buttons.getObject("player.playlist.misc");
+ pe_manage = g_buttons.getObject("player.playlist.manage");
+
+ min_infowidth = stringtoInteger(dualwnd.getXmlParam("maxwidth"));
+
+ dc_openPl = new Timer;
+ dc_openPl.setDelay(1);
+
+ dc_closePl = new Timer;
+ dc_closePl.setDelay(1);
+
+ dc_loadWnd = new Timer;
+ dc_loadWnd.setDelay(1);
+
+ // Global Definitions:
+
+ DEF_PL_W = g_playlist.getGuiW(); // (-)
+ SIDESPACER = g_sui.getGuiX(); // (+)
+ COMP_Y = mainframe.getGuiY(); // (+)
+ COMP_H = mainframe.getGuiH(); // (+)
+ SUI_Y = g_sui.getGuiY(); // (+)
+ SUI_H = g_sui.getGuiH(); // (-)
+ BOTTOMSPACER = SUI_Y + SUI_H; // (-)
+ MAX_PL_H = BOTTOMSPACER - COMP_Y; // (-)
+
+ startup = 1;
+
+ // show playlist album art if checked
+ playlist_cover_attrib.onDataChanged();
+
+ //Bento v0.8 hack
+ if (mainframe.getPosition() < stringToInteger(mainframe.getXmlParam("minwidth")))
+ {
+ mainframe.setPosition(stringToInteger(mainframe.getXmlParam("minwidth")));
+ }
+}
+
+system.onScriptUnloading ()
+{
+ int pos = pl_dualwnd.getPosition();
+ if (pos > 0) setPrivateInt(getSkinName(), "playlist_cover_poppler", pos);
+ delete dc_loadWnd;
+}
+
+dc_loadWnd.onTimer ()
+{
+ stop();
+ int pos = dualwnd.getPosition();
+ if (pos > 0) updatePoppler(pos);
+ playlist_enlarge_attrib.onDataChanged();
+
+ if (dualwnd.getPosition() > 0
+#ifdef DOHIDEMCV
+ || dualwnd.getXMlParam("from") == "left"
+#endif
+ ) dc_openPL.start();
+
+
+ else wdh_pl.hide(); //hideWa2Component(PL_GUID);
+}
+
+playlist_enlarge_attrib.onDataChanged ()
+{
+ int pl_w = dualwnd.getPosition();
+
+#ifdef DOHIDEMCV
+ if (dualwnd.getXmlParam("from") == "left")
+ {
+ pl_w = dualwnd.getWidth() - 8;
+ }
+#endif
+
+ int pl_x = 0 - ( pl_w + SIDESPACER ); // (-)
+
+ if (getData() == "1")
+ {
+ int sui_w = pl_x - SIDESPACER; // (-)
+
+ dualwnd.setXmlParam("relath", "1");
+ dualwnd.setXmlParam("h", integerToString(0));
+ mainframe.setXmlParam("relath", "1");
+ mainframe.setXmlParam("h", integerToString(MAX_PL_H));
+
+ g_sui.setXmlParam("w", integerToString(sui_w-8));
+
+ int pos = getPrivateInt(getSkinName(), "playlist_cover_poppler", PLC_POPPLER_POS);
+ if (playlist_cover_attrib.getData() == "1" && pos > 0 && getPrivateString(getSkinName(), "Component", "Media Library") != "Hidden")
+ {
+ g_cover.show();
+ pl_dualwnd.setPosition (pos);
+ }
+ else
+ {
+ pl_dualwnd.setPosition (0);
+ g_cover.hide();
+ }
+
+ p_enlarge.hide();
+ p_small.show();
+ }
+ else
+ {
+ int sui_w = 0 - SIDESPACER - SIDESPACER; // (-)
+ int pc_w = pl_x - SIDESPACER; // (-)
+
+ g_cover.hide();
+
+ if (playlist_cover_attrib.getData() == "1")
+ {
+ int pos = pl_dualwnd.getPosition();
+ if (pos > 0) setPrivateInt(getSkinName(), "playlist_cover_poppler", pos);
+ }
+ pl_dualwnd.setPosition (0);
+
+ dualwnd.setXmlParam("h", integerToString(COMP_H-3));
+ dualwnd.setXmlParam("relath", "0");
+ mainframe.setXmlParam("h", integerToString(COMP_H));
+ mainframe.setXmlParam("relath", "0");
+
+ g_sui.setXmlParam("w", integerToString(sui_w));
+ p_enlarge.show();
+ p_small.hide();
+ }
+}
+
+g_playlist.onResize (int x, int y, int w, int h)
+{
+ int pos = dualwnd.getPosition();
+ debugString(integerToString(pos), 9);
+ updateMainPoppler(min_infowidth - pos - 8);
+
+ if (pos > 0
+#ifdef DOHIDEMCV
+ || dualwnd.getXMlParam("from") == "left"
+#endif
+ )
+ {
+ //setPrivateInt(getSkinName(), "pledit poppler width", dualwnd.getPosition());
+ if (!wdh_pl.isVisible())
+ {
+ setPrivateString(getSkinName(), "Pledit_pos", "top");
+ g_sui.sendAction("hide_comp", "pe", 0,0,0,0);
+
+ dc_openPl.start();
+ }
+
+ if (isBig)
+ {
+ if (w > 189)
+ {
+ pe_add.show();
+ pe_rem.show();
+ pe_sel.show();
+ pe_misc.show();
+ pe_manage.show();
+ }
+ else if (w <= 189 && w >158)
+ {
+ pe_add.show();
+ pe_rem.show();
+ pe_sel.show();
+ pe_misc.show();
+ pe_manage.hide();
+ }
+ else if (w <= 158 && w >127)
+ {
+ pe_add.show();
+ pe_rem.show();
+ pe_sel.show();
+ pe_misc.hide();
+ pe_manage.hide();
+ }
+ else if (w <= 127 && w >96)
+ {
+ pe_add.show();
+ pe_rem.show();
+ pe_sel.hide();
+ pe_misc.hide();
+ pe_manage.hide();
+ }
+ else if (w <= 96 && w >65)
+ {
+ pe_add.show();
+ pe_rem.hide();
+ pe_sel.hide();
+ pe_misc.hide();
+ pe_manage.hide();
+ }
+ else
+ {
+ pe_add.hide();
+ pe_rem.hide();
+ pe_sel.hide();
+ pe_misc.hide();
+ pe_manage.hide();
+ }
+ }
+ else
+ {
+ if (w > 146)
+ {
+ pe_add.show();
+ pe_rem.show();
+ pe_sel.show();
+ pe_misc.show();
+ pe_manage.show();
+ }
+ else if (w <= 146 && w >122)
+ {
+ pe_add.show();
+ pe_rem.show();
+ pe_sel.show();
+ pe_misc.show();
+ pe_manage.hide();
+ }
+ else if (w <= 122 && w >98)
+ {
+ pe_add.show();
+ pe_rem.show();
+ pe_sel.show();
+ pe_misc.hide();
+ pe_manage.hide();
+ }
+ else if (w <= 98 && w >74)
+ {
+ pe_add.show();
+ pe_rem.show();
+ pe_sel.hide();
+ pe_misc.hide();
+ pe_manage.hide();
+ }
+ else if (w <= 74 && w >50)
+ {
+ pe_add.show();
+ pe_rem.hide();
+ pe_sel.hide();
+ pe_misc.hide();
+ pe_manage.hide();
+ }
+ else
+ {
+ pe_add.hide();
+ pe_rem.hide();
+ pe_sel.hide();
+ pe_misc.hide();
+ pe_manage.hide();
+ }
+ }
+ }
+ else wdh_pl.hide();
+ if (playlist_enlarge_attrib.getdata() == "1")
+ {
+ int sui_w = - g_playlist.getWidth() - (2 * SIDESPACER) - 8;
+ g_sui.setXmlParam("w", integerToString(sui_w));
+ if (startup)
+ {
+ startup = 0;
+ mainframe.setXmlParam("relath", "1");
+ mainframe.setXmlParam("h", integerToString(MAX_PL_H));
+ dualwnd.setXmlParam("relath", "1");
+ dualwnd.setXmlParam("h", integerToString(0));
+ }
+ }
+}
+
+normal.onSetVisible (Boolean onoff)
+{
+ if (onoff)
+ {
+ playlist_enlarge_attrib.onDataChanged();
+ int pos = dualwnd.getPosition();
+ if (pos > 0
+#ifdef DOHIDEMCV
+ || dualwnd.getXMlParam("from") == "left"
+#endif
+ )
+ {
+ updatePoppler(pos);
+ dc_openPL.start();
+ }
+ else wdh_pl.hide();//hideWa2Component(PL_GUID);
+ }
+}
+
+normal.onUserResize (int x, int y, int w, int h)
+{
+ int pos = dualwnd.getPosition();
+ if (pos > 0) updatePoppler(pos);
+}
+
+/** Hide pl_time if it cannot be full displayed */
+
+pl_time.onResize (int x, int y, int w, int h)
+{
+ if (w < getTextWidth())
+ {
+ hide();
+ }
+ else
+ {
+ show();
+ }
+}
+
+pl_time.onTextChanged (String newtxt)
+{
+ if (getWidth() < getTextWidth())
+ {
+ hide();
+ }
+ else
+ {
+ show();
+ }
+}
+
+/** Playlist Component Handling */
+
+System.onGetCancelComponent (String guid, boolean goingvisible)
+{
+ if (getPrivateString(getSkinName(), "Pledit_pos", "top") == "sui")
+ {
+ return;
+ }
+
+ debugString(DEBUG_PREFIX "System.onGetCancelComponent ( "+ guid + " , " + integerToString(goingvisible) + " )", D_WTF);
+ if (guid == PL_GUID)
+ {
+ Boolean isShade = player.getCurLayout() != normal;
+ if (goingvisible == TRUE && !isShade)
+ {
+ int poppler_w = getPrivateInt(getSkinName(), "pledit poppler width", 200);
+ if (poppler_w < 1) poppler_w = 200;
+ g_playlist.show();
+ updatePoppler(poppler_w);
+ dc_openPl.start();
+ return FALSE;
+ }
+ else
+ {
+ if (dualwnd.getPosition() > 0) setPrivateInt(getSkinName(), "pledit poppler width", dualwnd.getPosition());
+ wdh_pl.hide();
+ dualwnd.setPosition(0);
+ return FALSE;
+ }
+ }
+}
+
+normal.onAction (String action, String param, Int x, int y, int p1, int p2, GuiObject source)
+{
+ if (action == "load_comp" && strlower(param) == "pledit")
+ {
+ int poppler_w = getPrivateInt(getSkinName(), "pledit poppler width", 200);
+ if (dualwnd.getPosition() > 0) poppler_w = dualwnd.getPosition();
+ if (dualwnd.getPosition() == 0) poppler_w = 200;
+ updatePoppler(poppler_w);
+ dc_openPl.start();
+ }
+ if (action == "hide_comp" && strlower(param) == "pledit")
+ {
+ setPrivateInt(getSkinName(), "pledit poppler width", dualwnd.getPosition());
+ wdh_pl.hide();
+ dualwnd.setPosition(0);
+ }
+ if (action == "pledit_posupdate")
+ {
+ int pos = dualwnd.getPosition();
+ if (pos > 0) updatePoppler(pos);
+ }
+ if (action == "sui")
+ {
+ if (param == "tonocomp")
+ {
+ if (playlist_cover_attrib.getData() == "1")
+ {
+ int pos = pl_dualwnd.getPosition();
+ if (pos > 0) setPrivateInt(getSkinName(), "playlist_cover_poppler", pos);
+ }
+ bypass_nocomp = TRUE; //we need to add a bypass otherwise playlist_cover_attrib will be turned OFF
+ pl_dualwnd.setPosition (0);
+ g_cover.hide();
+ bypass_nocomp = FALSE;
+ }
+ else if (param == "fromnocomp")
+ {
+ playlist_cover_attrib.onDataChanged ();
+ }
+ }
+}
+
+dualwnd.onAction (String action, String param, Int x, int y, int p1, int p2, GuiObject source)
+{
+ if (action == "set_maxwidth")
+ {
+ // update poppler for playlist/infocomp
+ updatePoppler(dualwnd.getPosition());
+ // update poppler bands for player/infocomp
+ min_infowidth = x;
+ updateMainPoppler(min_infowidth - dualwnd.getPosition() - 8);
+ }
+}
+
+wdh_pl.onSetVisible (Boolean onoff)
+{
+ debugString("wdh_pl set visible: " + integerToString(onoff), 9);
+ if (onoff)
+ {
+ playlist_cover_attrib.onDataChanged();
+ }
+ else
+ {
+ int pos = pl_dualwnd.getPosition();
+ if (pos > 0) setPrivateInt(getSkinName(), "playlist_cover_poppler", pos);
+ }
+}
+
+updatePoppler(int w)
+{
+ if (dualwnd.getPosition() == 0 && w == 0) return;
+ int min_w = stringToInteger(dualwnd.getXmlParam("minwidth"));
+ int max_w = stringToInteger(dualwnd.getXmlParam("maxwidth"));
+ if (max_w < 0) max_w = dualwnd.getWidth() + max_w;
+ debugString("max_w: " + integerToString(max_w), 9);
+ boolean reset = FALSE;
+ reset += (w == 0);
+ reset += (w < min_w);
+ if (reset) w = min_w;
+
+ // Prevent the playlist from overlapping the player
+ if (w > max_w)
+ {
+ w = max_w;
+
+ // Resize the player to get more space
+ if (max_w < min_w)
+ {
+ w = min_w;
+ int mainframe_pos = mainframe.getPosition() - (min_w - max_w); // I need to save this in a variable first, otherwise mainframe.setPos will crash...
+ mainframe.setPosition(mainframe_pos);
+ }
+ }
+ debugString("set poppler: " + integerToString(w), 9);
+ dualwnd.setPosition(w);
+}
+
+updateMainPoppler (int w)
+{
+ mainframe.setXmlparam("maxwidth", integerToString(w));
+}
+
+dc_openPl.onTimer ()
+{
+ dc_openPl.stop();
+ debugString("dc_openPl called!", 9);
+ wdh_pl.show();
+ g_playlist.show();
+ g_upper.show();
+ //if (!wdh_pl.isVisible()) debugInt(g_playlist.getWidth());
+}
+
+dc_closePl.onTimer ()
+{
+ dc_closePl.stop();
+ wdh_pl.hide();
+}
+
+//----------------------------------------------------------------------------------------------------------------
+// Playlist Album Art Handles
+//----------------------------------------------------------------------------------------------------------------
+
+Global boolean attrib_bypass = false;
+
+playlist_cover_attrib.onDataChanged ()
+{
+ if (attrib_bypass)
+ return;
+
+ if (playlist_enlarge_attrib.getData() == "0")
+ return;
+
+ if (getData() == "1")
+ {
+ int pos = getPrivateInt(getSkinName(), "playlist_cover_poppler", PLC_POPPLER_POS);
+ if (pos > 0 && getPrivateString(getSkinName(), "Component", "Media Library") != "Hidden")
+ {
+ pl_dualwnd.setPosition (pos);
+ g_cover.show();
+ }
+ else
+ {
+ pl_dualwnd.setPosition (0);
+ g_cover.hide();
+ }
+ }
+ else
+ {
+ int pos = pl_dualwnd.getPosition();
+ if (pos > 0) setPrivateInt(getSkinName(), "playlist_cover_poppler", pos);
+ pl_dualwnd.setPosition(0);
+ g_cover.hide();
+ }
+}
+
+Global Boolean bypass;
+
+player.onBeforeSwitchToLayout (Layout oldlayout, Layout newlayout)
+{
+ if (oldlayout == normal)
+ {
+ bypass = 1;
+ }
+}
+
+g_cover.onSetVisible (Boolean onoff)
+{
+ if (bypass)
+ {
+ bypass = 0;
+ return;
+ }
+
+ if (!onoff && !bypass_nocomp && playlist_cover_attrib.getdata() == "1" && getPrivateString(getSkinName(), "Component", "Media Library") != "Hidden" && playlist_enlarge_attrib.getData() == "1" && dualwnd.getPosition() > 0)
+ {
+ playlist_cover_attrib.setdata("0");
+ }
+ else if (onoff && !bypass_nocomp && playlist_cover_attrib.getdata() == "0" && dualwnd.getPosition() > 0)
+ {
+ attrib_bypass = true;
+ playlist_cover_attrib.setdata("1");
+ attrib_bypass = false;
+ }
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/pledit.maki b/Src/resources/skins/Big Bento/scripts/pledit.maki
new file mode 100644
index 00000000..0e4f04a4
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/pledit.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/seek.m b/Src/resources/skins/Big Bento/scripts/seek.m
new file mode 100644
index 00000000..f5d5b348
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/seek.m
@@ -0,0 +1,90 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: seek.m
+Version: 1.2
+
+Type: maki
+Date: 23. Jul. 2007 - 22:52
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+
+Note: This script is based on seek.m
+ from Winamp Modern
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#include <lib/std.mi>
+
+Global Group frameGroup;
+Global Slider Seeker, SeekerBehind;
+Global Int Seeking;
+Global GuiObject SongTicker;
+Global GuiObject progressBar;
+
+System.onScriptLoaded()
+{
+ frameGroup = system.getScriptGroup();
+ Seeker = frameGroup.findObject("seeker.ghost");
+ SeekerBehind = frameGroup.findObject("seeker.ghost");
+ progressBar = frameGroup.findObject("progressbar");
+ SongTicker = frameGroup.getParentLayout().findObject("songticker");
+
+ progressBar.hide();
+progressBar.show();
+
+ if (getStatus() == 0 || !seeker.isvisible())
+ {
+ progressBar.hide();
+ }
+}
+
+Seeker.onSetPosition(int p) {
+ if (seeking) {
+ Float f;
+ f = p;
+ f = f / 255 * 100;
+ Float len = getPlayItemLength();
+ if (len != 0) {
+ int np = len * f / 100;
+ SongTicker.sendAction
+ (
+ "showinfo",
+ translate("Seek") + ": " + integerToTime(np) + "/" + integerToTime(len) + " (" + integerToString(f) + "%) ",
+ 0, 0, 0, 0
+ );
+ }
+ }
+}
+
+/** Hehe, this is the best trick i figured out to indicate if we have a stream */
+
+Seeker.onSetVisible (Boolean onoff)
+{
+ if (onoff)
+ {
+ progressBar.show();
+ }
+ else
+ {
+ progressBar.hide();
+ }
+}
+
+Seeker.onLeftButtonDown(int x, int y) {
+ seeking = 1;
+ Seeker.setAlpha(128);
+ SeekerBehind.show();
+}
+
+Seeker.onLeftButtonUp(int x, int y) {
+ seeking = 0;
+ Seeker.setAlpha(255);
+ SeekerBehind.hide();
+ SongTicker.sendAction("cancelinfo", "", 0, 0, 0, 0);
+}
+
+Seeker.onSetFinalPosition(int p) {
+ SongTicker.sendAction("cancelinfo", "", 0, 0, 0, 0);
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/seek.maki b/Src/resources/skins/Big Bento/scripts/seek.maki
new file mode 100644
index 00000000..5776e63c
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/seek.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/shadelinks.m b/Src/resources/skins/Big Bento/scripts/shadelinks.m
new file mode 100644
index 00000000..b4a56bcd
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/shadelinks.m
@@ -0,0 +1,74 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: syncbutton.m
+Version: 1.0
+
+Type: maki
+Date: 25. Jun. 2007 - 14:04
+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/com/songinfo.m>
+
+//nothing to see here
+
+Function String getArtist ();
+
+/*
+
+Global Button search, nowplaying;
+Global boolean isShade;
+
+System.onScriptLoaded ()
+{
+ search = getScriptGroup().getObject("search");
+ isShade = (search.getParentLayout().getId() == "shade");
+ nowplaying = getScriptGroup().getObject("nowplaying");
+}
+
+search.onLeftClick ()
+{
+ String artist = getArtist();
+ if (artist == "") return;
+
+ getContainer("main").switchToLayout("normal");
+ group sui = getContainer("main").getLayout("normal").findObject("sui.content");
+ sui.sendAction ("browser_search", artist, 0, 0, 0, 0);
+}
+
+nowplaying.onLeftClick ()
+{
+ String artist = getArtist();
+ if (artist == "") return;
+
+ //getContainer("main").switchToLayout("normal");
+ String icid = "fileinfoicon";
+ if (isShade)
+ {
+ icid = "winshadeiconbento";
+ }
+ System.navigateUrlBrowser("http://client.winamp.com/nowplaying/artist/?icid="+ icid +"&artistName=" + artist);
+}
+
+*/
+
+String getArtist ()
+{
+ songinfo_reload();
+ if (songinfo_isStream && songinfo_artist == "")
+ {
+ int v = strsearch(songinfo_streamtitle, " - ");
+ if (v > 0)
+ {
+ return strleft(songinfo_streamtitle, v);
+ }
+ return songinfo_streamtitle;
+ }
+
+ return songinfo_artist;
+}
diff --git a/Src/resources/skins/Big Bento/scripts/shadelinks.maki b/Src/resources/skins/Big Bento/scripts/shadelinks.maki
new file mode 100644
index 00000000..f1c75302
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/shadelinks.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/shadesize.m b/Src/resources/skins/Big Bento/scripts/shadesize.m
new file mode 100644
index 00000000..a9c5176c
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/shadesize.m
@@ -0,0 +1,217 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: shadesize.m
+Version: 2.1
+Type: maki
+Date: 23. Jul. 2007 - 17:24
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#include <lib/std.mi>
+#include attribs/init_appearance.m
+
+Function updateObjectPosition(int w);
+
+Global Group scriptGroup;
+//Global Group g_cbuttons, g_sysbuttons, g_display, g_volume, g_seek, g_vis, g_links;
+Global Group g_cbuttons, g_sysbuttons, g_display, g_volume, g_seek, g_vis;
+
+//Global Int minumim_w, x_cbuttons, w_cbuttons, w_sysbuttons, w_volume, w_display, w_seek, w_vis, x_seek, w_links, w_links_, x_links, x_links_;
+Global Int minumim_w, x_cbuttons, w_cbuttons, w_sysbuttons, w_volume, w_display, w_seek, w_vis, x_seek;
+
+System.onScriptLoaded ()
+{
+ initAttribs_Appearance();
+
+ scriptGroup = getScriptGroup();
+
+ g_cbuttons = scriptGroup.findObject("shade.cbuttons");
+ x_cbuttons = stringToInteger(g_cbuttons.getXmlParam("x"));
+ w_cbuttons = stringToInteger(g_cbuttons.getXmlParam("w"));
+
+ g_seek = scriptGroup.findObject("shade.seek");
+ w_seek = stringToInteger(g_seek.getXmlParam("w"));
+ x_seek = stringToInteger(g_seek.getXmlParam("x"));
+
+ g_vis = scriptGroup.findObject("shade.vis");
+ w_vis = stringToInteger(g_vis.getXmlParam("w"));
+
+/*
+ g_links = scriptGroup.findObject("shade.links");
+ w_links_ = stringToInteger(g_links.getXmlParam("w"));
+ x_links_ = stringToInteger(g_links.getXmlParam("x"));
+*/
+ w_sysbuttons = stringToInteger(getParam());
+
+ g_display = scriptGroup.findObject("shade.display");
+ w_display = stringToInteger(g_display.getXmlParam("w"));
+ g_volume = scriptGroup.findObject("shade.volume");
+ w_volume = stringToInteger(g_volume.getXmlParam("w"));
+}
+
+scriptGroup.onResize (int x, int y, int w, int h)
+{
+ updateObjectPosition(w);
+}
+
+scriptGroup.onSetVisible (Boolean onoff)
+{
+ if (onoff)
+ {
+ updateObjectPosition(scriptGroup.getWidth());
+ }
+}
+/*
+artist_info_buttons_attrib.onDataChanged ()
+{
+ updateObjectPosition(scriptGroup.getWidth());
+}
+*/
+updateObjectPosition (int w)
+{
+/* if (artist_info_buttons_attrib.getData() == "1")
+ {
+ w_links = w_links_;
+ x_links = x_links_;
+ }
+ else
+ {
+ w_links = x_links = 0;
+ }
+*/
+
+// if (w >= x_cbuttons + w_cbuttons + 2 * w_display + w_volume + w_sysbuttons + 3.5 * w_seek + w_vis + w_links)
+ if (w >= x_cbuttons + w_cbuttons + 2 * w_display + w_volume + w_sysbuttons + 3.5 * w_seek + w_vis)
+ {
+// if(g_links != null) g_links.setXmlParam("x", integerToString(x_seek - 2*w_seek - w_links));
+ g_seek.setXmlParam("x", integerToString(x_seek - 2*w_seek));
+ g_seek.setXmlParam("w", integerToString(3 * w_seek));
+ g_cbuttons.setXmlParam("x", integerToString(2 + x_cbuttons + w_vis));
+ g_volume.setXmlParam("x", integerToString(2 + x_cbuttons + w_vis + w_cbuttons));
+ g_display.setXmlParam("x", integerToString(2 + x_cbuttons + w_cbuttons + w_volume + w_vis));
+// g_display.setXmlParam("w", integerToString(0 - 1 - x_cbuttons - w_cbuttons - w_sysbuttons - w_volume - 3 * w_seek - w_vis - w_links));
+ g_display.setXmlParam("w", integerToString(0 - 1 - x_cbuttons - w_cbuttons - w_sysbuttons - w_volume - 3 * w_seek - w_vis));
+ g_display.setXmlParam("relatw", "1");
+ g_display.show();
+ g_volume.show();
+ g_seek.show();
+ g_vis.show();
+/* if(w_links != 0) g_links.show();
+ else g_links.hide();
+*/
+ }
+// else if (w >= x_cbuttons + w_cbuttons + 2 * w_display + w_volume + w_sysbuttons + 2 * w_seek + w_vis + w_links)
+ else if (w >= x_cbuttons + w_cbuttons + 2 * w_display + w_volume + w_sysbuttons + 2 * w_seek + w_vis)
+ {
+// if(g_links != null) g_links.setXmlParam("x", integerToString(x_seek - w_seek - w_links));
+ g_seek.setXmlParam("x", integerToString(x_seek - w_seek));
+ g_seek.setXmlParam("w", integerToString(2 * w_seek));
+ g_cbuttons.setXmlParam("x", integerToString(2 + x_cbuttons + w_vis));
+ g_volume.setXmlParam("x", integerToString(2 + x_cbuttons + w_vis + w_cbuttons));
+ g_display.setXmlParam("x", integerToString(2 + x_cbuttons + w_cbuttons + w_volume + w_vis));
+// g_display.setXmlParam("w", integerToString(0 - 1 - x_cbuttons - w_cbuttons - w_sysbuttons - w_volume - 2 * w_seek - w_vis - w_links));
+ g_display.setXmlParam("w", integerToString(0 - 1 - x_cbuttons - w_cbuttons - w_sysbuttons - w_volume - 2 * w_seek - w_vis));
+ g_display.setXmlParam("relatw", "1");
+ g_display.show();
+ g_volume.show();
+ g_seek.show();
+ g_vis.show();
+/* if(w_links != 0) g_links.show();
+ else g_links.hide();
+*/
+ }
+// else if (w >= x_cbuttons + w_cbuttons + w_display + w_volume + w_sysbuttons + w_seek + w_vis + w_links)
+ else if (w >= x_cbuttons + w_cbuttons + w_display + w_volume + w_sysbuttons + w_seek + w_vis)
+ {
+// if(g_links != null) g_links.setXmlParam("x", integerToString(x_seek - w_links));
+ g_seek.setXmlParam("x", integerToString(x_seek));
+ g_seek.setXmlParam("w", integerToString(w_seek));
+ g_cbuttons.setXmlParam("x", integerToString(2 + x_cbuttons + w_vis));
+ g_volume.setXmlParam("x", integerToString(2 + x_cbuttons + w_vis + w_cbuttons));
+ g_display.setXmlParam("x", integerToString(2 + x_cbuttons + w_cbuttons + w_volume + w_vis));
+// g_display.setXmlParam("w", integerToString(0 - 1 - x_cbuttons - w_cbuttons - w_sysbuttons - w_volume - w_seek - w_vis - w_links));
+ g_display.setXmlParam("w", integerToString(0 - 1 - x_cbuttons - w_cbuttons - w_sysbuttons - w_volume - w_seek - w_vis));
+ g_display.setXmlParam("relatw", "1");
+ g_display.show();
+ g_volume.show();
+ g_seek.show();
+ g_vis.show();
+/* if(w_links != 0) g_links.show();
+ else g_links.hide();
+*/
+ }
+// else if (w >= x_cbuttons + w_cbuttons + w_display + w_volume + w_sysbuttons + w_seek + w_links)
+ else if (w >= x_cbuttons + w_cbuttons + w_display + w_volume + w_sysbuttons + w_seek)
+ {
+// if(g_links != null) g_links.setXmlParam("x", integerToString(x_seek - w_links));
+ g_seek.setXmlParam("x", integerToString(x_seek));
+ g_seek.setXmlParam("w", integerToString(w_seek));
+ g_volume.setXmlParam("x", integerToString(x_cbuttons + w_cbuttons));
+ g_cbuttons.setXmlParam("x", integerToString(x_cbuttons));
+ g_display.setXmlParam("x", integerToString(x_cbuttons + w_cbuttons + w_volume));
+// g_display.setXmlParam("w", integerToString(0 - x_cbuttons - w_cbuttons - w_sysbuttons - w_volume - w_seek - w_links));
+ g_display.setXmlParam("w", integerToString(0 - x_cbuttons - w_cbuttons - w_sysbuttons - w_volume - w_seek));
+ g_display.setXmlParam("relatw", "1");
+ g_display.show();
+ g_volume.show();
+ g_seek.show();
+ g_vis.hide();
+/* if(w_links != 0) g_links.show();
+ else g_links.hide();
+*/
+ }
+ else if (w >= x_cbuttons + w_cbuttons + w_display + w_volume + w_sysbuttons + w_seek)
+ {
+ g_seek.setXmlParam("x", integerToString(x_seek));
+ g_seek.setXmlParam("w", integerToString(w_seek));
+ g_volume.setXmlParam("x", integerToString(x_cbuttons + w_cbuttons));
+ g_cbuttons.setXmlParam("x", integerToString(x_cbuttons));
+ g_display.setXmlParam("x", integerToString(x_cbuttons + w_cbuttons + w_volume));
+ g_display.setXmlParam("w", integerToString(0 - x_cbuttons - w_cbuttons - w_sysbuttons - w_volume - w_seek));
+ g_display.setXmlParam("relatw", "1");
+ g_display.show();
+ g_volume.show();
+ g_seek.show();
+ g_vis.hide();
+// g_links.hide();
+ }
+ else if (w >= x_cbuttons + w_cbuttons + w_display + w_volume + w_sysbuttons)
+ {
+ g_cbuttons.setXmlParam("x", integerToString(x_cbuttons));
+ g_volume.setXmlParam("x", integerToString(x_cbuttons + w_cbuttons));
+ g_display.setXmlParam("x", integerToString(x_cbuttons + w_cbuttons + w_volume));
+ g_display.setXmlParam("w", integerToString(0 - x_cbuttons - w_cbuttons - w_sysbuttons - w_volume));
+ g_display.setXmlParam("relatw", "1");
+ g_display.show();
+ g_volume.show();
+ g_seek.hide();
+ g_vis.hide();
+// g_links.hide();
+ }
+ else if (w >= x_cbuttons + w_cbuttons + w_display + w_sysbuttons)
+ {
+ g_cbuttons.setXmlParam("x", integerToString(x_cbuttons));
+ g_volume.setXmlParam("x", integerToString(x_cbuttons + w_cbuttons));
+ g_display.setXmlParam("x", integerToString(x_cbuttons + w_cbuttons));
+ g_display.setXmlParam("w", integerToString(0 - x_cbuttons - w_cbuttons - w_sysbuttons));
+ g_display.setXmlParam("relatw", "1");
+ g_display.show();
+ g_volume.hide();
+ g_seek.hide();
+ g_vis.hide();
+// g_links.hide();
+ }
+ else
+ {
+ g_cbuttons.setXmlParam("x", integerToString(x_cbuttons));
+ g_volume.hide();
+ g_display.hide();
+ g_seek.hide();
+ g_vis.hide();
+// g_links.hide();
+ }
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/shadesize.maki b/Src/resources/skins/Big Bento/scripts/shadesize.maki
new file mode 100644
index 00000000..61534de0
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/shadesize.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/simplemaximize.m b/Src/resources/skins/Big Bento/scripts/simplemaximize.m
new file mode 100644
index 00000000..cc255edd
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/simplemaximize.m
@@ -0,0 +1,72 @@
+/**
+ * simlple maximize script
+ *
+ * doesn't require a registry store, so ideal for standardframes
+ * required objects: maximize & restore as buttons
+ *
+ * @author mpdeimos
+ * @version 0.1
+ */
+
+#include <lib/std.mi>
+
+Global Button restore, maximize;
+Global Layout parent;
+
+Global Int lx, ly, lw, lh;
+
+System.onScriptLoaded ()
+{
+ restore = getScriptGroup().findObject("restore");
+ maximize = getScriptGroup().findObject("maximize");
+ parent = getScriptGroup().getParentLayout();
+
+ lx = -1;
+ ly = -1;
+ lh = -1;
+ lw = -1;
+}
+
+parent.onResize (int x, int y, int w, int h)
+{
+ double d = getScale();
+ if (getLeft() == getViewPortLeftfromGuiObject(parent) && getTop() == getViewPortTopfromGuiObject(parent) && getWidth() == getViewPortWidthfromGuiObject(parent)/d && getHeight() == getViewPortHeightfromGuiObject(parent)/d)
+ {
+ restore.show();
+ maximize.hide();
+ }
+ else
+ {
+ restore.hide();
+ maximize.show();
+ }
+}
+
+maximize.onLeftClick ()
+{
+ lx = parent.getLeft();
+ ly = parent.getTop();
+ lw = parent.getWidth();
+ lh = parent.getHeight();
+
+ double d = parent.getScale();
+ parent.resize(getViewPortLeftfromGuiObject(parent), getViewPortTopfromGuiObject(parent), getViewPortWidthfromGuiObject(parent)/d, getViewPortHeightfromGuiObject(parent)/d);
+}
+
+
+restore.onLeftClick ()
+{
+ if (lx == -1)
+ lx = parent.getLeft() - 75;
+ if (ly == -1)
+ ly = parent.getTop() - 75;
+ if (lw == -1)
+ lw = parent.getWidth() - 150;
+ if (lh == -1)
+ lh = parent.getHeight() - 150;
+
+ parent.resize(lx,ly,lw,lh);
+}
+
+
+// TODO (mpdeimos) add scale recognizing
diff --git a/Src/resources/skins/Big Bento/scripts/simplemaximize.maki b/Src/resources/skins/Big Bento/scripts/simplemaximize.maki
new file mode 100644
index 00000000..75649cb2
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/simplemaximize.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/songinfo.m b/Src/resources/skins/Big Bento/scripts/songinfo.m
new file mode 100644
index 00000000..2805f95c
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/songinfo.m
@@ -0,0 +1,214 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: songinfo.m
+Version: 1.0
+
+Type: maki
+Date: 20. Nov. 2006 - 22:47
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#include <lib/std.mi>
+
+Function int getChannels (); // returning 1 for mono, 2 for stereo, more for multichannel (e.g. 6), -1 for no info available
+Function string getBitrate();
+Function string getFrequency();
+
+Global layer monster;
+Global timer delayload, songInfoTimer;
+
+Global Text Bitrate, Frequency;
+Global Layer l_Bitrate, l_Frequency;
+Global int tempwidth;
+Global boolean param;
+
+System.onScriptLoaded()
+{
+ group PlayerDisplay = getScriptgroup();
+
+ param = (getParam() == "big");
+
+ monster = PlayerDisplay.findObject("monster");
+
+ Bitrate = PlayerDisplay.findObject("Bitrate");
+ Frequency = PlayerDisplay.findObject("Frequency");
+ l_Bitrate = PlayerDisplay.findObject("Bitrate.label");
+ l_Frequency = PlayerDisplay.findObject("Frequency.label");
+
+ delayload = new Timer;
+ delayload.setDelay(100);
+
+ songInfoTimer = new Timer;
+ songInfoTimer.setDelay(1000);
+
+ Int PlayerStatus = System.getStatus();
+
+ if ( PlayerStatus != 0 )
+ {
+ delayload.start();
+ bitrate.setText(getBitrate());
+ Frequency.setText(getFrequency());
+ if (PlayerStatus == 1)
+ {
+ songInfoTimer.start();
+ }
+ }
+}
+
+system.onScriptUnloading ()
+{
+ songinfotimer.stop();
+ delete songinfotimer;
+ delayload.stop();
+ delete delayload;
+}
+
+System.onResume()
+{
+ delayload.start();
+ songInfoTimer.start();
+}
+
+System.onPlay()
+{
+ delayload.start();
+ songInfoTimer.start();
+}
+
+System.onStop ()
+{
+ monster.setXmlParam("image", "player.songinfo.na");
+ songInfoTimer.stop();
+}
+
+system.onPause ()
+{
+ songInfoTimer.stop();
+}
+
+System.onTitleChange(String newtitle)
+{
+ delayload.start();
+ bitrate.setText(getBitrate());
+}
+
+delayload.onTimer ()
+{
+ delayload.stop();
+ int c = getChannels();
+ if (c == -1) monster.setXmlParam("image", "player.songinfo.na");
+ else if (c == 1) monster.setXmlParam("image", "player.songinfo.mono");
+ else if (c == 2 || c == 3) monster.setXmlParam("image", "player.songinfo.stereo");
+ else
+ {
+ if (tempwidth > 23) monster.setXmlParam("image", "player.songinfo.multi2");
+ else monster.setXmlParam("image", "player.songinfo.multi");
+ }
+ //ensure to display bitrate & frequency
+ bitrate.setText(getBitrate());
+ Frequency.setText(getFrequency());
+}
+
+Int getChannels ()
+{
+ if (strsearch(getSongInfoText(), "tereo") != -1)
+ {
+ return 2;
+ }
+ else if (strsearch(getSongInfoText(), "ono") != -1)
+ {
+ return 1;
+ }
+ else if (strsearch(getSongInfoText(), "annels") != -1)
+ {
+ int pos = strsearch(getSongInfoText(), "annels");
+ return stringToInteger(strmid(getSongInfoText(), pos - 4, 1));
+ }
+ else
+ {
+ return -1;
+ }
+}
+
+songInfoTimer.onTimer ()
+{
+ bitrate.setText(getBitrate());
+}
+
+string getBitrate ()
+{
+ string sit = strlower(getSongInfoText());
+ if (sit != "")
+ {
+ string rtn;
+ int searchresult;
+ for (int i = 0; i < 5; i++) {
+ rtn = getToken(sit, " ", i);
+ searchResult = strsearch(rtn, "kbps");
+ if (searchResult>0) return StrMid(rtn, 0, searchResult);
+ }
+ return "";
+ }
+ else
+ {
+ return "";
+ }
+}
+
+string getFrequency ()
+{
+ string sit = strlower(getSongInfoText());
+ if (sit != "")
+ {
+ string rtn;
+ int searchresult;
+ for (int i = 0; i < 5; i++) {
+ rtn = getToken(sit, " ", i);
+ searchResult = strsearch(strlower(rtn), "khz");
+ if (searchResult>0)
+ {
+ rtn = StrMid(rtn, 0, searchResult);
+ searchResult = strsearch(strlower(rtn), ".");
+ if (searchResult>0)
+ {
+ rtn = getToken(rtn, ".", 0);
+ }
+ return rtn;
+ }
+ }
+ return "";
+ }
+ else
+ {
+ return "";
+ }
+}
+
+Bitrate.onTextChanged (String newtxt)
+{
+ if (param) return;
+ if (Bitrate.getTextWidth() == tempwidth) return;
+ tempwidth = getTextWidth();
+ if (getTextWidth() > 23)
+ {
+ monster.setXmlParam("x", "-39");
+ Frequency.setXmlParam("x", "-75");
+ l_Bitrate.setXmlParam("x", "-91");
+ l_Frequency.setXmlParam("x", "-58");
+ Bitrate.setXmlParam("w", "26");
+ if (getChannels() > 3) monster.setXmlParam("image", "player.songinfo.multi2");
+ }
+ else
+ {
+ monster.setXmlParam("x", "-45");
+ Frequency.setXmlParam("x", "-80");
+ l_Bitrate.setXmlParam("x", "-96");
+ l_Frequency.setXmlParam("x", "-63");
+ Bitrate.setXmlParam("w", "20");
+ if (getChannels() > 3) monster.setXmlParam("image", "player.songinfo.multi");
+ }
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/songinfo.maki b/Src/resources/skins/Big Bento/scripts/songinfo.maki
new file mode 100644
index 00000000..1d37b984
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/songinfo.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/songticker.m b/Src/resources/skins/Big Bento/scripts/songticker.m
new file mode 100644
index 00000000..6620dac6
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/songticker.m
@@ -0,0 +1,190 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: songticker.m
+Version: 1.0
+
+Type: maki
+Date: 18. Nov. 2006 - 16:08
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#include <lib/std.mi>
+#include attribs/init_songticker.m
+
+Function setTextW();
+Function updateTickerScrolling();
+
+Global Timer SongTickerTimer;
+Global GuiObject SongTicker;
+Global Text SongTime, InfoDisplay;
+Global int SongTicker_x, SongTicker_w, total_w;
+Global int SongTime_x, SongTime_w, offset_x;
+
+Global Boolean isShade, byPassTimer;
+
+System.onScriptLoaded ()
+{
+ initAttribs_Songticker();
+
+ group sg = getScriptGroup();
+
+ if (sg.getParentLayout().getID() == "shade") isShade = TRUE;
+
+ SongTicker = sg.findObject("songticker");
+ InfoDisplay = sg.findObject("InfoDisplay");
+ SongTickerTimer = new Timer;
+ SongTickerTimer.setDelay(666);
+
+ SongTime = sg.findObject("SongTime");
+
+ SongTicker_x = SongTicker.getGuiX();
+ SongTicker_w = SongTicker.getGuiW();
+
+ total_w = SongTicker_x + SongTicker_w;
+
+ SongTime_x = SongTime.getGuiX();
+ SongTime_w = SongTime.getTextWidth();
+
+ offset_x = stringToInteger(getParam());
+
+ setTextW();
+
+ updateTickerScrolling();
+
+}
+
+System.onScriptUnloading ()
+{
+ SongTickerTimer.stop();
+ delete SongTickerTimer;
+}
+
+SongTicker.onAction (String action, String param, Int x, int y, int p1, int p2, GuiObject source)
+{
+ if (strlower(action) == "showinfo")
+ {
+ InfoDisplay.cancelTarget();
+ Songticker.cancelTarget();
+ SongTickerTimer.stop();
+ SongTickerTimer.start();
+ InfoDisplay.setText(param);
+ InfoDisplay.setAlpha(255);
+ SongTicker.setAlpha(0);
+ }
+ else if (strlower(action) == "cancelinfo")
+ {
+ SongTickerTimer.onTimer ();
+ }
+ else if (strlower(action) == "setguix")
+ {
+ byPassTimer = TRUE;
+ SongTicker_X = x;
+ SongTicker_W = total_w - SongTicker_X;
+ SongTicker.setXmlParam("x", integerToString(SongTicker_X));
+ InfoDisplay.setXmlParam("x", integerToString(SongTicker_X));
+ SongTicker.setXmlParam("w", integerToString(SongTicker_W));
+ InfoDisplay.setXmlParam("w", integerToString(SongTicker_W));
+ }
+ else if (strlower(action) == "restoreguix")
+ {
+ byPassTimer = FALSE;
+ setTextW ();
+ }
+}
+
+SongTickerTimer.onTimer ()
+{
+ SongTickerTimer.stop();
+ InfoDisplay.cancelTarget();
+ InfoDisplay.setTargetA(0);
+ InfoDisplay.setTargetSpeed(0.3);
+ InfoDisplay.gotoTarget();
+}
+
+InfoDisplay.onTargetReached ()
+{
+ if (InfoDisplay.getAlpha() == 0)
+ {
+ setTextW ();
+ Songticker.cancelTarget();
+ Songticker.setTargetA(255);
+ Songticker.setTargetX(Songticker.getGuiX());
+ Songticker.setTargetW(Songticker.getGuiW());
+ Songticker.setTargetSpeed(0.3);
+ Songticker.gotoTarget();
+ }
+}
+
+/* Changing TickerScrolling via Config Attrib */
+
+ScrollingAttribute.onDataChanged ()
+{
+ setTextW ();
+ updateTickerScrolling();
+}
+
+updateTickerScrolling ()
+{
+ if (Songticker == NULL)
+ {
+ return;
+ }
+
+ if (songticker_scrolling_disabled_attrib.getData() == "1") SongTicker.setXMLParam("ticker", "off");
+ if (songticker_style_modern_attrib.getData() == "1") SongTicker.setXMLParam("ticker", "bounce");
+ if (songticker_style_old_attrib.getData() == "1") SongTicker.setXMLParam("ticker", "scroll");
+}
+
+/* set Songticker Position */
+
+setTextW ()
+{
+ if (byPassTimer) return;
+
+ if (Songticker == NULL || InfoDisplay == NULL)
+ {
+ return;
+ }
+
+ SongTicker_X = SongTime_X + SongTime_w + offset_x;
+ SongTicker_W = total_w - SongTicker_X;
+
+ /*if (!isShade)
+ {
+ if (SongTime_w > 89)
+ {
+ SongTime.setXmlParam("x", "0");
+ SongTicker_X = SongTime_X + SongTime_w + offset_x - 11;
+ SongTicker_W = total_w - SongTicker_X + 11;
+ }
+ else
+ {
+ SongTime.setXmlParam("x", "10");
+ }
+ }*/
+
+ // debugString(system.getScriptGroup().getParentLayout().getID() + " -- x: " + integerToString(SongTicker_X) + " -- w: " + integerToString(SongTicker_W), 9);
+
+ Songticker.setXmlParam("x", integerToString(SongTicker_X));
+ Songticker.setXmlParam("w", integerToString(SongTicker_W));
+ InfoDisplay.setXmlParam("x", integerToString(SongTicker_X));
+ InfoDisplay.setXmlParam("w", integerToString(SongTicker_W));
+}
+
+SongTime.onTextChanged (String newtxt)
+{
+ int temp_w = SongTime.getTextWidth();
+ if (SongTime_w == temp_w) return;
+
+ SongTime_w = temp_w;
+ setTextW ();
+}
+
+songticker.onTargetReached ()
+{
+ setTextW ();
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/songticker.maki b/Src/resources/skins/Big Bento/scripts/songticker.maki
new file mode 100644
index 00000000..30d3e76f
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/songticker.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/standardframe.m b/Src/resources/skins/Big Bento/scripts/standardframe.m
new file mode 100644
index 00000000..acb87f8b
--- /dev/null
+++ b/Src/resources/skins/Big Bento/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}");
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/standardframe.maki b/Src/resources/skins/Big Bento/scripts/standardframe.maki
new file mode 100644
index 00000000..daf4476d
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/standardframe.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/suicore.m b/Src/resources/skins/Big Bento/scripts/suicore.m
new file mode 100644
index 00000000..0d7fdc93
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/suicore.m
@@ -0,0 +1,410 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: suicore.m
+Version: 4.4
+
+Type: maki
+Date: 02. Sep. 2007 - 17:35
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+
+Note: This script is based on drawer.m
+ from Winamp Modern, but extended to
+ 4 components that can be closed!
+ Like in drawer.m I warn everybody not
+ to modify this script, cause it can be
+ harmed very fast! And you don't want
+ a buggy winamp skin, want you?
+
+ Since script version 3.1
+ (onesie build #022)
+ the script is devided into subscripts
+ for better debugging.
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#include <lib/std.mi>
+#include <lib/config.mi>
+#include <lib/winampconfig.mi>
+
+#include attribs/init_windowpage.m
+#include attribs/init_Autoresize.m
+#include attribs/init_vis.m
+#include attribs/init_appearance.m
+
+// #define DEBUG
+#define FILE_NAME "suicore.m"
+#include <lib/com/debug.m>
+
+#define ML_GUID "{6B0EDF80-C9A5-11D3-9F26-00C04F39FFC6}"
+#define VIS_GUID "{0000000A-000C-0010-FF7B-01014263450C}"
+#define VIDEO_GUID "{F0816D7B-FFFC-4343-80F2-E8199AA15CC3}"
+#define PL_GUID "{45F3F7C1-A6F3-4EE6-A15E-125E92FC3F8D}"
+
+Function switchToMl();
+Function switchToPl();
+Function switchToVideo();
+Function switchToVis();
+//--Function switchToBrw();
+//--Function switchToExp();
+//--Function switchToCfg();
+Function switchToNoComp();
+Function switchFromNoComp();
+
+Function hideMl();
+Function showMl();
+Function hidePl();
+Function showPl();
+Function hideVis();
+Function showVis();
+Function showVideo();
+Function hideVideo();
+//--Function hideExp();
+//--Function showExp();
+//--Function hideBrw();
+//--Function showBrw();
+//--Function hideCfg();
+//--Function showCfg();
+
+Function onShowMl();
+Function onHideMl();
+Function onShowPl();
+Function onHidePl();
+Function onShowVis();
+Function onHideVis();
+Function onShowVideo();
+Function onHideVideo();
+//--Function onShowExp();
+//--Function onHideExp();
+//--Function onShowBrw();
+//--Function onHideBrw();
+//--Function onShowCfg();
+//--Function onHideCfg();
+Function onShowSUI();
+Function onHideSUI();
+Function onBeforeHideSUI();
+
+Function dc_showMl();
+Function dc_hideMl();
+Function dc_showPl();
+Function dc_hidePl();
+Function dc_showVis();
+Function dc_showVideo();
+Function dc_hideVis();
+Function dc_hideVideo();
+//--Function dc_showExp();
+//--Function dc_hideExp();
+//--Function dc_showBrw();
+//--Function dc_hideBrw();
+//--Function dc_showCfg();
+//--Function dc_hideCfg();
+
+Function dc_showSUI();
+Function dc_closeSUI();
+
+Global GuiObject sui_window;
+Global Group sui_components;
+Global Group sui_vis, sui_video, sui_ml, sui_pl /*--, sui_brw, sui_exp, sui_cfg--*/;
+Global WindowHolder sui_vis_wdh;
+Global Button switch_ml, switch_pl, switch_video, switch_vis /*--, switch_exp, switch_brw, switch_cfg--*/;
+Global Button hide_sui, show_sui;
+Global Boolean bypasscancel;
+Global Boolean showing_vis, hiding_vis, showing_video, hiding_video, showing_ml, hiding_ml, showing_pl, hiding_pl;
+/*--Global Boolean showing_exp, hiding_exp, showing_brw, hiding_brw, showing_cfg, hiding_cfg;--*/
+Global Int play_auto_fs_video;
+
+Global Boolean callback_showing_vis, callback_hiding_vis, callback_showing_video, callback_hiding_video, callback_showing_ml, callback_hiding_ml, callback_showing_pl, callback_hiding_pl;
+/*--Global Boolean callback_showing_exp, callback_hiding_exp, callback_showing_brw, callback_hiding_brw, callback_showing_cfg, callback_hiding_cfg;--*/
+Global Boolean callback_closing_sui, callback_showing_sui;
+Global Layout normal;
+Global Container player;
+Global Boolean Mychange;
+Global Boolean startup;
+Global layer normal_resizer, normal_resizer2, normal_resizer3, normal_resizer4, normal_TBresizer, normal_TBresizer2, normal_TBresizer3;
+
+Global string h;
+
+Global Timer callbackTimer, tempDisable;
+
+Global button pe_move_top;
+
+//Global Button b_maximize, b_minimize, b_shade;
+
+// init special handles for video
+#include suicore/video_handles.m
+
+// script loading/unloading goes here
+#include suicore/load_handles.m
+
+// open / hiding components not caused by button clicks
+#include suicore/external_handles.m
+
+// showing and hiding the components
+#include suicore/show_hide.m
+
+
+/** Button Clicks */
+
+switch_video.onLeftClick ()
+{
+ debugString("switch_video.Clicked()", D_WTF);
+ switchToVideo();
+}
+
+switch_vis.onLeftClick ()
+{
+ debugString("switch_vis.Clicked()", D_WTF);
+ vis_inbig_attrib.setData("1");
+ switchToVis();
+}
+
+switch_ml.onLeftClick ()
+{
+ debugString("switch_ml.Clicked()", D_WTF);
+ switchToMl();
+}
+
+switch_pl.onLeftClick ()
+{
+ debugString("switch_pl.Clicked()", D_WTF);
+ switchToPl();
+}
+/*--
+switch_brw.onLeftClick ()
+{
+ debugString("switch_brw.Clicked()", D_WTF);
+ switchToBrw();
+}
+--*/
+/*--
+switch_exp.onLeftClick ()
+{
+ debugString("switch_exp.Clicked()", D_WTF);
+ switchToExp();
+}
+--*/
+/*--switch_cfg.onLeftClick ()
+{
+ debugString("switch_cfg.Clicked()", D_WTF);
+ switchToCfg();
+}--*/
+
+show_sui.onLeftClick ()
+{
+ debugString("show_sui.Clicked()", D_WTF);
+ switchFromNoComp();
+}
+
+hide_sui.onLeftClick ()
+{
+ debugString("hide_sui.Clicked()", D_WTF);
+ switchToNoComp();
+
+}
+
+/** Calls after comp is shown */
+
+onShowMl()
+{
+ switch_ml.setActivated(1);
+ switch_pl.setActivated(0);
+ switch_vis.setActivated(0);
+ switch_video.setActivated(0);
+ //--switch_brw.setActivated(0);
+ //--switch_exp.setActivated(0);
+ switch_ml.setXmlParam("ghost", "1");
+ switch_pl.setXmlParam("ghost", "0");
+ switch_video.setXmlParam("ghost", "0");
+ switch_vis.setXmlParam("ghost", "0");
+ //--switch_brw.setXmlParam("ghost", "0");
+ //--switch_Cfg.setActivated(0);
+}
+onHideMl() {
+ //switch_ml.setXmlParam("ghost", "0");
+}
+
+onShowPl()
+{
+ switch_ml.setActivated(0);
+ switch_pl.setActivated(1);
+ switch_vis.setActivated(0);
+ switch_video.setActivated(0);
+ //--switch_brw.setActivated(0);
+ //--switch_exp.setActivated(0);
+ switch_ml.setXmlParam("ghost", "0");
+ switch_pl.setXmlParam("ghost", "1");
+ switch_video.setXmlParam("ghost", "0");
+ switch_vis.setXmlParam("ghost", "0");
+ //--switch_brw.setXmlParam("ghost", "0");
+ //--switch_Cfg.setActivated(0);
+}
+onHidePl() {
+ //switch_ml.setXmlParam("ghost", "0");
+}
+
+onShowVis()
+{
+ switch_ml.setActivated(0);
+ switch_pl.setActivated(0);
+ switch_vis.setActivated(1);
+ switch_video.setActivated(0);
+ //--switch_brw.setActivated(0);
+ //--switch_exp.setActivated(0);
+ switch_vis.setXmlParam("ghost", "1");
+ switch_video.setXmlParam("ghost", "0");
+ switch_ml.setXmlParam("ghost", "0");
+ switch_pl.setXmlParam("ghost", "0");
+ //--switch_brw.setXmlParam("ghost", "0");
+ //hideNamedWindow(ML_GUID);
+ //--switch_Cfg.setActivated(0);
+}
+
+onHideVis() {
+ //switch_vis.setXmlParam("ghost", "0");
+}
+
+onShowVideo()
+{
+ switch_ml.setActivated(0);
+ switch_pl.setActivated(0);
+ switch_vis.setActivated(0);
+ switch_video.setActivated(1);
+ //--switch_brw.setActivated(0);
+ //--switch_exp.setActivated(0);
+ switch_video.setXmlParam("ghost", "1");
+ switch_vis.setXmlParam("ghost", "0");
+ switch_ml.setXmlParam("ghost", "0");
+ switch_pl.setXmlParam("ghost", "0");
+ //--switch_brw.setXmlParam("ghost", "0");
+ //hideNamedWindow(ML_GUID);
+ //--switch_Cfg.setActivated(0);
+}
+onHideVideo() {
+ //switch_video.setXmlParam("ghost", "0");
+}
+
+/*--
+onShowBrw()
+{
+ switch_ml.setActivated(0);
+ switch_pl.setActivated(0);
+ switch_vis.setActivated(0);
+ switch_video.setActivated(0);
+ switch_brw.setActivated(1);
+ switch_exp.setActivated(0);
+ switch_brw.setXmlParam("ghost", "1");
+ switch_vis.setXmlParam("ghost", "0");
+ switch_ml.setXmlParam("ghost", "0");
+ switch_pl.setXmlParam("ghost", "0");
+ switch_video.setXmlParam("ghost", "0");
+ hideNamedWindow(ML_GUID);
+ switch_Cfg.setActivated(0);
+}
+onHideBrw() {
+ switch_brw.setXmlParam("ghost", "0");
+}
+--*/
+/*--
+onShowExp()
+{
+ switch_ml.setActivated(0);
+ switch_vis.setActivated(0);
+ switch_video.setActivated(0);
+ switch_brw.setActivated(0);
+ //--switch_exp.setActivated(1);
+ //--switch_exp.setXmlParam("ghost", "1");
+
+ //hideNamedWindow(ML_GUID);
+ //--switch_Cfg.setActivated(0);
+}
+onHideExp() {
+ switch_exp.setXmlParam("ghost", "0");
+}
+--*/
+/*--onShowCfg()
+{
+ switch_ml.setActivated(0);
+ switch_vis.setActivated(0);
+ switch_video.setActivated(0);
+ switch_brw.setActivated(0);
+ switch_exp.setActivated(0);
+ //--switch_Cfg.setActivated(1);
+}
+onHideCfg() {}--*/
+
+onShowSUI ()
+{
+ /*string x = b_shade.getXmlParam("x");
+ b_shade.setXmlParam("x", b_minimize.getXmlParam("x"));
+ b_minimize.setXmlParam("x", b_maximize.getXmlParam("x"));
+ b_maximize.setXmlParam("x", x);
+ b_maximize.show();*/
+ sui_window.sendAction("callback", "onshowsui", 0,0,0,0);
+
+}
+
+onHideSUI ()
+{
+ //hideNamedWindow(ML_GUID);
+ /*string x = b_minimize.getXmlParam("x");
+ debugInt(b_shade.getGuiX());
+ b_minimize.setXmlParam("x", b_shade.getXmlParam("x"));
+ b_shade.setXmlParam("x", b_maximize.getXmlParam("x"));
+ b_maximize.setXmlParam("x", x);
+ b_maximize.hide();*/
+// sui_window.sendAction("callback", "onhidesui", 0,0,0,0);
+}
+
+onBeforeHideSUI ()
+{
+ //hideNamedWindow(ML_GUID);
+ /*string x = b_minimize.getXmlParam("x");
+ debugInt(b_shade.getGuiX());
+ b_minimize.setXmlParam("x", b_shade.getXmlParam("x"));
+ b_shade.setXmlParam("x", b_maximize.getXmlParam("x"));
+ b_maximize.setXmlParam("x", x);
+ b_maximize.hide();*/
+ sui_window.sendAction("callback", "onbeforehidesui", 0,0,0,0);
+}
+
+pe_move_top.onLeftClick ()
+{
+ normal.sendAction("load_comp", "pledit", 0,0,0,0);
+}
+
+
+#ifdef DEBUG
+
+/** Debug Stuff */
+
+sui_ml.onSetVisible (Boolean onoff)
+{
+ debugString(DEBUG_PREFIX "sui_ml.setVisible(" +integerToString(onoff)+ ");", D_WTF);
+}
+sui_vis.onSetVisible (Boolean onoff)
+{
+ debugString(DEBUG_PREFIX "sui_vis.setVisible(" +integerToString(onoff)+ ");", D_WTF);
+}
+sui_video.onSetVisible (Boolean onoff)
+{
+ debugString(DEBUG_PREFIX "sui_video.setVisible(" +integerToString(onoff)+ ");", D_WTF);
+}
+/*--
+sui_brw.onSetVisible (Boolean onoff)
+{
+ debugString(DEBUG_PREFIX "sui_brw.setVisible(" +integerToString(onoff)+ ");", D_WTF);
+}
+--*/
+/*--
+sui_exp.onSetVisible (Boolean onoff)
+{
+ debugString(DEBUG_PREFIX "sui_exp.setVisible(" +integerToString(onoff)+ ");", D_WTF);
+}--*/
+/*--sui_cfg.onSetVisible (Boolean onoff)
+{
+ debugString(DEBUG_PREFIX "sui_cfg.setVisible(" +integerToString(onoff)+ ");", D_WTF);
+}--*/
+
+#endif
diff --git a/Src/resources/skins/Big Bento/scripts/suicore.maki b/Src/resources/skins/Big Bento/scripts/suicore.maki
new file mode 100644
index 00000000..b28c20f8
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/suicore.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/suicore/external_handles.m b/Src/resources/skins/Big Bento/scripts/suicore/external_handles.m
new file mode 100644
index 00000000..5f64abae
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/suicore/external_handles.m
@@ -0,0 +1,767 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: external_handles.m
+
+Type: maki
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+Depending Files:
+ scripts/suicore.maki
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#ifndef included
+#error This script can only be compiled as a #include
+#endif
+
+
+//----------------------------------------------------------------------------------------------------------------
+// The main component switching as triggered by user menus, keyboard shortcuts, etc
+//----------------------------------------------------------------------------------------------------------------
+
+System.onGetCancelComponent(String guid, boolean goingvisible) {
+ debugString(DEBUG_PREFIX "System.onGetCancelComponent ( "+ guid + " , " + integerToString(goingvisible) + " ) {", D_WTF);
+ debugString(DEBUG_PREFIX " [Last Content: " + getPrivateString(getSkinName(), "Component", "Media Library") + " ]", D_WTF);
+
+ Boolean isShade = (player.getCurLayout() != normal);
+
+ // isVideo() hasn't been set yet in System.onPlay and System.onTitleChange, so we check it here instead.
+ if (play_auto_fs_video && !isVideo()) play_auto_fs_video = 0;
+
+ // Do Playlist Stuff First (is unlinked from SUI)
+
+ if (guid == PL_GUID)
+ {
+ if (goingvisible && isShade && (getPrivateString(getSkinName(), "Pledit_pos", "top") == "top" || pl_tab_attrib.getData() == "0"))
+ {
+ debugString(DEBUG_PREFIX " --> opening pl --- return from shade!", D_WTF);
+ debugString(DEBUG_PREFIX " return TRUE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+ switchToNoComp();
+ player.switchToLayout("normal");
+ normal.sendAction("load_comp", "pledit", 0,0,0,0);
+ return TRUE;
+ }
+ }
+
+ // Now we detect if suicore is already performing an action - if so we will return.
+
+ if (bypasscancel)
+ {
+ debugString(DEBUG_PREFIX " --> bypasscancel", D_WTF);
+ debugString(DEBUG_PREFIX " return FALSE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+
+ return FALSE;
+ }
+ if (guid == ML_GUID && !goingvisible && hiding_ml)
+ {
+ debugString(DEBUG_PREFIX " --> hiding_ml", D_WTF);
+ debugString(DEBUG_PREFIX " return FALSE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+
+ return FALSE;
+ }
+ if (guid == VIDEO_GUID && !goingvisible && hiding_video)
+ {
+ debugString(DEBUG_PREFIX " --> hiding_video", D_WTF);
+ debugString(DEBUG_PREFIX " return FALSE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+
+ return FALSE;
+ }
+ if (guid == VIS_GUID && !goingvisible && hiding_vis)
+ {
+ debugString(DEBUG_PREFIX " --> hiding_vis", D_WTF);
+ debugString(DEBUG_PREFIX " return FALSE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+
+ return FALSE;
+ }
+ if (guid == PL_GUID && !goingvisible && hiding_pl)
+ {
+ debugString(DEBUG_PREFIX " --> hiding_pl", D_WTF);
+ debugString(DEBUG_PREFIX " return FALSE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+
+ return FALSE;
+ }
+ if (guid == ML_GUID && goingvisible && showing_ml)
+ {
+ debugString(DEBUG_PREFIX " --> showing_ml", D_WTF);
+ debugString(DEBUG_PREFIX " return FALSE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+
+ return FALSE;
+ }
+ if (guid == VIDEO_GUID && goingvisible && showing_video)
+ {
+ debugString(DEBUG_PREFIX " --> showing_video", D_WTF);
+ debugString(DEBUG_PREFIX " return FALSE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+
+ return FALSE;
+ }
+ if (guid == VIS_GUID && goingvisible && showing_vis)
+ {
+ debugString(DEBUG_PREFIX " --> showing_vis", D_WTF);
+ debugString(DEBUG_PREFIX " return FALSE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+
+ return FALSE;
+ }
+ if (guid == PL_GUID && goingvisible && showing_pl)
+ {
+ debugString(DEBUG_PREFIX " --> showing_pl", D_WTF);
+ debugString(DEBUG_PREFIX " return FALSE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+
+ return FALSE;
+ }
+
+ // Let's get our current Content
+
+ String window_content = getPrivateString(getSkinName(), "Component", "Media Library");
+
+ // If a window wants to hide but we are still in collapsed mode - return
+ if (!goingvisible && window_content == "Hidden")
+ {
+ debugString(DEBUG_PREFIX " --> SUI isn't visible", D_WTF);
+ debugString(DEBUG_PREFIX " return TRUE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+ return FALSE;
+ }
+
+ // All comps that want to be shown
+ if (goingvisible) {
+ if (guid == VIDEO_GUID && (window_content != "Video" || isShade)) {
+ debugString(DEBUG_PREFIX " --> external showing_video --- start Timer", D_WTF);
+ debugString(DEBUG_PREFIX " return FALSE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+
+ if (isShade)
+ {
+ sui_video.hide();
+ player.switchToLayout("normal");
+ }
+
+ //setPrivateString(getSkinName(), "Component", "Video");
+
+ //--hideExp();
+ //--hideBrw();
+ hideVis();
+ hideMl();
+ hidePL();
+ //--hideCfg();
+
+ if (window_content == "Hidden")
+ {
+ setPrivateString(getSkinName(), "Hidden Component", "Video");
+ dc_showSUI ();
+ return TRUE;
+ }
+
+ dc_showVideo();
+
+ return TRUE;
+ } else if (guid == VIS_GUID && (window_content != "Vis" || isShade)) {
+
+ if (vis_inbig_attrib.getData() == "0")
+ {
+ debugString(DEBUG_PREFIX " --> vis shouldn't be shown in big sui!", D_WTF);
+ debugString(DEBUG_PREFIX " return FALSE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+ return FALSE;
+ }
+
+ debugString(DEBUG_PREFIX " --> external showing_vis --- start Timer", D_WTF);
+ debugString(DEBUG_PREFIX " return TRUE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+
+ if (isShade)
+ {
+ sui_vis.hide();
+ player.switchToLayout("normal");
+ }
+
+ //setPrivateString(getSkinName(), "Component", "Vis");
+
+ disablePSOVC();
+ hideVideo();
+ hideMl();
+ //--hideExp();
+ //--hideBrw();
+ hidePL();
+ //--hideCfg();
+ if (window_content == "Hidden")
+ {
+ setPrivateString(getSkinName(), "Hidden Component", "Vis");
+ dc_showSUI ();
+ return TRUE;
+ }
+ sui_vis_wdh.setXmlParam("autoopen", "0");
+ showVis();
+ sui_vis_wdh.setXmlParam("autoopen", "1");
+ return FALSE;
+ } else if (guid == ML_GUID && (window_content != "Media Library" || isShade)) {
+ debugString(DEBUG_PREFIX " --> external showing_ml --- start Timer", D_WTF);
+ debugString(DEBUG_PREFIX " return TRUE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+
+ if (isShade)
+ {
+ sui_ml.hide();
+ player.switchToLayout("normal");
+ }
+
+ //setPrivateString(getSkinName(), "Component", "Media Library");
+
+ disablePSOVC();
+ hideVideo();
+ hideVis();
+ hidePL();
+ //--hideExp();
+ //--hideBrw();
+ //--hideCfg();
+ if (window_content == "Hidden")
+ {
+ setPrivateString(getSkinName(), "Hidden Component", "Media Library");
+ dc_showSUI ();
+ return TRUE;
+ }
+ dc_showMl();
+
+ return TRUE;
+ } else if (guid == PL_GUID && (window_content != "Pledit" || isShade) && pl_tab_attrib.getData() == "1") {
+ if (getPrivateString(getSkinName(), "Pledit_pos", "top") != "sui")
+ {
+ debugString(DEBUG_PREFIX " suicore won't handle this!", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+ return FALSE;
+ }
+
+ debugString(DEBUG_PREFIX " --> external showing_pl --- start Timer", D_WTF);
+ debugString(DEBUG_PREFIX " return TRUE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+
+ if (isShade)
+ {
+ sui_pl.hide();
+ player.switchToLayout("normal");
+ }
+
+ //setPrivateString(getSkinName(), "Component", "Media Library");
+
+ disablePSOVC();
+ hideVideo();
+ hideVis();
+ //--hideExp();
+ //--hideBrw();
+ hideML();
+ //--hideCfg();
+ if (window_content == "Hidden")
+ {
+ setPrivateString(getSkinName(), "Hidden Component", "Pledit");
+ dc_showSUI ();
+ return TRUE;
+ }
+ dc_showPl();
+
+ return TRUE;
+ }
+ }
+
+ // All comps that want to be hidden
+ if (!goingvisible) {
+ if (guid == VIDEO_GUID && window_content == "Video") {
+ debugString(DEBUG_PREFIX " --> external hiding_video", D_WTF);
+
+ if (getStatus() != 0 && isVideo() && cfg_Video.getBool("autoopen") && cfg_Video.getBool("autoclose"))
+ {
+ debugString(DEBUG_PREFIX " --> video is playing", D_WTF);
+ debugString(DEBUG_PREFIX " return TRUE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+ return true;
+ }
+ else
+ {
+ disablePSOVC();
+ hideVideo();
+ hideVis();
+ //--hideExp();
+ //--hideBrw();
+ //--hideCfg();
+ dc_showMl(); // normal Component
+ debugString(DEBUG_PREFIX " --> no video is playing", D_WTF);
+ debugString(DEBUG_PREFIX " return FALSE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+ return false;
+ }
+ }
+ if (guid == PL_GUID && window_content == "Pledit" && pl_tab_attrib.getData() == "1") {
+ debugString(DEBUG_PREFIX " --> external hiding_pl", D_WTF);
+
+ if (getStatus() != STATUS_STOPPED && system.isVideo())
+ {
+ debugString(DEBUG_PREFIX " --> video is playing", D_WTF);
+ debugString(DEBUG_PREFIX " return TRUE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+
+ disablePSOVC();
+ hideML();
+ hideVis();
+ //--hideExp();
+ //--hideBrw();
+ hidePL();
+ //--hideCfg();
+ dc_showVideo(); // normal Component
+
+ return false;
+
+ }
+ else
+ {
+ disablePSOVC();
+ hideVideo();
+ hideVis();
+ //--hideExp();
+ //--hideBrw();
+ hidePL();
+ //--hideCfg();
+ dc_showMl(); // normal Component
+ debugString(DEBUG_PREFIX " --> no video is playing", D_WTF);
+ debugString(DEBUG_PREFIX " return FALSE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+ return false;
+ }
+ }
+ if (guid == VIS_GUID && window_content == "Vis") {
+ if (vis_inbig_attrib.getData() == "0")
+ {
+ debugString(DEBUG_PREFIX " --> vis shouldn't be closed in big sui!", D_WTF);
+ debugString(DEBUG_PREFIX " return FALSE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+ return FALSE;
+ }
+ if (getStatus() != STATUS_STOPPED && system.isVideo())
+ {
+ debugString(DEBUG_PREFIX " --> external hiding_vis --- open Video", D_WTF);
+ hideMl();
+ hideVis();
+ hidePL();
+ //--hideExp();
+ //--hideBrw();
+ //--hideCfg();
+ dc_showVideo();
+ }
+ else
+ {
+ debugString(DEBUG_PREFIX " --> external hiding_video --- hide Video", D_WTF);
+ hideVideo();
+ hideVis();
+ //--hideExp();
+ //--hideBrw();
+ hidePL();
+ //--hideCfg();
+ dc_showMl(); // normal Component
+ }
+ debugString(DEBUG_PREFIX " return FALSE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+ return FALSE;
+ }
+ if (guid == ML_GUID && window_content == "Media Library") {
+ if ((getStatus() == STATUS_PLAYING || getStatus() == STATUS_PAUSED) && isVideo())
+ {
+ debugString(DEBUG_PREFIX " --> external hiding_ml --- open Video", D_WTF);
+ debugString(DEBUG_PREFIX " return FALSE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+ hideMl();
+ hideVis();
+ hidePL();
+ //--hideExp();
+ //--hideBrw();
+ //--hideCfg();
+ dc_showVideo();
+ return FALSE;
+ }
+ else
+ {
+ debugString(DEBUG_PREFIX " --> external hiding_ml --- switch to vis", D_WTF);
+ debugString(DEBUG_PREFIX " return flase;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+ hideMl();
+ hideVis();
+ //--hideBrw();
+ hidePL();
+ //--hideCfg();
+ hideVideo();
+ //--hideExp();
+ dc_closeSUI();
+ return false;
+ }
+
+ }
+ }
+
+ debugString(DEBUG_PREFIX " --> Went thru", D_WTF);
+ debugString(DEBUG_PREFIX " return FALSE;", D_WTF);
+ debugString(DEBUG_PREFIX "}", D_WTF);
+
+ return FALSE;
+}
+
+
+Player.onSwitchToLayout (Layout _layout)
+{
+ if (_layout.getId() != "normal")
+ {
+ mychange = 1;
+ //--sui_explorer_attrib.setData("0");
+ //--sui_browser_attrib.setData("0");
+ //--sui_config_attrib.setData("0");
+ mychange = 0;
+ }
+}
+
+//----------------------------------------------------------------------------------------------------------------
+// Windows that aren't registered with winamp will be handled here, the visibility state is linked to cfgattribs
+//----------------------------------------------------------------------------------------------------------------
+
+/*--sui_browser_attrib.onDataChanged ()
+{
+ if (mychange) return;
+ mychange = 1;
+ String window_content = getPrivateString(getSkinName(), "Component", "Media Library");
+ if (getData() == "1")
+ {
+ if (player.getCurLayout() != normal)
+ {
+ player.switchToLayout("normal");
+ hideMl();
+ hideVis();
+ //--hideCfg();
+ hideVideo();
+ //--hideExp();
+ dc_showBrw();
+ return;
+ }
+ if (window_content == "Hidden")
+ {
+ setPrivateString(getSkinName(), "Hidden Component", "Browser");
+ switchFromNoComp ();
+ return;
+ }
+ switchToBrw();
+ }
+ else
+ {
+ if ((getStatus() == STATUS_PLAYING || getStatus() == STATUS_PAUSED) && isVideo())
+ {
+ hideBrw();
+ dc_showVideo();
+ }
+ else
+ {
+ hideBrw();
+ dc_showml();
+ }
+ }
+ mychange = 0;
+}
+--*/
+
+/*--sui_config_attrib.onDataChanged ()
+{
+ if (mychange) return;
+ mychange = 1;
+ String window_content = getPrivateString(getSkinName(), "Component", "Media Library");
+ if (getData() == "1")
+ {
+ if (player.getCurLayout() != "normal")
+ {
+ player.switchToLayout("normal");
+ hideMl();
+ hideVis();
+ hideBrw();
+ hideCfg();
+ hideVideo();
+ hideExp();
+ dc_showCfg();
+ return;
+ }
+ if (window_content == "Hidden")
+ {
+ setPrivateString(getSkinName(), "Hidden Component", "Config");
+ switchFromNoComp ();
+ return;
+ }
+ switchToCfg();
+ }
+ else
+ {
+ if ((getStatus() == STATUS_PLAYING || getStatus() == STATUS_PAUSED) && isVideo())
+ {
+ hideCfg();
+ dc_showVideo();
+ }
+ else
+ {
+ hideCfg();
+ dc_showml();
+ }
+ }
+ mychange = 0;
+}
+
+
+sui_explorer_attrib.onDataChanged ()
+{
+ if (mychange) return;
+ mychange = 1;
+ String window_content = getPrivateString(getSkinName(), "Component", "Media Library");
+ if (getData() == "1")
+ {
+ if (player.getCurLayout() != normal)
+ {
+ player.switchToLayout("normal");
+ hideMl();
+ hideVis();
+ hideBrw();
+ //--hideCfg();
+ hideVideo();
+ dc_showExp();
+ return;
+ }
+ if (window_content == "Hidden" )
+ {
+ setPrivateString(getSkinName(), "Hidden Component", "Explorer");
+ switchFromNoComp ();
+ return;
+ }
+ switchToExp();
+ }
+ else
+ {
+ if ((getStatus() == STATUS_PLAYING || getStatus() == STATUS_PAUSED) && isVideo())
+ {
+ hideExp();
+ dc_showVideo();
+ }
+ else
+ {
+ hideExp();
+ dc_showml();
+ }
+ }
+ mychange = 0;
+}
+--*/
+
+
+//----------------------------------------------------------------------------------------------------------------
+// If a link is clicked within winamp this function *should* be called by wasabi core.
+// returning 1 prevents winamp to open the url in an external browser
+//----------------------------------------------------------------------------------------------------------------
+
+System.onOpenUrl(string url)
+{
+ // If winamp is in shade mode
+ if (player.getCurLayout() != normal)
+ {
+ string comp = getPrivateString(getSkinName(), "Component", "Media Library"); // Get the current sui component
+
+ // Can also happen, winamp is in shade - and normal wnd is collapsed
+ if (comp == "Hidden")
+ {
+ player.switchToLayout("normal");
+ setPrivateString(getSkinName(), "Hidden Component", "Browser");
+ setPrivateString(getSkinName(), "UrlXgive", url);
+ switchFromNoComp();
+ return 0;
+ }
+
+ // The other case - sade & normal is not collapsed
+ setPrivateString(getSkinName(), "UrlXgive", url);
+ player.switchToLayout("normal");
+ hideMl();
+ hideVis();
+ //--hideCfg();
+ hideVideo();
+ //--hideExp();
+ //--dc_showBrw();
+ return 0;
+ }
+
+ String window_content = getPrivateString(getSkinName(), "Component", "Media Library");
+
+ // just deliver the url since the browser is already visible
+ if (window_content == "Browser")
+ /*
+ {
+ browser brw = sui_brw.findObject("webbrowser");
+ if (brw != NULL)
+ {
+ brw.sendAction ("openurl", url, 0, 0, 0, 0);
+ }
+ }
+ // Some other component is visible - so we store the url and show the browser
+ else
+ {
+ setPrivateString(getSkinName(), "UrlXgive", url);
+ debugString("System.onOpenUrl( "+url+" ); --> opening Browser", D_WTF);
+ if (window_content == "Hidden")
+ {
+ setPrivateString(getSkinName(), "Hidden Component", "Browser");
+ switchFromNoComp ();
+ return 0;
+ }
+ switchToBrw();
+ }
+ */
+ return 0;
+
+}
+
+
+//----------------------------------------------------------------------------------------------------------------
+// the sui window can recieve messages from other scripts (mainly: fileinfo.maki) - we handle this here
+//----------------------------------------------------------------------------------------------------------------
+
+/*sui_window.onAction (String action, String param, Int x, int y, int p1, int p2, GuiObject source)
+{
+ // Perform a search in the browser
+ if (strlower(action) == "browser_search")
+ {
+ browser brw = sui_brw.findObject("webbrowser");
+ //if (player.getCurLayout() != normal) // unlikely to happen!
+ {
+ //setPrivateString(getSkinName(), "UrlXgive", url);
+ player.switchToLayout("normal");
+ hideMl();
+ hideVis();
+ //--hideCfg();
+ hideVideo();
+ //--hideExp();
+ dc_showBrw();
+ brw.sendAction ("search", param, 0, 0, 0, 0);
+ return 0;
+ }
+ String window_content = getPrivateString(getSkinName(), "Component", "Media Library");
+ if (window_content == "Browser")
+ {
+ if (brw != NULL)
+ {
+ brw.sendAction ("search", param, 0, 0, 0, 0);
+ }
+ }
+ else
+ {
+ //setPrivateString(getSkinName(), "UrlXgive", url);
+ debugString("System.onOpenUrl( "+url+" ); --> opening Browser", D_WTF);
+ if (window_content == "Hidden")
+ {
+ setPrivateString(getSkinName(), "Hidden Component", "Browser");
+ switchFromNoComp ();
+ brw.sendAction ("search", param, 0, 0, 0, 0);
+ return 0;
+ }
+ switchToBrw();
+ brw.sendAction ("search", param, 0, 0, 0, 0);
+ }
+ return 0;
+ }
+ // Just navigate to a site
+ else if (strlower(action) == "browser_navigate")
+ {
+ browser brw = sui_brw.findObject("webbrowser");
+ if (player.getCurLayout() != normal)
+ {
+ //setPrivateString(getSkinName(), "UrlXgive", url);
+ player.switchToLayout("normal");
+ hideMl();
+ hideVis();
+ //--hideCfg();
+ hideVideo();
+ //--hideExp();
+ //--dc_showBrw();
+ brw.sendAction ("openurl", param, 0, 0, 0, 0);
+ return 0;
+ }
+ String window_content = getPrivateString(getSkinName(), "Component", "Media Library");
+ if (window_content == "Browser")
+ {
+ if (brw != NULL)
+ {
+ brw.sendAction ("openurl", param, 0, 0, 0, 0);
+ }
+ }
+ else
+ {
+ //setPrivateString(getSkinName(), "UrlXgive", url);
+ debugString("System.onOpenUrl( "+url+" ); --> opening Browser", D_WTF);
+ if (window_content == "Hidden")
+ {
+ setPrivateString(getSkinName(), "Hidden Component", "Browser");
+ brw.sendAction ("openurl", param, 0, 0, 0, 0);
+ switchFromNoComp ();
+ return 0;
+ }
+ switchToBrw();
+ brw.sendAction ("openurl", param, 0, 0, 0, 0);
+ }
+ return 0;
+ }
+ else if (strlower(action) == "opentab")
+ {
+ if (strlower(param) == "ml")
+ {
+ switchToMl();
+ }
+ }
+ else if (action == "hide_comp" && param == "pe")
+ {
+ if (getPrivateString(getSkinName(), "Component", "Media Library") == "Pledit")
+ {
+ switchToMl();
+ }
+ }
+
+}*/
+
+
+//----------------------------------------------------------------------------------------------------------------
+// Switching Vis Plugin between MCV and SUI
+//----------------------------------------------------------------------------------------------------------------
+
+vis_inbig_attrib.onDataChanged ()
+{
+ if (mychange) return;
+ String window_content2 = getPrivateString(getSkinName(), "Component", "Cover");
+ String window_content = getPrivateString(getSkinName(), "Component2", "Media Library");
+ int xg = getPrivateInt(getSkinName(), "ComponentXgive", 0);
+ if (getData() == "1" && (ic_vis.getData() == "1" || ic_vis_fileinfo.getData() == "1" || xg))
+ {
+ if (xg) setPrivateInt(getSkinName(), "ComponentXgive", 0);
+ switchToVis();
+ }
+ else if (getData() == "0" && sui_Vis.isVisible())
+ {
+ setPrivateInt(getSkinName(), "ComponentXgive", 1);
+ hideVis();
+ switchToMl();
+ }
+}
+
+//----------------------------------------------------------------------------------------------------------------
+// this one has only debug aims :)
+//----------------------------------------------------------------------------------------------------------------
+
+#ifdef DEBUG
+System.onLookForComponent(String guid)
+{
+ debugString(DEBUG_PREFIX "System.onLookForComponent ( "+ guid + " )", D_WTF);
+}
+#endif \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/suicore/load_handles.m b/Src/resources/skins/Big Bento/scripts/suicore/load_handles.m
new file mode 100644
index 00000000..72c55977
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/suicore/load_handles.m
@@ -0,0 +1,221 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: load_handles.m
+
+Type: maki
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+Depending Files:
+ scripts/suicore.maki
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#ifndef included
+#error This script can only be compiled as a #include
+#endif
+
+Function loadSUI (string content);
+Function collectComponents();
+
+Global timer tmr_collect;
+
+System.onScriptLoaded ()
+{
+ startup = 1;
+ initAttribs_windowpage();
+ initAttribs_vis();
+ initAttribs_Autoresize();
+ initAttribs_Appearance();
+ initVideo();
+ debugString(DEBUG_PREFIX "-------------------------", D_WTF);
+ debugString(DEBUG_PREFIX "System.onScriptLoded() {", D_WTF);
+
+ /*debugString(integerToString(isNamedWindowVisible(ML_GUID)),9);
+ showWindow(ML_GUID, "", 0);
+ debugString(integerToString(isNamedWindowVisible(ML_GUID)),9);*/
+
+ player = getContainer("main");
+ normal = player.getLayout("normal");
+ sui_window = normal.findObject("sui.content");
+ sui_components = sui_window.findObject("sui.components");
+
+ h = getToken(getParam(),",",0);
+
+ sui_vis = sui_components.findObject("wdh.vis");
+ sui_vis_wdh = sui_components.findObject("wdh.vis.object");
+ sui_video = sui_components.findObject("wdh.video");
+ sui_ml = sui_components.findObject("wdh.ml");
+ sui_pl = sui_components.findObject("wdh.pl");
+ //--sui_brw = sui_components.findObject("wdh.browser");
+ //--sui_exp = sui_components.findObject("wdh.explorer");
+ //--sui_cfg = sui_components.findObject("wdh.config");
+
+ switch_video = sui_window.findObject("switch.video");
+ switch_vis = sui_window.findObject("switch.vis");
+ switch_ml = sui_window.findObject("switch.ml");
+ switch_pl = sui_window.findObject("switch.pl");
+ //--switch_exp = sui_window.findObject("switch.explorer");
+ //--switch_brw = sui_window.findObject("switch.browser");
+ //--switch_cfg = sui_window.findObject("switch.config");
+
+ hide_sui = normal.getObject("sui.hide");
+ show_sui = normal.getObject("sui.show");
+
+ pe_move_top = sui_pl.findObject("pe.move.top");
+/*
+ b_maximize = normal.findObject("player.button.maximize");
+ b_minimize = normal.findObject("player.button.minimize");
+ b_shade = normal.findObject("player.button.shade");
+*/
+ normal_resizer = normal.getObject("player.resizer.bottomright.dummy");
+ normal_resizer2 = normal.getObject("player.resizer.bottomleft");
+ normal_resizer3 = normal.getObject("player.resizer.bottom");
+ normal_resizer4 = normal.getObject("player.resizer.bottom2");
+
+ normal_TBresizer = normal.findObject("titlebar.resizer.topright");
+ normal_TBresizer2 = normal.findObject("titlebar.resizer.topleft");
+ normal_TBresizer3 = normal.findObject("titlebar.resizer.top");
+
+ callbackTimer = new Timer;
+ callbackTimer.setDelay(1);
+ tempDisable = new Timer;
+ tempDisable.setDelay(100);
+
+ tmr_collect = new timer;
+ tmr_collect.setDelay(2000);
+ //tmr_collect.start();
+
+ //collectComponents();
+
+ String window_content = getPrivateString(getSkinName(), "Component", "Media Library");
+
+ debugString(DEBUG_PREFIX "window_content = " + window_content, D_WTF);
+
+ loadSUI(window_content);
+
+ debugString(DEBUG_PREFIX "}", D_WTF);
+ startup = 0;
+}
+
+System.onScriptUnloading ()
+{
+ debugString(DEBUG_PREFIX "System.onScriptUnloading() {", D_NWTF);
+
+ delete callbackTimer;
+ delete PSOVCTimer;
+ delete tempDisable;
+ delete tmr_collect;
+
+ debugString(DEBUG_PREFIX " delete Timers;", D_NWTF);
+ debugString(DEBUG_PREFIX "}", D_NWTF);
+}
+
+loadSUI (string content)
+{
+ if (content == "Vis")
+ {
+ debugString(DEBUG_PREFIX "if(Vis) performed", D_WTF);
+ Mychange = 1;
+ vis_inbig_attrib.setData("1");
+ Mychange = 0;
+ switchToVis();
+ }
+ else if (content == "Video")
+ {
+ debugString(DEBUG_PREFIX "if(Video) performed", D_WTF);
+ switchToVideo();
+ }
+ else if (content == "Media Library")
+ {
+ debugString(DEBUG_PREFIX "if(ML) performed", D_WTF);
+ switchToMl();
+ }
+ else if (content == "Pledit")
+ {
+ debugString(DEBUG_PREFIX "if(PL) performed", D_WTF);
+ switchToPl();
+ }/*--
+ else if (content == "Browser")
+ {
+ debugString(DEBUG_PREFIX "if(Browser) performed", D_WTF);
+ switchToBrw();
+ }--*/
+ /*--
+ else if (content == "Explorer")
+ {
+ debugString(DEBUG_PREFIX "if(Explorer) performed", D_WTF);
+ switchToExp();
+ }--*/
+ /*--else if (content == "Config")
+ {
+ debugString(DEBUG_PREFIX "if(Config) performed", D_WTF);
+ switchToCfg();
+ }--*/
+ else if (content == "Hidden")
+ {
+ debugString(DEBUG_PREFIX "if(Hidden) performed", D_WTF);
+ switchToNoComp();
+ }
+ else
+ {
+ debugString(DEBUG_PREFIX "[!] oops no component to perform", D_WTF);
+ }
+}
+/*
+collectComponents()
+{
+ for ( int i = 0; i < getNumRegisteredWindows(); i++ )
+ {
+ debug((getRegisteredWindowName(i)));
+ }
+
+}
+*/
+/*
+collectComponents ()
+{
+ int i = 0;
+ string s;
+ while (s = enumEmbedGUID(i) != "")
+ {
+ debug (s);
+ i++;
+ }
+ if (i == 0 && !tmr_collect.isRunning())
+ {
+ tmr_collect.start();
+ //}
+}*/
+/*
+tmr_collect.onTimer ()
+{
+ tmr_collect.stop();
+ debug(getRegisteredWindowName(0));
+
+ collectComponents();
+}
+*/
+/*
+player.onAddContent(GuiObject wnd, String id, String guid)
+{
+ debug(wnd.getName());
+ debug(id);
+// debug(guid);
+}*/
+/*
+sui_ml.onsetVisible(int v)
+{
+ windowholder w = findObject("wdh");
+ debug(w.getGUID());
+ GuiObject o = w.getContent();
+ debug(o.getId());
+ debug(o.getName());
+}*/
+/*
+System.onCreateLayout (Layout _layout)
+{
+ debug(_layout.getId());
+}*/
diff --git a/Src/resources/skins/Big Bento/scripts/suicore/show_hide.m b/Src/resources/skins/Big Bento/scripts/suicore/show_hide.m
new file mode 100644
index 00000000..5ac7856e
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/suicore/show_hide.m
@@ -0,0 +1,870 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: show_hide.m
+
+Type: maki
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+Depending Files:
+ scripts/suicore.maki
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#ifndef included
+#error This script can only be compiled as a #include
+#endif
+
+switchToMl()
+{
+ debugString(DEBUG_PREFIX "switchToMl() {", D_WTF);
+ if (callbackTimer.isRunning()) return;
+ if (tempDisable.isRunning()) return;
+ tempDisable.start();
+ disablePSOVC();
+ hideVis();
+ hideVideo();
+ hidePL();
+ //--hideExp();
+ //--hideBrw();
+ //--hideCfg();
+ //prohibit a closing bug
+ if (!startup) showMl();
+ else
+ {
+ dc_showMl();
+ onshowMl();
+ }
+ debugString(DEBUG_PREFIX "}", D_WTF);
+
+ hide_sui.show();
+ show_sui.hide();
+}
+
+switchToPl()
+{
+ debugString(DEBUG_PREFIX "switchToPl() {", D_WTF);
+ if (callbackTimer.isRunning()) return;
+ if (tempDisable.isRunning()) return;
+ tempDisable.start();
+ disablePSOVC();
+ hideVis();
+ hideVideo();
+ hideML();
+ //--hideExp();
+ //--hideBrw();
+ //--hideCfg();
+ //prohibit a closing bug
+ if (!startup) showPl();
+ else
+ {
+ dc_showPl();
+ onshowPl();
+ }
+ debugString(DEBUG_PREFIX "}", D_WTF);
+
+ hide_sui.show();
+ show_sui.hide();
+}
+
+switchToVideo()
+{
+ if (callbackTimer.isRunning()) return;
+ if (tempDisable.isRunning()) return;
+ tempDisable.start();
+ hideMl();
+ hidePL();
+ hideVis();
+ //--hideExp();
+ //--hideBrw();
+ //--hideCfg();
+ showVideo();
+
+ hide_sui.show();
+ show_sui.hide();
+}
+
+switchToVis()
+{
+ if (callbackTimer.isRunning()) return;
+ if (tempDisable.isRunning()) return;
+ tempDisable.start();
+ disablePSOVC();
+ hideMl();
+ hidePL();
+ hideVideo();
+ //--hideExp();
+ //--hideBrw();
+ //--hideCfg();
+ showVis();
+
+ hide_sui.show();
+ show_sui.hide();
+}
+
+/*--switchToBrw()
+{
+ if (callbackTimer.isRunning()) return;
+ if (tempDisable.isRunning()) return;
+ tempDisable.start();
+ disablePSOVC();
+ hideVis();
+ hidePL();
+ hideVideo();
+ //--hideExp();
+ hideMl();
+ //--hideCfg();
+ //--showBrw();
+
+ hide_sui.show();
+ show_sui.hide();
+}
+
+switchToExp()
+{
+ if (callbackTimer.isRunning()) return;
+ if (tempDisable.isRunning()) return;
+ tempDisable.start();
+ disablePSOVC();
+ hideVis();
+ hideVideo();
+ hideMl();
+ //--hideBrw();
+ //--hideCfg();
+ showExp();
+
+ hide_sui.show();
+ show_sui.hide();
+}
+--*/
+/*--switchToCfg()
+{
+ if (callbackTimer.isRunning()) return;
+ if (tempDisable.isRunning()) return;
+ tempDisable.start();
+ disablePSOVC();
+ hideVis();
+ hideVideo();
+ hideMl();
+ hideBrw();
+ hideExp();
+ showCfg();
+
+ hide_sui.show();
+ show_sui.hide();
+}--*/
+
+switchToNoComp ()
+{
+ if (callbackTimer.isRunning()) return;
+ if (tempDisable.isRunning()) return;
+ tempDisable.start();
+ disablePSOVC();
+
+ onBeforeHideSUI();
+
+ hideVis();
+ hideVideo();
+ hideMl();
+ hidePL();
+ //--hideBrw();
+ //--hideExp();
+ //--hideCfg();
+
+ string comp = getPrivateString(getSkinName(), "Component", "Media Library");
+ if (comp != "Hidden")
+ {
+ normal.sendAction("sui", "tonocomp", 0,0,0,0);
+ setPrivateString(getSkinName(), "Hidden Component", comp);
+ setPrivateString(getSkinName(), "Component", "Hidden");
+ if (!getPrivateInt(getSkinName(), "isMainWndMaximized", 0)) setPrivateInt(getSkinName(), "nomax_h", normal.getHeight());
+ }
+ else normal.sendAction("sui", "tonocomp", 1,0,0,0);
+
+ normal_resizer.setXmlParam("resize", "right");
+ normal_resizer2.setXmlParam("resize", "left");
+ normal_resizer3.setXmlParam("resize", "");
+ normal_resizer4.setXmlParam("resize", "");
+ normal_TBresizer.setXmlParam("resize", "right");
+ normal_TBresizer2.setXmlParam("resize", "left");
+ normal_TBresizer3.hide();
+ normal.setXmlParam("minimum_h" , h);
+
+ int sy = normal.getGuiY() + normal.getGuiH() - stringtointeger(h);
+ normal.setXmlParam("h" , h);
+ if (collapse_bottom_attrib.getdata() == "1") normal.setXmlParam("y" , integerToString(sy));
+
+ hide_sui.hide();
+ show_sui.show();
+
+ onHideSUI();
+}
+
+switchFromNoComp ()
+{
+ if (callbackTimer.isRunning()) return;
+ if (tempDisable.isRunning()) return;
+
+ string comp = getPrivateString(getSkinName(), "Hidden Component", "Media Library");
+ setPrivateString(getSkinName(), "Component", comp);
+
+ int sh = getPrivateInt(getSkinName(), "nomax_h", 600);
+ if (sh < 492) sh = 492;
+
+ normal.sendAction("sui", "fromnocomp", 0,0,0,0);
+ normal_resizer.setXmlParam("resize", "bottomright");
+ normal_resizer2.setXmlParam("resize", "bottomleft");
+ normal_resizer3.setXmlParam("resize", "bottom");
+ normal_resizer4.setXmlParam("resize", "bottom");
+ normal_TBresizer.setXmlParam("resize", "topright");
+ normal_TBresizer2.setXmlParam("resize", "topleft");
+ normal_TBresizer3.show();
+ normal.setXmlParam("minimum_h" , "492");
+ double d_scale = normal.getScale();
+ normal.beforeRedock();
+ if (getPrivateInt(getSkinName(), "isMainWndMaximized", 0)) normal.resize(getViewPortLeft(),getViewPortTop(),getViewPortWidth()/d_scale, getViewPortHeight()/d_scale);
+ else
+ {
+ if (collapse_bottom_attrib.getdata() == "1")
+ {
+ int sy = normal.getGuiY() + normal.getGuiH() - sh;
+ if (sy < 0) sy = 0;
+ normal.setXmlParam("y" , integerToString(sy));
+ }
+ normal.setXmlParam("h" , integerToString(sh));
+ }
+ normal.redock();
+ loadSUI (comp);
+
+ onShowSUI();
+}
+
+tempDisable.onTimer()
+{
+ tempDisable.stop();
+}
+
+showMl()
+{
+ debugString(DEBUG_PREFIX "showMl() {", D_NWTF);
+
+ showing_ml = 1;
+ setPrivateString(getSkinName(), "Component", "Media Library");
+ GuiObject o = sui_ml;
+ if (o != NULL)
+ {
+ bypasscancel = 1;
+ if (o) o.show();
+ bypasscancel = 0;
+ debugString(DEBUG_PREFIX " --> ok", D_NWTF);
+ }
+#ifdef DEBUG
+ else
+ {
+ debugString(DEBUG_PREFIX " --> (!) ml object not provided (show)", D_NWTF);
+ }
+#endif
+ onShowMl();
+ showing_ml = 0;
+
+ debugString(DEBUG_PREFIX "}", D_NWTF);
+}
+
+hideMl()
+{
+ debugString(DEBUG_PREFIX "hideMl() {", D_NWTF);
+
+ callback_showing_ml = 0;
+
+ hiding_ml = 1;
+ GuiObject o = sui_ml;
+ if (o != NULL) {
+ bypasscancel = 1;
+ if (o) o.hide();
+ bypasscancel = 0;
+ debugString(DEBUG_PREFIX " --> ok", D_NWTF);
+ }
+#ifdef DEBUG
+ else
+ {
+ debugString(DEBUG_PREFIX " --> (!) ml object not provided (hide)", D_NWTF);
+ }
+#endif
+ onHideMl();
+ hiding_ml = 0;
+
+ debugString(DEBUG_PREFIX "}", D_NWTF);
+}
+
+showPl()
+{
+ debugString(DEBUG_PREFIX "showPl() {", D_NWTF);
+
+ showing_pl = 1;
+ setPrivateString(getSkinName(), "Component", "Pledit");
+ setPrivateString(getSkinName(), "Pledit_pos", "sui");
+ normal.sendAction("hide_comp", "pledit", 0,0,0,0);
+ GuiObject o = sui_pl;
+ if (o != NULL)
+ {
+ bypasscancel = 1;
+ if (o) o.show();
+ bypasscancel = 0;
+ debugString(DEBUG_PREFIX " --> ok", D_NWTF);
+ }
+#ifdef DEBUG
+ else
+ {
+ debugString(DEBUG_PREFIX " --> (!) pl object not provided (show)", D_NWTF);
+ }
+#endif
+ onShowPl();
+ showing_pl = 0;
+
+ debugString(DEBUG_PREFIX "}", D_NWTF);
+}
+
+hidePl()
+{
+ debugString(DEBUG_PREFIX "hidePl() {", D_NWTF);
+
+ callback_showing_pl = 0;
+
+ hiding_pl = 1;
+ GuiObject o = sui_pl;
+ if (o != NULL) {
+ bypasscancel = 1;
+ if (o) o.hide();
+ bypasscancel = 0;
+ debugString(DEBUG_PREFIX " --> ok", D_NWTF);
+ }
+#ifdef DEBUG
+ else
+ {
+ debugString(DEBUG_PREFIX " --> (!) pl object not provided (hide)", D_NWTF);
+ }
+#endif
+ onHidePl();
+ hiding_pl = 0;
+
+ debugString(DEBUG_PREFIX "}", D_NWTF);
+}
+
+showVis()
+{
+ debugString(DEBUG_PREFIX "vis_inbig_attrib = " + vis_inbig_attrib.getData(), D_NWTF);
+ if (vis_inbig_attrib.getData() == "1")
+ {
+ debugString(DEBUG_PREFIX "showVis() {", D_NWTF);
+
+
+ showing_vis = 1;
+ setPrivateString(getSkinName(), "Component", "Vis");
+ GuiObject o = sui_vis;
+ if (o != NULL)
+ {
+ bypasscancel = 1;
+ if (o) o.show();
+ bypasscancel = 0;
+ debugString(DEBUG_PREFIX " --> ok", D_NWTF);
+ }
+#ifdef DEBUG
+ else
+ {
+ debugString(DEBUG_PREFIX " --> (!) vis object not provided (show)", D_NWTF);
+ }
+#endif
+ onShowVis();
+ showing_vis = 0;
+
+ debugString(DEBUG_PREFIX "}", D_NWTF);
+ }
+}
+
+hideVis()
+{
+ debugString(DEBUG_PREFIX "vis_inbig_attrib = " + vis_inbig_attrib.getData(), D_NWTF);
+ debugString(DEBUG_PREFIX "hideVis() {", D_NWTF);
+
+ callback_showing_vis = 0;
+
+ hiding_vis = 1;
+ GuiObject o = sui_vis;
+ if (o != NULL) {
+ bypasscancel = 1;
+ if (o) o.hide();
+ bypasscancel = 0;
+ debugString(DEBUG_PREFIX " --> ok", D_NWTF);
+ }
+#ifdef DEBUG
+ else
+ {
+ debugString(DEBUG_PREFIX " --> (!) vis object not provided (hide)", D_NWTF);
+ }
+#endif
+ onHideVis();
+ hiding_vis = 0;
+
+ debugString(DEBUG_PREFIX "}", D_NWTF);
+}
+
+showVideo()
+{
+ debugString(DEBUG_PREFIX "showVideo() {", D_NWTF);
+
+ showing_video = 1;
+ setPrivateString(getSkinName(), "Component", "Video");
+ GuiObject o = sui_video;
+ if (o != NULL)
+ {
+ bypasscancel = 1;
+ if (o) {
+ // hack to fix bug for auto fullscreen on play
+ if (play_auto_fs_video) setVideoFullscreen(false);
+
+ o.show();
+
+ // hack to fix bug for auto fullscreen on play
+ if (play_auto_fs_video) setVideoFullscreen(true);
+ }
+ bypasscancel = 0;
+ debugString(DEBUG_PREFIX " --> ok", D_NWTF);
+ }
+#ifdef DEBUG
+ else
+ {
+ debugString(DEBUG_PREFIX " --> (!) video object not provided (show)", D_NWTF);
+ }
+ #endif
+ onShowVideo();
+ play_auto_fs_video = 0;
+ showing_video = 0;
+
+ debugString(DEBUG_PREFIX "}", D_NWTF);
+}
+
+hideVideo()
+{
+ debugString(DEBUG_PREFIX "hideVideo() {", D_NWTF);
+
+ //callback_showing_video = 0;
+
+ hiding_video = 1;
+ GuiObject o = sui_video;
+ if (o != NULL) {
+ bypasscancel = 1;
+ if (o) o.hide();
+ bypasscancel = 0;
+ debugString(DEBUG_PREFIX " --> ok", D_NWTF);
+ }
+#ifdef DEBUG
+ else
+ {
+ debugString(DEBUG_PREFIX " --> (!) video object not provided (hide)", D_NWTF);
+ }
+#endif
+ onHideVideo();
+ hiding_video = 0;
+
+ debugString(DEBUG_PREFIX "}", D_NWTF);
+}
+
+/*--showBrw()
+{
+ debugString(DEBUG_PREFIX "showBrw() {", D_NWTF);
+
+ showing_brw = 1;
+ setPrivateString(getSkinName(), "Component", "Browser");
+ GuiObject o = sui_brw;
+ if (o != NULL)
+ {
+ bypasscancel = 1;
+ if (o) o.show();
+ bypasscancel = 0;
+ debugString(DEBUG_PREFIX " --> ok", D_NWTF);
+ }
+#ifdef DEBUG
+ else
+ {
+ debugString(DEBUG_PREFIX " --> (!) brw object not provided (show)", D_NWTF);
+ }
+#endif
+ onShowBrw();
+
+ mychange = 1;
+ sui_browser_attrib.setData("1");
+ mychange = 0;
+
+ showing_brw = 0;
+
+ debugString(DEBUG_PREFIX "}", D_NWTF);
+}
+
+hideBrw()
+{
+ debugString(DEBUG_PREFIX "hideBrw() {", D_NWTF);
+
+ callback_showing_brw = 0;
+
+ hiding_brw = 1;
+ GuiObject o = sui_brw;
+ if (o != NULL) {
+ bypasscancel = 1;
+ if (o) o.hide();
+ bypasscancel = 0;
+ debugString(DEBUG_PREFIX " --> ok", D_NWTF);
+ }
+#ifdef DEBUG
+ else
+ {
+ debugString(DEBUG_PREFIX " --> (!) brw object not provided (hide)", D_NWTF);
+ }
+#endif
+ onHideBrw();
+ hiding_brw = 0;
+
+ mychange = 1;
+ sui_browser_attrib.setData("0");
+ mychange = 0;
+
+ debugString(DEBUG_PREFIX "}", D_NWTF);
+}--*/
+/*--
+showExp()
+{
+ debugString(DEBUG_PREFIX "showExp() {", D_NWTF);
+
+ showing_exp = 1;
+ setPrivateString(getSkinName(), "Component", "Explorer");
+ GuiObject o = sui_exp;
+ if (o != NULL)
+ {
+ bypasscancel = 1;
+ if (o) o.show();
+ bypasscancel = 0;
+ debugString(DEBUG_PREFIX " --> ok", D_NWTF);
+ }
+#ifdef DEBUG
+ else
+ {
+ debugString(DEBUG_PREFIX " --> (!) exp object not provided (show)", D_NWTF);
+ }
+#endif
+ onShowExp();
+ showing_exp = 0;
+
+ mychange = 1;
+ sui_explorer_attrib.setData("1");
+ mychange = 0;
+
+ debugString(DEBUG_PREFIX "}", D_NWTF);
+}
+
+hideExp()
+{
+ debugString(DEBUG_PREFIX "hideExp() {", D_NWTF);
+
+ callback_showing_exp = 0;
+
+ hiding_exp = 1;
+ GuiObject o = sui_exp;
+ if (o != NULL) {
+ bypasscancel = 1;
+ if (o) o.hide();
+ bypasscancel = 0;
+ debugString(DEBUG_PREFIX " --> ok", D_NWTF);
+ }
+#ifdef DEBUG
+ else
+ {
+ debugString(DEBUG_PREFIX " --> (!) exp object not provided (hide)", D_NWTF);
+ }
+#endif
+ onHideExp();
+ hiding_exp = 0;
+
+ mychange = 1;
+ sui_explorer_attrib.setData("0");
+ mychange = 0;
+
+ debugString(DEBUG_PREFIX "}", D_NWTF);
+}--*/
+/*--
+showCfg()
+{
+ debugString(DEBUG_PREFIX "showCfg() {", D_NWTF);
+
+ showing_Cfg = 1;
+ setPrivateString(getSkinName(), "Component", "Config");
+ GuiObject o = sui_Cfg;
+ if (o != NULL)
+ {
+ bypasscancel = 1;
+ if (o) o.show();
+ bypasscancel = 0;
+ debugString(DEBUG_PREFIX " --> ok", D_NWTF);
+ }
+#ifdef DEBUG
+ else
+ {
+ debugString(DEBUG_PREFIX " --> (!) Cfg object not provided (show)", D_NWTF);
+ }
+#endif
+ onShowCfg();
+ showing_Cfg = 0;
+
+ mychange = 1;
+ sui_Config_attrib.setData("1");
+ mychange = 0;
+
+ debugString(DEBUG_PREFIX "}", D_NWTF);
+}
+
+hideCfg()
+{
+ debugString(DEBUG_PREFIX "hideCfg() {", D_NWTF);
+
+ callback_showing_cfg = 0;
+
+ hiding_Cfg = 1;
+ GuiObject o = sui_Cfg;
+ if (o != NULL) {
+ bypasscancel = 1;
+ if (o) o.hide();
+ bypasscancel = 0;
+ debugString(DEBUG_PREFIX " --> ok", D_NWTF);
+ }
+#ifdef DEBUG
+ else
+ {
+ debugString(DEBUG_PREFIX " --> (!) Cfg object not provided (hide)", D_NWTF);
+ }
+#endif
+ onHideCfg();
+ hiding_Cfg = 0;
+
+ mychange = 1;
+ sui_config_attrib.setData("0");
+ mychange = 0;
+
+ debugString(DEBUG_PREFIX "}", D_NWTF);
+}
+--*/
+callbackTimer.onTimer()
+{
+ callbackTimer.stop();
+
+ int _callback_showing_vis = callback_showing_vis;
+ int _callback_hiding_vis = callback_hiding_vis;
+ int _callback_showing_video = callback_showing_video;
+ int _callback_hiding_video = callback_hiding_video;
+ int _callback_showing_ml = callback_showing_ml;
+ int _callback_hiding_ml = callback_hiding_ml;
+ int _callback_showing_pl = callback_showing_pl;
+ int _callback_hiding_pl = callback_hiding_pl;
+ //--int _callback_showing_exp = callback_showing_exp;
+ //--int _callback_hiding_exp = callback_hiding_exp;
+ //--int _callback_showing_brw = callback_showing_brw;
+ //--int _callback_hiding_brw = callback_hiding_brw;
+ //--int _callback_showing_cfg = callback_showing_cfg;
+ //--int _callback_hiding_cfg = callback_hiding_cfg;
+ int _callback_showing_sui = callback_showing_sui;
+ int _callback_closing_sui = callback_closing_sui;
+
+ callback_showing_vis = 0;
+ callback_hiding_vis = 0;
+ callback_showing_video = 0;
+ callback_hiding_video = 0;
+ callback_showing_ml = 0;
+ callback_hiding_ml = 0;
+ callback_showing_pl = 0;
+ callback_hiding_pl = 0;
+ //--callback_showing_exp = 0;
+ //--callback_hiding_exp = 0;
+ //--callback_showing_brw = 0;
+ //--callback_hiding_brw = 0;
+ //--callback_showing_cfg = 0;
+ //--callback_hiding_cfg = 0;
+
+ callback_showing_sui = 0;
+ callback_closing_sui = 0;
+
+ if (_callback_showing_ml == 1)
+ {
+ showMl();
+ }
+ if (_callback_hiding_ml == 1)
+ {
+ hideMl();
+ }
+ if (_callback_showing_pl == 1)
+ {
+ showPl();
+ }
+ if (_callback_hiding_pl == 1)
+ {
+ hidePl();
+ }
+ if (_callback_showing_video == 1)
+ {
+ showVideo();
+ }
+ if (_callback_showing_vis == 1)
+ {
+ showVis();
+ }
+ if (_callback_hiding_vis == 1)
+ {
+ hideVis();
+ }
+ if (_callback_hiding_video == 1)
+ {
+ hideVideo();
+ }/*--
+ if (_callback_showing_exp == 1)
+ {
+ showExp();
+ }
+ if (_callback_hiding_exp == 1)
+ {
+ hideExp();
+ }
+ if (_callback_showing_brw == 1)
+ {
+ showBrw();
+ }
+ if (_callback_hiding_brw == 1)
+ {
+ hideBrw();
+ }--*/
+ /*--if (_callback_showing_cfg == 1)
+ {
+ showCfg();
+ }
+ if (_callback_hiding_cfg == 1)
+ {
+ hideCfg();
+ }--*/
+ if (_callback_showing_SUI == 1)
+ {
+ switchFromNoComp();
+ }
+ if (_callback_closing_SUI == 1)
+ {
+ switchToNoComp();
+ }
+}
+
+dc_showMl()
+{
+ callback_showing_ml = 1;
+ callback_hiding_ml = 0;
+ callbackTimer.start();
+}
+
+dc_hideMl()
+{
+ callback_showing_ml = 0;
+ callback_hiding_ml = 1;
+ callbackTimer.start();
+}
+
+dc_showPl()
+{
+ callback_showing_pl = 1;
+ callback_hiding_pl = 0;
+ callbackTimer.start();
+}
+
+dc_hidePl()
+{
+ callback_showing_pl = 0;
+ callback_hiding_pl = 1;
+ callbackTimer.start();
+}
+
+dc_showVideo()
+{
+ callback_showing_video = 1;
+ callback_hiding_video = 0;
+ callbackTimer.start();
+}
+
+dc_showVis()
+{
+ callback_showing_vis = 1;
+ callback_hiding_vis = 0;
+ callbackTimer.start();
+}
+
+dc_hideVideo()
+{
+ callback_showing_video = 0;
+ callback_hiding_video = 1;
+ callbackTimer.start();
+}
+
+dc_hideVis()
+{
+ callback_showing_vis = 0;
+ callback_hiding_vis = 1;
+ callbackTimer.start();
+}
+/*--
+dc_showBrw()
+{
+ callback_showing_brw = 1;
+ callback_hiding_brw = 0;
+ callbackTimer.start();
+}
+
+dc_hideBrw()
+{
+ callback_showing_brw = 0;
+ callback_hiding_brw = 1;
+ callbackTimer.start();
+}--*/
+/*--
+dc_showExp()
+{
+ callback_showing_exp = 1;
+ callback_hiding_exp = 0;
+ callbackTimer.start();
+}
+
+dc_hideExp()
+{
+ callback_showing_exp = 0;
+ callback_hiding_exp = 1;
+ callbackTimer.start();
+}
+--*/
+/*--dc_showCfg()
+{
+ callback_showing_cfg = 1;
+ callback_hiding_cfg = 0;
+ callbackTimer.start();
+}
+
+dc_hideCfg()
+{
+ callback_showing_cfg = 0;
+ callback_hiding_cfg = 1;
+ callbackTimer.start();
+}--*/
+
+dc_showSUI()
+{
+ callback_showing_sui = 1;
+ callback_closing_sui = 0;
+ callbackTimer.start();
+}
+
+dc_closeSUI()
+{
+ callback_showing_sui = 0;
+ callback_closing_sui = 1;
+ callbackTimer.start();
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/suicore/video_handles.m b/Src/resources/skins/Big Bento/scripts/suicore/video_handles.m
new file mode 100644
index 00000000..38e7b360
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/suicore/video_handles.m
@@ -0,0 +1,146 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: video_handles.m
+Version: 2.0
+
+Type: maki
+Date: 28. Okt. 2006 - 16:30
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+Depending Files:
+ scripts/suicore.maki
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#ifndef included
+#error This script can only be compiled as a #include
+#endif
+
+#define SKINTWEAKS_CFGPAGE "{0542AFA4-48D9-4c9f-8900-5739D52C114F}"
+#define VIDEO_CONFIG_GROUP "{2135E318-6919-4bcf-99D2-62BE3FCA8FA6}"
+
+Function initVideo();
+Function disablePSOVC();
+Function enablePSOVC();
+
+Global Timer PSOVCTimer;
+Global string psovc_save;
+
+Global WinampConfigGroup cfg_Video;
+
+Global Boolean lastWasVideo;
+
+initVideo ()
+{
+ play_auto_fs_video = 0;
+
+ PSOVCTimer = new Timer;
+ PSOVCTimer.setDelay(1000);
+
+ cfg_Video = WinampConfig.getGroup(VIDEO_CONFIG_GROUP);
+}
+
+/** Prevent video playback to stop after the wnd is hidden */
+
+disablePSOVC()
+{
+ debugString("[suicore.m] " + "--> disabling stop on video close",0 );
+ ConfigItem item = Config.getItem(SKINTWEAKS_CFGPAGE);
+ if (item)
+ {
+ ConfigAttribute attr = item.getAttribute("Prevent video playback Stop on video window Close");
+ if (attr) psovc_save = attr.getData();
+ if (attr) attr.setData("1");
+ }
+ PSOVCTimer.start();
+ debugString("[suicore.m] " + "--> PSOVCTimer.started();",0 );
+}
+
+enablePSOVC()
+{
+ debugString("[suicore.m] " + "--> enabling stop on video close",0 );
+ PSOVCTimer.stop();
+ ConfigItem item = Config.getItem(SKINTWEAKS_CFGPAGE);
+ if (item)
+ {
+ ConfigAttribute attr = item.getAttribute("Prevent video playback Stop on video window Close");
+ if (attr) attr.setData(psovc_save);
+ }
+ debugString("[suicore.m] " + "--> PSOVCTimer.stopped();",0 );
+}
+
+PSOVCTimer.onTimer()
+{
+ enablePSOVC();
+}
+
+System.onPlay()
+{
+ // needed to handle video auto fullscreen on play
+ boolean auto_fs = cfg_Video.getBool("auto_fs");
+ if (auto_fs) play_auto_fs_video = 1;
+ else play_auto_fs_video = 0;
+
+ // removed for debugging aims
+ // if (isVideo() && cfg_Video.getBool("autoopen") && !sui_video.isVisible()) dc_showVideo();
+}
+
+System.onPause()
+{
+ play_auto_fs_video = 0;
+}
+
+System.onResume()
+{
+ play_auto_fs_video = 0;
+
+ // removed for debugging aims
+ // if (isVideo() && cfg_Video.getBool("autoopen") && !sui_video.isVisible()) dc_showVideo();
+}
+
+System.onStop()
+{
+ play_auto_fs_video = 0;
+}
+
+System.onTitleChange(String newtitle)
+{
+ // needed to handle video auto fullscreen on play
+ boolean auto_fs = cfg_Video.getBool("auto_fs");
+ if (auto_fs) play_auto_fs_video = 1;
+ else play_auto_fs_video = 0;
+
+ /* removed for debugging aims
+ if (startup)
+ {
+ lastWasVideo = isVideo();
+ return;
+ }
+
+ if (isVideo() && cfg_Video.getBool("autoopen") && !sui_video.isVisible() && getStatus() != 0) dc_showVideo();
+ else if (!isVideo() && cfg_Video.getBool("autoclose") && sui_video.isVisible() && lastWasVideo) showML();
+ lastWasVideo = isVideo();
+ */
+}
+
+//S/ystem.onTitleChange (String newtitle)
+//{
+ /*if (startup)
+ {
+ lastWasVideo = isVideo();
+ return;
+ }*/
+
+ /*if (!startup && isVideo() && cfg_Video.getBool("autoopen") && !sui_video.isVisible() && getStatus() != 0)
+ {
+ callbackTimer.stop();
+ tempDisable.stop();
+ switchToVideo();
+ debug("");
+ }*/
+ //else if (!isVideo() && cfg_Video.getBool("autoclose") && sui_video.isVisible() && lastWasVideo) showML();
+ //lastWasVideo = isVideo();
+//} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/syncbutton.m b/Src/resources/skins/Big Bento/scripts/syncbutton.m
new file mode 100644
index 00000000..9769a083
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/syncbutton.m
@@ -0,0 +1,55 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: syncbutton.m
+Version: 1.0
+
+Type: maki
+Date: 25. Jun. 2007 - 14:04
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#include <lib/std.mi>
+
+Global GuiObject mainButton, activeOverlay;
+Global Boolean mouseDown;
+Global Int activeOverlay_Y;
+
+System.onScriptLoaded ()
+{
+ mainButton = getScriptGroup().findObject(getToken(getParam(), ";", 0));
+ activeOverlay = getScriptGroup().findObject(getToken(getParam(), ";", 1));
+ activeOverlay_Y = activeOverlay.getGuiY();
+ mainButton.onsetvisible(mainButton.isvIsible());
+}
+
+mainButton.onLeftButtonDown (int x, int y)
+{
+ mouseDown = 1;
+ activeOverlay.setXmlParam("y", integerToString(activeOverlay_Y+1));
+}
+
+mainButton.onLeftButtonUp (int x, int y)
+{
+ mouseDown = 0;
+ activeOverlay.setXmlParam("y", integerToString(activeOverlay_Y));
+}
+
+mainButton.onleaveArea ()
+{
+ activeOverlay.setXmlParam("y", integerToString(activeOverlay_Y));
+}
+
+mainButton.onEnterArea ()
+{
+ if (mouseDown) activeOverlay.setXmlParam("y", integerToString(activeOverlay_Y+1));
+}
+
+mainButton.onSetVisible (Boolean onoff)
+{
+ if (onoff) activeOverlay.show();
+ else activeOverlay.hide();
+}
diff --git a/Src/resources/skins/Big Bento/scripts/syncbutton.maki b/Src/resources/skins/Big Bento/scripts/syncbutton.maki
new file mode 100644
index 00000000..a11e0aff
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/syncbutton.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/tabbutton.m b/Src/resources/skins/Big Bento/scripts/tabbutton.m
new file mode 100644
index 00000000..1662ab98
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/tabbutton.m
@@ -0,0 +1,87 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: tabbutton.m
+Version: 1.0
+
+Type: maki
+Date: 28. Sep. 2007 - 13:12
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#include <lib/std.mi>
+
+Global GuiObject normalGrid, hoverGrid, activeGrid, footerGrid;
+Global Button mousetrap;
+Global Text normalText, hoverText, activeText;
+Global Boolean mouseDown;
+
+System.onScriptLoaded ()
+{
+ group sg = getScriptGroup();
+
+ normalGrid = sg.getObject("bento.tabbutton.normal");
+ hoverGrid = sg.getObject("bento.tabbutton.hover");
+ activeGrid = sg.getObject("bento.tabbutton.active");
+ normalText = sg.getObject("bento.tabbutton.normal.text");
+ hoverText = sg.getObject("bento.tabbutton.hover.text");
+ activeText = sg.getObject("bento.tabbutton.active.text");
+ footerGrid = sg.getObject("bento.tabbutton.footer");
+
+ mousetrap = sg.getObject("bento.tabbutton.mousetrap");
+}
+
+System.onSetXuiParam (String stringParam, String value)
+{
+ if ( strlower(stringParam) == "tabtext" )
+ {
+ normalText.setText(value);
+ hoverText.setText(value);
+ activeText.setText(value);
+ }
+}
+
+mousetrap.onLeftButtonDown (int x, int y)
+{
+ mouseDown = 1;
+ normalGrid.show();
+ hoverGrid.hide();
+ normalText.show();
+ hoverText.hide();
+}
+
+mousetrap.onLeftButtonUp (int x, int y)
+{
+ mouseDown = 0;
+ if (!getActivated() && isMouseOverRect()) { normalGrid.hide(); hoverGrid.show(); normalText.hide(); hoverText.show(); }
+}
+
+mousetrap.onleaveArea ()
+{
+ normalGrid.show();
+ hoverGrid.hide();
+ normalText.show();
+ hoverText.hide();
+}
+
+mousetrap.onEnterArea ()
+{
+ normalGrid.hide(); hoverGrid.show(); normalText.hide(); hoverText.show();
+}
+
+mousetrap.onActivate (int activated)
+{
+ if (activated)
+ {
+ normalGrid.hide(); hoverGrid.hide(); normalText.hide(); hoverText.hide();
+ activeGrid.show(); footerGrid.show(); activeText.show();
+ }
+ else
+ {
+ normalGrid.show(); hoverGrid.hide(); normalText.show(); hoverText.hide();
+ activeGrid.hide(); footerGrid.hide(); activeText.hide();
+ }
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/tabbutton.maki b/Src/resources/skins/Big Bento/scripts/tabbutton.maki
new file mode 100644
index 00000000..a10513b9
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/tabbutton.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/tabcontrol.m b/Src/resources/skins/Big Bento/scripts/tabcontrol.m
new file mode 100644
index 00000000..b8c37104
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/tabcontrol.m
@@ -0,0 +1,122 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: tabcontrol.m
+Version: 1.0
+
+Type: maki
+Date: 30. Okt. 2007 - 17:40
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#include <lib/std.mi>
+#include attribs/init_appearance.m
+
+Function updateTabPos();
+Function setAutoWidth(guiobject tab);
+
+Class Text WatchText;
+
+Global Boolean HAVE_ML = TRUE;
+
+Global GuiObject tabMl, tabVideo, tabVis, tabPl;
+Global WatchText txtMl, txtVideo, txtVis, txtPL;
+Global int startX, curX;
+Global Button btnMl, btnPl;
+
+System.onScriptLoaded ()
+{
+ initAttribs_Appearance();
+ HAVE_ML = stringToInteger(getParam());
+
+ group sg = getScriptGroup();
+
+ tabML = sg.findObject("switch.ml");
+ btnMl = sg.findObject("switch.ml");
+ txtMl = tabMl.findObject("bento.tabbutton.normal.text");
+ tabPL = sg.findObject("switch.pl");
+ btnPl = sg.findObject("switch.pl");
+ txtPl = tabPl.findObject("bento.tabbutton.normal.text");
+ tabVis = sg.findObject("switch.vis");
+ txtVis = tabMl.findObject("bento.tabbutton.normal.text");
+ tabVideo = sg.findObject("switch.video");
+ txtVideo = tabMl.findObject("bento.tabbutton.normal.text");
+
+ startX = tabMl.getGuiX();
+
+ updateTabPos();
+}
+
+updateTabPos ()
+{
+ curX = startX;
+ if (!HAVE_ML)
+ {
+ tabMl.hide();
+ }
+ else
+ {
+ curX += setAutoWidth(tabMl) + 1;
+ }
+
+ if (pl_tab_attrib.getData() == "1")
+ {
+ tabPL.setXmlParam("x", integerToString(curX));
+ curX += setAutoWidth(tabPL) + 1;
+ tabPL.show();
+ }
+ else
+ {
+ tabPL.hide();
+ }
+
+ if (System.hasVideoSupport())
+ {
+ tabVideo.setXmlParam("x", integerToString(curX));
+ curX += setAutoWidth(tabVideo) + 1;
+ }
+ else
+ {
+ tabVideo.hide();
+ }
+
+ // commented out because System.isSafeMode() is not recognized by mc.exe
+ // if (!System.isSafeMode())
+ // {
+ tabVis.setXmlParam("x", integerToString(curX));
+ curX += setAutoWidth(tabVis) + 1;
+ // }
+ // else
+ // {
+ // tabVis.hide();
+ // }
+}
+
+int setAutoWidth (guiObject tab)
+{
+ text source = tab.findObject("bento.tabbutton.normal.text");
+ int x = stringToInteger(source.getXmlparam("x"));
+ int w = source.getAutoWidth();
+
+ tab.setXmlParam("w", integerToString(2*x+w));
+
+ return 2*x + w;
+}
+
+pl_tab_attrib.onDataChanged ()
+{
+ if (pl_tab_attrib.getData() == "0")
+ {
+ setPrivateString(getSkinName(), "Pledit_pos", "top");
+ if (btnPl.getActivated())
+ {
+ btnMl.leftClick();
+ btnMl.getParentLayout().sendAction("load_comp", "pledit", 0,0,0,0);
+ }
+ }
+
+ updateTabPos();
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/tabcontrol.maki b/Src/resources/skins/Big Bento/scripts/tabcontrol.maki
new file mode 100644
index 00000000..8795e36a
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/tabcontrol.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/timecontrol.m b/Src/resources/skins/Big Bento/scripts/timecontrol.m
new file mode 100644
index 00000000..f801e233
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/timecontrol.m
@@ -0,0 +1,89 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: timecontrol.m
+Version: 1.0
+
+Type: maki
+Date: 29. Jun. 2007 - 00:13
+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/com/AutoRepeatButton.m>
+
+Function updateAttrib (int val);
+
+Global ConfigAttribute timeAttrib;
+Global text Display;
+Global AutoRepeatButton Increase, Decrease;
+Global float multiplier;
+Global int maxvalue, step;
+Global string suffix;
+Global boolean myChange;
+
+System.onScriptLoaded ()
+{
+ AutoRepeat_Load();
+ string param = getParam();
+
+ string objects = getToken(param, "|", 0);
+ group scriptGroup = getScriptGroup();
+ Display = scriptGroup.findObject(getToken(objects, ";", 0));
+ Decrease = scriptGroup.findObject(getToken(objects, ";", 1));
+ Increase = scriptGroup.findObject(getToken(objects, ";", 2));
+
+ objects = getToken(param, "|", 1);
+ timeAttrib = config.getItemByGuid(getToken(objects, ";", 0)).getattribute(getToken(objects, ";", 1));
+
+ step = stringToInteger(getToken(param, "|", 2));
+ maxvalue = stringToInteger(getToken(param, "|", 3));
+ multiplier = stringToFloat(getToken(param, "|", 4));
+ suffix = getToken(param, "|", 5);
+
+ AutoRepeat_SetInitalDelay(250);
+ AutoRepeat_SetRepeatDelay(125);
+
+ updateAttrib (0);
+}
+
+System.onScriptUnloading ()
+{
+ AutoRepeat_Unload();
+}
+
+Increase.onLeftClick ()
+{
+ if (!AutoRepeat_ClickType) return;
+ updateAttrib (step);
+}
+
+Decrease.onLeftClick ()
+{
+ if (!AutoRepeat_ClickType) return;
+ updateAttrib (-step);
+}
+
+timeAttrib.onDataChanged ()
+{
+ if (myChange) return;
+ updateAttrib (0);
+}
+
+updateAttrib (int val)
+{
+ float i = stringToInteger(timeAttrib.getData());
+ i += val;
+ if (i < 0 || i > maxvalue) return;
+ myChange = 1;
+ string s = integerToString(i);
+ if (timeAttrib) timeAttrib.setData(s);
+ i *= multiplier;
+ s = floatToString(i,1);
+ Display.setText(s + suffix);
+ myChange = 0;
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/timecontrol.maki b/Src/resources/skins/Big Bento/scripts/timecontrol.maki
new file mode 100644
index 00000000..cdd75712
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/timecontrol.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/videoresize.m b/Src/resources/skins/Big Bento/scripts/videoresize.m
new file mode 100644
index 00000000..4dede7c9
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/videoresize.m
@@ -0,0 +1,196 @@
+/********************************************************\
+** Filename: videoresize.m **
+** Version: 1.0 **
+** Date: 23. Jan. 2008 - 11:23 **
+**********************************************************
+** Type: winamp.wasabi/maki **
+** Project: Bento **
+**********************************************************
+** Author: Martin Poehlmann aka Deimos **
+** E-Mail: martin@skinconsortium.com **
+** Internet: http://www.skinconsortium.com **
+** http://home.cs.tum.edu/~poehlman **
+\********************************************************/
+
+
+#include <lib/std.mi>
+#include attribs/init_Autoresize.m
+
+Function adjust(int x, int y);
+Function fade(GuiObject o, int a);
+
+Class GuiObject Mousetrap;
+
+Global Mousetrap resizer;
+Global Mousetrap wdh, outer, bg;
+Global Group sg;
+
+Global Int sx, sy, ox, oy, dx, dy;
+Global Boolean move;
+
+Global Timer refresh;
+
+System.onScriptLoaded ()
+{
+ initAttribs_Autoresize();
+
+ sg = getScriptGroup();
+ wdh = sg.getObject("wdh");
+ resizer = sg.getObject("wdh.drag");
+ outer = sg.getObject("wdh.outer");
+ bg = sg.getObject("bg");
+
+ refresh = new Timer;
+ refresh.setDelay(133);
+
+ video_inframe_attrib.onDataChanged ();
+}
+
+System.onScriptUnloading ()
+{
+ refresh.stop();
+ delete refresh;
+}
+
+resizer.onLeftButtonDown (int x, int y)
+{
+ move = true;
+ sx = x;
+ sy = y;
+ ox = wdh.getGuiX();
+ oy = wdh.getGuiY();
+ refresh.start();
+}
+
+resizer.onLeftButtonUp (int x, int y)
+{
+ move = false;
+ refresh.stop();
+}
+
+resizer.onMouseMove (int x, int y)
+{
+ if (!move) return;
+
+ dx = sx - x;
+ dy = sy - y;
+}
+
+// handle the resizing with a timer in order to prevent jittering
+refresh.onTimer ()
+{
+ adjust(dx, dy);
+}
+
+adjust (int x, int y)
+{
+ int nx = ox + x;
+ int ny = oy + y;
+
+ // Ensure we don't get out of the bounds
+ if (nx < 5)
+ {
+ nx = 5;
+ }
+
+ if (ny < 5)
+ {
+ ny = 5;
+ }
+
+ // Minimum h/w: aligned with Nullsoft Video Symbol
+ if (sg.getHeight() - 2*ny < 64)
+ {
+ ny = (64 - sg.getHeight())/(-2);
+ }
+
+ if (sg.getWidth() - 2*nx < 100)
+ {
+ nx = (100 - sg.getWidth())/(-2);
+ }
+
+ outer.setXmlParam("x", integerToString(nx-1));
+ outer.setXmlParam("w", integerToString(-2*(nx-1)));
+ outer.setXmlParam("y", integerToString(ny-1));
+ outer.setXmlParam("h", integerToString(-2*(ny-1)));
+
+ wdh.setXmlParam("x", integerToString(nx));
+ wdh.setXmlParam("w", integerToString(-(2*nx)));
+ wdh.setXmlParam("y", integerToString(ny));
+ wdh.setXmlParam("h", integerToString(-(2*ny)));
+
+ resizer.setXmlParam("x", integerToString(-nx));
+ resizer.setXmlParam("y", integerToString(-ny));
+}
+
+video_inframe_attrib.onDataChanged ()
+{
+ if (getData() == "1")
+ {
+ outer.show();
+ resizer.show();
+
+ outer.setXmlParam("x", integerToString(4));
+ outer.setXmlParam("w", integerToString(-8));
+ outer.setXmlParam("y", integerToString(4));
+ outer.setXmlParam("h", integerToString(-8));
+
+ wdh.setXmlParam("x", integerToString(5));
+ wdh.setXmlParam("w", integerToString(-10));
+ wdh.setXmlParam("y", integerToString(5));
+ wdh.setXmlParam("h", integerToString(-10));
+
+ resizer.setXmlParam("x", integerToString(-5));
+ resizer.setXmlParam("y", integerToString(-5));
+
+ }
+ else
+ {
+ outer.hide();
+ resizer.hide();
+
+ wdh.setXmlParam("x", integerToString(0));
+ wdh.setXmlParam("w", integerToString(0));
+ wdh.setXmlParam("y", integerToString(0));
+ wdh.setXmlParam("h", integerToString(0));
+ }
+}
+
+/*
+Mousetrap.onEnterArea ()
+{
+ if (outer.getAlpha() == 255) return;
+ if (video_inframe_attrib.getData() == "1")
+ {
+ fade(outer, 255);
+ fade(resizer, 255);
+ }
+}
+
+Mousetrap.onLeaveArea ()
+{
+ if (move) return;
+
+ for ( int i = 0; i < sg.getNumObjects(); i++ )
+ {
+ if (sg.enumObject(i).isMouseOver(getMousePosX(), getMousePosY())) return;
+ }
+
+ if (video_inframe_attrib.getData() == "1")
+ {
+ fade(outer, 0);
+ fade(resizer, 0);
+ }
+}
+
+fade (GuiObject o, int a)
+{
+ o.cancelTarget();
+ o.setTargetX(o.getGuiX());
+ o.setTargetY(o.getGuiY());
+ o.setTargetH(o.getGuiH());
+ o.setTargetW(o.getGuiW());
+ o.setTargetA(a);
+ o.setTargetSpeed(0.3);
+ o.gotoTarget();
+}*/ \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/videoresize.maki b/Src/resources/skins/Big Bento/scripts/videoresize.maki
new file mode 100644
index 00000000..58b403f2
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/videoresize.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/visbuttons.m b/Src/resources/skins/Big Bento/scripts/visbuttons.m
new file mode 100644
index 00000000..f322d400
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/visbuttons.m
@@ -0,0 +1,148 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: visbuttons.m
+Version: 1.0
+Type: maki
+Date: 16. Aug. 2007 - 23:54
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#include <lib/std.mi>
+#include attribs/init_appearance.m
+
+Function updateObjectPosition(int w);
+
+Global Group scriptGroup;
+Global Button cfg, prv, nxt, rnd, rnda;
+Global Boolean isBig;
+
+System.onScriptLoaded ()
+{
+ initAttribs_Appearance();
+
+ scriptGroup = getScriptGroup();
+
+ cfg = scriptGroup.findObject("vis.cfg");
+ prv = scriptGroup.findObject("vis.prv");
+ nxt = scriptGroup.findObject("vis.nxt");
+ rnd = scriptGroup.findObject("vis.rnd");
+ rnda = scriptGroup.findObject("vis.rnd.active");
+
+ isBig = (prv.getGuiX() == 31);
+}
+
+scriptGroup.onResize (int x, int y, int w, int h)
+{
+ updateObjectPosition(w);
+}
+
+/*
+
+artist_info_buttons_attrib.onDataChanged ()
+{
+ updateObjectPosition(scriptGroup.getWidth());
+}
+
+updateObjectPosition (int w)
+{
+ if (isBig)
+ {
+ if (artist_info_buttons_attrib.getData() != "1")
+ {
+ w += 62;
+ }
+
+ if (w >= 248)
+ {
+ cfg.show();
+ prv.show();
+ rnd.show();
+ rnda.show();
+ nxt.show();
+ }
+ else if (w >= 217)
+ {
+ cfg.show();
+ prv.show();
+ rnd.show();
+ rnda.show();
+ nxt.hide();
+ }
+ else if (w >= 186)
+ {
+ cfg.show();
+ prv.show();
+ rnd.hide();
+ rnda.hide();
+ nxt.hide();
+ }
+ else if (w >= 155)
+ {
+ cfg.show();
+ prv.hide();
+ rnd.hide();
+ rnda.hide();
+ nxt.hide();
+ }
+ else
+ {
+ cfg.hide();
+ prv.hide();
+ rnd.hide();
+ rnda.hide();
+ nxt.hide();
+ }
+ return;
+ }
+
+ if (artist_info_buttons_attrib.getData() != "1")
+ {
+ w += 46;
+ }
+
+ if (w >= 192)
+ {
+ cfg.show();
+ prv.show();
+ rnd.show();
+ rnda.show();
+ nxt.show();
+ }
+ else if (w >= 168)
+ {
+ cfg.show();
+ prv.show();
+ rnd.show();
+ rnda.show();
+ nxt.hide();
+ }
+ else if (w >= 144)
+ {
+ cfg.show();
+ prv.show();
+ rnd.hide();
+ rnda.hide();
+ nxt.hide();
+ }
+ else if (w >= 120)
+ {
+ cfg.show();
+ prv.hide();
+ rnd.hide();
+ rnda.hide();
+ nxt.hide();
+ }
+ else
+ {
+ cfg.hide();
+ prv.hide();
+ rnd.hide();
+ rnda.hide();
+ nxt.hide();
+ }
+
+}*/ \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/visbuttons.maki b/Src/resources/skins/Big Bento/scripts/visbuttons.maki
new file mode 100644
index 00000000..4d0e1d3c
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/visbuttons.maki
Binary files differ
diff --git a/Src/resources/skins/Big Bento/scripts/visualizer.m b/Src/resources/skins/Big Bento/scripts/visualizer.m
new file mode 100644
index 00000000..c2d69898
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/visualizer.m
@@ -0,0 +1,356 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: visualizer.m
+Version: 1.4
+
+Type: maki
+Date: 07. Okt. 2007 - 19:56
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+
+Note: This script handles also the timer reflection
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#include <lib/std.mi>
+
+#include attribs/init_appearance.m
+
+Function refreshVisSettings();
+Function setVis (int mode);
+Function ProcessMenuResult (int a);
+
+Global Group scriptGroup;
+Global Vis visualizer, visualizer_m;
+Global Text tmr;
+
+Global PopUpMenu visMenu;
+Global PopUpMenu specmenu;
+Global PopUpMenu oscmenu;
+Global PopUpMenu pksmenu;
+Global PopUpMenu anamenu;
+Global PopUpMenu stylemenu;
+
+Global Int currentMode, a_falloffspeed, p_falloffspeed, a_coloring;
+Global Boolean show_peaks, isShade;
+Global layer trigger;
+
+Global Layout thislayout;
+Global Container main;
+
+System.onScriptLoaded()
+{
+ initAttribs_Appearance(); // init appearance attribs
+
+ scriptGroup = getScriptGroup();
+ thislayout = scriptGroup.getParentLayout();
+ main = thislayout.getContainer();
+
+ // this script runs in shade and normal layout, we store this bool to prevent some actions to recieve the shade vis.
+ isShade = (scriptGroup.getParentlayout().getID() == "shade");
+
+ visualizer = scriptGroup.findObject("main.vis");
+
+ trigger = scriptGroup.findObject("main.vis.trigger");
+
+ if (!isShade)
+ {
+ visualizer_m = scriptGroup.findObject("main.vis.mirror");
+ vis_reflection_attrib.onDataChanged();
+
+ tmr = scriptGroup.findObject("SongTime");
+ timer_reflection_attrib.onDataChanged();
+ }
+
+
+
+ visualizer.setXmlParam("peaks", integerToString(show_peaks));
+ visualizer.setXmlParam("peakfalloff", integerToString(p_falloffspeed));
+ visualizer.setXmlParam("falloff", integerToString(a_falloffspeed));
+
+ refreshVisSettings ();
+}
+
+refreshVisSettings ()
+{
+ currentMode = getPrivateInt(getSkinName(), "Visualizer Mode", 1);
+ show_peaks = getPrivateInt(getSkinName(), "Visualizer show Peaks", 1);
+ a_falloffspeed = getPrivateInt(getSkinName(), "Visualizer analyzer falloff", 3);
+ p_falloffspeed = getPrivateInt(getSkinName(), "Visualizer peaks falloff", 2);
+ a_coloring = getPrivateInt(getSkinName(), "Visualizer analyzer coloring", 0);
+
+ visualizer.setXmlParam("peaks", integerToString(show_peaks));
+ visualizer.setXmlParam("peakfalloff", integerToString(p_falloffspeed));
+ visualizer.setXmlParam("falloff", integerToString(a_falloffspeed));
+
+ if (a_coloring == 0)
+ {
+ visualizer.setXmlParam("coloring", "Normal");
+ if (!isShade) visualizer_m.setXmlParam("coloring", "Normal");
+ }
+ else if (a_coloring == 1)
+ {
+ visualizer.setXmlParam("coloring", "Normal");
+ if (!isShade) visualizer_m.setXmlParam("coloring", "Normal");
+ }
+ else if (a_coloring == 2)
+ {
+ visualizer.setXmlParam("coloring", "Fire");
+ if (!isShade) visualizer_m.setXmlParam("coloring", "Fire");
+ }
+ else if (a_coloring == 3)
+ {
+ visualizer.setXmlParam("coloring", "Line");
+ if (!isShade) visualizer_m.setXmlParam("coloring", "Line");
+ }
+
+ if (!isShade)
+ {
+ visualizer_m.setXmlParam("peaks", integerToString(show_peaks));
+ visualizer_m.setXmlParam("peakfalloff", integerToString(p_falloffspeed));
+ visualizer_m.setXmlParam("falloff", integerToString(a_falloffspeed));
+ }
+
+ setVis (currentMode);
+}
+
+trigger.onLeftButtonDown (int x, int y)
+{
+ if (isKeyDown(VK_ALT) && isKeyDown(VK_SHIFT) && isKeyDown(VK_CONTROL))
+ {
+ if (visualizer.getXmlParam("fliph") == "1")
+ {
+ visualizer.setXmlParam("fliph", "0");
+ visualizer_m.setXmlParam("fliph", "0");
+ }
+ else
+ {
+ visualizer.setXmlParam("fliph", "1");
+ visualizer_m.setXmlParam("fliph", "1");
+ }
+ return;
+ }
+
+ currentMode++;
+
+ if (currentMode == 6)
+ {
+ currentMode = 0;
+ }
+
+ setVis (currentMode);
+ complete;
+}
+
+trigger.onRightButtonUp (int x, int y)
+{
+ visMenu = new PopUpMenu;
+ specmenu = new PopUpMenu;
+ oscmenu = new PopUpMenu;
+ pksmenu = new PopUpMenu;
+ anamenu = new PopUpMenu;
+ stylemenu = new PopUpMenu;
+
+ visMenu.addCommand("Presets:", 999, 0, 1);
+ visMenu.addCommand("No Visualization", 100, currentMode == 0, 0);
+ specmenu.addCommand("Thick Bands", 1, currentMode == 1, 0);
+ specmenu.addCommand("Thin Bands", 2, currentMode == 2, 0);
+ visMenu.addSubMenu(specmenu, "Spectrum Analyzer");
+
+ oscmenu.addCommand("Solid", 3, currentMode == 3, 0);
+ oscmenu.addCommand("Dots", 4, currentMode == 4, 0);
+ oscmenu.addCommand("Lines", 5, currentMode == 5, 0);
+ visMenu.addSubMenu(oscmenu, "Oscilloscope");
+
+ visMenu.addSeparator();
+ visMenu.addCommand("Options:", 102, 0, 1);
+ visMenu.addCommand("Show Peaks", 101, show_peaks == 1, 0);
+ pksmenu.addCommand("Slower", 200, p_falloffspeed == 0, 0);
+ pksmenu.addCommand("Slow", 201, p_falloffspeed == 1, 0);
+ pksmenu.addCommand("Moderate", 202, p_falloffspeed == 2, 0);
+ pksmenu.addCommand("Fast", 203, p_falloffspeed == 3, 0);
+ pksmenu.addCommand("Faster", 204, p_falloffspeed == 4, 0);
+ visMenu.addSubMenu(pksmenu, "Peak Falloff Speed");
+ anamenu.addCommand("Slower", 300, a_falloffspeed == 0, 0);
+ anamenu.addCommand("Slow", 301, a_falloffspeed == 1, 0);
+ anamenu.addCommand("Moderate", 302, a_falloffspeed == 2, 0);
+ anamenu.addCommand("Fast", 303, a_falloffspeed == 3, 0);
+ anamenu.addCommand("Faster", 304, a_falloffspeed == 4, 0);
+ visMenu.addSubMenu(anamenu, "Analyzer Falloff Speed");
+ stylemenu.addCommand("Normal", 400, a_coloring == 0, 0);
+ stylemenu.addCommand("Fire", 402, a_coloring == 2, 0);
+ stylemenu.addCommand("Line", 403, a_coloring == 3, 0);
+ visMenu.addSubMenu(stylemenu, "Analyzer Coloring");
+
+ ProcessMenuResult (visMenu.popAtMouse());
+
+ delete visMenu;
+ delete specmenu;
+ delete oscmenu;
+ delete pksmenu;
+ delete anamenu;
+ delete stylemenu;
+
+ complete;
+}
+
+ProcessMenuResult (int a)
+{
+ if (a < 1) return;
+
+ if (a > 0 && a <= 6 || a == 100)
+ {
+ if (a == 100) a = 0;
+ setVis(a);
+ }
+
+ else if (a == 101)
+ {
+ show_peaks = (show_peaks - 1) * (-1);
+ visualizer.setXmlParam("peaks", integerToString(show_peaks));
+ if (!isShade) visualizer_m.setXmlParam("peaks", integerToString(show_peaks));
+ setPrivateInt(getSkinName(), "Visualizer show Peaks", show_peaks);
+ }
+
+ else if (a >= 200 && a <= 204)
+ {
+ p_falloffspeed = a - 200;
+ visualizer.setXmlParam("peakfalloff", integerToString(p_falloffspeed));
+ if (!isShade) visualizer_m.setXmlParam("peakfalloff", integerToString(p_falloffspeed));
+ setPrivateInt(getSkinName(), "Visualizer peaks falloff", p_falloffspeed);
+ }
+
+ else if (a >= 300 && a <= 304)
+ {
+ a_falloffspeed = a - 300;
+ visualizer.setXmlParam("falloff", integerToString(a_falloffspeed));
+ if (!isShade) visualizer_m.setXmlParam("falloff", integerToString(a_falloffspeed));
+ setPrivateInt(getSkinName(), "Visualizer analyzer falloff", a_falloffspeed);
+ }
+
+ else if (a >= 400 && a <= 403)
+ {
+ a_coloring = a - 400;
+ if (a_coloring == 0)
+ {
+ visualizer.setXmlParam("coloring", "Normal");
+ if (!isShade) visualizer_m.setXmlParam("coloring", "Normal");
+ }
+ else if (a_coloring == 1)
+ {
+ visualizer.setXmlParam("coloring", "Normal");
+ if (!isShade) visualizer_m.setXmlParam("coloring", "Normal");
+ }
+ else if (a_coloring == 2)
+ {
+ visualizer.setXmlParam("coloring", "Fire");
+ if (!isShade) visualizer_m.setXmlParam("coloring", "Fire");
+ }
+ else if (a_coloring == 3)
+ {
+ visualizer.setXmlParam("coloring", "Line");
+ if (!isShade) visualizer_m.setXmlParam("coloring", "Line");
+ }
+ setPrivateInt(getSkinName(), "Visualizer analyzer coloring", a_coloring);
+ }
+}
+
+setVis (int mode)
+{
+ setPrivateInt(getSkinName(), "Visualizer Mode", mode);
+ if (mode == 0)
+ {
+ visualizer.setMode(0);
+ if (!isShade) visualizer_m.setMode(0);
+ }
+ else if (mode == 1)
+ {
+ visualizer.setXmlParam("bandwidth", "wide");
+ visualizer.setMode(1);
+ if (!isShade) visualizer_m.setXmlParam("bandwidth", "wide");
+ if (!isShade) visualizer_m.setMode(1);
+ }
+ else if (mode == 2)
+ {
+ visualizer.setXmlParam("bandwidth", "thin");
+ visualizer.setMode(1);
+ if (!isShade) visualizer_m.setXmlParam("bandwidth", "thin");
+ if (!isShade) visualizer_m.setMode(1);
+ }
+ else if (mode == 3)
+ {
+ visualizer.setXmlParam("oscstyle", "solid");
+ visualizer.setMode(2);
+ if (!isShade) visualizer_m.setXmlParam("oscstyle", "solid");
+ if (!isShade) visualizer_m.setMode(2);
+ }
+ else if (mode == 4)
+ {
+ visualizer.setXmlParam("oscstyle", "dots");
+ visualizer.setMode(2);
+ if (!isShade) visualizer_m.setXmlParam("oscstyle", "dots");
+ if (!isShade) visualizer_m.setMode(2);
+ }
+ else if (mode == 5)
+ {
+ visualizer.setXmlParam("oscstyle", "lines");
+ visualizer.setMode(2);
+ if (!isShade) visualizer_m.setXmlParam("oscstyle", "lines");
+ if (!isShade) visualizer_m.setMode(2);
+ }
+ currentMode = mode;
+}
+
+// Set Vis reflection on/off
+
+vis_reflection_attrib.onDataChanged ()
+{
+ if (isShade)
+ {
+ // shade visualizer doesn't have a reflection
+ return;
+ }
+
+ if (getdata() == "1")
+ {
+ visualizer_m.show();
+ }
+ else
+ {
+ visualizer_m.hide();
+ }
+}
+
+// Set Timer reflection on/off
+
+timer_reflection_attrib.onDataChanged ()
+{
+ if (isShade)
+ {
+ // shade visualizer doesn't have a reflection
+ return;
+ }
+
+ if (getdata() == "1")
+ {
+ tmr.setXmlParam("font", "player.bitmapfont.nums");
+ }
+ else
+ {
+ tmr.setXmlParam("font", "player.bitmapfont.nums.noreflect");
+ }
+}
+
+// Sync Normal and Shade Layout
+
+main.onBeforeSwitchToLayout(Layout oldlayout, Layout newlayout)
+{
+ if (newlayout != thislayout)
+ {
+ return;
+ }
+
+ refreshVisSettings();
+} \ No newline at end of file
diff --git a/Src/resources/skins/Big Bento/scripts/visualizer.maki b/Src/resources/skins/Big Bento/scripts/visualizer.maki
new file mode 100644
index 00000000..1bfe10c8
--- /dev/null
+++ b/Src/resources/skins/Big Bento/scripts/visualizer.maki
Binary files differ