add stacked edl editing, add sketcher/vframe line anti-aliasing
[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         AssetPopupToClip *to_clip;
57         AssetPopupSort *sort;
58         AssetPopupBuildIndex *index;
59         AssetPopupView *view;
60         AssetPopupViewWindow *view_window;
61         AssetPopupOpenMixer *open_mixer;
62         AssetPopupInsertMixer *insert_mixer;
63         AssetPopupPaste *paste;
64 };
65
66 class AssetPopupInfo : public BC_MenuItem
67 {
68 public:
69         AssetPopupInfo(MWindow *mwindow, AssetPopup *popup);
70         ~AssetPopupInfo();
71
72         int handle_event();
73         int button_press_event();
74
75         MWindow *mwindow;
76         AssetPopup *popup;
77 };
78
79 class AssetPopupOpenEDL : public BC_MenuItem
80 {
81 public:
82         AssetPopupOpenEDL(MWindow *mwindow, AssetPopup *popup);
83         ~AssetPopupOpenEDL();
84
85         int handle_event();
86
87         MWindow *mwindow;
88         AssetPopup *popup;
89 };
90
91 class AssetPopupToClip : public BC_MenuItem
92 {
93 public:
94         AssetPopupToClip(MWindow *mwindow, AssetPopup *popup);
95         ~AssetPopupToClip();
96
97         int handle_event();
98
99         MWindow *mwindow;
100         AssetPopup *popup;
101 };
102
103 class AssetPopupSort : public BC_MenuItem
104 {
105 public:
106         AssetPopupSort(MWindow *mwindow, AssetPopup *popup);
107         ~AssetPopupSort();
108
109         int handle_event();
110
111         MWindow *mwindow;
112         AssetPopup *popup;
113 };
114
115 class AssetPopupBuildIndex : public BC_MenuItem
116 {
117 public:
118         AssetPopupBuildIndex(MWindow *mwindow, AssetPopup *popup);
119         ~AssetPopupBuildIndex();
120
121         int handle_event();
122
123         MWindow *mwindow;
124         AssetPopup *popup;
125 };
126
127
128 class AssetPopupView : public BC_MenuItem
129 {
130 public:
131         AssetPopupView(MWindow *mwindow, AssetPopup *popup);
132         ~AssetPopupView();
133
134         int handle_event();
135
136         MWindow *mwindow;
137         AssetPopup *popup;
138 };
139
140
141 class AssetPopupViewWindow : public BC_MenuItem
142 {
143 public:
144         AssetPopupViewWindow(MWindow *mwindow, AssetPopup *popup);
145         ~AssetPopupViewWindow();
146
147         int handle_event();
148
149         MWindow *mwindow;
150         AssetPopup *popup;
151 };
152
153 class AssetPopupOpenMixer : public BC_MenuItem
154 {
155 public:
156         AssetPopupOpenMixer(MWindow *mwindow, AssetPopup *popup);
157         ~AssetPopupOpenMixer();
158
159         int handle_event();
160
161         MWindow *mwindow;
162         AssetPopup *popup;
163 };
164
165 class AssetPopupInsertMixer : public BC_MenuItem
166 {
167 public:
168         AssetPopupInsertMixer(MWindow *mwindow, AssetPopup *popup);
169         ~AssetPopupInsertMixer();
170
171         int handle_event();
172
173         MWindow *mwindow;
174         AssetPopup *popup;
175 };
176
177 class AssetPopupPaste : public BC_MenuItem
178 {
179 public:
180         AssetPopupPaste(MWindow *mwindow, AssetPopup *popup);
181         ~AssetPopupPaste();
182
183         int handle_event();
184
185         MWindow *mwindow;
186         AssetPopup *popup;
187 };
188
189 class AssetMatchSize : public BC_MenuItem
190 {
191 public:
192         AssetMatchSize(MWindow *mwindow, AssetPopup *popup);
193
194         int handle_event();
195
196         MWindow *mwindow;
197         AssetPopup *popup;
198 };
199
200 class AssetMatchRate : public BC_MenuItem
201 {
202 public:
203         AssetMatchRate(MWindow *mwindow, AssetPopup *popup);
204
205         int handle_event();
206
207         MWindow *mwindow;
208         AssetPopup *popup;
209 };
210
211 class AssetMatchAll : public BC_MenuItem
212 {
213 public:
214         AssetMatchAll(MWindow *mwindow, AssetPopup *popup);
215
216         int handle_event();
217
218         MWindow *mwindow;
219         AssetPopup *popup;
220 };
221
222 class AssetPopupProjectRemove : public BC_MenuItem
223 {
224 public:
225         AssetPopupProjectRemove(MWindow *mwindow, AssetPopup *popup);
226         ~AssetPopupProjectRemove();
227
228         int handle_event();
229
230         MWindow *mwindow;
231         AssetPopup *popup;
232 };
233
234 class AssetPopupDiskRemove : public BC_MenuItem
235 {
236 public:
237         AssetPopupDiskRemove(MWindow *mwindow, AssetPopup *popup);
238         ~AssetPopupDiskRemove();
239
240         int handle_event();
241
242         MWindow *mwindow;
243         AssetPopup *popup;
244 };
245
246 class AssetListMenu : public BC_PopupMenu
247 {
248 public:
249         AssetListMenu(MWindow *mwindow, AWindowGUI *gui);
250         ~AssetListMenu();
251
252         void create_objects();
253         void update_titles(int shots);
254
255         MWindow *mwindow;
256         AWindowGUI *gui;
257         AssetPopupLoadFile *load_file;
258         AWindowListFormat *format;
259         AssetSnapshot *asset_snapshot;
260         AssetGrabshot *asset_grabshot;
261         AssetSelectUsed *select_used;
262         int shots_displayed;
263 };
264
265 class AssetPopupLoadFile : public BC_MenuItem
266 {
267 public:
268         AssetPopupLoadFile(MWindow *mwindow, AWindowGUI *gui);
269         ~AssetPopupLoadFile();
270
271         int handle_event();
272
273         MWindow *mwindow;
274         AWindowGUI *gui;
275 };
276
277 class AssetListCopy : public BC_MenuItem
278 {
279 public:
280         AssetListCopy(MWindow *mwindow, AWindowGUI *gui);
281         ~AssetListCopy();
282
283         int handle_event();
284
285         MWindow *mwindow;
286         AWindowGUI *gui;
287         AssetCopyDialog *copy_dialog;
288 };
289
290 class AssetCopyDialog : public BC_DialogThread
291 {
292 public:
293         AssetCopyDialog(AssetListCopy *copy);
294         ~AssetCopyDialog();
295
296         void start(char *text, int x, int y);
297         BC_Window* new_gui();
298         void handle_done_event(int result);
299         void handle_close_event(int result);
300
301         char *text;
302         int x, y;
303         AssetListCopy *copy;
304         AssetCopyWindow *copy_window;
305 };
306
307 class AssetCopyWindow : public BC_Window
308 {
309 public:
310         AssetCopyWindow(AssetCopyDialog *copy_dialog);
311         ~AssetCopyWindow();
312
313         void create_objects();
314         int resize_event(int w, int h);
315
316         AssetCopyDialog *copy_dialog;
317         BC_ScrollTextBox *file_list;
318 };
319
320 class AssetListPaste : public BC_MenuItem
321 {
322 public:
323         AssetListPaste(MWindow *mwindow, AWindowGUI *gui);
324         ~AssetListPaste();
325
326         int handle_event();
327
328         MWindow *mwindow;
329         AWindowGUI *gui;
330         AssetPasteDialog *paste_dialog;
331 };
332
333 class AssetPasteDialog : public BC_DialogThread
334 {
335 public:
336         AssetPasteDialog(AssetListPaste *paste);
337         ~AssetPasteDialog();
338
339         BC_Window* new_gui();
340         void handle_done_event(int result);
341         void handle_close_event(int result);
342         void start(int x, int y);
343
344         AssetListPaste *paste;
345         AssetPasteWindow *paste_window;
346         int x, y;
347 };
348
349 class AssetPasteWindow : public BC_Window
350 {
351 public:
352         AssetPasteWindow(AssetPasteDialog *paste_dialog);
353         ~AssetPasteWindow();
354
355         void create_objects();
356         int resize_event(int w, int h);
357
358         AssetPasteDialog *paste_dialog;
359         BC_ScrollTextBox *file_list;
360 };
361
362 class AssetSnapshot : public BC_MenuItem
363 {
364 public:
365         AssetSnapshot(MWindow *mwindow, AssetListMenu *asset_list_menu);
366         ~AssetSnapshot();
367
368         MWindow *mwindow;
369         AssetListMenu *asset_list_menu;
370 };
371
372 class SnapshotSubMenu : public BC_SubMenu
373 {
374 public:
375         SnapshotSubMenu(AssetSnapshot *asset_snapshot);
376         ~SnapshotSubMenu();
377
378         AssetSnapshot *asset_snapshot;
379 };
380
381 class SnapshotMenuItem : public BC_MenuItem
382 {
383 public:
384         SnapshotMenuItem(SnapshotSubMenu *submenu, const char *text, int mode);
385         ~SnapshotMenuItem();
386
387         int handle_event();
388         SnapshotSubMenu *submenu;
389         int mode;
390 };
391
392
393 class AssetGrabshot : public BC_MenuItem
394 {
395 public:
396         AssetGrabshot(MWindow *mwindow, AssetListMenu *asset_list_menu);
397         ~AssetGrabshot();
398
399         MWindow *mwindow;
400         AssetListMenu *asset_list_menu;
401 };
402
403 class GrabshotSubMenu : public BC_SubMenu
404 {
405 public:
406         GrabshotSubMenu(AssetGrabshot *asset_grabshot);
407         ~GrabshotSubMenu();
408
409         AssetGrabshot *asset_grabshot;
410 };
411
412 class GrabshotMenuItem : public BC_MenuItem
413 {
414 public:
415         GrabshotMenuItem(GrabshotSubMenu *submenu, const char *text, int mode);
416         ~GrabshotMenuItem();
417
418         int handle_event();
419         GrabshotSubMenu *submenu;
420         int mode;
421         GrabshotThread *grab_thread;
422 };
423
424 class GrabshotThread : public Thread
425 {
426 public:
427         GrabshotThread(MWindow* mwindow);
428         ~GrabshotThread();
429
430         MWindow *mwindow;
431         GrabshotPopup *popup;
432         BC_Popup *edge[4];
433         int done;
434
435         void start(GrabshotMenuItem *menu_item);
436         void run();
437 };
438
439 class GrabshotPopup : public BC_Popup
440 {
441 public:
442         GrabshotPopup(GrabshotThread *grab_thread, int mode);
443         ~GrabshotPopup();
444         int grab_event(XEvent *event);
445         void draw_selection(int invert);
446         void update();
447
448         GrabshotThread *grab_thread;
449         int mode;
450         int dragging;
451         int grab_color;
452         int x0, y0, x1, y1;
453         int lx0, ly0, lx1, ly1;
454 };
455
456 #endif