Credit Andrew R for finding the direct copy mods for exr and ppm sequences
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / assetpopup.h
1
2 /*
3  * CINELERRA
4  * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  *
20  */
21
22 #ifndef ASSETPOPUP_H
23 #define ASSETPOPUP_H
24
25 #include "assetedit.inc"
26 #include "assetpopup.inc"
27 #include "awindowgui.inc"
28 #include "edl.inc"
29 #include "guicast.h"
30 #include "assets.inc"
31 #include "mwindow.inc"
32
33
34
35 class AssetPopup : public BC_PopupMenu
36 {
37 public:
38         AssetPopup(MWindow *mwindow, AWindowGUI *gui);
39         ~AssetPopup();
40
41         void create_objects();
42 // Set mainsession with the current selections
43         int update();
44         void paste_assets();
45         void match_size();
46         void match_rate();
47         void match_all();
48
49         MWindow *mwindow;
50         AWindowGUI *gui;
51
52
53         AssetPopupInfo *info;
54         AWindowListFormat *format;
55         AssetPopupOpenEDL *open_edl;
56         AssetPopupCloseEDL *close_edl;
57         AssetPopupToClip *to_clip;
58         AssetPopupSort *sort;
59         AssetPopupBuildIndex *index;
60         AssetPopupView *view;
61         AssetPopupViewWindow *view_window;
62         AssetPopupOpenMixer *open_mixer;
63         AssetPopupInsertMixer *insert_mixer;
64         AssetPopupPaste *paste;
65 };
66
67 class AssetPopupInfo : public BC_MenuItem
68 {
69 public:
70         AssetPopupInfo(MWindow *mwindow, AssetPopup *popup);
71         ~AssetPopupInfo();
72
73         int handle_event();
74         int button_press_event();
75
76         MWindow *mwindow;
77         AssetPopup *popup;
78 };
79
80 class AssetPopupOpenEDL : public BC_MenuItem
81 {
82 public:
83         AssetPopupOpenEDL(MWindow *mwindow, AssetPopup *popup);
84         ~AssetPopupOpenEDL();
85
86         int handle_event();
87
88         MWindow *mwindow;
89         AssetPopup *popup;
90 };
91
92 class AssetPopupCloseEDL : public BC_MenuItem
93 {
94 public:
95         AssetPopupCloseEDL(MWindow *mwindow, AWindowGUI *gui);
96         ~AssetPopupCloseEDL();
97
98         int handle_event();
99
100         MWindow *mwindow;
101         AWindowGUI *gui;
102 };
103
104 class AssetPopupToClip : public BC_MenuItem
105 {
106 public:
107         AssetPopupToClip(MWindow *mwindow, AssetPopup *popup);
108         ~AssetPopupToClip();
109
110         int handle_event();
111
112         MWindow *mwindow;
113         AssetPopup *popup;
114 };
115
116 class AssetPopupSort : public BC_MenuItem
117 {
118 public:
119         AssetPopupSort(MWindow *mwindow, AssetPopup *popup);
120         ~AssetPopupSort();
121
122         int handle_event();
123
124         MWindow *mwindow;
125         AssetPopup *popup;
126 };
127
128 class AssetPopupBuildIndex : public BC_MenuItem
129 {
130 public:
131         AssetPopupBuildIndex(MWindow *mwindow, AssetPopup *popup);
132         ~AssetPopupBuildIndex();
133
134         int handle_event();
135
136         MWindow *mwindow;
137         AssetPopup *popup;
138 };
139
140
141 class AssetPopupView : public BC_MenuItem
142 {
143 public:
144         AssetPopupView(MWindow *mwindow, AssetPopup *popup);
145         ~AssetPopupView();
146
147         int handle_event();
148
149         MWindow *mwindow;
150         AssetPopup *popup;
151 };
152
153
154 class AssetPopupViewWindow : public BC_MenuItem
155 {
156 public:
157         AssetPopupViewWindow(MWindow *mwindow, AssetPopup *popup);
158         ~AssetPopupViewWindow();
159
160         int handle_event();
161
162         MWindow *mwindow;
163         AssetPopup *popup;
164 };
165
166 class AssetPopupOpenMixer : public BC_MenuItem
167 {
168 public:
169         AssetPopupOpenMixer(MWindow *mwindow, AssetPopup *popup);
170         ~AssetPopupOpenMixer();
171
172         int handle_event();
173
174         MWindow *mwindow;
175         AssetPopup *popup;
176 };
177
178 class AssetPopupInsertMixer : public BC_MenuItem
179 {
180 public:
181         AssetPopupInsertMixer(MWindow *mwindow, AssetPopup *popup);
182         ~AssetPopupInsertMixer();
183
184         int handle_event();
185
186         MWindow *mwindow;
187         AssetPopup *popup;
188 };
189
190 class AssetPopupPaste : public BC_MenuItem
191 {
192 public:
193         AssetPopupPaste(MWindow *mwindow, AssetPopup *popup);
194         ~AssetPopupPaste();
195
196         int handle_event();
197
198         MWindow *mwindow;
199         AssetPopup *popup;
200 };
201
202 class AssetMatchSize : public BC_MenuItem
203 {
204 public:
205         AssetMatchSize(MWindow *mwindow, AssetPopup *popup);
206
207         int handle_event();
208
209         MWindow *mwindow;
210         AssetPopup *popup;
211 };
212
213 class AssetMatchRate : public BC_MenuItem
214 {
215 public:
216         AssetMatchRate(MWindow *mwindow, AssetPopup *popup);
217
218         int handle_event();
219
220         MWindow *mwindow;
221         AssetPopup *popup;
222 };
223
224 class AssetMatchAll : public BC_MenuItem
225 {
226 public:
227         AssetMatchAll(MWindow *mwindow, AssetPopup *popup);
228
229         int handle_event();
230
231         MWindow *mwindow;
232         AssetPopup *popup;
233 };
234
235 class AssetPopupProjectRemove : public BC_MenuItem
236 {
237 public:
238         AssetPopupProjectRemove(MWindow *mwindow, AssetPopup *popup);
239         ~AssetPopupProjectRemove();
240
241         int handle_event();
242
243         MWindow *mwindow;
244         AssetPopup *popup;
245 };
246
247 class AssetPopupDiskRemove : public BC_MenuItem
248 {
249 public:
250         AssetPopupDiskRemove(MWindow *mwindow, AssetPopup *popup);
251         ~AssetPopupDiskRemove();
252
253         int handle_event();
254
255         MWindow *mwindow;
256         AssetPopup *popup;
257 };
258
259 class AssetListMenu : public BC_PopupMenu
260 {
261 public:
262         AssetListMenu(MWindow *mwindow, AWindowGUI *gui);
263         ~AssetListMenu();
264
265         void create_objects();
266         void update_titles(int shots);
267
268         MWindow *mwindow;
269         AWindowGUI *gui;
270         AssetPopupLoadFile *load_file;
271         AWindowListFormat *format;
272         AssetPopupCloseEDL *close_edl;
273         AssetSnapshot *asset_snapshot;
274         AssetGrabshot *asset_grabshot;
275         AssetSelectUsed *select_used;
276 };
277
278 class AssetPopupLoadFile : public BC_MenuItem
279 {
280 public:
281         AssetPopupLoadFile(MWindow *mwindow, AWindowGUI *gui);
282         ~AssetPopupLoadFile();
283
284         int handle_event();
285
286         MWindow *mwindow;
287         AWindowGUI *gui;
288 };
289
290 class AssetListCopy : public BC_MenuItem
291 {
292 public:
293         AssetListCopy(MWindow *mwindow, AWindowGUI *gui);
294         ~AssetListCopy();
295
296         int handle_event();
297
298         MWindow *mwindow;
299         AWindowGUI *gui;
300         AssetCopyDialog *copy_dialog;
301 };
302
303 class AssetCopyDialog : public BC_DialogThread
304 {
305 public:
306         AssetCopyDialog(AssetListCopy *copy);
307         ~AssetCopyDialog();
308
309         void start(char *text, int x, int y);
310         BC_Window* new_gui();
311         void handle_done_event(int result);
312         void handle_close_event(int result);
313
314         char *text;
315         int x, y;
316         AssetListCopy *copy;
317         AssetCopyWindow *copy_window;
318 };
319
320 class AssetCopyWindow : public BC_Window
321 {
322 public:
323         AssetCopyWindow(AssetCopyDialog *copy_dialog);
324         ~AssetCopyWindow();
325
326         void create_objects();
327         int resize_event(int w, int h);
328
329         AssetCopyDialog *copy_dialog;
330         BC_ScrollTextBox *file_list;
331 };
332
333 class AssetListPaste : public BC_MenuItem
334 {
335 public:
336         AssetListPaste(MWindow *mwindow, AWindowGUI *gui);
337         ~AssetListPaste();
338
339         int handle_event();
340
341         MWindow *mwindow;
342         AWindowGUI *gui;
343         AssetPasteDialog *paste_dialog;
344 };
345
346 class AssetPasteDialog : public BC_DialogThread
347 {
348 public:
349         AssetPasteDialog(AssetListPaste *paste);
350         ~AssetPasteDialog();
351
352         BC_Window* new_gui();
353         void handle_done_event(int result);
354         void handle_close_event(int result);
355         void start(int x, int y);
356
357         AssetListPaste *paste;
358         AssetPasteWindow *paste_window;
359         int x, y;
360 };
361
362 class AssetPasteWindow : public BC_Window
363 {
364 public:
365         AssetPasteWindow(AssetPasteDialog *paste_dialog);
366         ~AssetPasteWindow();
367
368         void create_objects();
369         int resize_event(int w, int h);
370
371         AssetPasteDialog *paste_dialog;
372         BC_ScrollTextBox *file_list;
373 };
374
375 class AssetSnapshot : public BC_MenuItem
376 {
377 public:
378         AssetSnapshot(MWindow *mwindow, AssetListMenu *asset_list_menu);
379         ~AssetSnapshot();
380
381         MWindow *mwindow;
382         AssetListMenu *asset_list_menu;
383 };
384
385 class SnapshotSubMenu : public BC_SubMenu
386 {
387 public:
388         SnapshotSubMenu(AssetSnapshot *asset_snapshot);
389         ~SnapshotSubMenu();
390
391         AssetSnapshot *asset_snapshot;
392 };
393
394 class SnapshotMenuItem : public BC_MenuItem
395 {
396 public:
397         SnapshotMenuItem(SnapshotSubMenu *submenu, const char *text, int mode);
398         ~SnapshotMenuItem();
399
400         int handle_event();
401         SnapshotSubMenu *submenu;
402         int mode;
403 };
404
405
406 class AssetGrabshot : public BC_MenuItem
407 {
408 public:
409         AssetGrabshot(MWindow *mwindow, AssetListMenu *asset_list_menu);
410         ~AssetGrabshot();
411
412         MWindow *mwindow;
413         AssetListMenu *asset_list_menu;
414 };
415
416 class GrabshotSubMenu : public BC_SubMenu
417 {
418 public:
419         GrabshotSubMenu(AssetGrabshot *asset_grabshot);
420         ~GrabshotSubMenu();
421
422         AssetGrabshot *asset_grabshot;
423 };
424
425 class GrabshotMenuItem : public BC_MenuItem
426 {
427 public:
428         GrabshotMenuItem(GrabshotSubMenu *submenu, const char *text, int mode);
429         ~GrabshotMenuItem();
430
431         int handle_event();
432         GrabshotSubMenu *submenu;
433         GrabshotThread *grab_thread;
434         int mode;
435 };
436
437 class GrabshotThread : public BC_DragBox
438 {
439 public:
440         GrabshotThread(MWindow* mwindow);
441         ~GrabshotThread();
442         void start(GrabshotMenuItem *menu_item);
443         int handle_done_event(int x0, int y0, int x1, int y1);
444
445         MWindow *mwindow;
446         int mode;
447 };
448
449 #endif