home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_disks / 200-299 / ff241.lzh / Tiles / TilesMenu.mod < prev    next >
Text File  |  1989-08-27  |  8KB  |  248 lines

  1.  
  2. (*
  3. This module initializes the menus for the Trails
  4. demo.
  5.  
  6. Created: 5/22/86 by Richard Bielak
  7.  
  8. Modified:
  9.  
  10.  
  11. Copyright (c) 1986 by Richard Bielak.
  12.  
  13. This is a Public Domain piece of code, please don't
  14. try to sell it! Also, please leave my name in.
  15. Thanks.....Richie.
  16.  
  17. Turned into TilesMenu by Todd Lewis in 1988.  Thanks alot, Richie!
  18. *)
  19. IMPLEMENTATION MODULE TilesMenu;
  20.  
  21. FROM SYSTEM IMPORT ADDRESS, ADR, BYTE;
  22. FROM Intuition IMPORT WindowPtr, Menu, MenuPtr, IntuitionText,
  23.         IntuitionTextPtr, MenuItem, MenuItemPtr,
  24.        MenuFlags, MenuFlagSet, ItemFlags, ItemFlagSet;
  25. FROM Menus IMPORT SetMenuStrip, ClearMenuStrip, HighComp;
  26. FROM GraphicsLibrary IMPORT Jam2, Jam1, DrawingModeSet;
  27.  
  28. CONST
  29.   CheckWidth = 19; (* From Intuition.h *)
  30.  
  31. VAR
  32.   NULL : ADDRESS;
  33.   MenuStrip : MenuPtr;
  34.  
  35.   (*  ACTIONS   SYMETRY   SIZE  SQUARE*)
  36.   Menus     : ARRAY [0..3] OF Menu;
  37.  
  38.   (* HideStrip, ShowStrip, About, Clear, Quit *)
  39.   ActionItems : ARRAY [0..4] OF MenuItem;
  40.   ActionText  : ARRAY [0..4] OF IntuitionText;
  41. (********** Good Illustration, but not needed in Tiles!
  42.   (* 1 Fold, 2 Fold, 4 Fold *)
  43.   SymetryItems : ARRAY [0..2] OF MenuItem;
  44.   SymetryText  : ARRAY [0..2] OF IntuitionText;
  45.  
  46.   (* 16, 32, 64, 128, infinity *)
  47.   SizeItems : ARRAY [0..4] OF MenuItem;
  48.   SizeText  : ARRAY [0..4] OF IntuitionText;
  49.  
  50.   (* 2 by 2, 4 by 4, 8 by 8, 16 by 16, 32 by 32 *)
  51.   SquareSizeItems : ARRAY [0..4] OF MenuItem;
  52.   SquareSizeText  : ARRAY [0..4] OF IntuitionText;
  53. ************)  
  54. (* ++++++++++++++++++++++++++++++++ *)
  55. (* Connect a menu strip to a window *)
  56. PROCEDURE ConnectMenu (wp : WindowPtr);
  57.   BEGIN
  58.     SetMenuStrip (wp, MenuStrip^);
  59.   END ConnectMenu;
  60.  
  61. (* +++++++++++++++++++++++++++++++++++++ *)
  62. (* Disconnect a menu strip from a window *)
  63. PROCEDURE DisconnectMenu (wp : WindowPtr);
  64.   BEGIN
  65.     ClearMenuStrip (wp)
  66.   END DisconnectMenu;
  67.  
  68. (* ++++++++++++++++++++++++++++++++ *)
  69. (* Initialize a menu record.        *)
  70. PROCEDURE InitMenuRec (VAR m : Menu; L, T, W, H : INTEGER;
  71.                        VAR text : ARRAY OF CHAR) 
  72.        : MenuPtr;
  73.   BEGIN
  74.     WITH m DO
  75.       NextMenu := NULL;
  76.       LeftEdge := L; TopEdge := T;
  77.       Width := W; Height := H;
  78.       Flags := MenuFlagSet {MenuEnabled};
  79.       MenuName := ADR (text);
  80.       FirstItem := NULL
  81.     END;
  82.     RETURN ADR (m)
  83.   END InitMenuRec;
  84.  
  85. (* ++++++++++++++++++++++++++++++++ *)
  86. (* Initialize an item record.       *)
  87. PROCEDURE InitItemRec (VAR mi : MenuItem;
  88.                        L, T, W, H : INTEGER;
  89.        ItemFillPtr : ADDRESS) 
  90.        : MenuItemPtr;
  91.   BEGIN
  92.     WITH mi DO
  93.       NextItem := NULL;
  94.       LeftEdge := L; TopEdge := T;
  95.       Width := W; Height := H;
  96.       Flags := ItemFlagSet {ItemText, ItemEnabled} + HighComp;
  97.       MutualExclude := 0;
  98.       ItemFill := ItemFillPtr;
  99.       SelectFill := NULL; Command := BYTE (0);
  100.       SubItem := NULL; NextSelect := 0;
  101.     END;
  102.     RETURN ADR (mi)
  103.   END InitItemRec;
  104.  
  105. (* ++++++++++++++++++++++++++++++++ *)
  106. (* Initialize menu text record.     *)
  107. PROCEDURE InitTextRec (VAR it : IntuitionText;
  108.                        L, T : INTEGER;
  109.        VAR text : ARRAY OF CHAR) 
  110.                        : IntuitionTextPtr;
  111.   BEGIN
  112.     WITH it DO
  113.       FrontPen := BYTE(0); BackPen := BYTE(1);
  114.       LeftEdge := L; TopEdge := T;
  115.       DrawMode := BYTE (DrawingModeSet {Jam2});
  116.       ITextFont := NULL;
  117.       IText := ADR (text);
  118.       NextText := NULL
  119.     END;
  120.     RETURN ADR (it);
  121.   END InitTextRec;
  122.  
  123.  
  124. VAR
  125.   temp : ADDRESS;
  126.   i    : CARDINAL;
  127.  
  128. BEGIN
  129.   NULL := 0;
  130.   MenuStrip := NULL;
  131.   (* Now init menu records *)
  132.   MenuStrip :=
  133.    InitMenuRec (Menus[0], 10, 0, 112, 0, "Actions");
  134. (********** Good Illustration, but not needed in Tiles!
  135.   Menus[0].NextMenu := 
  136.     InitMenuRec (Menus[1], 10+112, 0, 80, 0, "Symetry");
  137.   Menus[1].NextMenu := 
  138.     InitMenuRec (Menus[2], 10+112+80, 0, 84, 0, "Length");
  139.   Menus[2].NextMenu := 
  140.     InitMenuRec (Menus[3], 10+112+80+84, 0, 100, 0, "Size");
  141. ************)  
  142.  
  143.   (* Define action items *)
  144.   temp := InitTextRec (ActionText[0], 0, 0, "New Board");
  145.   Menus[0].FirstItem := 
  146.     InitItemRec (ActionItems[0], 0, 0, 112, 9, temp);
  147.   temp := InitTextRec (ActionText[1], 0, 0, "-----------");
  148.   ActionItems[0].NextItem :=
  149.     InitItemRec (ActionItems[1], 0, 10, 112, 9, temp);
  150.   temp := InitTextRec (ActionText[2], 0, 0, "About Tiles");
  151.   ActionItems[1].NextItem :=
  152.     InitItemRec (ActionItems[2], 0, 20, 112, 9, temp);
  153.   temp := InitTextRec (ActionText[3], 0, 0, "-----------");
  154.   ActionItems[2].NextItem :=
  155.     InitItemRec (ActionItems[3], 0, 30, 112, 9, temp);
  156.   temp := InitTextRec (ActionText[4], 0, 0, "Quit");
  157.   ActionItems[3].NextItem :=
  158.     InitItemRec (ActionItems[4], 0, 40, 112, 9, temp);
  159.  
  160. (********** Good Illustration, but not needed in Tiles!
  161.   (* Define Symetry Items *)
  162.   temp := InitTextRec (SymetryText[0], 0+CheckWidth, 0, "1 Fold");
  163.   Menus[1].FirstItem := 
  164.     InitItemRec (SymetryItems[0], 0, 0, 80, 9, temp);
  165.   INCL (SymetryItems[0].Flags,CheckIt);
  166.   SymetryItems[0].MutualExclude := 0FEH;
  167.  
  168.   temp := InitTextRec (SymetryText[1], 0+CheckWidth, 0, "2 Fold");
  169.   SymetryItems[0].NextItem := 
  170.     InitItemRec (SymetryItems[1], 0, 10, 80, 9, temp);
  171.   INCL (SymetryItems[1].Flags,CheckIt);
  172.   INCL (SymetryItems[1].Flags,Checked);
  173.   SymetryItems[1].MutualExclude := 0FDH;
  174.  
  175.   temp := InitTextRec (SymetryText[2], 0+CheckWidth, 0, "4 Fold");
  176.   SymetryItems[1].NextItem := 
  177.     InitItemRec (SymetryItems[2], 0, 20, 80, 9, temp);
  178.   INCL (SymetryItems[2].Flags,CheckIt);
  179.   SymetryItems[2].MutualExclude := 0FBH;
  180.  
  181.   (* Define Size items *)
  182.   temp := InitTextRec (SizeText[0], 0+CheckWidth, 0, "16");
  183.   Menus[2].FirstItem := 
  184.     InitItemRec (SizeItems[0], 0, 0, 84, 9, temp);
  185.   INCL (SizeItems[0].Flags,CheckIt);
  186.   SizeItems[0].MutualExclude := 0FEH;
  187.   
  188.   temp := InitTextRec (SizeText[1], 0+CheckWidth, 0, "32");
  189.   SizeItems[0].NextItem := 
  190.     InitItemRec (SizeItems[1], 0, 10, 84, 9, temp);
  191.   INCL (SizeItems[1].Flags,CheckIt);
  192.   SizeItems[1].MutualExclude := 0FDH;
  193.  
  194.   temp := InitTextRec (SizeText[2], 0+CheckWidth, 0, "64");
  195.   SizeItems[1].NextItem := 
  196.     InitItemRec (SizeItems[2], 0, 20, 84, 9, temp);
  197.   INCL (SizeItems[2].Flags,CheckIt);
  198.   INCL (SizeItems[2].Flags,Checked);
  199.   SizeItems[2].MutualExclude := 0FBH;
  200.  
  201.   temp := InitTextRec (SizeText[3], 0+CheckWidth, 0, "128");
  202.   SizeItems[2].NextItem := 
  203.     InitItemRec (SizeItems[3], 0, 30, 84, 9, temp);
  204.   INCL (SizeItems[3].Flags,CheckIt);
  205.   SizeItems[3].MutualExclude := 0F7H;
  206.  
  207.   temp := InitTextRec (SizeText[4], 0+CheckWidth, 0, "Infinite");
  208.   SizeItems[3].NextItem := 
  209.     InitItemRec (SizeItems[4], 0, 40, 84, 9, temp);
  210.   INCL (SizeItems[4].Flags,CheckIt);
  211.   SizeItems[4].MutualExclude := 0EFH;
  212.  
  213.   (* Size Square items *)
  214.   temp := InitTextRec (SquareSizeText[0], 0+CheckWidth, 0, "2 by 2");
  215.   Menus[3].FirstItem := 
  216.     InitItemRec (SquareSizeItems[0], 0, 0, 100, 9, temp);
  217.   INCL (SquareSizeItems[0].Flags,CheckIt);
  218.   SquareSizeItems[0].MutualExclude := 0FEH;
  219.  
  220.   temp := InitTextRec (SquareSizeText[1], 0+CheckWidth, 0, "4 by 4");
  221.   SquareSizeItems[0].NextItem := 
  222.     InitItemRec (SquareSizeItems[1], 0, 10, 100, 9, temp);
  223.   INCL (SquareSizeItems[1].Flags,CheckIt);
  224.   INCL (SquareSizeItems[1].Flags,Checked);
  225.   SquareSizeItems[1].MutualExclude := 0FDH;
  226.  
  227.   temp := InitTextRec (SquareSizeText[2], 0+CheckWidth, 0, "8 by 8");
  228.   SquareSizeItems[1].NextItem := 
  229.     InitItemRec (SquareSizeItems[2], 0, 20, 100, 9, temp);
  230.   INCL (SquareSizeItems[2].Flags,CheckIt);
  231.   SquareSizeItems[2].MutualExclude := 0FBH;
  232.  
  233.   temp := InitTextRec (SquareSizeText[3], 0+CheckWidth, 0, "16 by 16");
  234.   SquareSizeItems[2].NextItem := 
  235.     InitItemRec (SquareSizeItems[3], 0, 30, 100, 9, temp);
  236.   INCL (SquareSizeItems[3].Flags,CheckIt);
  237.   SquareSizeItems[3].MutualExclude := 0F7H;
  238.  
  239.   temp := InitTextRec (SquareSizeText[4], 0+CheckWidth, 0, "32 by 32");
  240.   SquareSizeItems[3].NextItem := 
  241.     InitItemRec (SquareSizeItems[4], 0, 40, 100, 9, temp);
  242.   INCL (SquareSizeItems[4].Flags,CheckIt);
  243.   SquareSizeItems[4].MutualExclude := 0EFH;
  244. ************)  
  245.  
  246. END TilesMenu.
  247.  
  248.