111 lines
2.1 KiB
Objective-C
111 lines
2.1 KiB
Objective-C
#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));
|
|
}
|
|
|
|
}
|
|
|