r870: Merge 2.1:
[cinelerra_cv.git] / cinelerra / awindowgui.h
blob1527c4005a8cc1b2c3a80159f100060b8f66b2a0
1 #ifndef AWINDOWGUI_H
2 #define AWINDOWGUI_H
4 #include "arraylist.h"
5 #include "assetpopup.inc"
6 #include "asset.inc"
7 #include "assets.inc"
8 #include "awindow.inc"
9 #include "awindowmenu.inc"
10 #include "edl.inc"
11 #include "guicast.h"
12 #include "labels.h"
13 #include "mwindow.inc"
14 #include "newfolder.inc"
15 #include "pluginserver.inc"
17 class AWindowAssets;
18 class AWindowFolders;
19 class AWindowNewFolder;
20 class AWindowDeleteFolder;
21 class AWindowRenameFolder;
22 class AWindowDeleteDisk;
23 class AWindowDeleteProject;
24 class AWindowDivider;
25 class AWindowInfo;
26 class AWindowRedrawIndex;
27 class AWindowPaste;
28 class AWindowAppend;
29 class AWindowView;
31 class LabelPopup;
32 class LabelPopupEdit;
34 class AWindowGUI;
36 class AssetPicon : public BC_ListBoxItem
38 public:
39 AssetPicon(MWindow *mwindow, AWindowGUI *gui, Asset *asset);
40 AssetPicon(MWindow *mwindow, AWindowGUI *gui, EDL *edl);
41 AssetPicon(MWindow *mwindow, AWindowGUI *gui, PluginServer *plugin);
42 AssetPicon(MWindow *mwindow, AWindowGUI *gui, Label *plugin);
43 AssetPicon(MWindow *mwindow, AWindowGUI *gui, char *folder);
44 virtual ~AssetPicon();
46 void create_objects();
47 void reset();
49 MWindow *mwindow;
50 AWindowGUI *gui;
51 BC_Pixmap *icon;
52 VFrame *icon_vframe;
53 // ID of thing pointed to
54 int id;
56 // Check ID first. Update these next before dereferencing
57 // Asset if asset
58 Asset *asset;
59 // EDL if clip
60 EDL *edl;
62 int in_use;
65 int persistent;
66 PluginServer *plugin;
67 Label *label;
71 class AWindowGUI : public BC_Window
73 public:
74 AWindowGUI(MWindow *mwindow, AWindow *awindow);
75 ~AWindowGUI();
77 int create_objects();
78 int resize_event(int w, int h);
79 int translation_event();
80 int close_event();
81 int keypress_event();
82 void update_assets();
83 void sort_assets();
84 void reposition_objects();
85 int current_folder_number();
86 // Call back for MWindow entry point
87 int drag_motion();
88 int drag_stop();
89 // Collect items into the drag vectors of MainSession
90 void collect_assets();
91 void create_persistent_folder(ArrayList<BC_ListBoxItem*> *output,
92 int do_audio,
93 int do_video,
94 int is_realtime,
95 int is_transition);
96 void create_label_folder();
97 void copy_picons(ArrayList<BC_ListBoxItem*> *dst,
98 ArrayList<BC_ListBoxItem*> *src,
99 char *folder);
100 void sort_picons(ArrayList<BC_ListBoxItem*> *src,
101 char *folder);
102 // Return the selected asset in asset_list
103 Asset* selected_asset();
104 PluginServer* selected_plugin();
105 AssetPicon* selected_folder();
107 MWindow *mwindow;
108 AWindow *awindow;
110 AWindowAssets *asset_list;
111 AWindowFolders *folder_list;
112 AWindowDivider *divider;
114 // Store data to speed up responses
115 // Persistant data for listboxes
116 // All assets in current EDL
117 ArrayList<BC_ListBoxItem*> assets;
118 ArrayList<BC_ListBoxItem*> folders;
119 ArrayList<BC_ListBoxItem*> aeffects;
120 ArrayList<BC_ListBoxItem*> veffects;
121 ArrayList<BC_ListBoxItem*> atransitions;
122 ArrayList<BC_ListBoxItem*> vtransitions;
123 ArrayList<BC_ListBoxItem*> labellist;
125 // Currently displayed data for listboxes
126 // Currently displayed assets + comments
127 ArrayList<BC_ListBoxItem*> displayed_assets[2];
129 char *asset_titles[ASSET_COLUMNS];
131 // Persistent icons
132 BC_Pixmap *folder_icon;
133 BC_Pixmap *file_icon;
134 BC_Pixmap *audio_icon;
135 BC_Pixmap *video_icon;
136 BC_Pixmap *clip_icon;
137 NewFolderThread *newfolder_thread;
139 // Popup menus
140 AssetPopup *asset_menu;
141 LabelPopup *label_menu;
142 AssetListMenu *assetlist_menu;
143 FolderListMenu *folderlist_menu;
144 // Temporary for reading picons from files
145 VFrame *temp_picon;
147 int allow_iconlisting;
148 private:
149 void update_folder_list();
150 void update_asset_list();
151 void filter_displayed_assets();
154 class AWindowAssets : public BC_ListBox
156 public:
157 AWindowAssets(MWindow *mwindow, AWindowGUI *gui, int x, int y, int w, int h);
158 ~AWindowAssets();
160 int handle_event();
161 int selection_changed();
162 void draw_background();
163 int drag_start_event();
164 int drag_motion_event();
165 int drag_stop_event();
166 int button_press_event();
167 int column_resize_event();
169 MWindow *mwindow;
170 AWindowGUI *gui;
173 class AWindowDivider : public BC_SubWindow
175 public:
176 AWindowDivider(MWindow *mwindow, AWindowGUI *gui, int x, int y, int w, int h);
177 ~AWindowDivider();
179 int button_press_event();
180 int cursor_motion_event();
181 int button_release_event();
183 MWindow *mwindow;
184 AWindowGUI *gui;
187 class AWindowFolders : public BC_ListBox
189 public:
190 AWindowFolders(MWindow *mwindow, AWindowGUI *gui, int x, int y, int w, int h);
191 ~AWindowFolders();
193 int selection_changed();
194 int button_press_event();
196 MWindow *mwindow;
197 AWindowGUI *gui;
200 class AWindowNewFolder : public BC_Button
202 public:
203 AWindowNewFolder(MWindow *mwindow, AWindowGUI *gui, int x, int y);
204 int handle_event();
205 MWindow *mwindow;
206 AWindowGUI *gui;
207 int x, y;
210 class AWindowDeleteFolder : public BC_Button
212 public:
213 AWindowDeleteFolder(MWindow *mwindow, AWindowGUI *gui, int x, int y);
214 int handle_event();
215 MWindow *mwindow;
216 AWindowGUI *gui;
217 int x, y;
220 class AWindowRenameFolder : public BC_Button
222 public:
223 AWindowRenameFolder(MWindow *mwindow, AWindowGUI *gui, int x, int y);
224 int handle_event();
225 MWindow *mwindow;
226 AWindowGUI *gui;
227 int x, y;
230 class AWindowDeleteDisk : public BC_Button
232 public:
233 AWindowDeleteDisk(MWindow *mwindow, AWindowGUI *gui, int x, int y);
234 int handle_event();
235 MWindow *mwindow;
236 AWindowGUI *gui;
237 int x, y;
240 class AWindowDeleteProject : public BC_Button
242 public:
243 AWindowDeleteProject(MWindow *mwindow, AWindowGUI *gui, int x, int y);
244 int handle_event();
245 MWindow *mwindow;
246 AWindowGUI *gui;
247 int x, y;
250 class AWindowInfo : public BC_Button
252 public:
253 AWindowInfo(MWindow *mwindow, AWindowGUI *gui, int x, int y);
254 int handle_event();
255 MWindow *mwindow;
256 AWindowGUI *gui;
257 int x, y;
260 class AWindowRedrawIndex : public BC_Button
262 public:
263 AWindowRedrawIndex(MWindow *mwindow, AWindowGUI *gui, int x, int y);
264 int handle_event();
265 MWindow *mwindow;
266 AWindowGUI *gui;
267 int x, y;
270 class AWindowPaste : public BC_Button
272 public:
273 AWindowPaste(MWindow *mwindow, AWindowGUI *gui, int x, int y);
274 int handle_event();
275 MWindow *mwindow;
276 AWindowGUI *gui;
277 int x, y;
280 class AWindowAppend : public BC_Button
282 public:
283 AWindowAppend(MWindow *mwindow, AWindowGUI *gui, int x, int y);
284 int handle_event();
285 MWindow *mwindow;
286 AWindowGUI *gui;
287 int x, y;
290 class AWindowView : public BC_Button
292 public:
293 AWindowView(MWindow *mwindow, AWindowGUI *gui, int x, int y);
294 int handle_event();
295 MWindow *mwindow;
296 AWindowGUI *gui;
297 int x, y;
300 class LabelPopup : public BC_PopupMenu
302 public:
303 LabelPopup(MWindow *mwindow, AWindowGUI *gui);
304 ~LabelPopup();
306 void create_objects();
307 // Set mainsession with the current selections
308 int update();
310 MWindow *mwindow;
311 AWindowGUI *gui;
313 LabelPopupEdit *editlabel;
316 class LabelPopupEdit : public BC_MenuItem
318 public:
319 LabelPopupEdit(MWindow *mwindow, LabelPopup *popup);
320 ~LabelPopupEdit();
322 int handle_event();
324 MWindow *mwindow;
325 LabelPopup *popup;
328 #endif