98 lines
3.5 KiB
Mathematica
98 lines
3.5 KiB
Mathematica
|
#include <lib/std.mi>
|
||
|
|
||
|
// ------------------------------------------------------------------------------------
|
||
|
Global GuiObject target;
|
||
|
Global ComponentBucket buck;
|
||
|
// ------------------------------------------------------------------------------------
|
||
|
Function turnAllOffExcept(GuiObject except);
|
||
|
Function turnOn(GuiObject obj);
|
||
|
Function turnOff(GuiObject obj);
|
||
|
// ------------------------------------------------------------------------------------
|
||
|
|
||
|
|
||
|
// ------------------------------------------------------------------------------------
|
||
|
// init
|
||
|
// ------------------------------------------------------------------------------------
|
||
|
System.onScriptLoaded() {
|
||
|
target = getScriptGroup().findObject("skin.config.target");
|
||
|
buck = getScriptGroup().findObject("my.bucket");
|
||
|
|
||
|
// turn off all
|
||
|
GuiObject o = NULL;
|
||
|
turnAllOffExcept(o);
|
||
|
}
|
||
|
|
||
|
// ------------------------------------------------------------------------------------
|
||
|
// save scroller position
|
||
|
// ------------------------------------------------------------------------------------
|
||
|
System.onScriptUnloading() {
|
||
|
if (buck) {
|
||
|
setPrivateInt("configmenu", "last_scroll", buck.getScroll());
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// ------------------------------------------------------------------------------------
|
||
|
// turn on last open
|
||
|
// ------------------------------------------------------------------------------------
|
||
|
buck.onStartup() {
|
||
|
setScroll(getPrivateInt("configmenu", "last_scroll", 0));
|
||
|
Group g = buck.enumChildren(getPrivateInt("configmenu", "last_page", 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);
|
||
|
target.setXmlParam("groupid", grp);
|
||
|
|
||
|
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
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// ------------------------------------------------------------------------------------
|
||
|
// 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("configmenu", "last_page", 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);
|
||
|
}
|