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

  1. //    Zinc Interface Library
  2. //    COPYRIGHT (C) 1990.  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 NUMBER_FIELD        = 0x0001;
  9. const int RANGE_FIELD        = 0x0002;
  10. const int NMFLAGS_FIELD        = 0x0003;
  11. const int STRINGID_FIELD    = 0x0004;
  12. const int OBJFLAGS_FIELD    = 0x0005;
  13.  
  14. int UIW_INTEGER::Editor(const UI_EVENT &event)
  15. {
  16.     char *windowName = "Integer";
  17.  
  18.     int ccode = event.type;
  19.     switch (ccode)
  20.     {
  21.     case S_EDIT_OBJECT:
  22.         {
  23.         UI_ITEM _numberFlag[] =
  24.         {
  25.             { NMF_DECIMAL(1),         0,                " 1-place decimal " },
  26.             { NMF_DECIMAL(2),         0,                " 2-place decimal " },
  27.             { NMF_DECIMAL(3),         0,                " 3-place decimal " },
  28.             { NMF_DECIMAL(4),         0,                " 4-place decimal " },
  29.             { NMF_CURRENCY,         0,                " Currency " },
  30.             { NMF_CREDIT,             0,                " Credit " },
  31.             { NMF_COMMAS,             0,                " Commas " },
  32.             { NMF_PERCENT,             0,                " Percent " },
  33.             { NMF_SCIENTIFIC,         0,                " Scientific " },
  34.             { 0,                     0,                0 }
  35.         };
  36.         UI_ITEM _objectFlag[] =
  37.         {
  38.             { WOF_BORDER,             0,                " Border " },
  39.             { WOF_JUSTIFY_RIGHT,     0,                " Right Justify " },
  40.             { 0,                    0,                0 }
  41.         };
  42.         UIW_BUTTON *save, *cancel, *help;
  43.         UIW_NUMBER *numberField;
  44.         UIW_STRING *rangeField, *stringIDField;
  45.         UIW_MATRIX *nmFlagsField, *objFlagsField;
  46.  
  47.         // Create the button editor window.
  48.         UIW_WINDOW *window = new UIW_WINDOW(_centerColumn - 35, _centerLine - 8,
  49.             69, 16, WOF_NO_FLAGS, WOAF_MODAL | WOAF_NO_SIZE);
  50.         *window
  51.             + new UIW_BORDER
  52.             + &(*new UIW_SYSTEM_BUTTON
  53.                 + new UIW_POP_UP_ITEM("~Move", MNIF_MOVE, BTF_NO_TOGGLE, WOF_NO_FLAGS)
  54.                 + new UIW_POP_UP_ITEM("~Close", MNIF_CLOSE, BTF_NO_TOGGLE, WOF_NO_FLAGS))
  55.             + new UIW_TITLE(windowName)
  56.  
  57.             + new UIW_PROMPT(2, 1, "Value:", WOF_NO_FLAGS)
  58.             + (numberField = new UIW_NUMBER(9, 1, 11, (long *)value, "",
  59.                 NMF_NO_FLAGS, WOF_BORDER | WOF_AUTO_CLEAR, 0))
  60.             + new UIW_PROMPT(2, 2, "Range:", WOF_NO_FLAGS)
  61.             + (rangeField = new UIW_STRING(9, 2, 22, range, 100, STF_NO_FLAGS, WOF_BORDER | WOF_AUTO_CLEAR, 0))
  62.             + new UIW_PROMPT(2, 4, "Flags:", WOF_NO_FLAGS)
  63.             + new UIW_SCROLL_BAR(29, 4, 1, 6, SBF_VERTICAL, WOF_NO_FLAGS)
  64.             + (nmFlagsField = new UIW_MATRIX(9, 4, 20, 6, nmFlags, _numberFlag))
  65.  
  66.             + new UIW_PROMPT(33, 1, "StringID:", WOF_NO_FLAGS)
  67.             + (stringIDField = new UIW_STRING(43, 1, 22, search.stringID, 100, STF_VARIABLE_NAME, WOF_BORDER | WOF_AUTO_CLEAR, 0))
  68.             + new UIW_PROMPT(33, 3, "Flags:", WOF_NO_FLAGS)
  69.             + new UIW_SCROLL_BAR(63, 3, 1, 6, SBF_VERTICAL, WOF_NO_FLAGS)
  70.             + (objFlagsField = new UIW_MATRIX(43, 3, 20, 6, woFlags, _objectFlag))
  71.  
  72.             + (save = new UIW_BUTTON(14, 12, 11, "~Save",
  73.                 BTF_NO_TOGGLE | BTF_AUTO_SIZE,
  74.                 WOF_BORDER | WOF_JUSTIFY_CENTER, UI_DESIGN_MANAGER::Save))
  75.             + (cancel = new UIW_BUTTON(29, 12, 11, "~Cancel",
  76.                 BTF_NO_TOGGLE | BTF_AUTO_SIZE,
  77.                 WOF_BORDER | WOF_JUSTIFY_CENTER, UI_DESIGN_MANAGER::Cancel))
  78.             + (help = new UIW_BUTTON(44, 12, 11, "~Help",
  79.                 BTF_NO_TOGGLE | BTF_AUTO_SIZE,
  80.                 WOF_BORDER | WOF_JUSTIFY_CENTER, UI_DESIGN_MANAGER::Help));
  81.  
  82.         // Identify key fields.
  83.         window->StringID(windowName);
  84.         numberField->NumberID(NUMBER_FIELD);
  85.         rangeField->NumberID(RANGE_FIELD);
  86.         nmFlagsField->NumberID(NMFLAGS_FIELD);
  87.         stringIDField->NumberID(STRINGID_FIELD);
  88.         objFlagsField->NumberID(OBJFLAGS_FIELD);
  89.         save->userObject = cancel->userObject = help->userObject = this;
  90.         help->value = HELP_INTEGER;
  91.  
  92.         *windowManager + window;
  93.         break;
  94.         }
  95.  
  96.     case S_SAVE_OBJECT:
  97.         {
  98.         UIW_WINDOW *window = (UIW_WINDOW *)windowManager->Get(windowName);
  99.  
  100.         SaveFlags((UIW_MATRIX *)window->Get(NMFLAGS_FIELD), &nmFlags);
  101.  
  102.         UIW_STRING *stringIDField = (UIW_STRING *)window->Get(STRINGID_FIELD);
  103.         StringID(stringIDField->DataGet());
  104.  
  105.         SaveFlags((UIW_MATRIX *)window->Get(OBJFLAGS_FIELD), &woFlags);
  106.  
  107.         UIW_STRING *rangeField = (UIW_STRING *)window->Get(RANGE_FIELD);
  108.         if (range) delete range;
  109.         range = ui_strdup(rangeField->DataGet());
  110.  
  111.         UIW_NUMBER *numberField = (UIW_NUMBER *)window->Get(NUMBER_FIELD);;
  112.         UIW_NUMBER::DataSet(numberField->DataGet());
  113.         break;
  114.         }
  115.  
  116.     default:
  117.         ccode = UI_WINDOW_OBJECT::Editor(event);
  118.         break;
  119.     }
  120.  
  121.     // Return the control code.
  122.     return (ccode);
  123. }
  124.