123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- #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));
- }
- }
|