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_TEXT.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1991-06-01  |  3.6 KB  |  104 lines

  1. //    Zinc Interface Library - D_TEXT.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. const int TEXT_FIELD        = 0x0001;
  9. const int MAXLENGTH_FIELD    = 0x0002;
  10. const int STRINGID_FIELD    = 0x0003;
  11. const int OBJFLAGS_FIELD    = 0x0004;
  12.  
  13. int UIW_TEXT::Editor(const UI_EVENT &event)
  14. {
  15.     int ccode = event.type;
  16.     switch (ccode)
  17.     {
  18.     case S_EDIT_OBJECT:
  19.         {
  20.         UI_ITEM _objectFlag[] =
  21.         {
  22.             { WOF_AUTO_CLEAR,         0,                " Auto clear " },
  23.             { WOF_BORDER,             0,                " Border " },
  24.             { WOF_NON_SELECTABLE,     0,                " Non-selectable " },
  25.             { WOF_UNANSWERED,         0,                " Begin unanswered " },
  26.             { WOF_NON_FIELD_REGION, 0,                " Fill window " },
  27.             { 0,                    0,                0 }
  28.         };
  29.         UIW_BUTTON *save, *cancel, *help;
  30.         UIW_TEXT *textField;
  31.         UIW_NUMBER *maxLengthField;
  32.         UIW_STRING *stringIDField;
  33.         UIW_MATRIX *objFlagsField;
  34.  
  35.         // Create the button editor window.
  36.         int maxLength = (int)(textTail - text) + 1;
  37.         UIW_WINDOW *window = new UIW_WINDOW(_centerColumn - 35, _centerLine - 8,
  38.             70, 15, WOF_NO_FLAGS, WOAF_MODAL | WOAF_NO_SIZE);
  39.         *window
  40.             + new UIW_BORDER
  41.             + &(*new UIW_SYSTEM_BUTTON
  42.                 + new UIW_POP_UP_ITEM("~Move", MNIF_MOVE, BTF_NO_TOGGLE, WOF_NO_FLAGS)
  43.                 + new UIW_POP_UP_ITEM("~Close", MNIF_CLOSE, BTF_NO_TOGGLE, WOF_NO_FLAGS))
  44.             + new UIW_TITLE("Text")
  45.  
  46.             + new UIW_PROMPT(2, 1, "Length:", WOF_NO_FLAGS)
  47.             + (maxLengthField = new UIW_NUMBER(10, 1, 11, &maxLength, "1..32767", MNF_NO_FLAGS, WOF_BORDER | WOF_AUTO_CLEAR, 0))
  48.             + new UIW_PROMPT(2, 2, "Text:", WOF_NO_FLAGS)
  49.             + new UIW_SCROLL_BAR(30, 3, 2, 6, SBF_VERTICAL, WOF_NO_FLAGS)
  50.             + (textField = new UIW_TEXT(2, 3, 28, 6, text, 1024, TXF_NO_FLAGS, WOF_BORDER | WOF_AUTO_CLEAR, 0))
  51.  
  52.             + new UIW_PROMPT(34, 1, "StringID:", WOF_NO_FLAGS)
  53.             + (stringIDField = new UIW_STRING(44, 1, 22, search.stringID, 100, STF_VARIABLE_NAME, WOF_BORDER | WOF_AUTO_CLEAR, 0))
  54.             + new UIW_PROMPT(34, 3, "Flags:", WOF_NO_FLAGS)
  55.             + new UIW_SCROLL_BAR(64, 3, 2, 6, SBF_VERTICAL, WOF_NO_FLAGS)
  56.             + (objFlagsField = new UIW_MATRIX(44, 3, 20, 6, woFlags, _objectFlag))
  57.  
  58.             + (save = new UIW_BUTTON(14, 11, 10, "~Save",
  59.                 BTF_NO_TOGGLE | BTF_AUTO_SIZE,
  60.                 WOF_BORDER | WOF_JUSTIFY_CENTER, UI_DESIGN_MANAGER::Save))
  61.             + (cancel = new UIW_BUTTON(29, 11, 10, "~Cancel",
  62.                 BTF_NO_TOGGLE | BTF_AUTO_SIZE,
  63.                 WOF_BORDER | WOF_JUSTIFY_CENTER, UI_DESIGN_MANAGER::Cancel))
  64.             + (help = new UIW_BUTTON(44, 11, 10, "~Help",
  65.                 BTF_NO_TOGGLE | BTF_AUTO_SIZE,
  66.                 WOF_BORDER | WOF_JUSTIFY_CENTER, UI_DESIGN_MANAGER::Help));
  67.  
  68.         // Identify key fields.
  69.         window->StringID("Text");
  70.         textField->NumberID(TEXT_FIELD);
  71.         maxLengthField->NumberID(MAXLENGTH_FIELD);
  72.         stringIDField->NumberID(STRINGID_FIELD);
  73.         objFlagsField->NumberID(OBJFLAGS_FIELD);
  74.         save->userObject = cancel->userObject = help->userObject = this;
  75.         help->value = HELP_TEXT;
  76.  
  77.         *windowManager + window;
  78.         break;
  79.         }
  80.  
  81.     case S_SAVE_OBJECT:
  82.         {
  83.         UIW_WINDOW *window = (UIW_WINDOW *)windowManager->Get("Text");
  84.  
  85.         UIW_STRING *stringIDField = (UIW_STRING *)window->Get(STRINGID_FIELD);
  86.         StringID(stringIDField->DataGet());
  87.  
  88.         SaveFlags((UIW_MATRIX *)window->Get(OBJFLAGS_FIELD), &woFlags);
  89.  
  90.         UIW_TEXT *textField = (UIW_TEXT *)window->Get(TEXT_FIELD);
  91.         UIW_NUMBER *maxLengthField = (UIW_NUMBER *)window->Get(MAXLENGTH_FIELD);
  92.         UIW_TEXT::DataSet((char *)textField->DataGet(), *(int *)maxLengthField->DataGet());
  93.         break;
  94.         }
  95.  
  96.     default:
  97.         ccode = UI_WINDOW_OBJECT::Editor(event);
  98.         break;
  99.     }
  100.  
  101.     // Return the control code.
  102.     return (ccode);
  103. }
  104.