X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fawindowgui.h;h=d135145555cd4bb8552cea543ff19d37d20ea4ea;hp=4bc256423dd1c67e73bce4e4a5b2aa7639cc7503;hb=HEAD;hpb=86bd203ac1fc29d93f63d13e2979468f06bdc3a2 diff --git a/cinelerra-5.1/cinelerra/awindowgui.h b/cinelerra-5.1/cinelerra/awindowgui.h index 4bc25642..d1351455 100644 --- a/cinelerra-5.1/cinelerra/awindowgui.h +++ b/cinelerra-5.1/cinelerra/awindowgui.h @@ -24,6 +24,7 @@ #include "arraylist.h" #include "bcdialog.h" +#include "binfolder.inc" #include "assetpopup.inc" #include "asset.inc" #include "assets.inc" @@ -40,13 +41,27 @@ #include "labels.h" #include "indexable.inc" #include "mwindow.inc" -#include "newfolder.inc" +#include "mutex.inc" #include "pluginserver.inc" +#include "proxypopup.inc" #include "renderengine.inc" #include "samples.inc" #include "vicon.h" -class AssetPicon : public BC_ListBoxItem +class AWindowFolderItem : public BC_ListBoxItem +{ +public: + AWindowFolderItem(); + AWindowFolderItem(const char *text, int color = -1); + AWindowFolderItem(const char *text, BC_Pixmap *icon, int color = -1); + + AssetPicon *get_picon(); + int matches(const char *text); + + AWindowFolderItem *parent; +}; + +class AssetPicon : public AWindowFolderItem { public: AssetPicon(MWindow *mwindow, AWindowGUI *gui, Indexable *indexable); @@ -54,6 +69,7 @@ public: AssetPicon(MWindow *mwindow, AWindowGUI *gui, PluginServer *plugin); AssetPicon(MWindow *mwindow, AWindowGUI *gui, Label *plugin); AssetPicon(MWindow *mwindow, AWindowGUI *gui, int folder, int persist); + AssetPicon(MWindow *mwindow, AWindowGUI *gui, int folder, const char *title); virtual ~AssetPicon(); void create_objects(); @@ -65,12 +81,17 @@ public: void close_render_engine(); void render_video(int64_t pos, VFrame *vfrm); void render_audio(int64_t pos, Samples **samples, int len); + VFrame *get_vicon_frame(); MWindow *mwindow; AWindowGUI *gui; BC_Pixmap *icon; VFrame *icon_vframe; + VFrame *vicon_frame; int foldernum; +// sublist items if set + AWindowFolderSubItems *sub_items; + // ID of thing pointed to int id; @@ -81,9 +102,9 @@ public: EDL *edl; int in_use; - time_t mtime; - int persistent; + time_t comments_time; + double sort_key; PluginServer *plugin; Label *label; VIcon *vicon; @@ -171,10 +192,9 @@ public: int keypress_event(); void async_update_assets(); // Sends update asset event void update_effects(); - void sort_assets(int use_mtime); + void sort_assets(); void sort_folders(); void reposition_objects(); - static int folder_number(const char *name); // Call back for MWindow entry point int drag_motion(); int drag_stop(); @@ -187,9 +207,8 @@ public: int is_realtime, int is_transition); void create_label_folder(); - void copy_picons(ArrayList *dst, - ArrayList *src, int folder); - void sort_picons(ArrayList *src, int use_mtime=0); + void copy_picons(AssetPicon *picon, ArrayList *src); + void sort_picons(ArrayList *src); // Return the selected asset in asset_list Indexable* selected_asset(); PluginServer* selected_plugin(); @@ -200,6 +219,7 @@ public: void start_vicon_drawing(); void stop_vicon_drawing(); void update_picon(Indexable *indexable); + int cycle_assetlist_format(); VFrame *get_picon(const char *name, const char *plugin_icons); VFrame *get_picon(const char *name); @@ -214,6 +234,7 @@ public: AWindowFolders *folder_list; AWindowDivider *divider; AWindowSearchText *search_text; + Mutex *folder_lock; // Store data to speed up responses // Persistant data for listboxes @@ -258,16 +279,16 @@ public: BC_Pixmap *ff_aud_icon; VFrame *ff_aud_vframe; BC_Pixmap *ff_vid_icon; VFrame *ff_vid_vframe; - NewFolderThread *newfolder_thread; - // Popup menus AssetPopup *asset_menu; ClipPopup *clip_menu; LabelPopup *label_menu; + ProxyPopup *proxy_menu; EffectListMenu *effectlist_menu; AssetListMenu *assetlist_menu; ClipListMenu *cliplist_menu; LabelListMenu *labellist_menu; + ProxyListMenu *proxylist_menu; FolderListMenu *folderlist_menu; AddTools *add_tools; // Temporary for reading picons from files @@ -284,9 +305,11 @@ public: // Create custom atoms to be used for async messages between windows int create_custom_xatoms(); -// Function to overload to recieve customly defined atoms - virtual int recieve_custom_xatoms(xatom_event *event); +// Function to overload to receive customly defined atoms + virtual int receive_custom_xatoms(xatom_event *event); static const char *folder_names[]; + NewFolderThread *new_folder_thread; + ModifyFolderThread *modify_folder_thread; private: void update_folder_list(); @@ -313,6 +336,10 @@ public: int column_resize_event(); int focus_in_event(); int focus_out_event(); + int cursor_enter_event(); + int cursor_leave_event(); + void update_vicon_area(); + int mouse_over_event(int no); MWindow *mwindow; AWindowGUI *gui; @@ -332,6 +359,22 @@ public: AWindowGUI *gui; }; +class AWindowSubFolderNames : public ArrayList +{ +public: + AWindowSubFolderNames() { set_array_delete(); } + ~AWindowSubFolderNames() { remove_all_objects(); } +}; + +class AWindowFolderSubItems : public AWindowFolderItem +{ +public: + AWindowFolderSubItems(AWindowFolderItem *parent, const char *text); + int matches(const char *text); + + AWindowSubFolderNames names; +}; + class AWindowFolders : public BC_ListBox { public: @@ -340,9 +383,13 @@ public: int selection_changed(); int button_press_event(); + int drag_stop(); + int load_expanders(); MWindow *mwindow; AWindowGUI *gui; +// last selection + AWindowFolderItem *last_item0, *last_item1; }; class AWindowSearchTextBox : public BC_TextBox @@ -374,36 +421,6 @@ public: BC_TextBox *text_box; }; -class AWindowNewFolder : public BC_Button -{ -public: - AWindowNewFolder(MWindow *mwindow, AWindowGUI *gui, int x, int y); - int handle_event(); - MWindow *mwindow; - AWindowGUI *gui; - int x, y; -}; - -class AWindowDeleteFolder : public BC_Button -{ -public: - AWindowDeleteFolder(MWindow *mwindow, AWindowGUI *gui, int x, int y); - int handle_event(); - MWindow *mwindow; - AWindowGUI *gui; - int x, y; -}; - -class AWindowRenameFolder : public BC_Button -{ -public: - AWindowRenameFolder(MWindow *mwindow, AWindowGUI *gui, int x, int y); - int handle_event(); - MWindow *mwindow; - AWindowGUI *gui; - int x, y; -}; - class AWindowDeleteDisk : public BC_Button { public: