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

  1. //    Zinc Interface Library - D_FMTSTR.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. #include <string.h>
  8.  
  9. const int STRING_FIELD        = 0x0001;
  10. const int EDIT_FIELD        = 0x0002;
  11. const int LITERAL_FIELD        = 0x0003;
  12. const int STRINGID_FIELD    = 0x0004;
  13. const int OBJFLAGS_FIELD    = 0x0005;
  14.  
  15. int UIW_FORMATTED_STRING::Editor(const UI_EVENT &event)
  16. {
  17.     char *windowName = "Formatted string";
  18.  
  19.     int ccode = event.type;
  20.     switch (ccode)
  21.     {
  22.     case S_EDIT_OBJECT:
  23.         {
  24.         UI_ITEM _objectFlag[] =
  25.         {
  26.             { WOF_BORDER,             0,                " Border " },
  27.             { 0,                    0,                0 }
  28.         };
  29.         UIW_BUTTON *save, *cancel, *help;
  30.         UIW_STRING *stringField, *editField, *literalField, *stringIDField;
  31.         UIW_MATRIX *objFlagsField;
  32.  
  33.         // Create the formatted string editor window.
  34.         char *_editMask = new char[maskLen + 1];
  35.         strncpy(_editMask, editMask, maskLen);
  36.         _editMask[maskLen] = '\0';
  37.         char *_literalMask = new char[maskLen + 1];
  38.         strncpy(_literalMask, literalMask, maskLen);
  39.         _literalMask[maskLen] = '\0';
  40.  
  41.         UIW_WINDOW *window = new UIW_WINDOW(_centerColumn - 35, _centerLine - 7,
  42.             69, 13, WOF_NO_FLAGS, WOAF_MODAL | WOAF_NO_SIZE);
  43.         *window
  44.             + new UIW_BORDER
  45.             + &(*new UIW_SYSTEM_BUTTON
  46.                 + new UIW_POP_UP_ITEM("~Move", MNIF_MOVE, BTF_NO_TOGGLE, WOF_NO_FLAGS)
  47.                 + new UIW_POP_UP_ITEM("~Close", MNIF_CLOSE, BTF_NO_TOGGLE, WOF_NO_FLAGS))
  48.             + new UIW_TITLE(windowName)
  49.  
  50.             + new UIW_PROMPT(2, 1, "String:", WOF_NO_FLAGS)
  51.             + (stringField = new UIW_STRING(11, 1, 20, state.text, 100, STF_NO_FLAGS, WOF_BORDER | WOF_AUTO_CLEAR, 0))
  52.             + new UIW_PROMPT(2, 2, "Edit:", WOF_NO_FLAGS)
  53.             + (editField = new UIW_STRING(11, 2, 20, _editMask, 100, STF_NO_FLAGS, WOF_BORDER | WOF_AUTO_CLEAR, 0))
  54.             + new UIW_PROMPT(2, 3, "Literal:", WOF_NO_FLAGS)
  55.             + (literalField = new UIW_STRING(11, 3, 20, _literalMask, 100, STF_NO_FLAGS, WOF_BORDER | WOF_AUTO_CLEAR, 0))
  56.  
  57.             + new UIW_PROMPT(33, 1, "StringID:", WOF_NO_FLAGS)
  58.             + (stringIDField = new UIW_STRING(43, 1, 22, search.stringID, 100, STF_VARIABLE_NAME, WOF_BORDER | WOF_AUTO_CLEAR, 0))
  59.             + new UIW_PROMPT(33, 3, "Flags:", WOF_NO_FLAGS)
  60.             + new UIW_SCROLL_BAR(63, 3, 2, 4, SBF_VERTICAL, WOF_NO_FLAGS)
  61.             + (objFlagsField = new UIW_MATRIX(43, 3, 20, 4, woFlags, _objectFlag))
  62.  
  63.             + (save = new UIW_BUTTON(14, 9, 10, "~Save",
  64.                 BTF_NO_TOGGLE | BTF_AUTO_SIZE,
  65.                 WOF_BORDER | WOF_JUSTIFY_CENTER, UI_DESIGN_MANAGER::Save))
  66.             + (cancel = new UIW_BUTTON(29, 9, 10, "~Cancel",
  67.                 BTF_NO_TOGGLE | BTF_AUTO_SIZE,
  68.                 WOF_BORDER | WOF_JUSTIFY_CENTER, UI_DESIGN_MANAGER::Cancel))
  69.             + (help = new UIW_BUTTON(44, 9, 10, "~Help",
  70.                 BTF_NO_TOGGLE | BTF_AUTO_SIZE,
  71.                 WOF_BORDER | WOF_JUSTIFY_CENTER, UI_DESIGN_MANAGER::Help));
  72.  
  73.         // Identify key fields.
  74.         window->StringID(windowName);
  75.         stringField->NumberID(STRING_FIELD);
  76.         editField->NumberID(EDIT_FIELD);
  77.         literalField->NumberID(LITERAL_FIELD);
  78.         stringIDField->NumberID(STRINGID_FIELD);
  79.         objFlagsField->NumberID(OBJFLAGS_FIELD);
  80.         save->userObject = cancel->userObject = help->userObject = this;
  81.         help->value = HELP_FORMATTED_STRING;
  82.  
  83.         *windowManager + window;
  84.         break;
  85.         }
  86.  
  87.     case S_SAVE_OBJECT:
  88.         {
  89.         UIW_WINDOW *window = (UIW_WINDOW *)windowManager->Get(windowName);
  90.  
  91.         UIW_STRING *stringIDField = (UIW_STRING *)window->Get(STRINGID_FIELD);
  92.         StringID(stringIDField->DataGet());
  93.  
  94.         SaveFlags((UIW_MATRIX *)window->Get(OBJFLAGS_FIELD), &woFlags);
  95.  
  96.         UIW_STRING *editField = (UIW_STRING *)window->Get(EDIT_FIELD);
  97.         if (editMask) delete editMask;
  98.         editMask = ui_strdup(editField->DataGet());
  99.         maskLen = strlen(editMask);
  100.  
  101.         UIW_STRING *literalField = (UIW_STRING *)window->Get(LITERAL_FIELD);
  102.         if (literalMask) delete literalMask;
  103.         literalMask = ui_strdup(literalField->DataGet());
  104.  
  105.         UIW_STRING *stringField = (UIW_STRING *)window->Get(STRING_FIELD);
  106.         UIW_FORMATTED_STRING::DataSet((char *)stringField->DataGet());
  107.         break;
  108.         }
  109.  
  110.     default:
  111.         ccode = UI_WINDOW_OBJECT::Editor(event);
  112.         break;
  113.     }
  114.  
  115.     // Return the control code.
  116.     return (ccode);
  117. }
  118.