home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0040 - 0049 / ibm0040-0049 / ibm0040.tar / ibm0040 / ZINC_6.ZIP / DOSSRC.ZIP / D_CTRL5.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1991-06-01  |  4.4 KB  |  142 lines

  1. //    Zinc Interface Library - D_CTRL5.CPP
  2. //    COPYRIGHT (C) 1990, 1991.  All Rights Reserved.
  3. //    Zinc Software Incorporated.  Pleasant Grove, Utah  USA
  4.  
  5. #include "ui_dsn.hpp"
  6. #include "d_help.hlh"
  7.  
  8. static char *windowName = "Help";
  9. const int NAME_FIELD        = 0x0001;
  10. const int TITLE_FIELD        = 0x0002;
  11. const int TEXT_FIELD        = 0x0003;
  12.  
  13. #pragma argsused
  14. static int HelpName(void *data, int ccode)
  15. {
  16.     if (ccode == S_CURRENT)
  17.         return (0);
  18.     UIW_STRING *nameField = (UIW_STRING *)data;
  19.     const char *name = nameField->DataGet();
  20.     if (name[0] == '\0' || !_storage)
  21.         return (0);
  22.     UIW_WINDOW *window = (UIW_WINDOW *)nameField->windowManager->Get(windowName);
  23.     UI_STORAGE_ELEMENT *element = _storage->Seek(name, SEEK_READ);
  24.     if (!element)
  25.         return (0);
  26.     char *buffer;
  27.     UIW_STRING *titleField = (UIW_STRING *)window->Get(TITLE_FIELD);
  28.     _storage->Load(&buffer);
  29.     titleField->DataSet(buffer);
  30.     delete buffer;
  31.     UIW_TEXT *textField = (UIW_TEXT *)window->Get(TEXT_FIELD);
  32.     _storage->Load(&buffer);
  33.     textField->DataSet(buffer);
  34.     delete buffer;
  35.     return (0);
  36. }
  37.  
  38. static void SaveHelp(void *data, UI_EVENT &event)
  39. {
  40.     UIW_BUTTON *item = (UIW_BUTTON *)data;
  41.     if (_storage)
  42.     {
  43.         item->eventManager->DeviceState(E_MOUSE, DM_WAIT);
  44.         UIW_WINDOW *window = (UIW_WINDOW *)item->windowManager->Get(windowName);
  45.  
  46.         UIW_STRING *nameField = (UIW_STRING *)window->Get(NAME_FIELD);
  47.         UI_STORAGE_ELEMENT *element = _storage->Seek(nameField->DataGet(), SEEK_WRITE);
  48.         element->search.type = ID_HELP_CONTEXT;
  49.         UIW_STRING *titleField = (UIW_STRING *)window->Get(TITLE_FIELD);
  50.         _storage->Store(titleField->DataGet());
  51.         UIW_TEXT *textField = (UIW_TEXT *)window->Get(TEXT_FIELD);
  52.         _storage->Store(textField->DataGet());
  53.         _storage->ObjectSize(element->search.stringID, element->search);
  54.         item->eventManager->DeviceState(E_MOUSE, DM_VIEW);
  55.     }
  56.      event.type = S_CLOSE;
  57.      item->eventManager->Put(event, Q_BEGIN);
  58. }
  59.  
  60. void UI_DESIGN_MANAGER::OptionsControl(void *data, UI_EVENT &event)
  61. {
  62.     // Switch on the item type.
  63.     event.type = 0;
  64.     UIW_POP_UP_ITEM *item = (UIW_POP_UP_ITEM *)data;
  65.     switch (item->value)
  66.     {
  67.     case OPTIONS_AUTO_TEXT:
  68.         event.type = S_RESET_DISPLAY;
  69.         event.rawCode = TDM_AUTO;
  70.         break;
  71.  
  72.     case OPTIONS_25X40:
  73.         event.type = S_RESET_DISPLAY;
  74.         event.rawCode = TDM_25x40;
  75.         break;
  76.  
  77.     case OPTIONS_25X80:
  78.         event.type = S_RESET_DISPLAY;
  79.         event.rawCode = TDM_25x80;
  80.         break;
  81.  
  82.     case OPTIONS_43X80:
  83.         event.type = S_RESET_DISPLAY;
  84.         event.rawCode = TDM_43x80;
  85.         break;
  86.  
  87.     case OPTIONS_AUTO_GRAPHICS:
  88.         event.type = S_RESET_DISPLAY;
  89.         event.rawCode = TDM_NONE;
  90.         break;
  91.  
  92.     case OPTIONS_HELP:
  93.         {
  94.         UIW_BUTTON *save, *cancel, *help;
  95.         UIW_STRING *nameField, *titleField, *textField;
  96.  
  97.         // Create the button editor window.
  98.         UIW_WINDOW *window = new UIW_WINDOW(0, 0, 70, 20, WOF_NO_FLAGS, WOAF_MODAL | WOAF_NO_SIZE);
  99.         *window
  100.             + new UIW_BORDER
  101.             + &(*new UIW_SYSTEM_BUTTON
  102.                 + new UIW_POP_UP_ITEM("~Move", MNIF_MOVE, BTF_NO_TOGGLE, WOF_NO_FLAGS)
  103.                 + new UIW_POP_UP_ITEM("~Close", MNIF_CLOSE, BTF_NO_TOGGLE, WOF_NO_FLAGS))
  104.             + new UIW_TITLE(windowName)
  105.  
  106.             + new UIW_PROMPT(2, 1, "Name:", WOF_NO_FLAGS)
  107.             + (nameField = new UIW_STRING(9, 1, 42, "", 100, STF_VARIABLE_NAME, WOF_BORDER | WOF_AUTO_CLEAR, HelpName))
  108.             + new UIW_PROMPT(2, 2, "Title:", WOF_NO_FLAGS)
  109.             + (titleField = new UIW_STRING(9, 2, 42, "", 100, STF_NO_FLAGS, WOF_BORDER | WOF_AUTO_CLEAR, 0))
  110.             + new UIW_PROMPT(2, 3, "Text:", WOF_NO_FLAGS)
  111.             + new UIW_SCROLL_BAR(64, 4, 2, 10, SBF_VERTICAL, WOF_NO_FLAGS)
  112.             + (textField = new UIW_TEXT(2, 4, 62, 10, "", 1024, TXF_NO_FLAGS, WOF_BORDER | WOF_AUTO_CLEAR, 0))
  113.  
  114.             + (save = new UIW_BUTTON(14, 16, 10, "~Save",
  115.                 BTF_NO_TOGGLE | BTF_AUTO_SIZE,
  116.                 WOF_BORDER | WOF_JUSTIFY_CENTER, SaveHelp))
  117.             + (cancel = new UIW_BUTTON(29, 16, 10, "~Cancel",
  118.                 BTF_NO_TOGGLE | BTF_AUTO_SIZE,
  119.                 WOF_BORDER | WOF_JUSTIFY_CENTER, UI_DESIGN_MANAGER::Cancel))
  120.             + (help = new UIW_BUTTON(44, 16, 10, "~Help",
  121.                 BTF_NO_TOGGLE | BTF_AUTO_SIZE,
  122.                 WOF_BORDER | WOF_JUSTIFY_CENTER, UI_DESIGN_MANAGER::Help));
  123.  
  124.         window->StringID(windowName);
  125.         nameField->NumberID(NAME_FIELD);
  126.         titleField->NumberID(TITLE_FIELD);
  127.         textField->NumberID(TEXT_FIELD);
  128.  
  129.         item->windowManager->Add(window);
  130.         break;
  131.         }
  132.     }
  133.  
  134.     if (event.type)
  135.     {
  136.         item->eventManager->Put(event, Q_END);
  137.         event.type = S_CLOSE_TEMPORARY;
  138.         item->eventManager->Put(event, Q_BEGIN);
  139.         item->eventManager->Put(event, Q_BEGIN);
  140.     }
  141. }
  142.