diff options
Diffstat (limited to 'Src/resources/skins/Big Bento/scripts')
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 Binary files differnew file mode 100644 index 00000000..f9248813 --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/albumart.maki 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 Binary files differnew file mode 100644 index 00000000..b4cda446 --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/beatvisualization.maki 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 Binary files differnew file mode 100644 index 00000000..c61f2a1c --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/cbuttons.maki 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 Binary files differnew file mode 100644 index 00000000..a3ddb897 --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/colorthemes.maki 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 Binary files differnew file mode 100644 index 00000000..d48dcfb1 --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/configtarget.maki 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 Binary files differnew file mode 100644 index 00000000..54b59008 --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/coverflow.maki 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 Binary files differnew file mode 100644 index 00000000..109d1b51 --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/eq.maki 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 Binary files differnew file mode 100644 index 00000000..e2eaa995 --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/fileinfo.maki 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 Binary files differnew file mode 100644 index 00000000..e7c12f31 --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/gen_dropbox.maki 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 Binary files differnew file mode 100644 index 00000000..f66a9a1d --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/hoverstimulate.maki 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 Binary files differnew file mode 100644 index 00000000..65566a4d --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/imagecontrol.maki 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 Binary files differnew file mode 100644 index 00000000..4a1562e5 --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/infoline.maki 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 Binary files differnew file mode 100644 index 00000000..e6c41c20 --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/loadattribs.maki 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 Binary files differnew file mode 100644 index 00000000..eca152f8 --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/mainmenu.maki 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 Binary files differnew file mode 100644 index 00000000..413673ca --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/maximize.maki 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 Binary files differnew file mode 100644 index 00000000..4a5139f2 --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/mcvcore.maki 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 Binary files differnew file mode 100644 index 00000000..254c8063 --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/mute.maki 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 Binary files differnew file mode 100644 index 00000000..266ad93c --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/notifier.maki 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 Binary files differnew file mode 100644 index 00000000..3db3ab8f --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/playlistpro.maki 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 Binary files differnew file mode 100644 index 00000000..0e4f04a4 --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/pledit.maki 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 Binary files differnew file mode 100644 index 00000000..5776e63c --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/seek.maki 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 Binary files differnew file mode 100644 index 00000000..f1c75302 --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/shadelinks.maki 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 Binary files differnew file mode 100644 index 00000000..61534de0 --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/shadesize.maki 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 Binary files differnew file mode 100644 index 00000000..75649cb2 --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/simplemaximize.maki 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 Binary files differnew file mode 100644 index 00000000..1d37b984 --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/songinfo.maki 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 Binary files differnew file mode 100644 index 00000000..30d3e76f --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/songticker.maki 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 Binary files differnew file mode 100644 index 00000000..daf4476d --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/standardframe.maki 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 Binary files differnew file mode 100644 index 00000000..b28c20f8 --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/suicore.maki 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 Binary files differnew file mode 100644 index 00000000..a11e0aff --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/syncbutton.maki 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 Binary files differnew file mode 100644 index 00000000..a10513b9 --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/tabbutton.maki 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 Binary files differnew file mode 100644 index 00000000..8795e36a --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/tabcontrol.maki 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 Binary files differnew file mode 100644 index 00000000..cdd75712 --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/timecontrol.maki 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 Binary files differnew file mode 100644 index 00000000..58b403f2 --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/videoresize.maki 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 Binary files differnew file mode 100644 index 00000000..4d0e1d3c --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/visbuttons.maki 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 Binary files differnew file mode 100644 index 00000000..1bfe10c8 --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/visualizer.maki |