<> <> <> <> <> <> <> <> <<(The control panel now contains the relevant state of a running Walnut -- ie., the message set buttons contain the version numbers of all of the currently displayed message sets and the version number of the message set domain)>> <<(This was substantially reworked and simplified -- it now is the interface that handles the internal details of the Walnut Window, ie., how messages are reported and the display of message set buttons.)>> DIRECTORY Icons USING [IconFlavor], MBQueue USING [Queue], WalnutDefs USING [MsgSet], Rope USING [ROPE], TiogaButtons USING [TiogaButton], ViewerClasses USING [Viewer], ViewerEvents USING [EventRegistration]; WalnutWindowInternal: CEDAR DEFINITIONS = BEGIN ROPE: TYPE = Rope.ROPE; Viewer: TYPE = ViewerClasses.Viewer; TiogaButton: TYPE = TiogaButtons.TiogaButton; MsgSetButton: TYPE = REF MsgSetButtonObject; MsgSetButtonObject: TYPE = RECORD[ msgSet: WalnutDefs.MsgSet, -- the message set for the button (if the msViewer is NIL, then the version stored for the message set will be "don't care") spaceButton: TiogaButton, -- the space before this button (NIL for active) button: TiogaButton, -- the button in the control panel for this message set msViewer: Viewer _ NIL, -- the message set viewer for the message set (may be NIL) next: MsgSetButton _ NIL, -- list of all MsgSets selected: MsgSetButton_ NIL]; -- list of Selected MsgSets selectedMsgSetButtons: MsgSetButton; -- List of selected MsgSets (may be empty) firstMsgSetButton: MsgSetButton; activeMsgSetButton: MsgSetButton; deletedMsgSetButton: MsgSetButton; msbDefaultLooks: ROPE; msbSelectedLooks: ROPE; msgSetBorders: BOOL; msgSetsVersion: INT; msgSetsTViewer: Viewer; -- the $TiogaButtons class viewer for msgSet TiogaButtons walnut: Viewer; walnutTS, walnutRulerBefore, walnutRulerAfter: Viewer; initialActiveIconic, initialActiveOpen, initialActiveRight: BOOL; personalMailDB, readOnlyAccess: BOOL; msgNamePrefix, msgSetNamePrefix: ROPE; walnutQueue: MBQueue.Queue; walnutEventReg: ViewerEvents.EventRegistration; msgIcon: Icons.IconFlavor; msgSetIcon: Icons.IconFlavor; walnutIcon: Icons.IconFlavor; newMailIcon: Icons.IconFlavor; labelledWalnutIcon: Icons.IconFlavor; labelledNewMailIcon: Icons.IconFlavor; unLabelledWalnutIcon: Icons.IconFlavor; unLabelledNewMailIcon: Icons.IconFlavor; MailState: TYPE = {noMail, retrieving, thereIsMail, gvWaiting, noGV, noServers, gvMail}; <<******** from WalnutWindowInternalImpl>> << stopping, changing>> CloseDownWalnut: PROC; <> CloseTS: PROC; OpenTS: PROC[r: ROPE _ NIL, doRegister: BOOL _ TRUE]; <> TakeDownWalnutViewers: PROC; <<>> <> Report: PROC[msg1, msg2, msg3: ROPE _ NIL]; <> ReportRope: PROC[msg1, msg2, msg3: ROPE _ NIL]; <> <<>> <> RetrieveNewMail: PROC; EnableNewMail: PROC; DisableNewMail: PROC; SetMailState: PROC[mailState: MailState]; <<******** from WalnutMsgSetButtonsImpl>> <> DestroyAllMsgSetButtons: PROC; GetButton: PROC[msgSet: ROPE] RETURNS[MsgSetButton]; <> ShowMsgSetButtons: PROC; <> <<"knows" where in the window the buttons belong>> GetSelectedMsgSets: PROC RETURNS[msL: LIST OF MsgSetButton]; <> DeleteMsgSetButton: PROC[msgSet: ROPE]; AddMsgSetButton: PROC[msgSet: ROPE, select: BOOL]; <> END.