From 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d Mon Sep 17 00:00:00 2001 From: Jef Date: Tue, 24 Sep 2024 14:54:57 +0200 Subject: Initial community commit --- .../skins/Winamp Modern/scripts/configtarget.m | 97 ++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 Src/resources/skins/Winamp Modern/scripts/configtarget.m (limited to 'Src/resources/skins/Winamp Modern/scripts/configtarget.m') diff --git a/Src/resources/skins/Winamp Modern/scripts/configtarget.m b/Src/resources/skins/Winamp Modern/scripts/configtarget.m new file mode 100644 index 00000000..2aad82e2 --- /dev/null +++ b/Src/resources/skins/Winamp Modern/scripts/configtarget.m @@ -0,0 +1,97 @@ +#include + +// ------------------------------------------------------------------------------------ +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