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

  1. //    Zinc Interface Library - D_SYS.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 ITEM_FIELD        = 0x0001;
  9.  
  10. int UIW_SYSTEM_BUTTON::Editor(const UI_EVENT &event)
  11. {
  12.     char *windowName = "System button";
  13.  
  14.     int ccode = UI_WINDOW_OBJECT::LogicalEvent(event, ID_SYSTEM_BUTTON);
  15.     switch (ccode)
  16.     {
  17.     case S_PLACE_OBJECT:
  18.         if (_currentObject->Inherited(ID_POP_UP_ITEM))
  19.         {
  20.             menu + _currentObject;
  21.             _currentObject->woFlags |= WOF_NON_FIELD_REGION;
  22.         }
  23.         else
  24.             ccode = S_ERROR;
  25.         break;
  26.  
  27.     case S_EDIT_OBJECT:
  28.         {
  29.         UIW_BUTTON *save, *cancel, *help;
  30.         UIW_MATRIX *itemField;
  31.  
  32.         // Create the system button editor window.
  33.         UIW_WINDOW *window = new UIW_WINDOW(_centerColumn - 35, _centerLine - 7,
  34.             69, 13, WOF_NO_FLAGS, WOAF_MODAL | WOAF_NO_SIZE);
  35.         *window
  36.             + new UIW_BORDER
  37.             + &(*new UIW_SYSTEM_BUTTON
  38.                 + new UIW_POP_UP_ITEM("~Move", MNIF_MOVE, BTF_NO_TOGGLE, WOF_NO_FLAGS)
  39.                 + new UIW_POP_UP_ITEM("~Close", MNIF_CLOSE, BTF_NO_TOGGLE, WOF_NO_FLAGS))
  40.             + new UIW_TITLE(windowName)
  41.  
  42.             + new UIW_PROMPT(2, 1, "Items:", WOF_NO_FLAGS)
  43.             + new UIW_SCROLL_BAR(31, 1, 2, 6, SBF_VERTICAL, WOF_NO_FLAGS)
  44.             + (itemField = new UIW_MATRIX(11, 1, 20, 6, 100, 20, 1, 0, MXF_ROWS_FILL, WOF_BORDER, WOAF_NO_FLAGS))
  45.  
  46.             + new UIW_PROMPT(35, 1, "StringID:", WOF_NO_FLAGS)
  47.             + new UIW_STRING(45, 1, 20, search.stringID, 100, STF_VARIABLE_NAME, WOF_NON_SELECTABLE | WOF_AUTO_CLEAR, 0)
  48.  
  49.             + (save = new UIW_BUTTON(14, 9, 10, "~Save",
  50.                 BTF_NO_TOGGLE | BTF_AUTO_SIZE,
  51.                 WOF_BORDER | WOF_JUSTIFY_CENTER, UI_DESIGN_MANAGER::Save))
  52.             + (cancel = new UIW_BUTTON(29, 9, 10, "~Cancel",
  53.                 BTF_NO_TOGGLE | BTF_AUTO_SIZE,
  54.                 WOF_BORDER | WOF_JUSTIFY_CENTER, UI_DESIGN_MANAGER::Cancel))
  55.             + (help = new UIW_BUTTON(44, 9, 10, "~Help",
  56.                 BTF_NO_TOGGLE | BTF_AUTO_SIZE,
  57.                 WOF_BORDER | WOF_JUSTIFY_CENTER, UI_DESIGN_MANAGER::Help));
  58.  
  59.         // Supply the object list (if any).
  60.         int i = 1;
  61.         for (UIW_POP_UP_ITEM *item = menu.First(); item; i++, item = item->Next())
  62.         {
  63.             *itemField + new UIW_OBJECT_ITEM(0, i - 1, 20, (char *)item->DataGet(FALSE), item->value, item);
  64.             item->InformationSet(screenID, display, eventManager,
  65.                 windowManager, paletteMapTable, this);
  66.         }
  67.  
  68.         // Identify key fields.
  69.         window->StringID(windowName);
  70.         itemField->NumberID(ITEM_FIELD);
  71.         save->userObject = cancel->userObject = help->userObject = this;
  72.         help->value = HELP_SYSTEM;
  73.  
  74.         *windowManager + window;
  75.         break;
  76.         }
  77.  
  78.     case S_SAVE_OBJECT:
  79.         {
  80.         UIW_WINDOW *window = (UIW_WINDOW *)windowManager->Get(windowName);
  81.  
  82.         menu.Clear();
  83.         UIW_MATRIX *itemField = (UIW_MATRIX *)window->Get(ITEM_FIELD);
  84.         for (UIW_OBJECT_ITEM *item = (UIW_OBJECT_ITEM *)itemField->First(); item; item = item->Next())
  85.             menu.Add(item->object);
  86.         break;
  87.         }
  88.  
  89.     case L_BEGIN_SELECT:
  90.         _currentObject = &menu;
  91.         menu.woAdvancedStatus |= WOAS_EDIT_MODE;
  92. //        if (ui_time() - time > 8)
  93. //            UIW_BUTTON::Event(event);
  94.         // Continue to default.
  95.         
  96.     default:
  97.         ccode = UIW_BUTTON::Editor(event);
  98.         break;
  99.     }
  100.  
  101.     // Return the control code.
  102.     return (ccode);
  103. }
  104.