r370: Heroine Virutal's official release 1.2.1
[cinelerra_cv/mob.git] / hvirtual / cinelerra / channeledit.h
blob2e1067379a979fa5ed003c81b94d52740f9241a3
1 #ifndef CHANNELEDIT_H
2 #define CHANNELEDIT_H
4 #include "guicast.h"
5 #include "channel.inc"
6 #include "channeldb.inc"
7 #include "channelpicker.inc"
8 #include "condition.inc"
9 #include "mutex.inc"
10 #include "mwindow.inc"
11 #include "picture.inc"
12 #include "record.h"
14 class ChannelEditWindow;
16 class ChannelEditThread : public Thread
18 public:
19 ChannelEditThread(MWindow *mwindow,
20 ChannelPicker *channel_picker,
21 ChannelDB *channeldb,
22 Record *Record);
23 ~ChannelEditThread();
24 void run();
25 int close_threads();
27 Condition *completion;
28 int in_progress;
29 int current_channel;
30 ChannelPicker *channel_picker;
31 ChannelDB *channeldb;
32 ChannelDB *new_channels;
33 ChannelEditWindow *window;
34 MWindow *mwindow;
35 Record *record;
38 class ChannelEditList;
39 class ChannelEditEditThread;
40 class ChannelEditPictureThread;
42 class ChannelEditWindow : public BC_Window
44 public:
45 ChannelEditWindow(MWindow *mwindow, ChannelEditThread *thread, ChannelPicker *channel_picker);
46 ~ChannelEditWindow();
48 int create_objects();
49 int close_event();
50 int add_channel(); // Start the thread for adding a channel
51 int delete_channel(int channel);
52 int delete_channel(Channel *channel);
53 int edit_channel();
54 int edit_picture();
55 int update_list(); // Synchronize the list box with the channel arrays
56 int update_list(Channel *channel); // Synchronize the list box and the channel
57 int update_output();
58 int move_channel_up();
59 int move_channel_down();
60 int change_channel_from_list(int channel_number);
63 ArrayList<BC_ListBoxItem*> channel_list;
64 ChannelEditList *list_box;
65 ChannelEditThread *thread;
66 ChannelPicker *channel_picker;
67 ChannelEditEditThread *edit_thread;
68 ChannelEditPictureThread *picture_thread;
69 MWindow *mwindow;
72 class ChannelEditSelect : public BC_GenericButton
74 public:
75 ChannelEditSelect(MWindow *mwindow, ChannelEditWindow *window, int x, int y);
76 ~ChannelEditSelect();
77 int handle_event();
78 ChannelEditWindow *window;
82 class ChannelEditAdd : public BC_GenericButton
84 public:
85 ChannelEditAdd(MWindow *mwindow, ChannelEditWindow *window, int x, int y);
86 ~ChannelEditAdd();
87 int handle_event();
88 ChannelEditWindow *window;
91 class ChannelEditList : public BC_ListBox
93 public:
94 ChannelEditList(MWindow *mwindow, ChannelEditWindow *window, int x, int y);
95 ~ChannelEditList();
96 int handle_event();
97 ChannelEditWindow *window;
98 static char *column_titles[2];
101 class ChannelEditMoveUp : public BC_GenericButton
103 public:
104 ChannelEditMoveUp(MWindow *mwindow, ChannelEditWindow *window, int x, int y);
105 ~ChannelEditMoveUp();
106 int handle_event();
107 ChannelEditWindow *window;
110 class ChannelEditMoveDown : public BC_GenericButton
112 public:
113 ChannelEditMoveDown(MWindow *mwindow, ChannelEditWindow *window, int x, int y);
114 ~ChannelEditMoveDown();
115 int handle_event();
116 ChannelEditWindow *window;
119 class ChannelEditDel : public BC_GenericButton
121 public:
122 ChannelEditDel(MWindow *mwindow, ChannelEditWindow *window, int x, int y);
123 ~ChannelEditDel();
124 int handle_event();
125 ChannelEditWindow *window;
128 class ChannelEdit : public BC_GenericButton
130 public:
131 ChannelEdit(MWindow *mwindow, ChannelEditWindow *window, int x, int y);
132 ~ChannelEdit();
133 int handle_event();
134 ChannelEditWindow *window;
137 class ChannelEditPicture : public BC_GenericButton
139 public:
140 ChannelEditPicture(MWindow *mwindow, ChannelEditWindow *window, int x, int y);
141 ~ChannelEditPicture();
142 int handle_event();
143 ChannelEditWindow *window;
147 // ============================= Edit a single channel
149 class ChannelEditEditSource;
150 class ChannelEditEditWindow;
152 class ChannelEditEditThread : public Thread
154 public:
155 ChannelEditEditThread(ChannelEditWindow *window,
156 ChannelPicker *channel_picker,
157 Record *record);
158 ~ChannelEditEditThread();
160 void run();
161 int edit_channel(Channel *channel, int editing);
162 void set_device(); // Set the device to the new channel
163 int change_source(char *source_name); // Change to the source matching the name
164 int source_up();
165 int source_down();
166 int set_input(int value);
167 int set_norm(int value);
168 int set_freqtable(int value);
169 char* value_to_freqtable(int value);
170 char* value_to_norm(int value);
171 char* value_to_input(int value);
172 int close_threads();
174 Channel new_channel;
175 Channel *output_channel;
176 ChannelPicker *channel_picker;
177 ChannelEditWindow *window;
178 ChannelEditEditSource *source_text;
179 ChannelEditEditWindow *edit_window;
180 Record *record;
181 int editing; // Tells whether or not to delete the channel on cancel
182 int in_progress; // Allow only 1 thread at a time
183 int user_title;
184 Condition *completion;
187 class ChannelEditEditTitle;
190 class ChannelEditEditWindow : public BC_Window
192 public:
193 ChannelEditEditWindow(ChannelEditEditThread *thread,
194 ChannelEditWindow *window,
195 ChannelPicker *channel_picker);
196 ~ChannelEditEditWindow();
197 int create_objects(Channel *channel);
199 ChannelEditEditThread *thread;
200 ChannelEditWindow *window;
201 ChannelEditEditTitle *title_text;
202 Channel *new_channel;
203 ChannelPicker *channel_picker;
206 class ChannelEditEditTitle : public BC_TextBox
208 public:
209 ChannelEditEditTitle(int x, int y, ChannelEditEditThread *thread);
210 ~ChannelEditEditTitle();
211 int handle_event();
212 ChannelEditEditThread *thread;
215 class ChannelEditEditSource : public BC_TextBox
217 public:
218 ChannelEditEditSource(int x, int y, ChannelEditEditThread *thread);
219 ~ChannelEditEditSource();
220 int handle_event();
221 ChannelEditEditThread *thread;
224 class ChannelEditEditSourceTumbler : public BC_Tumbler
226 public:
227 ChannelEditEditSourceTumbler(int x, int y, ChannelEditEditThread *thread);
228 ~ChannelEditEditSourceTumbler();
229 int handle_up_event();
230 int handle_down_event();
231 ChannelEditEditThread *thread;
234 class ChannelEditEditInput : public BC_PopupMenu
236 public:
237 ChannelEditEditInput(int x, int y, ChannelEditEditThread *thread, Record *record);
238 ~ChannelEditEditInput();
239 int add_items();
240 int handle_event();
241 ChannelEditEditThread *thread;
242 Record *record;
245 class ChannelEditEditInputItem : public BC_MenuItem
247 public:
248 ChannelEditEditInputItem(ChannelEditEditThread *thread, char *text, int value);
249 ~ChannelEditEditInputItem();
250 int handle_event();
251 ChannelEditEditThread *thread;
252 int value;
255 class ChannelEditEditNorm : public BC_PopupMenu
257 public:
258 ChannelEditEditNorm(int x, int y, ChannelEditEditThread *thread);
259 ~ChannelEditEditNorm();
260 int add_items();
261 ChannelEditEditThread *thread;
264 class ChannelEditEditNormItem : public BC_MenuItem
266 public:
267 ChannelEditEditNormItem(ChannelEditEditThread *thread, char *text, int value);
268 ~ChannelEditEditNormItem();
269 int handle_event();
270 ChannelEditEditThread *thread;
271 int value;
274 class ChannelEditEditFreqtable : public BC_PopupMenu
276 public:
277 ChannelEditEditFreqtable(int x, int y, ChannelEditEditThread *thread);
278 ~ChannelEditEditFreqtable();
280 int add_items();
282 ChannelEditEditThread *thread;
285 class ChannelEditEditFreqItem : public BC_MenuItem
287 public:
288 ChannelEditEditFreqItem(ChannelEditEditThread *thread, char *text, int value);
289 ~ChannelEditEditFreqItem();
291 int handle_event();
292 ChannelEditEditThread *thread;
293 int value;
296 class ChannelEditEditFine : public BC_ISlider
298 public:
299 ChannelEditEditFine(int x, int y, ChannelEditEditThread *thread);
300 ~ChannelEditEditFine();
301 int handle_event();
302 ChannelEditEditThread *thread;
305 // =================== Edit the picture quality
308 class ChannelEditPictureWindow;
310 class ChannelEditPictureThread : public Thread
312 public:
313 ChannelEditPictureThread(ChannelPicker *channel_picker, ChannelEditWindow *window);
314 ~ChannelEditPictureThread();
316 void run();
317 int close_threads();
318 int edit_picture();
320 int in_progress; // Allow only 1 thread at a time
321 Condition *completion;
322 ChannelPicker *channel_picker;
323 ChannelEditWindow *window;
324 ChannelEditPictureWindow *edit_window;
327 class ChannelEditPictureWindow : public BC_Window
329 public:
330 ChannelEditPictureWindow(ChannelEditPictureThread *thread, ChannelPicker *channel_picker);
331 ~ChannelEditPictureWindow();
332 int create_objects();
334 ChannelEditPictureThread *thread;
335 ChannelPicker *channel_picker;
338 class ChannelEditBright : public BC_IPot
340 public:
341 ChannelEditBright(int x, int y, ChannelPicker *channel_picker, int value);
342 ~ChannelEditBright();
343 int handle_event();
344 int button_release_event();
345 ChannelPicker *channel_picker;
348 class ChannelEditContrast : public BC_IPot
350 public:
351 ChannelEditContrast(int x, int y, ChannelPicker *channel_picker, int value);
352 ~ChannelEditContrast();
353 int handle_event();
354 int button_release_event();
355 ChannelPicker *channel_picker;
358 class ChannelEditColor : public BC_IPot
360 public:
361 ChannelEditColor(int x, int y, ChannelPicker *channel_picker, int value);
362 ~ChannelEditColor();
363 int handle_event();
364 int button_release_event();
365 ChannelPicker *channel_picker;
368 class ChannelEditHue : public BC_IPot
370 public:
371 ChannelEditHue(int x, int y, ChannelPicker *channel_picker, int value);
372 ~ChannelEditHue();
373 int handle_event();
374 int button_release_event();
375 ChannelPicker *channel_picker;
378 class ChannelEditWhiteness : public BC_IPot
380 public:
381 ChannelEditWhiteness(int x, int y, ChannelPicker *channel_picker, int value);
382 ~ChannelEditWhiteness();
383 int handle_event();
384 int button_release_event();
385 ChannelPicker *channel_picker;
390 class ChannelEditCommon : public BC_IPot
392 public:;
393 ChannelEditCommon(int x,
394 int y,
395 ChannelPicker *channel_picker,
396 PictureItem *item);
397 ~ChannelEditCommon();
398 int handle_event();
399 int button_release_event();
400 ChannelPicker *channel_picker;
401 int device_id;
406 #endif