DIRECTORY ViewerClasses USING [Viewer, ClickProc], Rope USING [ROPE], Tioga USING [Node, Looks]; EditToolBuilder: CEDAR DEFINITIONS = BEGIN Viewer: TYPE = ViewerClasses.Viewer; ClickProc: TYPE = ViewerClasses.ClickProc; Layout: TYPE = REF LayoutRec; LayoutRec: TYPE = RECORD [ entryLeft: INTEGER, initLeft: INTEGER, heightSoFar: INTEGER, initHeight: INTEGER, entryHeight: INTEGER ¬ 15, entryVSpace: INTEGER ¬ 5, gapSize: INTEGER ¬ 5, container: Viewer ]; BadNumber: SIGNAL; ToMiddle: PROC [info: Layout]; ToNext: PROC [info: Layout, bigGap: BOOL ¬ FALSE]; HGap: PROC [info: Layout]; VGap: PROC [info: Layout]; BuildPair: PROC [info: Layout, proc: ClickProc, flag: BOOL, l1, l2: Rope.ROPE, clientData: REF ANY ¬ NIL, fork: BOOL ¬ FALSE] RETURNS [label: Viewer, button: Viewer]; BuildTriple: PROC [info: Layout, proc: ClickProc, state: [0..2], l0, l1, l2: Rope.ROPE, clientData: REF ANY ¬ NIL, fork: BOOL ¬ FALSE] RETURNS [label: Viewer, button: Viewer]; DataFieldButton: PROC [arg: Viewer, clear: BOOL]; BuildDataFieldPair: PROC [info: Layout, buttonRope: Rope.ROPE, buttonProc: ClickProc, clientData: REF ANY ¬ NIL, lines: CARDINAL ¬ 2] RETURNS [button: Viewer, arg: Viewer]; GetDataNode: PROC [arg: Viewer] RETURNS [Tioga.Node]; GetDataLooks: PROC [arg: Viewer, name: Rope.ROPE] RETURNS [looks: Tioga.Looks]; GetInt: PROC [arg: Viewer] RETURNS [num: INT]; SetInt: PROC [arg: Viewer, num: INT]; ConvertList: PROC [list: LIST OF REF ANY] RETURNS [Rope.ROPE]; BuildButton: PROC [info: Layout, name: Rope.ROPE, proc: ClickProc, clientData: REF ANY ¬ NIL, fork: BOOL ¬ FALSE, gapAfter: BOOL ¬ TRUE, border: BOOL ¬ FALSE] RETURNS [button: Viewer]; BuildLabel: PROC [info: Layout, name: Rope.ROPE, width: INTEGER ¬ 0] RETURNS [label: Viewer]; HRule: PROC [info: Layout, thickness: CARDINAL ¬ 1, gapAbove, gapBelow: BOOL ¬ TRUE]; END. π EditToolBuilder.mesa Copyright Σ 1989, 1991, 1992 by Xerox Corporation. All rights reserved. Pier, January 7, 1989 2:09:10 pm PST Doug Wyatt, March 14, 1992 3:50 pm PST change entryLeft to middle of container places at current entryLeft & heightSoFar and then updates those parameters put a horizontal rule the full width of the container if gapAbove is true, then move down by entryVSpace before placing the rule if gapBelow if true, then move down by entryVSpace after placing the rule ΚŒ–(cedarcode) style•NewlineDelimiter ™codešœ™Kšœ Οeœ=™HK™$K™&—K˜šΟk ˜ Kšœžœ˜(Kšœžœžœ˜Kšœžœ˜K˜—KšΟnœžœž œž˜*K˜Kšœžœ˜$Kšœ žœ˜*K˜Kšœžœžœ ˜šœ žœžœ˜Kšœ žœ˜Kšœ žœ˜Kšœ žœ˜Kšœ žœ˜Kšœ žœ˜Kšœ žœ˜Kšœ žœ˜Kšœ˜K˜K˜—KšŸ œžœ˜K˜šŸœžœ˜Kšœ'™'K˜—KšŸœžœžœžœ˜2K˜šŸœžœ˜K˜—šŸœžœ˜K˜—šŸ œžœ'žœžœ˜NKš œ žœžœžœžœžœ˜.Kšžœ!˜(KšœK™KK˜—šŸ œžœAžœ˜WKš œ žœžœžœžœžœ˜.Kšžœ!˜(K˜—KšŸœžœžœ˜1K˜šŸœžœ!žœ˜UKš œ žœžœžœ žœ˜/Kšžœ˜&K˜—KšŸ œžœžœ˜5K˜šŸ œžœžœžœ˜OK˜—KšŸœžœžœžœ˜.K˜KšŸœžœžœ˜%K˜KšŸ œžœžœžœžœžœžœžœ˜>K˜šŸ œžœžœ˜BKšœ žœžœžœžœžœ žœžœ žœžœ˜[Kšžœ˜K˜—šŸ œžœžœ žœ˜DKšžœ˜K˜—š Ÿœžœžœžœžœ˜UKšœ5™5KšœJ™JKšœI™IK˜—Kšžœ˜—…—: Ά