<> <> <> <> DIRECTORY Buttons USING [Button], Containers USING [Container], Idle USING [IdleRegistration], IO USING [STREAM], Labels USING [Label], Rope USING [ROPE], TapeOps USING [Density, DriveNumber, TapeHandle], TapeStreams USING [FillBlockOptions], UserProfile USING [ProfileChangedProc], VFonts USING [Font], ViewerClasses USING [Viewer], ViewerEvents USING [EventRegistration]; TapeToolInternal: CEDAR DEFINITIONS = BEGIN ROPE: TYPE ~ Rope.ROPE; STREAM: TYPE ~ IO.STREAM; <<>> <> <<>> TapeTool: TYPE ~ REF TapeToolRecord; TapeToolRecord: TYPE ~ MONITORED RECORD [ outer: Containers.Container _ NIL, destroyEvent: ViewerEvents.EventRegistration _ NIL, closeEvent: ViewerEvents.EventRegistration _ NIL, idleEvent: Idle.IdleRegistration _ NIL, params: Parameters, height: INT _ 0, serverNameViewer: ViewerClasses.Viewer, serverName: ROPE, driveNumberViewer: ViewerClasses.Viewer, driveNumber: TapeOps.DriveNumber _ 0, densityLabel: Labels.Label, density: TapeOps.Density _ PE1600, opsQueue: Queue _ NIL, ops: Containers.Container, OpenButton: Buttons.Button, CloseButton: Buttons.Button, RewindButton: Buttons.Button, UnloadButton: Buttons.Button, Statusbutton: Buttons.Button, ReadButton: Buttons.Button, WriteButton: Buttons.Button, FSF: Buttons.Button, BSF: Buttons.Button, statusLabel: Labels.Label, recordCountLabel: Labels.Label, active: BOOL _ FALSE, fileNameViewer: ViewerClasses.Viewer, wdViewer: ViewerClasses.Viewer, tiogaReadLabel: Labels.Label, tiogaReadValue: BOOL _ TRUE, blockingViewer: ViewerClasses.Viewer, hlreclContainer: Containers.Container, lreclContainer: Containers.Container, lreclViewer: ViewerClasses.Viewer, lreclX, lreclY: INT, conversionsViewer: ViewerClasses.Viewer, fillBlockLabel: Labels.Label, fillBlock: TapeStreams.FillBlockOptions _ blanks, interaction: Containers.Container _ NIL, question: ViewerClasses.Viewer _ NIL, autoConfirmButton: Buttons.Button _ NIL, autoConfirm: BOOL _ FALSE, -- if TRUE, suppress button interactions promptX, promptY: INT, prompt: Containers.Container _ NIL, prompter: ViewerClasses.Viewer _ NIL, prompterSeq: PrompterSeq _ PrompterSeq.FIRST, yesButton: Buttons.Button, noButton: Buttons.Button, abortRequested: BOOL _ FALSE, responseNeeded: BOOL _ FALSE, responseValue: BOOL _ FALSE, responseSeen: BOOL _ FALSE, responseMade: CONDITION, typeScript: STREAM, inUseByteCount: INT _ 0, inUseRecordCount: INT _ 0, inUseOp: ROPE _ NIL, tapeHandle: TapeOps.TapeHandle, fileNumber: CARDINAL _ 0, atEndOfTape: BOOL _ FALSE, open: BOOL _ FALSE, AbortNow: BOOL _ FALSE ]; PrompterSeq: TYPE = NAT[0..8); Parameters: TYPE ~ REF ToolParameters; ToolParameters: TYPE ~ RECORD [ font: VFonts.Font, fixedFont: VFonts.Font, entryHeight: NAT, entryVSpace: NAT, entryHSpace: NAT, fileNamePrefixes: LIST OF ROPE, localDisk: BOOL _ FALSE, new: BOOL _ FALSE, defaultServer: ROPE ]; Queue: TYPE ~ REF QueueObj; QueueObj: TYPE; Action: TYPE ~ RECORD [ op: TapeToolOp, opConversions: ROPE _ NIL, opBlockingRope: ROPE _ NIL, oplreclRope: ROPE _ NIL, opRope: ROPE _ NIL, opFiles: ROPE _ NIL, opWDir: ROPE _ NIL, localOp: BOOL _ FALSE, tiogaRead: BOOL _ TRUE, padBlock: TapeStreams.FillBlockOptions _ blanks, serverName: ROPE _ NIL, driveNumberRope: ROPE _ NIL, density: TapeOps.Density _ PE1600 ]; offScreenY: INT ~ -9999; TapeToolOp: TYPE ~ {Open, Close, Rewind, Unload, Status, Read, Write, FSF, BSF}; <<>> -- Procedures from TapeToolInterfaceImpl EnableQuestion: PROC [tool: TapeTool]; DisableQuestion: PROC [tool: TapeTool]; ShowLReclViewer: PROC [tool: TapeTool]; RemoveLReclViewer: PROC [tool: TapeTool]; WaitForResponse: PROC [tool: TapeTool, ignoreAutoConfirm: BOOL _ FALSE] RETURNS [value: BOOL]; -- Procedures from TapeToolInterfaceImplA BuildOperations: PROC [tool: TapeTool]; -- Procedures from TapeToolQueueImpl Create: PROC [tool: TapeTool] RETURNS [Queue]; Enqueue: PROC [tool: TapeTool, q: Queue, a: Action]; Flush: PROC [q: Queue]; -- Procedures from TapeToolUtilitiesImpl ViewerToRopeList: PROC [viewer: ViewerClasses.Viewer] RETURNS [list: LIST OF ROPE _ NIL]; GetToolParameters: PROC RETURNS [Parameters]; ResetNewParameters: PROC; ReactToProfile: UserProfile.ProfileChangedProc; RegisterProfile: PROC [tool: TapeTool]; UnregisterProfile: PROC [tool: TapeTool]; RegisterIdle: PROC [tool: TapeTool]; UnRegisterIdle: PROC [tool: TapeTool]; IdleCheck: PROC [tool: TapeTool] RETURNS [idle: BOOL]; -- Procedures from TapeToolOpsImpl ExecuteOp: PROC [tool: TapeTool, op: Action]; END.