DIRECTORY BasicTime USING [GMT, nullGMT], GVBasics USING [ItemType], IO USING [STREAM], Menus USING [MenuProc], Rope USING [ROPE], ViewerClasses USING [Viewer], ViewerTools USING [TiogaContents]; WalnutSendOps: CEDAR DEFINITIONS = BEGIN OPEN Rope, ViewerClasses, ViewerTools; 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; userRName: READONLY ROPE; simpleUserName: READONLY ROPE; defaultRegistry: ROPE; TiogaCTRL: GVBasics.ItemType = LOOPHOLE[1013B]; Send: PROC[v: ViewerClasses.Viewer, doClose: BOOL_ FALSE] RETURNS[sent: BOOL]; BuildSendViewer: PROC[paint, iconic: BOOL, form: Form _ NIL, who: Viewer _ NIL] RETURNS[v: Viewer]; Answer: PROC[msgHeaders: ROPE, who: Viewer_ NIL] RETURNS [v: Viewer]; Forward: PROC[msg: Viewer, who: Viewer_ NIL] RETURNS [v: Viewer]; AppendHeaderLine: PROC[v: Viewer, line: ROPE, changeSelection: BOOL _ FALSE]; ClearSendViewer: PROC[v: Viewer]; StuffForm: PROC[v: Viewer, contents: TiogaContents]; RegisterReporter: PROC[strm: IO.STREAM]; UnregisterReporter: PROC[strm: IO.STREAM]; 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]; GetFieldBody: PROC[text, fieldName: ROPE] RETURNS[fieldBody: ROPE]; GetRecipients: PROC[sender: Viewer] RETURNS[rList: LIST OF ROPE, parseError: BOOL]; WalnutSendProc: PROC[fromExec: BOOL]; TiogaTextFromStrm: PROC[strm: IO.STREAM, startPos: INT_ 0, len: INT_ LAST[INT]] RETURNS[contents: TiogaContents]; RopeFromStream: PROC [strm: IO.STREAM, startPos: INT_ 0, len: INT_ LAST[INT]] RETURNS [ROPE]; RFC822Date: PUBLIC PROC[gmt: BasicTime.GMT_ BasicTime.nullGMT] RETURNS[date: ROPE]; END. ΰWalnutSendOps.mesa - public interface to Mail Sending operations Copyright c 1984, 1985 by Xerox Corporation. All rights reserved. Willie-Sue on December 6, 1984 1:58:25 pm PST Donahue, September 2, 1983 9:39 am Russ Atkinson (RRA) March 21, 1985 0:23:15 am PST *********************************************************** used by various Walnut procs *********************************************************** Sending messages & dealing with sender viewers [WalnutSendCommonImpl] is given a text viewer set up for sending; does the sending builds sending viewer this needs the whole viewer because it's doing a secondary selection on all of it fills in senderV with the default form displays contents in senderV, grabs focus & selects first placeholder allows Walnut to have WalnutSend use its reporting procedure does AddProp[sendViewer, key, REF RECORD[proc, data]] to subsequent senders removes key from list of senderProps adds a menu button to the sender's menu removes the named button from the sender menu, if such a button exists; no errors expects text to be the text of a message; parses the header fields looking for a field named fieldName and returns the value of the fieldBody, or NIL if no such fieldName is found. expects sender to contain a message to be sent; will parse the headers and return a list of all the recipients of the message; if an error occurs while parsing the viewer, parseError=TRUE is returned, and the viewer will have the offending field underlined *********************************************************** create a viewer for sending msgs returns NIL IF EndOfStream encountered during read Reads len bytes from the given stream, starting at the given start position, although reading will be truncated at the end of stream. A client wishing to check for exactly len bytes being read should check the length of the returned rope. Any signals are passed up to the caller, since they should not really happen. generates arpa standard time, dd mmm yy hh:mm:ss zzz ΚS˜codešœ@™@Kšœ Οmœ7™BKšœ-™-Kšœ"™"K™1—K˜šΟk ˜ Kšœ žœžœ ˜Kšœ žœ ˜Kšžœžœžœ˜Kšœžœ ˜Kšœžœžœ˜Kšœžœ ˜Kšœ žœ˜"K˜—Kš œžœž œžœžœ"˜OK˜Kšœžœžœ ˜K˜Kš œ žœžœ.žœžœžœžœ˜XK˜Kš œ žœžœžœžœ˜1K˜Kšœ žœ˜0K˜Kšœ žœ˜/K˜Kšœ žœ˜0K˜Kšœ žœžœ˜K˜Kšœ;™;Kšœ™K˜Kšœ žœžœ˜Kšœžœžœ˜Kšœžœ˜Kšœžœ˜/K˜Kšœ;™;KšœE™EK˜š Οnœžœ#žœžœžœžœ˜NKšœ;™;K˜—š Ÿœžœžœžœžœžœ ˜cKšœ™K˜—Kš Ÿœžœ žœžœžœ ˜EK˜šŸœžœžœžœ ˜AKšœQ™QK˜—Kš Ÿœžœžœžœžœ˜MK˜šŸœžœ ˜!Kšœ&™&—K˜šŸ œžœ%˜4KšœE™E—K˜šŸœžœžœžœ˜(Kšœ<™<—K˜KšŸœžœžœžœ˜*K˜šŸœžœ˜Kšœžœžœžœžœžœ žœžœ˜LK™K—K™šŸœžœžœ˜'K™$—K˜šŸ œžœžœ˜7Kšœ'™'—K™šŸœžœžœ˜%K™Q—K™š Ÿ œžœžœžœ žœ˜CKšœ΄™΄—K˜šŸ œžœžœžœžœžœžœ˜SKšœ™—K˜Kšœ;™;K˜KšŸœžœ žœ˜%Kšœ ™ K˜šŸœžœžœžœ žœ žœžœžœžœ˜qKšœ2™2K™—šŸœžœžœžœ žœ žœžœžœžœžœ˜]K™Ύ—K˜Kš Ÿ œžœžœžœžœžœ˜SKšœ4™4K˜Kšžœ˜K˜—…— ?