DIRECTORY CD USING [Design, Technology, Number, Layer], CDSequencer USING [CommandProc, QueueMethod], Rope USING [ROPE], ViewerClasses USING [Viewer]; CDPanel: CEDAR DEFINITIONS = BEGIN CreatePanel: PROC [design: CD.Design] RETURNS [ViewerClasses.Viewer]; DefineNewLine: PROC [tech: CD.Technology_NIL]; DefineLayerEntry: PROC [tech: CD.Technology_NIL, layer: CD.Layer, text: Rope.ROPE, min, default: CD.Number _ 1]; DefineIntEntry: PROC [tech: CD.Technology _ NIL, cdValueKey: REF, text: Rope.ROPE _ NIL, min: INT _ FIRST[INT], max: INT _ LAST[INT], default: INT _ 0, lambda: INT _ 1, redisplay: BOOL _ TRUE]; DefineButton: PROC [tech: CD.Technology _ NIL, name: Rope.ROPE _ NIL, proc: CDSequencer.CommandProc _ NIL, command: ATOM _ NIL, queue: CDSequencer.QueueMethod _ useDefault, topLine: BOOL _ FALSE, border: BOOL _ FALSE, data: REF _ NIL, cdValueKey: REF _ NIL, redisplay: BOOL _ TRUE]; DefineLabel: PROC [tech: CD.Technology _ NIL, name: Rope.ROPE, border: BOOL _ FALSE, cdValueKey: REF _ NIL, redisplay: BOOL _ TRUE]; DefineRopeEntry: PROC [tech: CD.Technology _ NIL, cdValueKey: REF, button: Rope.ROPE _ NIL, width: INT _ -1, editable: BOOL _ TRUE, redisplay: BOOL _ FALSE]; FromDisplayRope: PROC [design: CD.Design, cdValueKey: REF] RETURNS [rope: Rope.ROPE]; ToDisplayRope: PROC [design: CD.Design, cdValueKey: REF, rope: Rope.ROPE]; FromDisplay: PROC [design: CD.Design, cdValueKey: REF] RETURNS [REF]; ToDisplay: PROC [design: CD.Design, cdValueKey: REF] RETURNS [REF]; Redisplay: PROC [design: CD.Design]; END. 8CDPanel.mesa (part of ChipNDale) Copyright c 1983, 1986 by Xerox Corporation. All rights reserved. Created by Christian Jacobi, August 8, 1983 5:20 pm Last edited by: Christian Jacobi, September 16, 1986 5:55:08 pm PDT Control panels for the display and modification of values by the interactive user. Don't use define procedures from forked process! (order gets fooled) --only one panel-viewer per design is created --if panel-viewer already exists, simply return it --the next features will be defined on a new line --introduces a layer entry --only layers of technology tech may be used --use CDLayers to querry or update values; display is updated automatically --cdValueKey must have been correctly registered with CDValue! CDPanel does NOT itself. --(allows hooking entries onto already used keys) --Restriction: displayed value does not follow changes of CDValue.StoreInt --lambda=0: use lambda of technology --button is always forked --data is hanged on comm.data --cdValueKey # NIL: overwrites name field by using CDValue --if cdValueKey # NIL: overwrites name field by using CDValue --cdValueKey must have been correctly registered with CDValue -- value on design typical a ROPE; technology may have LIST OF ROPE --width: of field for text; in viewer units; -1 means: use total width of panel --Usually it is bad to set redisplay to true: user edited text may get lost --Shortcut for text entries --Takes the displayed rope, stores it using CDValue.Store, and also returns it --Shortcut for text entries --Takes the given rope, stores it using CDValue.Store and updates the display on the panel --Takes any displayed entry, stores it using CDValue.Store and also returns it --Takes any value using CDValue.Fetch, displays and returns it --fetches with CDValue and update display for all entries which have a redisplay flag ΚY˜codešœ#™#Kšœ Οmœ7™BKšœ4™4K™C—K˜šΟk ˜ Kšžœžœ%˜-Kšœ žœ˜-Kšœžœžœ˜Kšœžœ ˜—K˜KšΟnœžœž œ˜Kšž˜K˜šœT™TKšœD™D—K˜šŸ œžœ žœ žœ˜EKšœ-™-Kšœ2™2K˜—šŸ œžœžœ žœ˜.K™1K˜—šŸœžœžœ žœ žœžœžœ ˜pKšœ™Kšœ,™,KšœK™KK˜—š"Ÿœžœžœžœžœ žœžœžœžœžœžœžœžœ žœžœžœžœ˜ΑKšœX™XKšœ1™1KšœJ™JKšœ$™$K˜—š$Ÿ œžœžœ žœ ž œ"žœ žœžœ8žœžœ žœžœžœžœ žœžœ žœžœ˜šKšœ™Kšœ™Kšœ;™;K˜—šŸ œžœžœ žœ žœ žœžœžœžœ žœžœ˜„Kšœ=™=—K˜šŸœžœžœžœžœžœžœ žœžœžœ žœžœ˜Kšœ=™=KšΟcC™CKšœO™OKšœK™K—˜š Ÿœžœ žœžœžœ žœ˜UKš ™K™N—K˜š Ÿ œžœ žœžœ žœ˜JKš ™KšœZ™Z—K˜—K˜š Ÿ œžœ žœžœžœžœ˜EK™N—K˜š Ÿ œžœ žœžœžœžœ˜CK™>—K˜šŸ œžœ žœ ˜$K™U—K˜Kšžœ˜K˜K˜K˜—…— 