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

  1. //    Zinc Interface Library - D_DATE.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 DATE_FIELD        = 0x0001;
  9. const int RANGE_FIELD        = 0x0002;
  10. const int DTFLAGS_FIELD        = 0x0003;
  11. const int STRINGID_FIELD    = 0x0004;
  12. const int OBJFLAGS_FIELD    = 0x0005;
  13.  
  14. int UIW_DATE::Editor(const UI_EVENT &event)
  15. {
  16.     char *windowName = "Date";
  17.  
  18.     int ccode = event.type;
  19.     switch (ccode)
  20.     {
  21.     case S_EDIT_OBJECT:
  22.         {
  23.         UI_ITEM _dateFlag[] =
  24.         {
  25.             { DTF_ALPHA_MONTH,         0,                " Alpha month " },
  26.             { DTF_DAY_OF_WEEK,         0,                " Day-of-week " },
  27.             { DTF_SHORT_DAY,         0,                " Short day " },
  28.             { DTF_SHORT_MONTH,         0,                " Short month " },
  29.             { DTF_SHORT_YEAR,         0,                " Short year " },
  30.             { DTF_ZERO_FILL,         0,                " Zero fill " },
  31.             { DTF_DASH,             0,                " Dash separator " },
  32.             { DTF_SLASH,             0,                " Slash separator " },
  33.             { DTF_UPPER_CASE,         0,                " Upper case " },
  34.             { DTF_EUROPEAN_FORMAT,     0,                " Force European " },
  35.             { DTF_JAPANESE_FORMAT,     0,                " Force Japanese " },
  36.             { DTF_MILITARY_FORMAT,     0,                " Force Military " },
  37.             { DTF_US_FORMAT,         0,                " Force U.S. " },
  38.             { 0,                     0,                0 }
  39.         };
  40.         UI_ITEM _objectFlag[] =
  41.         {
  42.             { WOF_AUTO_CLEAR,         0,                " Auto clear " },
  43.             { WOF_BORDER,             0,                " Border " },
  44.             { WOF_JUSTIFY_CENTER,     0,                " Center Justify " },
  45.             { WOF_JUSTIFY_RIGHT,     0,                " Right Justify " },
  46.             { WOF_NON_SELECTABLE,     0,                " Non-selectable " },
  47.             { WOF_UNANSWERED,         0,                " Begin unanswered " },
  48.             { 0,                    0,                0 }
  49.         };
  50.         UIW_BUTTON *save, *cancel, *help;
  51.         UIW_DATE *dateField;
  52.         UIW_STRING *rangeField, *stringIDField;
  53.         UIW_MATRIX *dtFlagsField, *objFlagsField;
  54.  
  55.         // Create the button editor window.
  56.         UIW_WINDOW *window = new UIW_WINDOW(_centerColumn - 35, _centerLine - 8,
  57.             69, 16, WOF_NO_FLAGS, WOAF_MODAL | WOAF_NO_SIZE);
  58.         *window
  59.             + new UIW_BORDER
  60.             + &(*new UIW_SYSTEM_BUTTON
  61.                 + new UIW_POP_UP_ITEM("~Move", MNIF_MOVE, BTF_NO_TOGGLE, WOF_NO_FLAGS)
  62.                 + new UIW_POP_UP_ITEM("~Close", MNIF_CLOSE, BTF_NO_TOGGLE, WOF_NO_FLAGS))
  63.             + new UIW_TITLE(windowName)
  64.  
  65.             + new UIW_PROMPT(2, 1, "Date:", WOF_NO_FLAGS)
  66.             + (dateField = new UIW_DATE(9, 1, 22, date, 0, DTF_NO_FLAGS, WOF_BORDER | WOF_AUTO_CLEAR, 0))
  67.             + new UIW_PROMPT(2, 2, "Range:", WOF_NO_FLAGS)
  68.             + (rangeField = new UIW_STRING(9, 2, 22, range, 100, STF_NO_FLAGS, WOF_BORDER | WOF_AUTO_CLEAR, 0))
  69.             + new UIW_PROMPT(2, 4, "Flags:", WOF_NO_FLAGS)
  70.             + new UIW_SCROLL_BAR(29, 4, 2, 6, SBF_VERTICAL, WOF_NO_FLAGS)
  71.             + (dtFlagsField = new UIW_MATRIX(9, 4, 20, 6, dtFlags, _dateFlag))
  72.  
  73.             + new UIW_PROMPT(33, 1, "StringID:", WOF_NO_FLAGS)
  74.             + (stringIDField = new UIW_STRING(43, 1, 22, search.stringID, 100, STF_VARIABLE_NAME, WOF_BORDER | WOF_AUTO_CLEAR, 0))
  75.             + new UIW_PROMPT(33, 4, "Flags:", WOF_NO_FLAGS)
  76.             + new UIW_SCROLL_BAR(63, 4, 2, 6, SBF_VERTICAL, WOF_NO_FLAGS)
  77.             + (objFlagsField = new UIW_MATRIX(43, 4, 20, 6, woFlags, _objectFlag))
  78.  
  79.             + (save = new UIW_BUTTON(14, 12, 10, "~Save",
  80.                 BTF_NO_TOGGLE | BTF_AUTO_SIZE,
  81.                 WOF_BORDER | WOF_JUSTIFY_CENTER, UI_DESIGN_MANAGER::Save))
  82.             + (cancel = new UIW_BUTTON(29, 12, 10, "~Cancel",
  83.                 BTF_NO_TOGGLE | BTF_AUTO_SIZE,
  84.                 WOF_BORDER | WOF_JUSTIFY_CENTER, UI_DESIGN_MANAGER::Cancel))
  85.             + (help = new UIW_BUTTON(44, 12, 10, "~Help",
  86.                 BTF_NO_TOGGLE | BTF_AUTO_SIZE,
  87.                 WOF_BORDER | WOF_JUSTIFY_CENTER, UI_DESIGN_MANAGER::Help));
  88.  
  89.         // Identify key fields.
  90.         window->StringID(windowName);
  91.         dateField->NumberID(DATE_FIELD);
  92.         rangeField->NumberID(RANGE_FIELD);
  93.         dtFlagsField->NumberID(DTFLAGS_FIELD);
  94.         stringIDField->NumberID(STRINGID_FIELD);
  95.         objFlagsField->NumberID(OBJFLAGS_FIELD);
  96.         save->userObject = cancel->userObject = help->userObject = this;
  97.         help->value = HELP_DATE;
  98.  
  99.         *windowManager + window;
  100.         break;
  101.         }
  102.  
  103.     case S_SAVE_OBJECT:
  104.         {
  105.         UIW_WINDOW *window = (UIW_WINDOW *)windowManager->Get(windowName);
  106.  
  107.         SaveFlags((UIW_MATRIX *)window->Get(DTFLAGS_FIELD), &dtFlags);
  108.  
  109.         UIW_STRING *stringIDField = (UIW_STRING *)window->Get(STRINGID_FIELD);
  110.         StringID(stringIDField->DataGet());
  111.  
  112.         SaveFlags((UIW_MATRIX *)window->Get(OBJFLAGS_FIELD), &woFlags);
  113.  
  114.         UIW_STRING *rangeField = (UIW_STRING *)window->Get(RANGE_FIELD);
  115.         if (range) delete range;
  116.         range = ui_strdup(rangeField->DataGet());
  117.  
  118.         UIW_DATE *dateField = (UIW_DATE *)window->Get(DATE_FIELD);
  119.         UIW_DATE::DataSet((UI_DATE *)dateField->DataGet());
  120.         break;
  121.         }
  122.  
  123.     default:
  124.         ccode = UI_WINDOW_OBJECT::Editor(event);
  125.         break;
  126.     }
  127.  
  128.     // Return the control code.
  129.     return (ccode);
  130. }
  131.