home *** CD-ROM | disk | FTP | other *** search
- // Zinc Interface Library - D_ICON.CPP
- // COPYRIGHT (C) 1990, 1991. All Rights Reserved.
- // Zinc Software Incorporated. Pleasant Grove, Utah USA
-
- #include "ui_dsn.hpp"
- #include "d_help.hlh"
- #include <mem.h>
- #include <graphics.h>
-
- const int STRING_FIELD = 0x0001;
- const int WIDTH_FIELD = 0x0002;
- const int HEIGHT_FIELD = 0x0003;
- const int ICON_FIELD = 0x0004;
- const int STRINGID_FIELD = 0x0005;
-
- static UCHAR _colorMap[] =
- {
- BLACK, DARKGRAY,
- BLUE, LIGHTBLUE,
- GREEN, LIGHTGREEN,
- CYAN, LIGHTCYAN,
- RED, LIGHTRED,
- MAGENTA, LIGHTMAGENTA,
- BROWN, YELLOW,
- LIGHTGRAY, WHITE
- };
- int UIW_ICON::Editor(const UI_EVENT &event)
- {
- char *windowName = "Icon";
-
- int ccode = event.type;
- switch (ccode)
- {
- case S_EDIT_OBJECT:
- {
- UIW_BUTTON *save, *cancel, *help;
- UIW_ICON *iconField;
- UIW_STRING *stringField, *stringIDField;
- UIW_NUMBER *widthField, *heightField;
-
- // Create the icon editor window.
- UIW_WINDOW *window = new UIW_WINDOW(_centerColumn - 34, _centerLine - 13,
- 68, 26, WOF_NO_FLAGS, WOAF_MODAL | WOAF_NO_SIZE);
- *window
- + new UIW_BORDER
- + &(*new UIW_SYSTEM_BUTTON
- + new UIW_POP_UP_ITEM("~Move", MNIF_MOVE, BTF_NO_TOGGLE, WOF_NO_FLAGS)
- + new UIW_POP_UP_ITEM("~Close", MNIF_CLOSE, BTF_NO_TOGGLE, WOF_NO_FLAGS))
- + new UIW_TITLE(windowName)
-
- + new UIW_PROMPT(2, 1, "Text:", WOF_NO_FLAGS)
- + (stringField = new UIW_STRING(10, 1, 20, string, 100,
- STF_NO_FLAGS, WOF_BORDER | WOF_AUTO_CLEAR, 0))
- + new UIW_PROMPT(2, 2, "Width:", WOF_NO_FLAGS)
- + (widthField = new UIW_NUMBER(10, 2, 10, &bitmapWidth, "1..64",
- NMF_NO_FLAGS, WOF_BORDER | WOF_NON_SELECTABLE | WOF_AUTO_CLEAR, 0))
- + new UIW_PROMPT(2, 3, "Height:", WOF_NO_FLAGS)
- + (heightField = new UIW_NUMBER(10, 3, 10, &bitmapHeight, "1..64",
- NMF_NO_FLAGS, WOF_BORDER | WOF_NON_SELECTABLE | WOF_AUTO_CLEAR, 0))
-
- + new UIW_PROMPT(32, 1, "StringID:", WOF_NO_FLAGS)
- + (stringIDField = new UIW_STRING(42, 1, 22, search.stringID, 100, STF_VARIABLE_NAME, WOF_BORDER | WOF_AUTO_CLEAR, 0))
-
- + new UIW_PROMPT(4, 5, "color", WOF_NO_FLAGS)
- + new UIW_PROMPT(12, 9, "left", WOF_NO_FLAGS)
- + new UIW_PROMPT(12, 13, "right", WOF_NO_FLAGS)
- + new UIW_PROMPT(20, 5, "bitmap", WOF_NO_FLAGS)
- + new UIW_PROMPT(48, 5, "icon", WOF_NO_FLAGS)
-
- + new UIW_ICON(4, 6, 1, 16, _colorMap, NULL, ICF_WRITE, WOF_BORDER, NULL, 32, 11)
- + new UIW_ICON(12, 10, 1, 1, NULL, NULL, ICF_AUTO_SELECT, WOF_BORDER | WOF_NON_SELECTABLE, NULL, 32, 11)
- + new UIW_ICON(12, 14, 1, 1, NULL, NULL, ICF_AUTO_ESCAPE, WOF_BORDER | WOF_NON_SELECTABLE, NULL, 32, 11)
- + new UIW_ICON(20, 6, bitmapWidth, bitmapHeight, bitmapArray, NULL, ICF_READ, WOF_BORDER, NULL, 5, 5)
- + (iconField = new UIW_ICON(48, 6, bitmapWidth, bitmapHeight, bitmapArray,
- NULL, ICF_READ | ICF_END, WOF_NON_SELECTABLE, NULL, 1, 1))
-
- + (save = new UIW_BUTTON(13, 22, 10, "~Save",
- BTF_NO_TOGGLE | BTF_AUTO_SIZE,
- WOF_BORDER | WOF_JUSTIFY_CENTER, UI_DESIGN_MANAGER::Save))
- + (cancel = new UIW_BUTTON(28, 22, 10, "~Cancel",
- BTF_NO_TOGGLE | BTF_AUTO_SIZE,
- WOF_BORDER | WOF_JUSTIFY_CENTER, UI_DESIGN_MANAGER::Cancel))
- + (help = new UIW_BUTTON(43, 22, 10, "~Help",
- BTF_NO_TOGGLE | BTF_AUTO_SIZE,
- WOF_BORDER | WOF_JUSTIFY_CENTER, UI_DESIGN_MANAGER::Help));
-
- // Identify key fields.
- window->StringID(windowName);
- stringField->NumberID(STRING_FIELD);
- widthField->NumberID(WIDTH_FIELD);
- heightField->NumberID(HEIGHT_FIELD);
- stringIDField->NumberID(STRINGID_FIELD);
- iconField->NumberID(ICON_FIELD);
- save->userObject = cancel->userObject = help->userObject = this;
- help->value = HELP_ICON;
-
- // Add the window to the window manager.
- *windowManager + window;
- break;
- }
-
- case S_SAVE_OBJECT:
- {
- UIW_WINDOW *window = (UIW_WINDOW *)windowManager->Get(windowName);
-
- UIW_STRING *stringIDField = (UIW_STRING *)window->Get(STRINGID_FIELD);
- StringID(stringIDField->DataGet());
-
- UIW_STRING *stringField = (UIW_STRING *)window->Get(STRING_FIELD);
- if (string) delete string;
- string = ui_strdup(stringField->DataGet());
-
- UIW_ICON *iconField = (UIW_ICON *)window->Get(ICON_FIELD);
- memcpy(bitmapArray, iconField->DataGet(), bitmapWidth * bitmapHeight);
- UI_WINDOW_OBJECT::Redisplay(TRUE);
- break;
- }
-
- default:
- ccode = UI_WINDOW_OBJECT::Editor(event);
- break;
- }
-
- // Return the control code.
- return (ccode);
- }
-