5 class RecordGUIBatches
;
16 class RecordGUIStartOver
;
17 class RecordGUICancel
;
18 class RecordGUIMonitorVideo
;
19 class RecordGUIMonitorAudio
;
20 class RecordGUINewBatch
;
21 class RecordGUIDeleteBatch
;
22 class RecordGUIStartBatches
;
23 class RecordGUIStopbatches
;
24 class RecordGUIActivateBatch
;
25 class RecordStatusThread
;
27 class RecordGUIDCOffset
;
28 class RecordGUIFillFrames
;
31 class RecordGUILoopHr
;
32 class RecordGUILoopMin
;
33 class RecordGUILoopSec
;
34 class RecordGUIModeMenu
;
38 class RecordStartoverThread
;
39 class EndRecordThread
;
41 #include "browsebutton.inc"
42 #include "condition.inc"
44 #include "loadmode.inc"
45 #include "maxchannels.h"
47 #include "mwindow.inc"
48 #include "question.inc"
49 #include "recordgui.inc"
51 #include "recordmonitor.inc"
52 #include "recordtransport.inc"
53 #include "timeentry.h"
55 #define BATCH_COLUMNS 7
57 class RecordGUI
: public BC_Window
60 RecordGUI(MWindow
*mwindow
, Record
*record
);
67 void update_batches();
68 void update_sources();
69 // Update the batch channel table when edited
70 void update_batch_sources();
71 // Update the batch editing tools
72 void update_batch_tools();
73 int resize_event(int w
, int h
);
74 int translation_event();
76 ArrayList
<BC_ListBoxItem
*> batches
[BATCH_COLUMNS
];
78 ArrayList
<BC_ListBoxItem
*> modes
;
80 ArrayList
<BC_ListBoxItem
*> batch_numbers
;
81 // Temp source pulldowns to create menu.
82 // Real source list is from ChannelPicker
83 ArrayList
<BC_ListBoxItem
*> sources
;
85 BC_Title
*current_operation
;
86 BC_Title
*position_title
;
87 BC_Title
*prev_label_title
;
88 BC_Title
*frames_dropped
, *samples_clipped
;
91 RecordGUIBatches
*batch_list
;
92 // RecordBatch *batch_number;
93 RecordPath
*batch_path
;
94 RecordStatusThread
*status_thread
;
95 TimeEntry
*batch_start
;
96 TimeEntry
*batch_duration
;
97 RecordStartType
*start_type
;
98 RecordTransport
*record_transport
;
99 BrowseButton
*batch_browse
;
100 RecordSource
*batch_source
;
101 RecordMode
*batch_mode
;
102 RecordGUINewBatch
*new_batch
;
103 RecordGUIDeleteBatch
*delete_batch
;
104 RecordGUIStartBatches
*start_batches
;
105 RecordGUIStopbatches
*stop_batches
;
106 RecordGUIActivateBatch
*activate_batch
;
107 RecordGUILabel
*label_button
;
108 RecordGUIFillFrames
*fill_frames
;
109 RecordGUIMonitorVideo
*monitor_video
;
110 RecordGUIMonitorAudio
*monitor_audio
;
111 RecordStartoverThread
*startover_thread
;
112 EndRecordThread
*interrupt_thread
;
113 static char *batch_titles
[BATCH_COLUMNS
];
114 int column_widths
[BATCH_COLUMNS
];
135 // RecordTransport *record_transport;
136 RecordGUIModeMenu
*rec_mode_menu
;
137 RecordGUILoopHr
*loop_hr
;
138 RecordGUILoopMin
*loop_min
;
139 RecordGUILoopSec
*loop_sec
;
140 RecordGUIReset
*reset
;
141 // RecordGUIStartOver *startover_button;
142 RecordGUIDCOffset
*dc_offset_button
;
143 RecordGUIDCOffsetText
*dc_offset_text
[MAXCHANNELS
];
144 RecordMonitor
*monitor_video_window
;
145 BC_Meter
*meter
[MAXCHANNELS
];
146 long total_dropped_frames
;
147 long total_clipped_samples
;
152 int get_record_mode();
153 int set_record_mode(int value
);
154 int get_output_bits();
156 int get_duplex_status();
157 int set_duplex_status(int value
);
158 int get_loop_status();
159 int get_sample_rate();
160 int get_enable_duplex();
161 long get_playback_buffer();
165 int set_loop_status(int value
);
166 int update_duration_boxes(); // Redraw the loop duration textboxes for a script.
168 int keypress_event();
169 int delete_all_labels();
170 int calibrate_dc_offset();
171 int calibrate_dc_offset(long new_value
, int channel
);
172 int update_dropped_frames(long new_dropped
);
173 int update_clipped_samples(long new_clipped
);
174 int set_translation(int x
, int y
, float z
);
176 void update_labels(double new_position
);
177 int update_position(double new_position
);
178 int update_prev_label(long new_position
);
179 // int update_next_label(long new_position);
181 int update_title(BC_Title
*title
, double position
);
183 int goto_prev_label();
184 // int goto_next_label();
188 class RecordGUIBatches
: public BC_ListBox
191 RecordGUIBatches(Record
*record
, RecordGUI
*gui
, int x
, int y
, int w
, int h
);
193 int selection_changed();
194 int column_resize_event();
195 int drag_start_event();
196 int drag_motion_event();
197 int drag_stop_event();
204 class RecordGUISave
: public BC_Button
207 RecordGUISave(Record
*record
, RecordGUI
*record_gui
);
209 int keypress_event();
215 class RecordGUICancel
: public BC_CancelButton
218 RecordGUICancel(Record
*record
, RecordGUI
*record_gui
);
220 int keypress_event();
225 class RecordGUIOK
: public BC_OKButton
228 RecordGUIOK(Record
*record
, RecordGUI
*record_gui
);
234 class RecordGUIStartBatches
: public BC_GenericButton
237 RecordGUIStartBatches(MWindow
*mwindow
, Record
*record
, int x
, int y
);
244 class RecordGUIStopbatches
: public BC_GenericButton
247 RecordGUIStopbatches(MWindow
*mwindow
, Record
*record
, int x
, int y
);
253 class RecordGUIActivateBatch
: public BC_GenericButton
256 RecordGUIActivateBatch(MWindow
*mwindow
, Record
*record
, int x
, int y
);
263 class RecordGUIStartOver
: public BC_GenericButton
266 RecordGUIStartOver(Record
*record
, RecordGUI
*record_gui
, int x
, int y
);
267 ~RecordGUIStartOver();
275 class EndRecordThread
: public Thread
278 EndRecordThread(Record
*record
, RecordGUI
*record_gui
);
281 void start(int is_ok
);
286 QuestionWindow
*window
;
287 // OK Button was pressed
291 class RecordStartoverThread
: public Thread
294 RecordStartoverThread(Record
*record
, RecordGUI
*record_gui
);
295 ~RecordStartoverThread();
300 QuestionWindow
*window
;
303 class RecordBatch
: public BC_PopupTextBox
306 RecordBatch(MWindow
*mwindow
, Record
*record
, RecordGUI
*gui
, int x
, int y
);
313 class RecordStartType
: public BC_CheckBox
316 RecordStartType(MWindow
*mwindow
, Record
*record
, int x
, int y
);
322 class RecordPath
: public BC_TextBox
325 RecordPath(MWindow
*mwindow
, Record
*record
, int x
, int y
);
331 class RecordStart
: public TimeEntry
334 RecordStart(MWindow
*mwindow
, Record
*record
, int x
, int y
);
340 class RecordDuration
: public TimeEntry
343 RecordDuration(MWindow
*mwindow
, Record
*record
, int x
, int y
);
349 class RecordSource
: public BC_PopupTextBox
352 RecordSource(MWindow
*mwindow
, Record
*record
, RecordGUI
*gui
, int x
, int y
);
359 class RecordMode
: public BC_PopupTextBox
362 RecordMode(MWindow
*mwindow
, Record
*record
, RecordGUI
*gui
, int x
, int y
);
369 class RecordNews
: public BC_TextBox
372 RecordNews(MWindow
*mwindow
, Record
*record
, int x
, int y
);
378 class RecordGUIFillFrames
: public BC_CheckBox
381 RecordGUIFillFrames(MWindow
*mwindow
, Record
*record
, int x
, int y
);
387 class RecordGUIMonitorVideo
: public BC_CheckBox
390 RecordGUIMonitorVideo(MWindow
*mwindow
, Record
*record
, int x
, int y
);
396 class RecordGUIMonitorAudio
: public BC_CheckBox
399 RecordGUIMonitorAudio(MWindow
*mwindow
, Record
*record
, int x
, int y
);
405 class RecordGUINewBatch
: public BC_GenericButton
408 RecordGUINewBatch(MWindow
*mwindow
, Record
*record
, int x
, int y
);
415 class RecordGUIDeleteBatch
: public BC_GenericButton
418 RecordGUIDeleteBatch(MWindow
*mwindow
, Record
*record
, int x
, int y
);
424 class RecordGUILabel
: public BC_GenericButton
427 RecordGUILabel(MWindow
*mwindow
, Record
*record
, int x
, int y
);
431 int keypress_event();
436 // Stop GUI blocking the recording when X11 is busy
437 class RecordStatusThread
: public Thread
440 RecordStatusThread(MWindow
*mwindow
, RecordGUI
*gui
);
441 ~RecordStatusThread();
443 void update_dropped_frames(long value
);
444 void update_position(double new_position
);
445 void update_clipped_samples(long new_clipped_samples
);
450 long new_dropped_frames
;
452 long new_clipped_samples
;
454 Condition
*input_lock
;
472 class RecordGUIModeMenu
: public BC_PopupMenu
475 RecordGUIModeMenu(int x
, int y
, int w
, char *text
);
476 ~RecordGUIModeMenu();
481 RecordGUIMode
*linear
;
482 RecordGUIMode
*timed
;
486 class RecordGUIMode
: public BC_MenuItem
489 RecordGUIMode(char *text
);
502 class RecordGUIDCOffset
: public BC_Button
505 RecordGUIDCOffset(MWindow
*mwindow
, int y
);
506 ~RecordGUIDCOffset();
509 int keypress_event();
512 class RecordGUIDCOffsetText
: public BC_TextBox
515 RecordGUIDCOffsetText(char *text
, int y
, int number
);
516 ~RecordGUIDCOffsetText();
522 class RecordGUIReset
: public BC_Button
525 RecordGUIReset(MWindow
*mwindow
, RecordGUI
*gui
, int y
);
532 class RecordGUIResetTranslation
: public BC_Button
535 RecordGUIResetTranslation(MWindow
*mwindow
, RecordGUI
*gui
, int y
);
536 ~RecordGUIResetTranslation();