DIRECTORY Icons, Menus, ViewerClasses; Abutters: CEDAR DEFINITIONS = { Viewer: TYPE = ViewerClasses.Viewer; AbutterClass: TYPE = REF AbutterClassPrivate; AbutterClassPrivate: TYPE = RECORD [ destroy: ViewerClasses.DestroyProc _ NIL, copy: ViewerClasses.CopyProc _ NIL, set: ViewerClasses.SetProc _ NIL, get: ViewerClasses.GetProc _ NIL, init: ViewerClasses.InitProc _ NIL, save: ViewerClasses.SaveProc _ NIL, caption: ViewerClasses.CaptionProc _ NIL, menu: Menus.Menu _ NIL, icon: Icons.IconFlavor _ document ]; RegisterClass: PROC [viewerFlavor: ATOM, class: AbutterClassPrivate] RETURNS [same: ATOM]; GetClass: PROC [viewerFlavor: ATOM] RETURNS [class: AbutterClass]; vanilla: ATOM; Abutter: TYPE = REF AbutterRep; AbutterRep: TYPE; Create: PROC [viewerFlavor: ATOM, info: ViewerClasses.ViewerRec _ [], paint: BOOL _ TRUE] RETURNS [abutter: Abutter]; QuaViewer: PROC [Abutter] RETURNS [Viewer]; QuaAbutter: PROC [Viewer] RETURNS [Abutter]; ViewerIsAbutter: PROC [Viewer] RETURNS [BOOL]; IsAbutter: PROC [REF ANY] RETURNS [BOOL]; Narrow: PROC [REF ANY] RETURNS [Abutter]; GetClientData: PROC [Abutter] RETURNS [REF ANY]; GetClientDataFromViewer: PROC [Viewer--which is an Abutter--] RETURNS [REF ANY]; ScrollOffset: PROC [Abutter] RETURNS [offTop: INTEGER]; Edge: TYPE = {left, right, top, bottom}; SeriesElement: TYPE = RECORD [viewer: Viewer, spaceBefore: INTEGER _ 0]; Parallel: TYPE = LIST OF Series; Series: TYPE = RECORD [ rigid: LIST OF SeriesElement, end: SELECT kind: * FROM none => [spaceAfter: INTEGER _ 0, setParentSize: BOOL _ FALSE], parallel => [p: Parallel], stretch => [se: SeriesElement], ENDCASE ]; Rules: TYPE = ARRAY Edge OF Series; SetLayout: PROC [a: Abutter, rules: Rules, paint: BOOL _ TRUE]; Abut: PROC [a: Abutter, child1, child2: Viewer, edge: Edge, space: INTEGER _ 0, stretch: BOOL _ FALSE, paint: BOOL _ TRUE]; parentSide: Viewer; --pass this as child1 to abut against a side of the parent, rather than another Viewer. SetSizeBy: PROC [a: Abutter, child: Viewer, edge: Edge, space: INTEGER _ 0, paint: BOOL _ TRUE]; }. LAbutters.Mesa Last Edited by: Spreitzer, April 25, 1986 4:44:00 pm PST Returns NIL if no such class. The flavor of a standard, bland, common, ordinary, garden-variety AbuuterClass. It differs from [] only in having a non-NIL save, which enumerates the children (but not grandchildren), calling their save's, if any. Like a Container, only able to do more comprehensive alignment of children. CoordSys = top. Put client data in info.data; it won't stay there. Returns the amount of the abutter scrolled off the top. When child=parentSide, this simply sets a dimension to be space. สn– "cedar" style˜code™ J™8—K˜Kšฯk œ˜&K˜šะbxœœ œ˜K˜Kšœœ˜$K˜Kšœœœ˜-šœœœ˜$Jšœ%œ˜)Jšœœ˜#Jšœœ˜!Jšœœ˜!Jšœœ˜#Jšœœ˜#Jšœ%œ˜)Jšœœ˜Jšœ!˜!K˜—K˜Kš ฯn œœœœœ˜ZK˜šŸœœœœ˜BJ™—J˜šœ œ˜K™ื—K˜šœ œœ ˜K™KK™—Kšœ œ˜K˜š Ÿœœœ-œœœ˜uK™2—K˜KšŸ œœ œ ˜+KšŸ œœ œ ˜,KšŸœœ œœ˜.K˜Kš Ÿ œœœœœœ˜)Kš Ÿœœœœœ ˜)K˜Kš Ÿ œœ œœœ˜0Kš Ÿœœฯcœœœœ˜PK˜šŸ œœ œ œ˜7Kš 7™7—K˜Kšœœ˜(K˜Kšœœœœ˜HKšœ œœœ˜ šœœœ˜Kšœœœ˜šœœ ˜Kšœœœœ˜?Kšœ˜Kšœ˜Kš˜—Kšœ˜—K˜Kšœœœœ˜#K˜KšŸ œœ#œœ˜?K˜šŸœœ9œœœ œœ˜{Kšœ W˜k—K˜š Ÿ œœ0œ œœ˜`Kšœฯeœ%กœ™@—K˜K˜——…— า