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