home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 14 / CDACTUAL.iso / cdactual / demobin / share / program / c / ZINC.ZIP / D_CTRL.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1990-07-23  |  10.7 KB  |  267 lines

  1. //    Program name..    Zinc Interface Library
  2. //    Filename......    D_CTRL.CPP
  3. //    
  4. //    COPYRIGHT (C) 1990.  All Rights Reserved.
  5. //    Zinc Software Incorporated.  Pleasant Grove, Utah  USA
  6.  
  7. #include <ui_win.hpp>
  8. #include "d_demo.hpp"
  9. #include "d_help.hlh"
  10.  
  11. DISPLAY_POP_UP_ITEM::DISPLAY_POP_UP_ITEM(char *string, USHORT mniFlags,
  12.     USHORT btFlags, USHORT woFlags, TEXT_DISPLAY_MODE a_mode) :
  13.     UIW_POP_UP_ITEM(string, mniFlags, btFlags, woFlags,
  14.     DISPLAY_POP_UP_ITEM::UserFunction)
  15. {
  16.     mode = a_mode;
  17.     if (_currentMode == a_mode)
  18.         woStatus |= WOS_SELECTED;
  19. }
  20.  
  21. #pragma argsused
  22. void DISPLAY_POP_UP_ITEM::UserFunction(void *data, UI_EVENT &event)
  23. {
  24.     DISPLAY_POP_UP_ITEM *displayItem = (DISPLAY_POP_UP_ITEM *)data;
  25.  
  26.     // Set up the new screen mode.
  27.     if (_currentMode != displayItem->mode)
  28.     {
  29.         RestoreSystem(FALSE);
  30.         InitializeSystem(displayItem->mode);
  31.     }
  32.  
  33.     // See if an error occurred on display creation.
  34.     if (_currentMode == displayItem->mode)
  35.         displayItem->woStatus |= WOS_SELECTED;
  36.     else
  37.     {
  38.         char *errorString;
  39.         if (displayItem->mode == TDM_25x40)
  40.             errorString = "25 line x 40 column";
  41.         else if (displayItem->mode == TDM_25x80)
  42.             errorString = "25 line x 80 column";
  43.         else if (displayItem->mode == TDM_43x80)
  44.             errorString = "43 line x 80 column";
  45.         else
  46.             errorString = "graphics";
  47.         _errorSystem->ReportError(displayItem->windowManager, 0xFFFF,
  48.             "Your machine cannot be switched into %s mode", errorString);
  49.         displayItem->woStatus &= ~WOS_SELECTED;
  50.     }
  51. }
  52.  
  53. HELP_POP_UP_ITEM::HELP_POP_UP_ITEM(char *string, USHORT mniFlags, USHORT btFlags,
  54.     USHORT woFlags, int a_helpContext) :
  55.     UIW_POP_UP_ITEM(string, mniFlags, btFlags, woFlags,
  56.     HELP_POP_UP_ITEM::UserFunction)
  57. {
  58.     helpContext = a_helpContext;
  59. }
  60.  
  61. #pragma argsused
  62. void HELP_POP_UP_ITEM::UserFunction(void *helpItem, UI_EVENT &event)
  63. {
  64.     // Display the help information.
  65.     _helpSystem->DisplayHelp(_windowManager,
  66.         ((HELP_POP_UP_ITEM *)helpItem)->helpContext);
  67. }
  68.  
  69. HELP_PULL_DOWN_ITEM::HELP_PULL_DOWN_ITEM(char *string, USHORT mnFlags,
  70.     int a_helpContext) :
  71.     UIW_PULL_DOWN_ITEM(string, mnFlags, HELP_PULL_DOWN_ITEM::UserFunction)
  72. {
  73.     helpContext = a_helpContext;
  74. }
  75.  
  76. #pragma argsused
  77. void HELP_PULL_DOWN_ITEM::UserFunction(void *helpItem, UI_EVENT &event)
  78. {
  79.     // Display the help information.
  80.     _helpSystem->DisplayHelp(_windowManager,
  81.         ((HELP_PULL_DOWN_ITEM *)helpItem)->helpContext);
  82. }
  83.  
  84. #pragma argsused
  85. static void ClearScreen(void *popUpItem, UI_EVENT &event)
  86. {
  87.     // We must be very careful down here when destroying windows since
  88.     // we are currently in a pop-up window.
  89.     UI_WINDOW_OBJECT *object, *tObject;
  90.     for (object = _windowManager->First(); object; object = tObject)
  91.     {
  92.         tObject = object->Next();
  93.         if (object != _controlMenu)
  94.         {
  95.             *_windowManager - object;
  96.             if (!FlagSet(object->woAdvancedFlags, WOAF_NO_DESTROY))
  97.                 delete object;
  98.         }
  99.     }
  100. }
  101.  
  102. static void Exit(void *popUpItem, UI_EVENT &event)
  103. {
  104.     // Send an exit message to the system.
  105.     event.type = L_EXIT;
  106.     ((UIW_POP_UP_ITEM *)popUpItem)->eventManager->Put(event, Q_BEGIN);
  107. }
  108.  
  109. #pragma argsused
  110. void ErrorNone(void *item, UI_EVENT &event)
  111. {
  112.     delete _errorSystem;
  113.     _errorSystem = new UI_ERROR_SYSTEM;
  114.     ((UIW_POP_UP_ITEM *)item)->woStatus |= WOS_SELECTED;
  115. }
  116.  
  117. #pragma argsused
  118. void ErrorWindow(void *item, UI_EVENT &event)
  119. {
  120.     delete _errorSystem;
  121.     _errorSystem = new UI_ERROR_WINDOW_SYSTEM;
  122.     ((UIW_POP_UP_ITEM *)item)->woStatus |= WOS_SELECTED;
  123. }
  124.  
  125. #pragma argsused
  126. void HelpNone(void *item, UI_EVENT &event)
  127. {
  128.     delete _helpSystem;
  129.     _helpSystem = new UI_HELP_SYSTEM;
  130.     ((UIW_POP_UP_ITEM *)item)->woStatus |= WOS_SELECTED;
  131. }
  132.  
  133. #pragma argsused
  134. void HelpWindow(void *item, UI_EVENT &event)
  135. {
  136.     delete _helpSystem;
  137.     _helpSystem = new UI_HELP_WINDOW_SYSTEM("d_help.hlp", _windowManager,
  138.         HELP_GENERAL);
  139.     ((UIW_POP_UP_ITEM *)item)->woStatus |= WOS_SELECTED;
  140. }
  141.  
  142. void InitializeControlMenu(void)
  143. {
  144.     UIW_PULL_DOWN_ITEM *pullDownItem;
  145.  
  146.     // Create the control menu.
  147.     _controlMenu = new UIW_PULL_DOWN_MENU(0, WOF_NO_FLAGS, WOAF_NO_FLAGS);
  148.     _controlMenu->woAdvancedFlags |= WOAF_LOCKED | WOAF_NON_CURRENT;
  149.  
  150.     // Create the "Control" item with sub-items.
  151.     pullDownItem = new UIW_PULL_DOWN_ITEM(" ~Control ", MNF_NO_FLAGS, 0);
  152.     *pullDownItem
  153.         + new UIW_POP_UP_ITEM("~Clear screen", MNIF_NO_FLAGS, BTF_NO_TOGGLE, WOF_NO_FLAGS, ClearScreen)
  154.         + new UIW_POP_UP_ITEM
  155.         + new HELP_POP_UP_ITEM("~How to order...", MNIF_NO_FLAGS, BTF_NO_TOGGLE, WOF_NO_FLAGS, INFO_HOW_TO_ORDER)
  156.         + new HELP_POP_UP_ITEM("~System requirements...", MNIF_NO_FLAGS, BTF_NO_TOGGLE, WOF_NO_FLAGS, INFO_SYSTEM_REQUIREMENTS)
  157.         + new HELP_POP_UP_ITEM("~About the demonstration...", MNIF_NO_FLAGS, BTF_NO_TOGGLE, WOF_NO_FLAGS, INFO_CONTROL)
  158.         + new UIW_POP_UP_ITEM
  159.         + new UIW_POP_UP_ITEM("E~xit", MNIF_NO_FLAGS, BTF_NO_TOGGLE, WOF_NO_FLAGS, Exit);
  160.     *_controlMenu + pullDownItem;
  161.  
  162.     // Create the "Display" item with sub-items.
  163.     pullDownItem = new UIW_PULL_DOWN_ITEM(" ~Display ", MNF_SELECT_ONE, 0);
  164.     *pullDownItem
  165.         + new DISPLAY_POP_UP_ITEM(" ~1-25x40 text mode", MNIF_NO_FLAGS, BTF_CHECK_MARK, WOF_NO_FLAGS, TDM_25x40)
  166.         + new DISPLAY_POP_UP_ITEM(" ~2-25x80 text mode", MNIF_NO_FLAGS, BTF_CHECK_MARK, WOF_NO_FLAGS, TDM_25x80)
  167.         + new DISPLAY_POP_UP_ITEM(" ~3-(43/50)x80 text mode", MNIF_NO_FLAGS, BTF_CHECK_MARK, WOF_NO_FLAGS, TDM_43x80)
  168.         + new DISPLAY_POP_UP_ITEM(" ~4-Graphics mode", MNIF_NO_FLAGS, BTF_CHECK_MARK, WOF_NO_FLAGS, TDM_AUTO)
  169.         + new UIW_POP_UP_ITEM
  170.         + new HELP_POP_UP_ITEM(" ~About the screen display...", MNIF_NO_FLAGS, BTF_NO_TOGGLE, WOF_NO_FLAGS, INFO_DISPLAY);
  171.     *_controlMenu + pullDownItem;
  172.  
  173.     // Create the "Window" item with sub-items.
  174.     extern void WindowClassic(void *item, UI_EVENT &event);
  175.     extern void GeneralObjects(void *item, UI_EVENT &event);
  176.     extern void SampleDates(void *item, UI_EVENT &event);
  177.     extern void SampleStrings(void *item, UI_EVENT &event);
  178.     extern void SampleMatrix(void *item, UI_EVENT &event);
  179.     extern void SampleMenus(void *item, UI_EVENT &event);
  180.     extern void SampleTimes(void *item, UI_EVENT &event);
  181.     extern void SampleNumbers(void *item, UI_EVENT &event);
  182.     extern void SampleIcons(void *item, UI_EVENT &event);
  183.     extern void WindowObjects(void *item, UI_EVENT &event);
  184.  
  185.     pullDownItem = new UIW_PULL_DOWN_ITEM(" ~Window ", MNF_NO_FLAGS, 0);
  186.     *pullDownItem
  187.         + new UIW_POP_UP_ITEM("~Classic windows", MNIF_NO_FLAGS, BTF_NO_TOGGLE, WOF_NO_FLAGS, WindowClassic)
  188.         + new UIW_POP_UP_ITEM
  189.         + new UIW_POP_UP_ITEM("~1-Generic window...", MNIF_NO_FLAGS, BTF_NO_TOGGLE, WOF_NO_FLAGS, GeneralObjects)
  190.         + new UIW_POP_UP_ITEM("~2-Date window...", MNIF_NO_FLAGS, BTF_NO_TOGGLE, WOF_NO_FLAGS, SampleDates)
  191.         + new UIW_POP_UP_ITEM("~3-Time window...", MNIF_NO_FLAGS, BTF_NO_TOGGLE, WOF_NO_FLAGS, SampleTimes)
  192.         + new UIW_POP_UP_ITEM("~4-Number window...", MNIF_NO_FLAGS, BTF_NO_TOGGLE, WOF_NO_FLAGS, SampleNumbers)
  193.         + new UIW_POP_UP_ITEM("~5-String window...", MNIF_NO_FLAGS, BTF_NO_TOGGLE, WOF_NO_FLAGS, SampleStrings)
  194.         + new UIW_POP_UP_ITEM("~6-Menu window...", MNIF_NO_FLAGS, BTF_NO_TOGGLE, WOF_NO_FLAGS, SampleMenus)
  195.         + new UIW_POP_UP_ITEM("~7-Matrix window...", MNIF_NO_FLAGS, BTF_NO_TOGGLE, WOF_NO_FLAGS, SampleMatrix)
  196.         + new UIW_POP_UP_ITEM("~8-Icon window...", MNIF_NO_FLAGS, BTF_NO_TOGGLE, WOF_NO_FLAGS, SampleIcons)
  197.         + new UIW_POP_UP_ITEM
  198.         + new HELP_POP_UP_ITEM("~About the window manager...", MNIF_NO_FLAGS, BTF_NO_TOGGLE, WOF_NO_FLAGS, INFO_WINDOW);
  199.     *_controlMenu + pullDownItem;
  200.  
  201.     // Create the "Event" item with sub-items.
  202.     extern void EventKeyboard(void *item, UI_EVENT &event);
  203.     extern void EventMouse(void *item, UI_EVENT &event);
  204.     extern void EventMonitor(void *item, UI_EVENT &event);
  205.  
  206.     pullDownItem = new UIW_PULL_DOWN_ITEM(" ~Event ", MNF_NO_FLAGS, 0);
  207.     *pullDownItem
  208.         + new UIW_POP_UP_ITEM(
  209.             (_eventManager->DeviceState(E_KEY, D_STATE) == D_ON) ?
  210.             "~Keyboard (Off/On) : ON " : "~Keyboard (Off/On) : ON ",
  211.             MNIF_NO_FLAGS, BTF_NO_TOGGLE, WOF_NO_FLAGS, EventKeyboard)
  212.         + new UIW_POP_UP_ITEM(
  213.             (_eventManager->DeviceState(E_MOUSE, D_STATE) == D_ON) ?
  214.             "~Mouse    (Off/On) : ON " : "~Mouse    (Off/On) : OFF",
  215.             MNIF_NO_FLAGS, BTF_NO_TOGGLE, WOF_NO_FLAGS, EventMouse)
  216.         + new UIW_POP_UP_ITEM
  217.         + new UIW_POP_UP_ITEM("~Event monitor", MNIF_NO_FLAGS, BTF_NO_TOGGLE, WOF_NO_FLAGS, EventMonitor)
  218.         + new UIW_POP_UP_ITEM
  219.         + new HELP_POP_UP_ITEM("~About the event manager...", MNIF_NO_FLAGS, BTF_NO_TOGGLE, WOF_NO_FLAGS, INFO_EVENT);
  220.     *_controlMenu + pullDownItem;
  221.  
  222.     // Create the "Help" item with sub-items.
  223.     pullDownItem = new UIW_PULL_DOWN_ITEM(" ~Help ", MNF_SELECT_ONE, 0);
  224.     pullDownItem->Add(new UIW_POP_UP_ITEM(" ~No help system", MNIF_NO_FLAGS, BTF_CHECK_MARK, WOF_NO_FLAGS, HelpNone));
  225.     UIW_POP_UP_ITEM *windowHelp = new UIW_POP_UP_ITEM(" ~Window help system", MNIF_NO_FLAGS, BTF_CHECK_MARK, WOF_NO_FLAGS, HelpWindow);
  226.     windowHelp->woStatus |= WOS_SELECTED;
  227.  
  228.     *pullDownItem
  229.         + windowHelp
  230.         + new UIW_POP_UP_ITEM
  231.         + new HELP_POP_UP_ITEM(" ~About the help system...", MNIF_NO_FLAGS, BTF_NO_TOGGLE, WOF_NO_FLAGS, INFO_HELP);
  232.     *_controlMenu + pullDownItem;
  233.  
  234.     // Create the "Error" item with sub-items.
  235.     pullDownItem = new UIW_PULL_DOWN_ITEM(" E~rror ", MNF_SELECT_ONE, 0);
  236.     pullDownItem->Add(new UIW_POP_UP_ITEM(" ~No error system", MNIF_NO_FLAGS, BTF_CHECK_MARK, WOF_NO_FLAGS, ErrorNone));
  237.     UIW_POP_UP_ITEM *windowError = new UIW_POP_UP_ITEM(" ~Window error system", MNIF_NO_FLAGS, BTF_CHECK_MARK, WOF_NO_FLAGS, ErrorWindow);
  238.     windowError->woStatus |= WOS_SELECTED;
  239.  
  240.     *pullDownItem
  241.         + windowError
  242.         + new UIW_POP_UP_ITEM
  243.         + new HELP_POP_UP_ITEM(" ~About the error system...", MNIF_NO_FLAGS, BTF_NO_TOGGLE, WOF_NO_FLAGS, INFO_ERROR);
  244.     *_controlMenu + pullDownItem;
  245.  
  246.     // Create the "Applications" item with sub-items.
  247.     extern void WindowDirectory(void *item, UI_EVENT &event);
  248.     extern void DataEntry(void *item, UI_EVENT &event);
  249.     extern void Calculator(void *item, UI_EVENT &event);
  250.     extern void Piano(void *item, UI_EVENT &event);
  251.     extern void Graph(void *item, UI_EVENT &event);
  252.  
  253.     pullDownItem = new UIW_PULL_DOWN_ITEM(" ~Applications ", MNF_NO_FLAGS, 0);
  254.     *pullDownItem
  255.         + new UIW_POP_UP_ITEM("~1-Directory...", MNIF_NO_FLAGS, BTF_NO_TOGGLE, WOF_NO_FLAGS, WindowDirectory)
  256.         + new UIW_POP_UP_ITEM("~2-Data entry...", MNIF_NO_FLAGS, BTF_NO_TOGGLE, WOF_NO_FLAGS, DataEntry)
  257.         + new UIW_POP_UP_ITEM("~3-Calculator...", MNIF_NO_FLAGS, BTF_NO_TOGGLE, WOF_NO_FLAGS, Calculator)
  258.         + new UIW_POP_UP_ITEM("~4-Piano...", MNIF_NO_FLAGS, BTF_NO_TOGGLE, WOF_NO_FLAGS, Piano)
  259.         + new UIW_POP_UP_ITEM("~5-Graph...", MNIF_NO_FLAGS, BTF_NO_TOGGLE, WOF_NO_FLAGS, Graph)
  260.         + new UIW_POP_UP_ITEM
  261.         + new HELP_POP_UP_ITEM("~About application programs...", MNIF_NO_FLAGS, BTF_NO_TOGGLE, WOF_NO_FLAGS, INFO_APPS);
  262.     *_controlMenu + pullDownItem;
  263.  
  264.     // Attach the control menu to the screen display.
  265.     *_windowManager + _controlMenu;
  266. }
  267.