5620e561b1274eb74569de88cdbc1832c91c224d
[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         int shots_displayed;
277 };
278
279 class AssetPopupLoadFile : public BC_MenuItem
280 {
281 public:
282         AssetPopupLoadFile(MWindow *mwindow, AWindowGUI *gui);
283         ~AssetPopupLoadFile();
284
285         int handle_event();
286
287         MWindow *mwindow;
288         AWindowGUI *gui;
289 };
290
291 class AssetListCopy : public BC_MenuItem
292 {
293 public:
294         AssetListCopy(MWindow *mwindow, AWindowGUI *gui);
295         ~AssetListCopy();
296
297         int handle_event();
298
299         MWindow *mwindow;
300         AWindowGUI *gui;
301         AssetCopyDialog *copy_dialog;
302 };
303
304 class AssetCopyDialog : public BC_DialogThread
305 {
306 public:
307         AssetCopyDialog(AssetListCopy *copy);
308         ~AssetCopyDialog();
309
310         void start(char *text, int x, int y);
311         BC_Window* new_gui();
312         void handle_done_event(int result);
313         void handle_close_event(int result);
314
315         char *text;
316         int x, y;
317         AssetListCopy *copy;
318         AssetCopyWindow *copy_window;
319 };
320
321 class AssetCopyWindow : public BC_Window
322 {
323 public:
324         AssetCopyWindow(AssetCopyDialog *copy_dialog);
325         ~AssetCopyWindow();
326
327         void create_objects();
328         int resize_event(int w, int h);
329
330         AssetCopyDialog *copy_dialog;
331         BC_ScrollTextBox *file_list;
332 };
333
334 class AssetListPaste : public BC_MenuItem
335 {
336 public:
337         AssetListPaste(MWindow *mwindow, AWindowGUI *gui);
338         ~AssetListPaste();
339
340         int handle_event();
341
342         MWindow *mwindow;
343         AWindowGUI *gui;
344         AssetPasteDialog *paste_dialog;
345 };
346
347 class AssetPasteDialog : public BC_DialogThread
348 {
349 public:
350         AssetPasteDialog(AssetListPaste *paste);
351         ~AssetPasteDialog();
352
353         BC_Window* new_gui();
354         void handle_done_event(int result);
355         void handle_close_event(int result);
356         void start(int x, int y);
357
358         AssetListPaste *paste;
359         AssetPasteWindow *paste_window;
360         int x, y;
361 };
362
363 class AssetPasteWindow : public BC_Window
364 {
365 public:
366         AssetPasteWindow(AssetPasteDialog *paste_dialog);
367         ~AssetPasteWindow();
368
369         void create_objects();
370         int resize_event(int w, int h);
371
372         AssetPasteDialog *paste_dialog;
373         BC_ScrollTextBox *file_list;
374 };
375
376 class AssetSnapshot : public BC_MenuItem
377 {
378 public:
379         AssetSnapshot(MWindow *mwindow, AssetListMenu *asset_list_menu);
380         ~AssetSnapshot();
381
382         MWindow *mwindow;
383         AssetListMenu *asset_list_menu;
384 };
385
386 class SnapshotSubMenu : public BC_SubMenu
387 {
388 public:
389         SnapshotSubMenu(AssetSnapshot *asset_snapshot);
390         ~SnapshotSubMenu();
391
392         AssetSnapshot *asset_snapshot;
393 };
394
395 class SnapshotMenuItem : public BC_MenuItem
396 {
397 public:
398         SnapshotMenuItem(SnapshotSubMenu *submenu, const char *text, int mode);
399         ~SnapshotMenuItem();
400
401         int handle_event();
402         SnapshotSubMenu *submenu;
403         int mode;
404 };
405
406
407 class AssetGrabshot : public BC_MenuItem
408 {
409 public:
410         AssetGrabshot(MWindow *mwindow, AssetListMenu *asset_list_menu);
411         ~AssetGrabshot();
412
413         MWindow *mwindow;
414         AssetListMenu *asset_list_menu;
415 };
416
417 class GrabshotSubMenu : public BC_SubMenu
418 {
419 public:
420         GrabshotSubMenu(AssetGrabshot *asset_grabshot);
421         ~GrabshotSubMenu();
422
423         AssetGrabshot *asset_grabshot;
424 };
425
426 class GrabshotMenuItem : public BC_MenuItem
427 {
428 public:
429         GrabshotMenuItem(GrabshotSubMenu *submenu, const char *text, int mode);
430         ~GrabshotMenuItem();
431
432         int handle_event();
433         GrabshotSubMenu *submenu;
434         int mode;
435         GrabshotThread *grab_thread;
436 };
437
438 class GrabshotThread : public Thread
439 {
440 public:
441         GrabshotThread(MWindow* mwindow);
442         ~GrabshotThread();
443
444         MWindow *mwindow;
445         GrabshotPopup *popup;
446         BC_Popup *edge[4];
447         int done;
448
449         void start(GrabshotMenuItem *menu_item);
450         void run();
451 };
452
453 class GrabshotPopup : public BC_Popup
454 {
455 public:
456         GrabshotPopup(GrabshotThread *grab_thread, int mode);
457         ~GrabshotPopup();
458         int grab_event(XEvent *event);
459         void draw_selection(int invert);
460         void update();
461
462         GrabshotThread *grab_thread;
463         int mode;
464         int dragging;
465         int grab_color;
466         int x0, y0, x1, y1;
467         int lx0, ly0, lx1, ly1;
468 };
469
470 #endif