314 lines
9.0 KiB
Mathematica
314 lines
9.0 KiB
Mathematica
|
#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");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|