DIRECTORY CD, Rope, CDGenerate, CDGenerateBackdoor, CDDynamicObs, CDMenus, CDMenuSpecials, CDSequencer, CDValue, CDPanel, CDProperties, TerminalIO; CDDynamicObsCommands: CEDAR PROGRAM IMPORTS CDDynamicObs, CDGenerateBackdoor, CDMenus, CDMenuSpecials, CDSequencer, CDValue, CDPanel, CDProperties, TerminalIO, Rope = BEGIN DynamicGeneratorsComm: PROC [comm: CDSequencer.Command] = BEGIN key: Rope.ROPE; design: CD.Design _ comm.design; key _ CDMenuSpecials.SelectOneOf[CDGenerateBackdoor.publicTables, "dynamicize generator"]; IF Rope.IsEmpty[key] THEN TerminalIO.WriteRope["not done\n"] ELSE { key _ CDDynamicObs.GetTable[key].name; TerminalIO.WriteRopes["created (and now uses) [", key, "]\n"]; CDProperties.PutDesignProp[design, $GeneratorProc, key]; CDValue.Store[design, $GeneratorProc, key]; CDPanel.RedisplayLabels[design]; } END; CDMenus.CreateEntry[$GeneratorMenu, "create dynamic generator", $DynamicGenerators]; CDSequencer.ImplementCommand[$DynamicGenerators, DynamicGeneratorsComm]; END. βCDDynamicObsCommands.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, March 25, 1986 5:24:14 pm PST Κ ˜codešœ-™-Kšœ Οmœ1™™>K™—šΟk œ˜ Kšžœ=žœH˜‰—K˜šΠblœžœž˜#Kšžœ žœžœO˜‚—Kšž˜K˜šΟnœžœ˜9Kšž˜Kšœ žœ˜Kšœžœ˜!Kšœ[˜[Kšžœžœ#˜<šžœ˜Kšœ&˜&Kšœ>˜>Kšœ8˜8Kšœ+˜+Kšœ ˜ K˜—Kšžœ˜—K˜KšœT˜TKšœH˜HKšžœ˜—…—ξπ