<> <> <> <> <> <> <> <<(Removed use of PressPrinter stuff -- press files now get treated like tools)>> <> <> DIRECTORY Commander USING [CommandObject, Handle], CommandTool USING [DoCommand], DB, IO USING[noWhereStream, STREAM], Nut, Rope USING [Cat, ROPE], TiogaMenuOps USING [Open], ViewerClasses USING [Viewer, ViewerRec, ViewerFlavor], ViewerOps, WhiteboardDB, WhiteboardViewers; WhiteboardNut: CEDAR PROGRAM IMPORTS CommandTool, IO, Nut, Rope, TiogaMenuOps, ViewerOps, WhiteboardDB, WhiteboardViewers = BEGIN OPEN ViewerClasses; ROPE: TYPE = Rope.ROPE; CreateWBViewer: PUBLIC PROC[eName: ROPE, parent: Viewer] = BEGIN newV: Viewer; <> IF NOT WhiteboardDB.WBExists[eName] THEN RETURN; <> newV _ ViewerOps.FindViewer[Rope.Cat["Whiteboard: ", eName]]; IF newV = NIL OR newV.destroyed THEN { newV _ Nut.GetSpawnedProperty[parent]; IF newV = NIL OR newV.destroyed OR newV.newVersion OR Nut.GetFrozenProperty[newV] OR newV.class.flavor # WhiteboardViewers.wb THEN newV _ NIL; newV _ WhiteboardDB.Display[eName, newV]; [] _ Nut.SetSpawnedProperty[parent, newV] } ELSE Open[newV]; RETURN; END; WhiteboardDisplay: Nut.NutProc = { IF NOT WhiteboardDB.WBExists[eName] THEN RETURN; [] _ WhiteboardDB.Display[eName] }; CreateTextViewer: PUBLIC PROC[eName: ROPE] = BEGIN newV: Viewer; newV _ ViewerOps.FindViewer[eName]; IF newV = NIL OR newV.destroyed THEN newV _ TiogaMenuOps.Open[fileName: eName] ELSE Open[newV]; RETURN; END; DoCommandFile: PUBLIC PROC[commandFile: ROPE] = BEGIN cmd: Commander.Handle _ NEW[Commander.CommandObject _ []]; cmd.out _ IO.noWhereStream; cmd.err _ IO.noWhereStream; [] _ CommandTool.DoCommand[commandLine: Rope.Cat["///Commands/Command ", commandFile, " &\n"], parent: cmd]; END; Open: PROC[viewer: Viewer] = BEGIN IF viewer#NIL THEN IF viewer.iconic THEN ViewerOps.OpenIcon[viewer] ELSE ViewerOps.PaintViewer[viewer, all]; END; <> Nut.Register["Whiteboard", $Whiteboard, WhiteboardDisplay, WhiteboardDisplay] END...