mirror of
https://github.com/WinampDesktop/winamp.git
synced 2025-06-19 00:55:45 -04:00
Initial community commit
This commit is contained in:
110
Src/resources/data/freeform/xml/popupmenu/popupitem.m
Normal file
110
Src/resources/data/freeform/xml/popupmenu/popupitem.m
Normal file
@ -0,0 +1,110 @@
|
||||
#include <lib/std.mi>
|
||||
|
||||
#define MARGIN 2
|
||||
#define MARGIN_PRE 2
|
||||
#define MARGIN_POST 6
|
||||
|
||||
#define CHECKMARK_WIDTH 10
|
||||
#define ARROW_WIDTH 10
|
||||
|
||||
Function setArrow(int want);
|
||||
Function setCheckmark(int want);
|
||||
Function updatePos();
|
||||
|
||||
Global Group mgrp;
|
||||
Global GuiObject background;
|
||||
Class GuiObject ItemSwitcher;
|
||||
Global int id;
|
||||
Global int want_checkmark;
|
||||
Global int want_arrow;
|
||||
|
||||
Global ItemSwitcher a, b, c, d;
|
||||
Global GuiObject _a, _b, _c;
|
||||
|
||||
System.onScriptLoaded() {
|
||||
mgrp = getScriptGroup();
|
||||
if (mgrp == NULL) {
|
||||
messagebox("popupitem.maki: cannot run outside a group", "Error", 0, "");
|
||||
return;
|
||||
}
|
||||
|
||||
_a = mgrp.getObject("popup.item.checkmark"); a = _a;
|
||||
_b = mgrp.getObject("popup.item.text"); b = _b;
|
||||
_c = mgrp.getObject("popup.item.submenuarrow"); c = _c;
|
||||
background = mgrp.getObject("popup.background"); d = background;
|
||||
|
||||
want_checkmark = -1;
|
||||
want_arrow = -1;
|
||||
}
|
||||
|
||||
mgrp.onNotify(String command, String param, int a, int b) {
|
||||
if (command == "id") id = StringToInteger(param);
|
||||
if (command == "arrow") setArrow(StringToInteger(param));
|
||||
if (command == "checkmark") setCheckMark(StringToInteger(param));
|
||||
}
|
||||
|
||||
ItemSwitcher.onEnterArea() {
|
||||
background.cancelTarget();
|
||||
background.setAlpha(255);
|
||||
}
|
||||
|
||||
ItemSwitcher.onLeaveArea() {
|
||||
background.setTargetA(0);
|
||||
background.setTargetSpeed(0.25);
|
||||
background.gotoTarget();
|
||||
}
|
||||
|
||||
ItemSwitcher.onLeftButtonDown(int x, int y) {
|
||||
mgrp.endModal(id);
|
||||
}
|
||||
|
||||
setArrow(int want) {
|
||||
if (want_arrow == want) return;
|
||||
want_arrow = want;
|
||||
updatePos();
|
||||
}
|
||||
|
||||
setCheckmark(int want) {
|
||||
if (want_checkmark == want) return;
|
||||
want_checkmark = want;
|
||||
updatePos();
|
||||
}
|
||||
|
||||
updatePos() {
|
||||
|
||||
int x = MARGIN;
|
||||
int mx = MARGIN;
|
||||
|
||||
if (!want_checkmark) {
|
||||
if (_a != NULL) {
|
||||
_a.hide();
|
||||
}
|
||||
} else {
|
||||
if (_a != NULL) {
|
||||
_a.show();
|
||||
}
|
||||
x += CHECKMARK_WIDTH + MARGIN_PRE;
|
||||
mx += CHECKMARK_WIDTH + MARGIN_PRE;
|
||||
}
|
||||
|
||||
|
||||
if (!want_arrow) {
|
||||
if (_c != NULL) {
|
||||
_c.hide();
|
||||
}
|
||||
} else {
|
||||
if (_c != NULL) {
|
||||
_c.show();
|
||||
}
|
||||
mx += ARROW_WIDTH + MARGIN_POST;
|
||||
}
|
||||
|
||||
mx += MARGIN;
|
||||
|
||||
if (_b != NULL) {
|
||||
_b.setXmlParam("x", IntegerToString(x));
|
||||
_b.setXmlParam("w", "-" + IntegerToString(mx));
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user