<> <> <> <> <<>> DIRECTORY Commander USING [CommandProc, Register], IO USING [PutRope, STREAM], MessageWindow USING [Append, Blink], PressToIP USING [ConvertPressToInterpress, Error, IPMaster, OpenOutputIPMaster, OpenPressFile, PressFile, ProgressProc], Rope USING [ROPE, Concat, Find, SkipOver, SkipTo, Substr]; PressToIPTool: PROGRAM IMPORTS Commander, IO, MessageWindow, PressToIP, Rope = BEGIN FirstToken: PROC[line: Rope.ROPE] RETURNS[Rope.ROPE] = { start: INT = line.SkipOver[skip: " \t"]; end: INT = line.SkipTo[pos: start, skip: " \t\n"]; RETURN[line.Substr[start, end-start]]; }; PressToInterpress: Commander.CommandProc = TRUSTED { fileName: Rope.ROPE = FirstToken[cmd.commandLine]; Convert[fileName, cmd.out, FALSE]; }; PressToFullInterpress: Commander.CommandProc = TRUSTED { fileName: Rope.ROPE = FirstToken[cmd.commandLine]; Convert[fileName, cmd.out, TRUE]; }; Convert: PROC[fileName: Rope.ROPE, feedback: IO.STREAM, full: BOOLEAN] = { pressFile: PressToIP.PressFile _ NIL; ipMaster: PressToIP.IPMaster; fileNameNoExtension: Rope.ROPE; dotPosition: INT; ProgressProc: PressToIP.ProgressProc = { feedback: IO.STREAM _ NARROW[progressData]; IF finishedWhat # document THEN feedback.PutRope[" ."] ELSE feedback.PutRope[" done\n"]; }; -- ProgressProc dotPosition _ fileName.Find["."]; fileNameNoExtension _ IF dotPosition # -1 THEN fileName.Substr[start: 0, len: dotPosition] ELSE fileName; pressFile _ PressToIP.OpenPressFile[fileName ! PressToIP.Error => CONTINUE]; IF pressFile = NIL THEN { fileName _ Rope.Concat[fileName, ".press"]; pressFile _ PressToIP.OpenPressFile[fileName ! PressToIP.Error => { MessageWindow.Append[message: "Can't Find Press File", clearFirst: TRUE]; MessageWindow.Blink[]; GOTO Quit; } ]; }; ipMaster _ PressToIP.OpenOutputIPMaster[Rope.Concat[fileNameNoExtension, ".Interpress"]]; feedback.PutRope[Rope.Concat["Translating: ", fileNameNoExtension]]; PressToIP.ConvertPressToInterpress[ pressFile: pressFile, ipMaster: ipMaster, usePriority: FALSE, fullInterpress: full, progressProc: ProgressProc, progressData: feedback]; EXITS Quit => RETURN; }; -- Convert Commander.Register["PressToInterpress", PressToInterpress, "Convert Press file to Xerox encoded Interpress 2.0 Master." ]; Commander.Register["PressToFullInterpress", PressToFullInterpress, "Convert Press file to Xerox encoded Full Interpress Master." ]; END. -- PressToIPTool <<>> <> <> <<>> <> <> <<>> <> <> <<>> <> <> <<>> <> <> <<>> <> <>