drag edit contraints relaxed for ripples, cwdw gui/tool deadlock fix, vpatchgui fader...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / awindowgui.h
index 99db0753ceaa9e0f7eec56c016a9c73e68b574d3..a378c798f23a9426494e7391e4e48db3b97533c4 100644 (file)
@@ -44,6 +44,7 @@
 #include "mwindow.inc"
 #include "mutex.inc"
 #include "pluginserver.inc"
+#include "preferences.inc"
 #include "proxypopup.inc"
 #include "renderengine.inc"
 #include "samples.inc"
 // in percent view_h
 #define VIEW_POPUP_BAR_H 15
 
-#define ASSET_DRAW_IMAGE 0
-#define ASSET_DRAW_MEDIA_MAP 1
+#define ASSET_VIEW_NONE 0
+#define ASSET_VIEW_ICON 1
+#define ASSET_VIEW_MEDIA 2
+#define ASSET_VIEW_MEDIA_MAP 3
+#define ASSET_VIEW_FULL 4
+
+#define AVICON_FULL_PLAY   0
+#define AVICON_MOUSE_OVER  1
+#define AVICON_SRC_TARGET  2
+#define AVICON_NO_PLAY     3
+#define AVICON_PLAY_MODES  4
 
 class AWindowFolderItem : public BC_ListBoxItem
 {
@@ -121,6 +131,9 @@ public:
        int in_use;
        int persistent;
        time_t comments_time;
+       int comments_ffmt;
+       double comments_rate;
+       const char *comments_type;
        double sort_key;
        PluginServer *plugin;
        Label *label;
@@ -169,12 +182,14 @@ class AssetViewPopup : public ViewPopup
 {
 public:
        AssetViewPopup(VIconThread *vt, int draw_mode,
-               VFrame *frame, int x, int y, int w, int h);
+                       int x, int y, int w, int h);
        ~AssetViewPopup();
 
+       int reposition_window(int x, int y, int w, int h);
        int button_press_event();
        int button_release_event();
        int cursor_motion_event();
+       int keypress_event();
 
        void draw_vframe(VFrame *frame);
 
@@ -186,13 +201,20 @@ public:
 class AssetVIconThread : public VIconThread
 {
 public:
-       AssetVIconThread(AWindowAssets *asset_list);
+       AssetVIconThread(AWindowGUI *gui, Preferences *preferences);
        ~AssetVIconThread();
 
-       void set_view_popup(AssetVIcon *vicon, int draw_mode=-1);
-       ViewPopup *new_view_window(VFrame *frame);
+       void set_view_popup(AssetVIcon *v, int draw_mode);
+       void set_view_popup(AssetVIcon *v);
+       ViewPopup *new_view_window(ViewPopup *popup);
+       void drawing_started();
+       void drawing_stopped();
+       void close_view_popup();
 
+       AWindowGUI *gui;
        int draw_mode;
+       int vicon_cmodel;
+       Mutex *draw_lock;
 };
 
 
@@ -264,8 +286,9 @@ public:
        bool protected_pixmap(BC_Pixmap *pixmap);
        int save_defaults(BC_Hash *defaults);
        int load_defaults(BC_Hash *defaults);
-       void start_vicon_drawing();
-       void stop_vicon_drawing();
+       int start_vicon_drawing();
+       int stop_vicon_drawing();
+       void close_view_popup();
        void update_picon(Indexable *indexable);
        int cycle_assetlist_format();
 
@@ -349,7 +372,7 @@ public:
 
        AVIconDrawing *avicon_drawing;
        int avicon_w, avicon_h;
-       int vicon_drawing;
+       int vicon_drawing, play_off;
        int allow_iconlisting;
 
 // Create custom atoms to be used for async messages between windows
@@ -383,7 +406,8 @@ public:
        int drag_stop_event();
        int button_press_event();
        int column_resize_event();
-       int focus_in_event();
+       int cursor_enter_event();
+       int cursor_leave_event();
        int focus_out_event();
        void update_vicon_area();
        int mouse_over_event(int no);
@@ -558,16 +582,28 @@ public:
        int idx;
 };
 
-class AVIconDrawing : public BC_Toggle
+class AVIconDrawingItem : public BC_MenuItem
 {
 public:
-       AWindowGUI *agui;
-
+       AVIconDrawingItem(AVIconDrawing *avicon, const char *text, int id);
        int handle_event();
-       static void calculate_geometry(AWindowGUI *agui, VFrame **images, int *ww, int *hh);
 
-       AVIconDrawing(AWindowGUI *agui, int x, int y, VFrame **images);
+       AVIconDrawing *avicon;
+       int id;
+};
+
+class AVIconDrawing : public BC_PopupMenu
+{
+public:
+       AVIconDrawing(AWindowGUI *agui, int x, int y, int w, const char *text);
        ~AVIconDrawing();
+
+       static const char *avicon_names[];
+       void create_objects();
+       int button_press_event();
+       int draw_face(int dx, int color);
+
+       AWindowGUI *agui;
 };