VoiceRecordImpl => VoiceRecordPlayImpl
AddVoiceProc: PUBLIC ENTRY Menus.MenuProc
RecordNewRope:
PROC = {
BroadcastRecordingDone: ENTRY PROC = { BROADCAST recordingDone };
....};
IncrementRecordTimer: ENTRY PROC RETURNS [stillRunning: BOOLEAN ← TRUE]
StopRecording: PUBLIC ENTRY PROC = {
DictationMachine: PUBLIC ENTRY Menus.MenuProc = {
RecordInPlaceOfSelection:
PUBLIC
ENTRY
PROC [selection: VoiceViewers.Selection] = {
this gets called by DictationOps when a selection [possibly zero length, in which case don't delete it] is to be replaced by new voice input: the selection is assumed to be locked with GetVoiceLock and there is assumed to be no playback or recording in progress at the time of the call
-------------------
PrepareSelection:
INTERNAL
PROC
RETURNS [succeeded:
BOOLEAN ←
FALSE]
called by AddVoiceProc
this procedure locks the selection and fills in the TiogaOps target info above. If the selection is a voice selection then targetSoundSelection is set up. If the selection is text then a text key is placed in the text. If the selection is pending delete then the delete is done. If the selection is a voice selection then the viewer is locked [against other voice edits]
NewDictationWindow:
INTERNAL
PROC
called by PrepareSelection, DictationMachine, ChangeVoiceInputFocus, RecordInPlaceOfSelection
creates a new dictation window and sets targetSoundSelection up correctly to refer to it, also sets addingIntoTextViewer false
ChangeVoiceInputFocus:
INTERNAL
PROC = {
called by DictationMachine
calls RedrawViewer ENTRY
DictationMachine was bugged when a recording was in progress: create a new voice viewer and alter the recording focus to it. In the case where recording going into a voice viewer, leave a marker where the focus was.
VoicePlayBackImpl => VoiceRecordPlayImpl
PlayBackNext: ENTRY PROC RETURNS [moreToDo: BOOLEAN ← TRUE, nextWakeUp: BasicTime.Pulses] = {
QueuePlayBackCue: ENTRY PROC [request: PlayBackRequest] = {
AbortCues:
ENTRY
PROC = {
IF playBackState.running
THEN playBackState.abort ←
TRUE };
=> CancelPlayBack (AbortCues now internal), to avoid a locking problem
RemoveViewerReferences: PUBLIC ENTRY PROC [viewer: ViewerClasses.Viewer] RETURNS [okay: BOOLEAN ← TRUE] = {
RedrawViewer: PUBLIC ENTRY PROC [viewer: ViewerClasses.Viewer, newContents: Rope.ROPE, unchangedHead, deleteChars, insertChars: INT, timeRemnant: INT, age: BOOLEAN, selectionsAfterRedraw: VoicePlayBack.SelectionsAfterRedraw] RETURNS [newNode: TiogaOpsDefs.Ref] = {
--------------------
AppendRequest:
INTERNAL
PROC [request: PlayBackRequest]
called by QueuePlayBackCue
Q: why isn't
PlayBackMenuProc:
PUBLIC Menus.MenuProc an
ENTRY proc? Where is the entry proc under playback?
PlayWholeSlab
: PUBLIC
PROC [viewer: ViewerClasses.Viewer]
VoiceRope.Play
QueuePlayBackCue
PlaySlabSection:
PUBLIC
PROC [viewer: ViewerClasses.Viewer, node: TiogaOpsDefs.Ref, from, to:
INT]
VoiceRope.Play
QueuePlayBackCue
VoiceInTextImpl.PlaySelection:
PUBLIC
PROC
PlayRopeWithoutCue
VoiceRope.Play
QueuePlayBackCue
VoiceViewersImpl =>
VoiceViewersImpl
GetVoiceLock:
PUBLIC
ENTRY
PROC [info: VoiceViewers.VoiceViewerInfo]
RETURNS [gotIt:
BOOLEAN]
calls nothing
ML problem resulting from Dan's combining VoicePlayImpl and VoiceRecordImpl into VoiceRecordPlayImpl: entry proc VoiceRecordPlayImpl.StopRecording calls VoiceViewersImpl.ReplaceSelectionWithSavedInterval which calls entry proc VoiceRecordPlayImpl.RedrawViewer (there rather than in VoiceViewersImpl to synchronize with possible playbacks in progress (?)).
VoiceRecordPlayImpl.StopRecording also calls VoiceRecordPlayImpl.RedrawViewer directly
Callers of VoiceViewersImpl.
ReplaceSelectionWithSavedInterval:
VoiceViewersImpl
Delete: PUBLIC PROC
Copy: PUBLIC PROC (twice)
VoiceMarkersImpl
AdjustSilences: Menus.MenuProc
VoiceRecordPlayImpl
*PrepareSelection: INTERNAL PROC RETURNS (when recording onto a pending-delete selection)
*StopRecording: PUBLIC ENTRY PROC (when recording into a voice editing window -- not a dictation machine)
*RecordInPlaceOfSelection: PUBLIC ENTRY PROC
Callers of VoiceRecordPlayImpl.
RecordInPlaceOfSelection
VoiceMarkersImpl
ResumeFromSelection: Menus.MenuProc
ResumeFromEnd: Menus.MenuProc
Callers of VoiceRecordPlayImpl.
RedrawViewer
ENTRY
VoiceRecordPlayImpl
*StopRecording ENTRY
*ChangeVoiceInputFocus INTERNAL
VoiceMarkersImpl
AddCharMark: PUBLIC Menus.MenuProc
LockedAddCharMark: PUBLIC PROC [viewer
DeleteCharMarks: PUBLIC Menus.MenuProc (twice)
VoiceViewersImpl
RedrawViewerMenuProc: Menus.MenuProc
ChangeColumnEvent: ViewerEvents.EventProc
ReplaceSelectionWithSavedInterval:
PUBLIC
PROC [
selection: TiogaVoicePrivate.Selection, soundInterval: TiogaVoicePrivate.SoundInterval, leaveSelected: BOOLEAN]