<> <> <> DIRECTORY MenuDefs USING [MenuItemHandle, MenuHandle, MenuProc, ForAllMenus, ForAllMenuItems], GriffinMenusInterface, PointDefs USING [ObjToScr,ObjPt, ScrPt, X, Y], ScreenDefs USING [ClipPointToScreen], ObjectDefs USING [StartObject,PlotOneObject,TokenType,Object, ObjectType, AddToken], Rope USING [ROPE, Equal]; GriffinMenusInterfaceImpl: CEDAR PROGRAM IMPORTS MenuDefs, Rope, ObjectDefs, ScreenDefs, PointDefs EXPORTS GriffinMenusInterface = { MenuItemFromRope: PUBLIC PROC [rope: Rope.ROPE] RETURNS [foundItem: MenuDefs.MenuItemHandle] = { found: BOOLEAN _ FALSE; searchItems: MenuDefs.MenuProc = { IF ~found THEN { found _ Rope.Equal[rope, item.string, FALSE]; IF found THEN foundItem _ item; }; }; searchMenus: PROCEDURE [menu: MenuDefs.MenuHandle] = { IF ~found THEN MenuDefs.ForAllMenuItems[menu, searchItems]; }; MenuDefs.ForAllMenus[searchMenus]; }; PlaceScreenCP: PUBLIC PROCEDURE[pt: PointDefs.ScrPt] = { ObjectDefs.AddToken[ScreenDefs.ClipPointToScreen[pt], CP]; }; PlaceScreenRealCP: PUBLIC PROCEDURE[pt: PointDefs.ScrRealPt] = { X: NAT = PointDefs.X; Y: NAT = PointDefs.Y; objPt: PointDefs.ObjPt _ PointDefs.ScrRealToObj[pt]; obj: REF ObjectDefs.Object[token] _ NARROW[ObjectDefs.StartObject[token]]; obj.tokenType _ CP; obj.p0 _ objPt; [obj.tl, obj.br] _ ObjectDefs.GetTokenBoundingBox[obj];; obj.validEncoding _ TRUE; ObjectDefs.PlotOneObject[obj]; }; }.