aboutsummaryrefslogtreecommitdiff
path: root/Src/resources/skins/Big Bento/scripts/maximize.m
diff options
context:
space:
mode:
Diffstat (limited to 'Src/resources/skins/Big Bento/scripts/maximize.m')
-rw-r--r--Src/resources/skins/Big Bento/scripts/maximize.m648
1 files changed, 648 insertions, 0 deletions
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