<> <> <> <> 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>> StoreDefaultLayer: PROC [design: CD.Design, l: CD.Layer]; FetchDefaultLayer: PROC [design: CD.Design] RETURNS [CD.Layer]; StoreWidth: PROC [design: CD.Design, l: CD.Layer, width: CD.Number]; FetchWidth: PROC [design: CD.Design, layer: CD.Layer] RETURNS [CD.Number]; 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>> <<--Don't use define procedures from forked process! (order gets fooled)>> END.