home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / pmos2002.zip / DEMO / SRC / menutest.mod < prev    next >
Text File  |  1997-05-12  |  7KB  |  233 lines

  1. MODULE MenuTest;
  2.  
  3.         (********************************************************)
  4.         (*                                                      *)
  5.         (*              Test of the "Menus" module.             *)
  6.         (*                                                      *)
  7.         (*  Programmer:         P. Moylan                       *)
  8.         (*  Last edited:        12 May 1997                     *)
  9.         (*  Status:             Working                         *)
  10.         (*                                                      *)
  11.         (********************************************************)
  12.  
  13. FROM Windows IMPORT
  14.     (* type *)  Window, Colour, FrameType, DividerType,
  15.     (* proc *)  OpenWindow, CloseWindow, WriteString, WriteLn;
  16.  
  17. FROM NumericIO IMPORT
  18.     (* proc *)  WriteCard;
  19.  
  20. FROM Mouse IMPORT
  21.     (* proc *)  MouseAvailable;
  22.  
  23. FROM UserInterface IMPORT
  24.     (* type *)  UIWindow, Capability, CapabilitySet,
  25.     (* proc *)  AllowMouseControl;
  26.  
  27. FROM Menus IMPORT
  28.     (* type *)  Menu, ItemText, MO, MenuOption, OffEdgeOption,
  29.     (* proc *)  CreateMenu, SetOptions, OffEdge, PositionMenu, DestroyMenu,
  30.                 SelectFromMenu;
  31.  
  32. (****************************************************************)
  33.  
  34. PROCEDURE DisplayAnswer (w: Window; number: CARDINAL);
  35.  
  36.     BEGIN
  37.         WriteString (w, "The result is ");
  38.         WriteCard (w, number);  WriteLn (w);
  39.     END DisplayAnswer;
  40.  
  41. (****************************************************************)
  42.  
  43. PROCEDURE CreateMenu0(): Menu;
  44.  
  45.     (* Creates the top-level menu. *)
  46.  
  47.     VAR menu: Menu;
  48.         menutext: ARRAY [0..6] OF ItemText;
  49.  
  50.     BEGIN
  51.         menutext[0] := "MENU 0";
  52.         menutext[1] := " \Default";
  53.         menutext[2] := " \Border only";
  54.         menutext[3] := " \Title only";
  55.         menutext[4] := " \Naked";
  56.         menutext[5] := "";
  57.         menutext[6] := " E\xit";
  58.         CreateMenu (menu, 6, menutext, 6);
  59.         SetOptions (menu, MO{MNoTitle,MNoBorder,MNoClose,MFastSelect,MNoCloseonClickOutside});
  60.         OffEdge (menu, stick, return, wrap, wrap);
  61.         PositionMenu (menu, 0, 0, 0, 79);
  62.         RETURN menu;
  63.     END CreateMenu0;
  64.  
  65. (****************************************************************)
  66.  
  67. PROCEDURE CreateMenu1(): Menu;
  68.  
  69.     (* Creates submenu number 1. *)
  70.  
  71.     VAR menu: Menu;
  72.         menutext: ARRAY [0..25] OF ItemText;
  73.  
  74.     BEGIN
  75.         menutext[0] := "MENU 1";
  76.         menutext[1] := "The";
  77.         menutext[2] := "quick";
  78.         menutext[3] := "brown";
  79.         menutext[4] := "fox";
  80.         menutext[5] := "jumps";
  81.         menutext[6] := "over";
  82.         menutext[7] := "the";
  83.         menutext[8] := "lazy";
  84.         menutext[9] := "dog";
  85.         menutext[10] := "Now";
  86.         menutext[11] := "is";
  87.         menutext[12] := "the";
  88.         menutext[13] := "time";
  89.         menutext[14] := "for";
  90.         menutext[15] := "all";
  91.         menutext[16] := "good";
  92.         menutext[17] := "men";
  93.         menutext[18] := "to";
  94.         menutext[19] := "come";
  95.         menutext[20] := "to";
  96.         menutext[21] := "the";
  97.         menutext[22] := "aid";
  98.         menutext[23] := "of";
  99.         menutext[24] := "the";
  100.         menutext[25] := "party";
  101.         CreateMenu (menu, 3, menutext, 25);
  102.         PositionMenu (menu, 1, 8, 0, 25);
  103.         RETURN menu;
  104.     END CreateMenu1;
  105.  
  106. (****************************************************************)
  107.  
  108. PROCEDURE CreateMenu2(): Menu;
  109.  
  110.     (* Creates submenu number 2. *)
  111.  
  112.     VAR menu: Menu;
  113.         menutext: ARRAY [0..6] OF ItemText;
  114.  
  115.     BEGIN
  116.         menutext[0] := "MENU 2";
  117.         menutext[1] := "Mary";
  118.         menutext[2] := "had";
  119.         menutext[3] := "a";
  120.         menutext[4] := "little";
  121.         menutext[5] := "roast";
  122.         menutext[6] := "beef";
  123.         CreateMenu (menu, 4, menutext, 6);
  124.         SetOptions (menu, MO{MNoTitle,MNoMouse});
  125.         OffEdge (menu, escape, wrap, wrap, wrap);
  126.         PositionMenu (menu, 1, 3, 12, 40);
  127.         RETURN menu;
  128.     END CreateMenu2;
  129.  
  130. (****************************************************************)
  131.  
  132. PROCEDURE CreateMenu3(): Menu;
  133.  
  134.     (* Creates submenu number 3. *)
  135.  
  136.     VAR menu: Menu;
  137.         menutext: ARRAY [0..3] OF ItemText;
  138.  
  139.     BEGIN
  140.         menutext[0] := " MENU 3";
  141.         menutext[1] := " Y\et";
  142.         menutext[2] := " An\other";
  143.         menutext[3] := " \menu";
  144.         CreateMenu (menu, 1, menutext, 3);
  145.         SetOptions (menu, MO{MNoBorder,MFastSelect});
  146.         OffEdge (menu, escape, wrap, stick, stick);
  147.         PositionMenu (menu, 1, 5, 28, 36);
  148.         RETURN menu;
  149.     END CreateMenu3;
  150.  
  151. (****************************************************************)
  152.  
  153. PROCEDURE CreateMenu4(): Menu;
  154.  
  155.     (* Creates submenu number 4. *)
  156.  
  157.     VAR menu: Menu;
  158.         menutext: ARRAY [0..12] OF ItemText;
  159.  
  160.     BEGIN
  161.         menutext[0] := "MENU 4";
  162.         menutext[1] := "This";
  163.         menutext[2] := "is";
  164.         menutext[3] := "an";
  165.         menutext[4] := "example";
  166.         menutext[5] := "of";
  167.         menutext[6] := "a";
  168.         menutext[7] := "menu";
  169.         menutext[8] := "without";
  170.         menutext[9] := "a";
  171.         menutext[10] := "border";
  172.         menutext[11] := "or";
  173.         menutext[12] := "title";
  174.         CreateMenu (menu, 2, menutext, 0);
  175.         SetOptions (menu, MO{MNoBorder,MNoTitle});
  176.         OffEdge (menu, escape, wrap, wrap, wrap);
  177.         PositionMenu (menu, 1, 6, 39, 55);
  178.         RETURN menu;
  179.     END CreateMenu4;
  180.  
  181. (****************************************************************)
  182.  
  183. PROCEDURE RunTheTest;
  184.  
  185.     VAR menu0, menu1, menu2, menu3, menu4: Menu;
  186.         result: CARDINAL;
  187.         resultwindow: Window;  UIW: UIWindow;
  188.  
  189.     BEGIN
  190.         OpenWindow (resultwindow, white, magenta, 10, 24, 32, 70,
  191.                         doubleframe, nodivider);
  192.         IF MouseAvailable() THEN
  193.             UIW := AllowMouseControl (resultwindow, "Menu selection result",
  194.                         CapabilitySet {wshow, wmove, whide});
  195.         END (*IF*);
  196.         menu0 := CreateMenu0();
  197.         menu1 := CreateMenu1();
  198.         menu2 := CreateMenu2();
  199.         menu3 := CreateMenu3();
  200.         menu4 := CreateMenu4();
  201.         LOOP
  202.             result := SelectFromMenu (menu0);
  203.             WriteString (resultwindow, "Submenu ");
  204.             WriteCard (resultwindow, result);
  205.             WriteString (resultwindow, ": ");
  206.             CASE result OF
  207.                 | 0,6:  EXIT (*LOOP*);
  208.                 | 1:    result := SelectFromMenu (menu1);
  209.                 | 2:    result := SelectFromMenu (menu2);
  210.                 | 3:    result := SelectFromMenu (menu3);
  211.                 | 4:    result := SelectFromMenu (menu4);
  212.                 | 5:    WriteString (resultwindow, "Not a valid menu");
  213.                         WriteLn (resultwindow);
  214.             END (*CASE*);
  215.             DisplayAnswer (resultwindow, result);
  216.         END (*LOOP*);
  217.         DestroyMenu (menu4);
  218.         DestroyMenu (menu3);
  219.         DestroyMenu (menu2);
  220.         DestroyMenu (menu1);
  221.         DestroyMenu (menu0);
  222.         CloseWindow (resultwindow);
  223.     END RunTheTest;
  224.  
  225. (****************************************************************)
  226. (*                          MAIN PROGRAM                        *)
  227. (****************************************************************)
  228.  
  229. BEGIN
  230.     RunTheTest;
  231. END MenuTest.
  232.  
  233.