<> <> <> <> 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]; <<--only one panel-viewer per design is created>> <<--panel may or may not be updated if definitions occur after first creation>> RedisplayLabels: PROC [design: CD.Design]; DefineNewLine: PROC [tech: CD.Technology_NIL]; DefineLayerEntry: PROC [tech: CD.Technology_NIL, lev: CD.Layer, text: Rope.ROPE, min, default: CD.Number _ 1]; <<--only layers of technology tech may be used>> DefineIntEntry: PROC [tech: CD.Technology _ NIL, cdValueKey: REF, text: Rope.ROPE _ NIL, min: INT _ FIRST[INT], max: INT _ LAST[INT], default: INT _ 1]; <<--cdValueKey must have been correctly registered with CDValue! CDPanel does NOT itself. >> <<--(needed to allow hooking entries onto already used keys)>> <<--Restriction: displayed value does not follow changes of CDValue.StoreInt>> 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]; <<--button is always forked>> <<--data is hanged on comm.data>> <<--cdValueKey # NIL: overwrites name field by using CDValue >> DefineLabel: PROC [tech: CD.Technology _ NIL, name: Rope.ROPE, border: BOOL _ FALSE, cdValueKey: REF _ NIL]; <<--if cdValueKey # NIL: overwrites name field by using CDValue>> END.