<<>> <> <> <> <> DIRECTORY IO USING [STREAM, Value], MailBasics USING [RNameList], MailSend USING [SendingCredentialsList], Menus USING [MenuProc], Rope USING [ROPE], TextNode USING [Ref], ViewerClasses USING [Viewer], ViewerTools USING [TiogaContents]; SendMailOps: CEDAR DEFINITIONS = BEGIN ROPE: TYPE = Rope.ROPE; STREAM: TYPE = IO.STREAM; Viewer: TYPE = ViewerClasses.Viewer; Form: TYPE = REF FormRec; FormRec: TYPE = RECORD[formText: ViewerTools.TiogaContents, fields: LIST OF ROPE ¬ NIL]; FormAttr: TYPE = RECORD[ name: ROPE, val: ROPE ]; defaultText: READONLY ViewerTools.TiogaContents; answerText: READONLY ViewerTools.TiogaContents; forwardText: READONLY ViewerTools.TiogaContents; labelFont: READONLY ROPE; <<***********************************************************>> OutBoxMsg: TYPE = REF OutBoxMsgRec; OutBoxMsgRec: TYPE = RECORD[ sentTC, replaceTC: ViewerTools.TiogaContents, subject: ROPE, next: OutBoxMsg ]; outBox: OutBoxMsg; outBoxLength: INT; userRNameList: READONLY MailBasics.RNameList; simpleUserNameList: READONLY LIST OF ROPE; simpleNameListWithoutSpaces: READONLY LIST OF ROPE; sendingCredentialsList: READONLY MailSend.SendingCredentialsList; <<***********************************************************>> <> Send: PROC[v: Viewer, doClose: BOOL ¬ FALSE, transport: ATOM ¬ NIL] RETURNS[sent: BOOL]; <> SendUnformatted: PROC[v: ViewerClasses.Viewer, doClose: BOOL ¬ FALSE, transport: ATOM ¬ NIL] RETURNS[sent: BOOL]; <> BuildSendViewer: PROC[paint, iconic: BOOL, form: Form ¬ NIL, who: Viewer ¬ NIL, forceNew: BOOL ¬ FALSE, transport: ATOM ¬ NIL] RETURNS[v: Viewer, which: ATOM]; <> Answer: PROC[msgHeaders: ROPE, who: Viewer ¬ NIL, which: ATOM ¬ NIL] RETURNS [v: Viewer]; Forward: PROC[msg: Viewer, who: Viewer ¬ NIL] RETURNS [v: Viewer]; <> ReSend: PROC[msg: ViewerClasses.Viewer, who: ViewerClasses.Viewer ¬ NIL] RETURNS[v: ViewerClasses.Viewer]; <> <<>> AppendHeaderLine: PROC[v: Viewer, line: ROPE, changeSelection: BOOL ¬ FALSE]; ClearSendViewer: PROC[v: Viewer]; <> StuffForm: PROC[v: Viewer, contents: ViewerTools.TiogaContents]; <> <<>> GetOutBoxMsgForSender: PROC[sender: Viewer] RETURNS[OutBoxMsg]; <<>> AddToOutBox: PROC[outBoxMsg: OutBoxMsg]; ChangeOutBoxLength: PROC[new: INT] RETURNS[old: INT]; <<>> <<***********************************************************>> RegisterReporter: PROC[strm: STREAM]; <> UnregisterReporter: PROC[strm: STREAM]; SenderReport: PROC[format: ROPE, v1, v2, v3: IO.Value ¬ [null[]], blink: BOOL ¬ FALSE]; AddToSenderProps: PROC[ key: ATOM, proc: PROC[v: Viewer, action: ATOM, ra: REF ANY], data: REF ANY]; <> <<>> RemoveFromSenderProps: PROC[key: ATOM]; <> AddToSendMenu: PROC[label: ROPE, proc: Menus.MenuProc]; <> <<>> RemoveFromSendMenu: PROC[name: ROPE]; <> <<>> ReplaceInSendMenu: PROC[label: ROPE, proc: Menus.MenuProc] RETURNS[oldFound: BOOL]; <> <<>> GetFieldBody: PROC[text, fieldName: ROPE] RETURNS[fieldBody: ROPE]; <> GetRecipients: PROC[sender: Viewer, transport: ATOM ¬ NIL] RETURNS[rList: MailBasics.RNameList, parseError: BOOL]; <> <<***********************************************************>> CreateSendViewer: PROC[fromExec: BOOL, transport: ATOM ¬ NIL] RETURNS[which: ATOM]; <> TiogaTextFromStrm: PROC[strm: STREAM, startPos: INT ¬ 0, len: INT ¬ LAST[INT]] RETURNS[contents: ViewerTools.TiogaContents]; <> <<>> RopeFromStream: PROC [strm: STREAM, startPos: INT ¬ 0, len: INT ¬ LAST[INT]] RETURNS [ROPE]; <> <<>> ChangeUserRNameList: PROC[newUser: MailBasics.RNameList]; <> <<>> IsThisTheCurrentUser: PROC[who: ROPE] RETURNS[yes: BOOL]; <<>> <<***********************************************************>> <<>> CreateRopeForTextNode: PROC [doc: TextNode.Ref] RETURNS [ROPE]; <> <> <> <<>> GetCRTiogaContents: PROC [viewer: Viewer] RETURNS [contents: ViewerTools.TiogaContents ¬ NIL]; <> <<>> <<>> END.