<> <> DIRECTORY Buttons USING[ ButtonProc, Create ], EditToolPrivate USING[ mainToolInfo, DoButton ], Rope USING[ ROPE ], ViewerTools USING [SetContents]; MultiSub: CEDAR MONITOR IMPORTS Buttons, EditToolPrivate, ViewerTools = BEGIN Substitute: PROC[target, source: Rope.ROPE] = BEGIN ViewerTools.SetContents[EditToolPrivate.mainToolInfo.targetArg, target]; ViewerTools.SetContents[EditToolPrivate.mainToolInfo.sourceArg, source]; EditToolPrivate.DoButton[redList: LIST[$DoSubstitute]]; END; DoMultiSub: ENTRY Buttons.ButtonProc = BEGIN Substitute["Environment", "PrincOps"]; Substitute["PSB", "PrincOps"]; Substitute["Inline", "PrincOpsUtils"]; Substitute["Runtime", "PrincOpsUtils"]; Substitute["Frame", "PrincOpsUtils"]; Substitute["ProcessInternal", "PrincOpsUtils"]; Substitute["SystemInternal", "NSAddress"]; Substitute["BodyDefs", "GVBasics"]; Substitute["NameInfoDefs", "GVNames"]; Substitute["LocateDefs", "GVLocate"]; Substitute["ProtocolDefs", "GVProtocol"]; Substitute["RetrieveDefs", "GVRetrieve"]; Substitute["RetrieveXDefs", "GVRetrieveInternal"]; Substitute["SendDefs", "GVSend"]; END; [] _ Buttons.Create[info: [name: "MultiSub"], proc: DoMultiSub]; END.