00001 #ifndef AWINDOWGUI_H
00002 #define AWINDOWGUI_H
00003
00004 #include "arraylist.h"
00005 #include "assetpopup.inc"
00006 #include "asset.inc"
00007 #include "assets.inc"
00008 #include "awindow.inc"
00009 #include "awindowmenu.inc"
00010 #include "edl.inc"
00011 #include "guicast.h"
00012 #include "labels.h"
00013 #include "mwindow.inc"
00014 #include "newfolder.inc"
00015 #include "pluginserver.inc"
00016
00017 class AWindowAssets;
00018 class AWindowFolders;
00019 class AWindowNewFolder;
00020 class AWindowDeleteFolder;
00021 class AWindowRenameFolder;
00022 class AWindowDeleteDisk;
00023 class AWindowDeleteProject;
00024 class AWindowDivider;
00025 class AWindowInfo;
00026 class AWindowRedrawIndex;
00027 class AWindowPaste;
00028 class AWindowAppend;
00029 class AWindowView;
00030
00031 class LabelPopup;
00032 class LabelPopupEdit;
00033
00034 class AWindowGUI;
00035
00036 class AssetPicon : public BC_ListBoxItem
00037 {
00038 public:
00039 AssetPicon(MWindow *mwindow, AWindowGUI *gui, Asset *asset);
00040 AssetPicon(MWindow *mwindow, AWindowGUI *gui, EDL *edl);
00041 AssetPicon(MWindow *mwindow, AWindowGUI *gui, PluginServer *plugin);
00042 AssetPicon(MWindow *mwindow, AWindowGUI *gui, Label *plugin);
00043 AssetPicon(MWindow *mwindow, AWindowGUI *gui, char *folder);
00044 virtual ~AssetPicon();
00045
00046 void create_objects();
00047 void reset();
00048
00049 MWindow *mwindow;
00050 AWindowGUI *gui;
00051 BC_Pixmap *icon;
00052 VFrame *icon_vframe;
00053
00054 int id;
00055
00056
00057
00058 Asset *asset;
00059
00060 EDL *edl;
00061
00062 int in_use;
00063
00064
00065 int persistent;
00066 PluginServer *plugin;
00067 Label *label;
00068 };
00069
00070
00071 class AWindowGUI : public BC_Window
00072 {
00073 public:
00074 AWindowGUI(MWindow *mwindow, AWindow *awindow);
00075 ~AWindowGUI();
00076
00077 int create_objects();
00078 int resize_event(int w, int h);
00079 int translation_event();
00080 int close_event();
00081 int keypress_event();
00082 void async_update_assets();
00083 void sort_assets();
00084 void reposition_objects();
00085 int current_folder_number();
00086
00087 int drag_motion();
00088 int drag_stop();
00089
00090 void collect_assets();
00091 void create_persistent_folder(ArrayList<BC_ListBoxItem*> *output,
00092 int do_audio,
00093 int do_video,
00094 int is_realtime,
00095 int is_transition);
00096 void create_label_folder();
00097 void copy_picons(ArrayList<BC_ListBoxItem*> *dst,
00098 ArrayList<BC_ListBoxItem*> *src,
00099 char *folder);
00100 void sort_picons(ArrayList<BC_ListBoxItem*> *src,
00101 char *folder);
00102
00103 Asset* selected_asset();
00104 PluginServer* selected_plugin();
00105 AssetPicon* selected_folder();
00106
00107 MWindow *mwindow;
00108 AWindow *awindow;
00109
00110 AWindowAssets *asset_list;
00111 AWindowFolders *folder_list;
00112 AWindowDivider *divider;
00113
00114
00115
00116
00117 ArrayList<BC_ListBoxItem*> assets;
00118 ArrayList<BC_ListBoxItem*> folders;
00119 ArrayList<BC_ListBoxItem*> aeffects;
00120 ArrayList<BC_ListBoxItem*> veffects;
00121 ArrayList<BC_ListBoxItem*> atransitions;
00122 ArrayList<BC_ListBoxItem*> vtransitions;
00123 ArrayList<BC_ListBoxItem*> labellist;
00124
00125
00126
00127 ArrayList<BC_ListBoxItem*> displayed_assets[2];
00128
00129 char *asset_titles[ASSET_COLUMNS];
00130
00131
00132 BC_Pixmap *folder_icon;
00133 BC_Pixmap *file_icon;
00134 BC_Pixmap *audio_icon;
00135 BC_Pixmap *video_icon;
00136 BC_Pixmap *clip_icon;
00137 NewFolderThread *newfolder_thread;
00138
00139
00140 AssetPopup *asset_menu;
00141 LabelPopup *label_menu;
00142 AssetListMenu *assetlist_menu;
00143 FolderListMenu *folderlist_menu;
00144
00145 VFrame *temp_picon;
00146
00147 int allow_iconlisting;
00148
00149
00150 int create_custom_xatoms();
00151
00152 virtual int recieve_custom_xatoms(xatom_event *event);
00153
00154
00155
00156 private:
00157 void update_folder_list();
00158 void update_asset_list();
00159 void filter_displayed_assets();
00160 Atom UpdateAssetsXAtom;
00161 void update_assets();
00162
00163 };
00164
00165 class AWindowAssets : public BC_ListBox
00166 {
00167 public:
00168 AWindowAssets(MWindow *mwindow, AWindowGUI *gui, int x, int y, int w, int h);
00169 ~AWindowAssets();
00170
00171 int handle_event();
00172 int selection_changed();
00173 void draw_background();
00174 int drag_start_event();
00175 int drag_motion_event();
00176 int drag_stop_event();
00177 int button_press_event();
00178 int column_resize_event();
00179
00180 MWindow *mwindow;
00181 AWindowGUI *gui;
00182 };
00183
00184 class AWindowDivider : public BC_SubWindow
00185 {
00186 public:
00187 AWindowDivider(MWindow *mwindow, AWindowGUI *gui, int x, int y, int w, int h);
00188 ~AWindowDivider();
00189
00190 int button_press_event();
00191 int cursor_motion_event();
00192 int button_release_event();
00193
00194 MWindow *mwindow;
00195 AWindowGUI *gui;
00196 };
00197
00198 class AWindowFolders : public BC_ListBox
00199 {
00200 public:
00201 AWindowFolders(MWindow *mwindow, AWindowGUI *gui, int x, int y, int w, int h);
00202 ~AWindowFolders();
00203
00204 int selection_changed();
00205 int button_press_event();
00206
00207 MWindow *mwindow;
00208 AWindowGUI *gui;
00209 };
00210
00211 class AWindowNewFolder : public BC_Button
00212 {
00213 public:
00214 AWindowNewFolder(MWindow *mwindow, AWindowGUI *gui, int x, int y);
00215 int handle_event();
00216 MWindow *mwindow;
00217 AWindowGUI *gui;
00218 int x, y;
00219 };
00220
00221 class AWindowDeleteFolder : public BC_Button
00222 {
00223 public:
00224 AWindowDeleteFolder(MWindow *mwindow, AWindowGUI *gui, int x, int y);
00225 int handle_event();
00226 MWindow *mwindow;
00227 AWindowGUI *gui;
00228 int x, y;
00229 };
00230
00231 class AWindowRenameFolder : public BC_Button
00232 {
00233 public:
00234 AWindowRenameFolder(MWindow *mwindow, AWindowGUI *gui, int x, int y);
00235 int handle_event();
00236 MWindow *mwindow;
00237 AWindowGUI *gui;
00238 int x, y;
00239 };
00240
00241 class AWindowDeleteDisk : public BC_Button
00242 {
00243 public:
00244 AWindowDeleteDisk(MWindow *mwindow, AWindowGUI *gui, int x, int y);
00245 int handle_event();
00246 MWindow *mwindow;
00247 AWindowGUI *gui;
00248 int x, y;
00249 };
00250
00251 class AWindowDeleteProject : public BC_Button
00252 {
00253 public:
00254 AWindowDeleteProject(MWindow *mwindow, AWindowGUI *gui, int x, int y);
00255 int handle_event();
00256 MWindow *mwindow;
00257 AWindowGUI *gui;
00258 int x, y;
00259 };
00260
00261 class AWindowInfo : public BC_Button
00262 {
00263 public:
00264 AWindowInfo(MWindow *mwindow, AWindowGUI *gui, int x, int y);
00265 int handle_event();
00266 MWindow *mwindow;
00267 AWindowGUI *gui;
00268 int x, y;
00269 };
00270
00271 class AWindowRedrawIndex : public BC_Button
00272 {
00273 public:
00274 AWindowRedrawIndex(MWindow *mwindow, AWindowGUI *gui, int x, int y);
00275 int handle_event();
00276 MWindow *mwindow;
00277 AWindowGUI *gui;
00278 int x, y;
00279 };
00280
00281 class AWindowPaste : public BC_Button
00282 {
00283 public:
00284 AWindowPaste(MWindow *mwindow, AWindowGUI *gui, int x, int y);
00285 int handle_event();
00286 MWindow *mwindow;
00287 AWindowGUI *gui;
00288 int x, y;
00289 };
00290
00291 class AWindowAppend : public BC_Button
00292 {
00293 public:
00294 AWindowAppend(MWindow *mwindow, AWindowGUI *gui, int x, int y);
00295 int handle_event();
00296 MWindow *mwindow;
00297 AWindowGUI *gui;
00298 int x, y;
00299 };
00300
00301 class AWindowView : public BC_Button
00302 {
00303 public:
00304 AWindowView(MWindow *mwindow, AWindowGUI *gui, int x, int y);
00305 int handle_event();
00306 MWindow *mwindow;
00307 AWindowGUI *gui;
00308 int x, y;
00309 };
00310
00311 class LabelPopup : public BC_PopupMenu
00312 {
00313 public:
00314 LabelPopup(MWindow *mwindow, AWindowGUI *gui);
00315 ~LabelPopup();
00316
00317 void create_objects();
00318
00319 int update();
00320
00321 MWindow *mwindow;
00322 AWindowGUI *gui;
00323
00324 LabelPopupEdit *editlabel;
00325 };
00326
00327 class LabelPopupEdit : public BC_MenuItem
00328 {
00329 public:
00330 LabelPopupEdit(MWindow *mwindow, LabelPopup *popup);
00331 ~LabelPopupEdit();
00332
00333 int handle_event();
00334
00335 MWindow *mwindow;
00336 LabelPopup *popup;
00337 };
00338
00339 #endif