home *** CD-ROM | disk | FTP | other *** search
/ 17 Bit Software 3: The Continuation / 17-Bit_The_Continuation_Disc.iso / amigan / amigan 9 / automata / source / ammenu.mod < prev    next >
Encoding:
Modula Implementation  |  1994-01-27  |  3.3 KB  |  131 lines

  1. IMPLEMENTATION MODULE AMMenu;
  2.  
  3. (*  AMMenu prepares the menu and does all menu functions for Automata.
  4.  
  5.     Version 2.1B    by Mike Dryja     February 21, 1987  *)
  6.  
  7. FROM AMSetUp   IMPORT AMWindow;
  8. FROM SYSTEM    IMPORT ADR, ADDRESS, BYTE, NULL;
  9. FROM Menus     IMPORT SetMenuStrip, OnMenu, OffMenu, HighComp;
  10. FROM Intuition IMPORT Window, WindowPtr, MenuEnabled, MenuFlagSet, Menu,
  11.               MenuItem, IntuitionText, ItemFlagSet, ItemText, 
  12.               ItemEnabled, IntuiMessagePtr, CheckIt, Checked;
  13. FROM GraphicsLibrary
  14.                IMPORT Jam1;
  15.  
  16. VAR
  17.   ItemString : ARRAY[0..6] OF ARRAY[0..15] OF CHAR;
  18.   MenuString : ARRAY[0..1] OF ARRAY[0..10] OF CHAR;
  19.   AMItem     : ARRAY[0..6] OF MenuItem;
  20.   AMMenu     : ARRAY[0..1] OF Menu;
  21.   AMText     : ARRAY[0..6] OF IntuitionText;
  22.  
  23. PROCEDURE InitMenu ();
  24.   VAR
  25.     i      : CARDINAL;
  26.   BEGIN
  27.     MenuString[0] := "Project";
  28.     MenuString[1] := "Scroll";
  29.     FOR i := 0 TO 1 DO
  30.       IF i < 1 THEN
  31.         AMMenu[i].NextMenu := ADR(AMMenu[i+1]);
  32.       ELSE
  33.         AMMenu[i].NextMenu := NULL;
  34.       END;
  35.       WITH AMMenu[i] DO
  36.           TopEdge := 0;
  37.     Height := 10;
  38.         Flags := MenuFlagSet {MenuEnabled};
  39.         MenuName := ADR(MenuString[i]);
  40.       END;
  41.     END;
  42.     AMMenu[0].LeftEdge := 2;
  43.     AMMenu[1].LeftEdge := 66;
  44.     AMMenu[0].Width := 64;
  45.     AMMenu[1].Width := 56;
  46.     FOR i := 0 TO 6 DO
  47.       IF (i < 4) OR (i = 5) THEN
  48.         AMItem[i].NextItem := ADR (AMItem[i+1]);
  49.       ELSE
  50.         AMItem[i].NextItem := NULL;
  51.       END;
  52.       IF i > 4 THEN
  53.         AMItem[i].MutualExclude := LONGINT(7 - i);
  54.       ELSE
  55.         AMItem[i].MutualExclude := 0;
  56.       END;
  57.       AMItem[i].SubItem := NULL;
  58.       AMItem[i].ItemFill := ADR (AMText[i]);
  59.       AMItem[i].SelectFill := NULL;
  60.     END;
  61.     AMMenu[0].FirstItem := ADR (AMItem[0]);
  62.     AMMenu[1].FirstItem := ADR (AMItem[5]);
  63.     FOR i := 0 TO 4 DO
  64.       WITH AMItem[i] DO
  65.         LeftEdge := 0;
  66.     TopEdge := (i * 10);
  67.     Width := 64;
  68.     Height := 10;
  69.       END;
  70.     END;
  71.     FOR i := 5 TO 6 DO
  72.       WITH AMItem[i] DO
  73.         LeftEdge := 0;
  74.     TopEdge := ((i - 5) * 10);
  75.     Width := 72;
  76.     Height := 10;
  77.       END;
  78.     END;
  79.     FOR i := 0 TO 4 DO
  80.       WITH AMItem[i] DO
  81.         Flags := ItemFlagSet {ItemText, ItemEnabled} + HighComp;
  82.       END;
  83.     END;
  84.     FOR i := 5 TO 6 DO
  85.       WITH AMItem[i] DO
  86.         IF (i = 5) THEN
  87.           Flags := ItemFlagSet {CheckIt, ItemText, ItemEnabled, Checked} +
  88.                   HighComp;
  89.     ELSE
  90.       Flags := ItemFlagSet {CheckIt, ItemText, ItemEnabled} + HighComp;
  91.     END;
  92.       END;
  93.     END;
  94.     ItemString[0] := "About";
  95.     ItemString[1] := "Rule";
  96.     ItemString[2] := "Pause";
  97.     ItemString[3] := "Restart";
  98.     ItemString[4] := "Quit";
  99.     ItemString[5] := "  Coarse";
  100.     ItemString[6] := "  Smooth";
  101.     FOR i := 0 TO 6 DO
  102.       WITH AMText[i] DO
  103.         FrontPen := BYTE(0);
  104.     BackPen := BYTE(1);
  105.     DrawMode := BYTE(Jam1);
  106.     LeftEdge := 0;
  107.     TopEdge := 1;
  108.     ITextFont := NULL;
  109.     IText := ADR(ItemString[i]);
  110.     NextText := NULL;
  111.       END;
  112.     END;
  113.     SetMenuStrip(AMWindow^, AMMenu[0]);
  114.   END InitMenu;
  115.   
  116. PROCEDURE Toggle (Choice : ToggleChoices);
  117.   BEGIN
  118.     IF Choice = Pause THEN
  119.       ItemString[2] := "Pause";
  120.     ELSIF Choice = Resume THEN
  121.       ItemString[2] := "Resume";
  122.     ELSIF Choice = Disable THEN
  123.       OffMenu (AMWindow^, 64);
  124.     ELSIF Choice = Enable THEN
  125.       OnMenu (AMWindow^, 64);
  126.     END;
  127.   END Toggle;
  128.   
  129. END AMMenu.
  130.  
  131.