home *** CD-ROM | disk | FTP | other *** search
- #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));
- }
-
- }
-
-