DIRECTORY CD USING [Technology], CDSequencer USING [Command, CommandProc, QueueMethod], Rope USING [ROPE]; CDMenus: CEDAR DEFINITIONS = BEGIN CreateMenu: PROC [label: Rope.ROPE_NIL, globalKey: ATOM _ NIL] RETURNS [menu: REF]; GetMenu: PROC [globalKey: ATOM] RETURNS [menu: REF]; CreateEntry: PROC [menu: REF, entry: Rope.ROPE _ NIL, key: REF]; CallMenu: PROC [menu: REF] RETURNS [key: REF]; CallMenuAndExecute: PROC [menu: REF, comm: CDSequencer.Command]; ImplementCommandToCallMenu: PROC[key: ATOM, menu: REF, technology: CD.Technology _ NIL]; ImplementEntryCommand: PROC [menu: REF, entry: Rope.ROPE _ NIL, p: CDSequencer.CommandProc, key: ATOM _ NIL, queue: CDSequencer.QueueMethod _ doQueue, technology: CD.Technology _ NIL]; END. ψCDMenus.mesa (a ChipNDale module) Copyright c 1984, 1986 by Xerox Corporation. All rights reserved. Created by: Ch. Jacobi, September 18, 1984 3:24:53 pm PDT Last Edited by: Ch. Jacobi, March 14, 1986 10:11:52 am PST Implements pop up menus. --Creates a new menu --label: its header line --globalKey: If not NIL, the menu may be fetched (GetMenu) using this atom --Fetches a menu which had been created with a globalKey --NIL if not found --Makes an entry line in a menu (overwrite if ropes are equal, remove if NIL) --menu: a menu => use this menu -- an ATOM => fetch for menu with globalKey --key: a menu => use the key menu recursively -- an ATOM => return this as result (does NOT search for a menu) / -- use CDSequencer -- others => return as result / error message --Calls a menu and return the selected key --(recursively, until returned key is not of type menu) --Calls a menu and replace the "comm" key with the selected key --then "comm" is executed --Implements a CDSequencer command "key" which shows the "menu" and after --selection executes the selected entry --For conveniance only; Entry appears in all technologies. --Creates an entry line into the menu and sets it up to call the command p. --key: key of the command; is made up if NIL. Κ˜codešœ"™"Kšœ Οmœ7™BK™9K™:—K˜šΟk œ˜ Kšžœžœ˜Kšœ žœ%˜6Kšœžœžœ˜—K˜KšΠblœžœž œ˜Kšž˜K™K™K˜šΟn œžœžœžœ žœžœžœžœ˜SKšœ™Kšœ™KšœJ™JK˜—š  œžœ žœžœžœ˜4Kšœ8™8Kšœ™K˜—š   œžœžœžœžœžœ˜@K™MKšœ ™ Kšœ+™+Kšœ-™-KšœC™CKšœ™Kšœ-™-K˜—š  œžœžœžœžœ˜.Kšœ*™*Kšœ7™7K˜—š œžœžœ˜@Kšœ?™?Kšœ™K˜—š  œžœžœžœžœ žœ˜YKšœJ™JKšœ)™)K˜—š œžœžœžœžœ#žœžœ8žœ žœ˜ΉKšœ:™:KšœK™KKšœ-™-—K˜Kšžœ˜K˜K˜K˜—…—φ