-- File: WalnutSendInternal.mesa
-- internal interface for the implementation modules
-- Created by: Haugeland, August 5, 1983

-- Last Edited by: Willie-Sue on December 13, 1983 1:59 pm
-- Last Edited by: Donahue, September 2, 1983 9:35 am

DIRECTORY
 GVBasics USING [RName],
 GVSend USING [Handle],
 Menus USING [Menu],
 Rope USING [ROPE],
 ViewerClasses USING [Viewer],
 ViewerEvents USING [EventRegistration],
 ViewerTools USING [TiogaContents];

WalnutSendInternal: CEDAR DEFINITIONS =

BEGIN
ROPE: TYPE = Rope.ROPE;
Viewer: TYPE = ViewerClasses.Viewer;
RName: TYPE = GVBasics.RName;
TiogaContents: TYPE = ViewerTools.TiogaContents;

SendMsgRecObject: TYPE = RECORD[
 fullText: ROPE,   -- text to be sent
 from: ROPE,    -- The From: field
 to: LIST OF GVBasics.RName,
 cc: LIST OF ROPE,
 subject: ROPE,    -- The Subject: field
 voiceID: ROPE,    -- the ID for a voice message
 replyTo: BOOLFALSE,  -- is this field present
 numRecipients: INT← 0,
 numDLs: INT← 0,
 endHeadersPos: INT← 0  -- for adding Reply-To: field
 ];

SendingRec: TYPE = REF SendMsgRecObject;

SenderInfo: TYPE = REF SenderInfoObject;
SenderInfoObject: TYPE = RECORD
[senderV: Viewer,
replyToResponse: HowToReplyTo← self,
prevMsg: TiogaContents← NIL,
numCharsToDelete: INT← 0,
closeEvent, destroyEvent, editEvent: ViewerEvents.EventRegistration← NIL,
openEvent, focusEvent: ViewerEvents.EventRegistration← NIL,
successfullySent, userResponded, confirmed: BOOLFALSE,
aborted: BOOLFALSE,
validateFlag: BOOLTRUE,
sendHandle: GVSend.Handle← NIL];

maxWithNoReplyTo: INT = 20;
HowToReplyTo: TYPE = {self, all, cancel};

SendParseStatus: PUBLIC TYPE =
 {ok, includesPublicDL, includesPrivateDL, fieldNotAllowed, syntaxError};

sendCaption: ROPE;
needToAuthenticate: BOOL;
replyToSelf: BOOL;

sendMenu, formsMenu, sendingMenu, blankMenu, confirmMenu, replyToMenu: Menus.Menu;

-- ***********************************************************

InsertIntoViewer: PROC
 [v: Viewer, what: ROPE, where: INT, labelFont: ROPENIL, changeSelection: BOOLFALSE];
-- the rope supplied is inserted into the contents of the specified viewer at the given location.
-- If a label font is specified, then any characters appearing before a ":" in the string are
-- given the specified font (this is used to put message header labels in appropriate fonts)

DeleteChars: PROC[v: Viewer, num: INT];

SenderReport: PROC[msg: ROPE];

CheckForAbortSend: PROC[senderInfo: SenderInfo] RETURNS[BOOL];

Confirmation: PROC[senderInfo: SenderInfo] RETURNS [BOOL];

ReplyToResponse: PROC[senderInfo: SenderInfo] RETURNS [HowToReplyTo];

GrabFocus: PROC[senderV: Viewer];

ClearFileAssoc: PROC[v: Viewer];

SenderNewVersion: PROC[viewer: Viewer];

UnsetNewVersion: PROC[viewer: Viewer];

END.