DIRECTORY CD, CDMenuSpecials, CDMenus, Rope, SymTab; CDMenuSpecialsImpl: CEDAR MONITOR IMPORTS CDMenus, SymTab EXPORTS CDMenuSpecials = BEGIN SelectOneOf: PUBLIC PROC[ref: SymTab.Ref, label: Rope.ROPE] RETURNS [key: Rope.ROPE_NIL] = BEGIN cnt: INT _ 0; menu, firstMenu: REF; EachEntry: SymTab.EachPairAction = { --key: Rope.ROPE quit _ FALSE; IF cnt>10 THEN { newMenu: REF _ CDMenus.CreateMenu[label: label]; CDMenus.CreateEntry[menu: menu, entry: "more ?", key: newMenu]; menu _ newMenu; cnt _ 0 }; cnt _ cnt+1; CDMenus.CreateEntry[menu: menu, entry: key, key: key] }; menu _ firstMenu _ CDMenus.CreateMenu[label: label]; [] _ ref.Pairs[EachEntry]; IF menu#firstMenu THEN CDMenus.CreateEntry[menu: menu, entry: "again ?", key: firstMenu]; key _ NARROW[CDMenus.CallMenu[firstMenu]]; END; END. CDMenuSpecialsImpl.mesa (part of ChipNDale) Copyright c 1985 by Xerox Corporation. All rights reserved. by Christian Jacobi, June 5, 1985 8:02:35 pm PDT Last Edited by Christian Jacobi, September 19, 1985 8:55:22 pm PDT --Interactive selection --NIL if discarded Κ˜codešœ+™+Kšœ Οmœ1™