-- MenuDefs
-- MStone and Tiberi October 31, 1979 11:00 PM
-- Tiberi November 2, 1979 3:32 PM
-- Last Edited by: Stone, February 14, 1983 10:42 am

DIRECTORY
 Rope USING [ROPE],
 PointDefs: FROM "PointDefs",
 StyleDefs: FROM "StyleDefs",
 Graphics USING [Context],
 ObjectDefs: FROM "ObjectDefs";

MenuDefs: DEFINITIONS =
BEGIN OPEN ObjectDefs;

MenuHandle: TYPE = REF menu Object;
MenuItem: TYPE = RECORD
 [
 link: MenuItemHandle,
 menu: MenuHandle,
 selected, inverted: BOOLEAN,
 tl,br: PointDefs.ScrPt,
 string: Rope.ROPE,
 proc: MenuProc
 ];

MenuItemHandle: TYPE = REF MenuItem;

MenuProc: TYPE = PROCEDURE [item: MenuItemHandle];

CreateMenu: PROCEDURE [orientation: MenuOrientation, tl: PointDefs.ScrPt, title: Rope.ROPE] RETURNS [menu: MenuHandle];
AddMenuItem: PROCEDURE [menu: MenuHandle, string: Rope.ROPE, proc: MenuProc] RETURNS [MenuItemHandle];

ForAllMenus: PROCEDURE [proc: PROCEDURE [menu: MenuHandle]];
ForAllMenuItems: PROCEDURE [menu: MenuHandle, proc: MenuProc];
OverWhichItem: PROCEDURE [pt: PointDefs.ScrPt] RETURNS [item: MenuItemHandle];
IsOverItem: PROCEDURE [pt: PointDefs.ScrPt, item: MenuItemHandle]
RETURNS [BOOLEAN];

ShowMenu, HideMenu: PROCEDURE [menu: MenuHandle];
BugItem: MenuProc;
PlotMenu: PROCEDURE [menu: MenuHandle, dc: Graphics.Context];

Select, SelectOnly, Deselect, HighlightMenuItem, ClearMenuItem: MenuProc;


--access to parts:
IsSelected: PROCEDURE [item: MenuItemHandle] RETURNS [BOOLEAN];
MenuString: PROCEDURE [item: MenuItemHandle] RETURNS [Rope.ROPE];
SetMenuString: PROCEDURE [item: MenuItemHandle, string: Rope.ROPE];
MenuAnchorPoint: PROCEDURE [item: MenuItemHandle]
RETURNS [PointDefs.ScrPt];
WhichMenu: PROCEDURE[item: MenuItemHandle] RETURNS [menu: MenuHandle];
MenuStyle: PROCEDURE RETURNS [StyleDefs.StyleHandle];

InitMenuStyle: PUBLIC PROCEDURE[];

END.