aboutsummaryrefslogtreecommitdiff
path: root/Src/resources/skins/Winamp Modern/scripts/videoavs.m
diff options
context:
space:
mode:
Diffstat (limited to 'Src/resources/skins/Winamp Modern/scripts/videoavs.m')
-rw-r--r--Src/resources/skins/Winamp Modern/scripts/videoavs.m313
1 files changed, 313 insertions, 0 deletions
diff --git a/Src/resources/skins/Winamp Modern/scripts/videoavs.m b/Src/resources/skins/Winamp Modern/scripts/videoavs.m
new file mode 100644
index 00000000..32ce21cb
--- /dev/null
+++ b/Src/resources/skins/Winamp Modern/scripts/videoavs.m
@@ -0,0 +1,313 @@
+#include <lib/std.mi>
+#include <lib/config.mi>
+
+#define MAIN_ATTRIBS_MGR
+
+Function updateVisCmd();
+Function updateOpenCloseDirection();
+
+// this implements the main app drawer
+#include "drawer.m"
+
+// this loads the skin config attributes definitions
+#include "attribs.m"
+
+Global Layout main, shade;
+Global Container maincontainer;
+Global Group frameGroup, ButtonsVideo,ButtonsVis,ButtonsVideoDetach,ButtonsVisDetach,ButtonsVideoSwitchto,ButtonsVisSwitchto;
+Global Button btnOpen,btnClose,btnMaximize,btnRestore, btnVisDetach, btnVideoDetach, btnVisSwitchto, btnVideoSwitchto;
+Global Layer resizer,resizerDrawer,OpenCloseHider;
+Global GuiObject VideoVisGroup;
+Global Int evershown;
+Global Int ismaximized;
+Global Int lasttotop;
+
+//------------------------------------------------------------------------
+// script startup
+//------------------------------------------------------------------------
+System.onScriptLoaded() {
+ // init skin attributes for this script
+
+ initAttribs();
+
+ // bind objects
+
+ frameGroup = getScriptGroup();
+ btnOpen = frameGroup.findObject("videoavs.open");
+ btnClose = frameGroup.findObject("videoavs.close");
+ btnMaximize = frameGroup.findObject("button.vid.max");
+ btnRestore = frameGroup.findObject("button.vid.restore");
+ resizer = frameGroup.findObject("player.main.resizer");
+ resizerDrawer = frameGroup.findObject("drawer.resizer");
+
+ ButtonsVideo = frameGroup.findObject("buttons.video");
+ ButtonsVis = frameGroup.findObject("buttons.vis");
+
+ ButtonsVideoDetach = frameGroup.findObject("buttons.video.detach");
+ ButtonsVisDetach = frameGroup.findObject("buttons.vis.detach");
+ BtnVisDetach = ButtonsVisDetach.findObject("button.vis.detach");
+ BtnVideoDetach = ButtonsVideoDetach.findObject("button.vid.detach");
+
+ ButtonsVideoSwitchto = frameGroup.findObject("buttons.video.switchto");
+ ButtonsVisSwitchto = frameGroup.findObject("buttons.vis.switchto");
+
+ BtnVisSwitchto = ButtonsVisSwitchto.findObject("button.vis.Switchto");
+ BtnVideoSwitchto = ButtonsVideoSwitchto.findObject("button.vid.Switchto");
+
+ OpenCloseHider=frameGroup.findObject("openclosehider");
+
+ main = frameGroup.getParentLayout();
+ maincontainer = main.getContainer();
+ VideoVisGroup = frameGroup.findObject("AVSGroup");
+
+ VideoVisGroup.hide();
+
+ // bind drawer script attribs to our attribs
+
+ __drawer_directiontop_attrib = drawer_directiontop_attrib;
+ __scrolldrawerattrib = scrolldrawerattrib;
+ __drawer_directionbypass_attrib = drawer_directionbypass_attrib;
+ __vis_detach_attrib = vis_detach_attrib;
+ __video_detach_attrib = video_detach_attrib;
+
+ // startup drawer script
+
+ initDrawer(main, "VideoAVS");
+
+ // more init
+
+ if (vis_detach_attrib.getData() == "1" && video_detach_attrib.getData() == "1") OpenCloseHider.show();
+ else OpenCloseHider.hide();
+
+ lasttotop = 0;
+}
+
+//------------------------------------------------------------------------
+// grab a handle to the windowshade layout, can't get it in onScriptLoaded since it doesn't exists yet
+// also, first time we are shown, we update the viscmd button's action
+//------------------------------------------------------------------------
+main.onSetVisible(int show) {
+ if (!evershown) {
+ evershown = 1;
+ if (!shade) {
+ shade = maincontainer.getLayout("shade");
+ }
+ updateVisCmd();
+ updateOpenCloseDirection();
+ }
+}
+
+//------------------------------------------------------------------------
+// script shutdown
+//------------------------------------------------------------------------
+System.onScriptUnloading() {
+
+ // shutdown the drawer script
+
+ shutdownDrawer();
+}
+
+//------------------------------------------------------------------------
+// drawer script backend
+//------------------------------------------------------------------------
+
+Int getDrawerClosedHeight() {
+ return 280; // this is the size of the layout when the drawer is closed
+}
+
+Int getDefaultDrawerOpenHeight() {
+ return 510; // this is the default size of the layout, used when it opens the first time
+}
+
+// whenever the main window is resized while its drawer is closed, we change the height of the drawer the
+// next time it opens so that video will fit 4:3
+Int getDrawerOpenAutoHeight(int layoutwidth) {
+ return (layoutwidth-6)*(3/4)+55+270;
+}
+
+WindowHolder getVisWindowHolder() {
+ WindowHolder wh = getScriptGroup().findObject("myviswnd");
+ return wh; // we return our vis windowholder object
+}
+
+WindowHolder getVideoWindowHolder() {
+ WindowHolder wh = getScriptGroup().findObject("myvideownd");
+ return wh; // we return our video windowholder object
+}
+
+//------------------------------------------------------------------------
+// optional drawer events
+//------------------------------------------------------------------------
+
+onDoneOpeningDrawer() {
+ // nothing to do
+}
+
+onDoneClosingDrawer() {
+ VideoVisGroup.hide();
+}
+
+onBeforeOpeningDrawer() {
+ resizer.setXmlParam("resize", "bottomright");
+ resizerDrawer.setXmlParam("resize", "bottomright");
+ btnOpen.hide();
+ main.setXmlParam("minimum_h", "380");
+
+ VideoVisGroup.show();
+}
+
+onBeforeClosingDrawer() {
+ resizer.setXmlParam("resize", "right");
+ resizerDrawer.setXmlParam("resize", "right");
+ main.setXmlParam("minimum_h", "280");
+ btnOpen.show();
+}
+
+onShowVis() {
+ ButtonsVideo.hide();
+ ButtonsVideoDetach.hide();
+ ButtonsVideoSwitchto.hide();
+ ButtonsVis.show();
+ ButtonsVisDetach.show();
+ if (video_detach_attrib.getData() == "0") ButtonsVisSwitchto.show();
+}
+
+onHideVis() {
+ ButtonsVis.hide();
+ ButtonsVisDetach.hide();
+ ButtonsVisSwitchto.hide();
+}
+
+onShowVideo() {
+ ButtonsVis.hide();
+ ButtonsVisDetach.hide();
+ ButtonsVisSwitchto.hide();
+ ButtonsVideo.show();
+ ButtonsVideoDetach.show();
+ if (vis_detach_attrib.getData() == "0") ButtonsVideoSwitchto.show();
+}
+
+onHideVideo() {
+ ButtonsVideo.hide();
+ ButtonsVideoDetach.hide();
+ ButtonsVideoSwitchto.hide();
+}
+
+onDetachVideo() {
+ ButtonsVisSwitchto.hide();
+ if (vis_detach_attrib.getData() == "1") OpenCloseHider.show();
+}
+
+onAttachVideo() {
+ ButtonsVisSwitchto.show();
+ OpenCloseHider.hide();
+}
+
+onDetachVis() {
+ ButtonsVideoSwitchto.hide();
+ if (video_detach_attrib.getData() == "1") OpenCloseHider.show();
+}
+
+onAttachVis() {
+ ButtonsVideoSwitchto.show();
+ OpenCloseHider.hide();
+}
+
+onBeforeRestore() {
+ btnMaximize.show();
+ btnRestore.hide();
+}
+
+onBeforeMaximize() {
+ btnRestore.show();
+ btnMaximize.hide();
+}
+
+onCancelMaximize() {
+ btnMaximize.show();
+ btnRestore.hide();
+}
+
+// -----------------------------------------------------------------------
+// drawer control
+// -----------------------------------------------------------------------
+
+btnOpen.onLeftClick() {
+ openDrawer();
+}
+
+btnClose.onLeftClick() {
+ closeDrawer();
+}
+
+btnMaximize.onLeftClick() {
+ maximizeWindow();
+}
+
+btnRestore.onLeftClick() {
+ restoreWindow();
+}
+
+BtnVisDetach.onLeftClick() {
+ detachVis();
+}
+
+BtnVideoDetach.onLeftClick() {
+ detachVideo();
+}
+
+BtnVisSwitchto.onLeftClick() {
+ switchToVideo();
+}
+
+BtnVideoSwitchto.onLeftClick() {
+ switchToVis();
+}
+
+// -----------------------------------------------------------------------
+// when the player window is moved on the screen, we should update the up/down arrow for the open/close buttons since the
+// drawer may have changed the direction it will open depending on user settings
+// -----------------------------------------------------------------------
+main.onMove() {
+ updateOpenCloseDirection();
+}
+
+// -----------------------------------------------------------------------
+// just invert the images when the direction is to top and restore them otherwise
+// -----------------------------------------------------------------------
+updateOpenCloseDirection() {
+ if (isDrawerToTop()) {
+ if (!lasttotop) {
+ btnClose.setXmlParam("image", "player.button.videoavs");
+ btnClose.setXmlParam("downimage", "player.button.videoavs.pressed");
+ btnClose.setXmlParam("hoverImage", "player.button.videoavs.hover");
+ btnOpen.setXmlParam("image", "player.button.videoavs.up");
+ btnOpen.setXmlParam("downimage", "player.button.videoavs.up.pressed");
+ btnOpen.setXmlParam("hoverImage", "player.button.videoavs.up.hover");
+ lasttotop = 1;
+ }
+ } else {
+ if (lasttotop) {
+ btnOpen.setXmlParam("image", "player.button.videoavs");
+ btnOpen.setXmlParam("downimage", "player.button.videoavs.pressed");
+ btnOpen.setXmlParam("hoverImage", "player.button.videoavs.hover");
+ btnClose.setXmlParam("image", "player.button.videoavs.up");
+ btnClose.setXmlParam("downimage", "player.button.videoavs.up.pressed");
+ btnClose.setXmlParam("hoverImage", "player.button.videoavs.up.hover");
+ lasttotop = 0;
+ }
+ }
+}
+
+// -----------------------------------------------------------------------
+updateVisCmd() {
+ Button btn = getScriptGroup().findObject("button.vis.misc");
+ if (btn) {
+ if (viscmd_menu_attrib.getData() == "1") {
+ btn.setXmlParam("action", "Vis_Menu");
+ } else {
+ btn.setXmlParam("action", "Vis_Cfg");
+ }
+ }
+}
+