DIRECTORY FileIO, NodeStyle, PressPrinter, Rope, TEditDocument, TextNode, TSExtras, TSJaMPageBuilder, TSObject, TSOutput, TSOutputPress, TSTranslate, TSViewer, ViewerClasses, UserCredentials, UserProfile; TSExtrasImpl: MONITOR IMPORTS FileIO, PressPrinter, TSJaMPageBuilder, TSOutput, TSOutputPress, TSTranslate, UserCredentials, UserProfile EXPORTS TSExtras = BEGIN PrintTiogaViewer: PUBLIC ENTRY PROCEDURE [ viewer: ViewerClasses.Viewer, nameForSeparatorPage: Rope.ROPE, aborted: REF BOOLEAN, server: Rope.ROPE _ NIL, copies: INT _ 1, messageProc: PROC [Rope.ROPE] _ NIL ] = {ENABLE UNWIND => NULL; node: TextNode.Ref _ NARROW[viewer.data, TEditDocument.TEditDocumentData].text; outputHandle: TSOutput.Handle _ TSOutputPress.CreateWithCursor[ stream: FileIO.Open["temp.press$", overwrite], documentName: nameForSeparatorPage, cursorObject: NIL ]; galley: TSObject.ItemList; style: NodeStyle.Ref; isAborted: PROC RETURNS [BOOLEAN] = {RETURN[IF aborted = NIL THEN FALSE ELSE aborted^]}; progressProc: PressPrinter.ProgressProc = TRUSTED { IF messageProc # NIL THEN messageProc[handle.CurrentStateMessage[]]; IF aborted # NIL AND aborted^ THEN handle.Abort[]; }; IF server = NIL THEN server _ UserProfile.Token["Hardcopy.PressPrinter", ""]; [galley, style] _ TSTranslate.TreeToVlist[node]; [] _ TSJaMPageBuilder.RunPageBuilder[ galley: galley, style: style, output: outputHandle, abortCheckProc: isAborted, documentName: nameForSeparatorPage ]; outputHandle.Close[]; [] _ PressPrinter.SendPressFile[ fileName: "temp.press$", server: server, progressProc: progressProc, copies: copies, userName: UserCredentials.GetUserCredentials[].name ]; }; PrintSuppliedNodes: PUBLIC ENTRY PROCEDURE [ nodeProc: TSExtras.NodeProc, nameForSeparatorPage: Rope.ROPE, aborted: REF BOOLEAN, server: Rope.ROPE _ NIL, copies: INT _ 1, messageProc: PROC [Rope.ROPE] _ NIL] = { ENABLE UNWIND => NULL; outputHandle: TSOutput.Handle _ TSOutputPress.CreateWithCursor[ stream: FileIO.Open["temp.press$", overwrite], documentName: nameForSeparatorPage, cursorObject: NIL ]; node: TextNode.Ref; galley: TSObject.ItemList; style: NodeStyle.Ref; isAborted: PROC RETURNS [BOOLEAN] = {RETURN[IF aborted = NIL THEN FALSE ELSE aborted^]}; progressProc: PressPrinter.ProgressProc = TRUSTED { IF messageProc # NIL THEN messageProc[handle.CurrentStateMessage[]]; IF aborted # NIL AND aborted^ THEN handle.Abort[]; }; IF server = NIL THEN server _ UserProfile.Token["Hardcopy.PressPrinter", ""]; UNTIL (node _ nodeProc[]) = NIL DO [galley, style] _ TSTranslate.TreeToVlist[node]; [] _ TSJaMPageBuilder.RunPageBuilder[ galley: galley, style: style, output: outputHandle, abortCheckProc: isAborted, documentName: nameForSeparatorPage]; ENDLOOP; outputHandle.Close[]; [] _ PressPrinter.SendPressFile[ fileName: "temp.press$", server: server, progressProc: progressProc, copies: copies, userName: UserCredentials.GetUserCredentials[].name ]; }; END. ÔTSExtrasImpl.mesa Michael Plass, May 2, 1983 9:47 am Last Edited by: Beach, May 18, 1983 3:26 pm Edited on May 16, 1983 3:47 pm, by Beach Add PrintSuppliedNodes interface for printing Walnut message sets. Êæ˜JšÏc™Jšœ™#J™+šÏk ˜ Jšœ˜Jšœ ˜ Jšœ ˜ J˜Jšœ˜Jšœ ˜ Jšœ ˜ Jšœ˜Jšœ ˜ Jšœ ˜ Jšœ˜Jšœ ˜ Jšœ ˜ Jšœ˜Jšœ˜Jšœ ˜ J˜—šœž˜Jšžœlžœ ˜…Jšž˜J˜—šÏnœžœžœž œ˜*J˜Jšœžœ˜ Jšœ žœžœ˜Jšœ žœžœ˜Jšœžœ˜Jšœ žœžœž˜#Jšœžœžœžœ˜Jšœžœ4˜Ošœ?˜?Jšœ.˜.Jšœ#˜#Jšœž˜Jšœ˜—Jšœ˜Jšœ˜JšŸ œžœžœžœžœžœ žœžœžœžœ ˜XšŸ œžœ˜3Jšžœžœžœ+˜DJšžœ žœžœ žœ˜2J˜—Jšžœ žœžœ9˜MJšœ0˜0˜%Jšœ˜Jšœ ˜ J˜J˜Jšœ"˜"J˜—J˜˜ Jšœ˜Jšœ˜Jšœ˜J˜J˜3J˜—J˜J˜—šŸœžœžœž œ˜,Jšœ˜Jšœžœ˜ Jšœ žœžœ˜Jšœ žœžœ˜Jšœžœ˜Jšœ žœžœžœ˜(Jšžœžœžœ˜šœ?˜?Jšœ.˜.Jšœ#˜#Jšœž˜Jšœ˜—J˜Jšœ˜Jšœ˜JšŸ œžœžœžœžœžœ žœžœžœžœ ˜XšŸ œžœ˜3Jšžœžœžœ+˜DJšžœ žœžœ žœ˜2J˜—Jšžœ žœžœ9˜Mšžœžœž˜"Jšœ0˜0˜%Jšœ˜Jšœ ˜ J˜Jšœ˜Jšœ$˜$—Jšž˜—J˜˜ Jšœ˜Jšœ˜Jšœ˜J˜J˜3J˜—Jšœ˜J˜—Jšžœ˜™(JšœB™B——…— `