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