home *** CD-ROM | disk | FTP | other *** search
- // Zinc Interface Library - D_CTRL5.CPP
- // COPYRIGHT (C) 1990, 1991. All Rights Reserved.
- // Zinc Software Incorporated. Pleasant Grove, Utah USA
-
- #include "ui_dsn.hpp"
- #include "d_help.hlh"
-
- static char *windowName = "Help";
- const int NAME_FIELD = 0x0001;
- const int TITLE_FIELD = 0x0002;
- const int TEXT_FIELD = 0x0003;
-
- #pragma argsused
- static int HelpName(void *data, int ccode)
- {
- if (ccode == S_CURRENT)
- return (0);
- UIW_STRING *nameField = (UIW_STRING *)data;
- const char *name = nameField->DataGet();
- if (name[0] == '\0' || !_storage)
- return (0);
- UIW_WINDOW *window = (UIW_WINDOW *)nameField->windowManager->Get(windowName);
- UI_STORAGE_ELEMENT *element = _storage->Seek(name, SEEK_READ);
- if (!element)
- return (0);
- char *buffer;
- UIW_STRING *titleField = (UIW_STRING *)window->Get(TITLE_FIELD);
- _storage->Load(&buffer);
- titleField->DataSet(buffer);
- delete buffer;
- UIW_TEXT *textField = (UIW_TEXT *)window->Get(TEXT_FIELD);
- _storage->Load(&buffer);
- textField->DataSet(buffer);
- delete buffer;
- return (0);
- }
-
- static void SaveHelp(void *data, UI_EVENT &event)
- {
- UIW_BUTTON *item = (UIW_BUTTON *)data;
- if (_storage)
- {
- item->eventManager->DeviceState(E_MOUSE, DM_WAIT);
- UIW_WINDOW *window = (UIW_WINDOW *)item->windowManager->Get(windowName);
-
- UIW_STRING *nameField = (UIW_STRING *)window->Get(NAME_FIELD);
- UI_STORAGE_ELEMENT *element = _storage->Seek(nameField->DataGet(), SEEK_WRITE);
- element->search.type = ID_HELP_CONTEXT;
- UIW_STRING *titleField = (UIW_STRING *)window->Get(TITLE_FIELD);
- _storage->Store(titleField->DataGet());
- UIW_TEXT *textField = (UIW_TEXT *)window->Get(TEXT_FIELD);
- _storage->Store(textField->DataGet());
- _storage->ObjectSize(element->search.stringID, element->search);
- item->eventManager->DeviceState(E_MOUSE, DM_VIEW);
- }
- event.type = S_CLOSE;
- item->eventManager->Put(event, Q_BEGIN);
- }
-
- void UI_DESIGN_MANAGER::OptionsControl(void *data, UI_EVENT &event)
- {
- // Switch on the item type.
- event.type = 0;
- UIW_POP_UP_ITEM *item = (UIW_POP_UP_ITEM *)data;
- switch (item->value)
- {
- case OPTIONS_AUTO_TEXT:
- event.type = S_RESET_DISPLAY;
- event.rawCode = TDM_AUTO;
- break;
-
- case OPTIONS_25X40:
- event.type = S_RESET_DISPLAY;
- event.rawCode = TDM_25x40;
- break;
-
- case OPTIONS_25X80:
- event.type = S_RESET_DISPLAY;
- event.rawCode = TDM_25x80;
- break;
-
- case OPTIONS_43X80:
- event.type = S_RESET_DISPLAY;
- event.rawCode = TDM_43x80;
- break;
-
- case OPTIONS_AUTO_GRAPHICS:
- event.type = S_RESET_DISPLAY;
- event.rawCode = TDM_NONE;
- break;
-
- case OPTIONS_HELP:
- {
- UIW_BUTTON *save, *cancel, *help;
- UIW_STRING *nameField, *titleField, *textField;
-
- // Create the button editor window.
- UIW_WINDOW *window = new UIW_WINDOW(0, 0, 70, 20, 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, "Name:", WOF_NO_FLAGS)
- + (nameField = new UIW_STRING(9, 1, 42, "", 100, STF_VARIABLE_NAME, WOF_BORDER | WOF_AUTO_CLEAR, HelpName))
- + new UIW_PROMPT(2, 2, "Title:", WOF_NO_FLAGS)
- + (titleField = new UIW_STRING(9, 2, 42, "", 100, STF_NO_FLAGS, WOF_BORDER | WOF_AUTO_CLEAR, 0))
- + new UIW_PROMPT(2, 3, "Text:", WOF_NO_FLAGS)
- + new UIW_SCROLL_BAR(64, 4, 2, 10, SBF_VERTICAL, WOF_NO_FLAGS)
- + (textField = new UIW_TEXT(2, 4, 62, 10, "", 1024, TXF_NO_FLAGS, WOF_BORDER | WOF_AUTO_CLEAR, 0))
-
- + (save = new UIW_BUTTON(14, 16, 10, "~Save",
- BTF_NO_TOGGLE | BTF_AUTO_SIZE,
- WOF_BORDER | WOF_JUSTIFY_CENTER, SaveHelp))
- + (cancel = new UIW_BUTTON(29, 16, 10, "~Cancel",
- BTF_NO_TOGGLE | BTF_AUTO_SIZE,
- WOF_BORDER | WOF_JUSTIFY_CENTER, UI_DESIGN_MANAGER::Cancel))
- + (help = new UIW_BUTTON(44, 16, 10, "~Help",
- BTF_NO_TOGGLE | BTF_AUTO_SIZE,
- WOF_BORDER | WOF_JUSTIFY_CENTER, UI_DESIGN_MANAGER::Help));
-
- window->StringID(windowName);
- nameField->NumberID(NAME_FIELD);
- titleField->NumberID(TITLE_FIELD);
- textField->NumberID(TEXT_FIELD);
-
- item->windowManager->Add(window);
- break;
- }
- }
-
- if (event.type)
- {
- item->eventManager->Put(event, Q_END);
- event.type = S_CLOSE_TEMPORARY;
- item->eventManager->Put(event, Q_BEGIN);
- item->eventManager->Put(event, Q_BEGIN);
- }
- }
-