add binfolder path relative filters, fix gbrp color model, vwdw timebar tweaks, title...
[goodguy/history.git] / cinelerra-5.1 / guicast / bclistbox.h
index 66d13255f86bb2b59bd7782586923dcd127104de..ce867ef88ecc196efd0dfd3b6d9f2c79a881a11f 100644 (file)
 #include "bcscrollbar.h"
 #include "bcsubwindow.h"
 #include "bctoggle.h"
-#include "colors.h"
+#include "bccolors.h"
 
 #define BCPOPUPLISTBOX_W 25
 #define BCPOPUPLISTBOX_H 25
 
+class BC_ListBoxYScroll;
+class BC_ListBoxXScroll;
+class BC_ListBoxToggle;
+class BC_ListBox;
 
 #define MIN_COLUMN_WIDTH 10
 
 
 class BC_ListBoxYScroll : public BC_ScrollBar
 {
+       BC_ListBox *listbox;
 public:
-       BC_ListBoxYScroll(BC_ListBox *listbox,
-                         int total_height,
-                                         int view_height,
-                         int position);
+       BC_ListBoxYScroll(BC_ListBox *listbox);
        ~BC_ListBoxYScroll();
        int handle_event();
-private:
-       BC_ListBox *listbox;
 };
 
 class BC_ListBoxXScroll : public BC_ScrollBar
 {
+       BC_ListBox *listbox;
 public:
-       BC_ListBoxXScroll(BC_ListBox *listbox,
-                         int total_width,
-                                         int view_width,
-                         int position);
+       BC_ListBoxXScroll(BC_ListBox *listbox);
        ~BC_ListBoxXScroll();
        int handle_event();
-private:
-       BC_ListBox *listbox;
 };
 
 class BC_ListBoxToggle
 {
 public:
-       BC_ListBoxToggle(BC_ListBox *listbox,
-               BC_ListBoxItem *item,
-               int x,
-               int y);
+       BC_ListBoxToggle(BC_ListBox *listbox, BC_ListBoxItem *item, int x, int y);
 
        int cursor_motion_event(int *redraw_toggles);
        int cursor_leave_event(int *redraw_toggles);
@@ -96,11 +89,11 @@ public:
 
 class BC_ListBox : public BC_SubWindow
 {
+       friend class BC_ListBoxYScroll;
+       friend class BC_ListBoxXScroll;
+       friend class BC_ListBoxToggle;
 public:
-       BC_ListBox(int x,
-               int y,
-               int w,
-               int h,
+       BC_ListBox(int x, int y, int w, int h,
                int display_format,                   // Display text list or icons
                ArrayList<BC_ListBoxItem*> *data = 0, // Each column has an ArrayList of BC_ListBoxItems.
                const char **column_titles = 0,             // Titles for columns.  Set to 0 for no titles
@@ -113,8 +106,6 @@ public:
                int allow_drag = 0);                  // Allow user to drag icons around
        virtual ~BC_ListBox();
 
-       friend class BC_ListBoxToggle;
-
        int initialize();
 
 // User event handler for new selections
@@ -132,6 +123,8 @@ public:
        virtual int sort_order_event() { return 0; };
 // Column moved
        virtual int move_column_event() { return 0; };
+// item highlight changed
+       virtual int mouse_over_event(int no) { return 0; }
 
        int enable();
        int disable();
@@ -206,18 +199,17 @@ public:
 // Must be called in the constructor.
        void set_use_button(int value);
        void set_is_suggestions(int value);
-
+       void set_scroll_repeat();
+       void unset_scroll_repeat();
+       int scroll_repeat;
 
 // change the contents
        int update(ArrayList<BC_ListBoxItem*> *data,
-                                               const char **column_titles,
-                                               int *column_widths,
-                                               int columns,
-                                               int xposition = 0,
-                                               int yposition = 0,
-                                               int highlighted_number = -1,  // Flat index of item cursor is over
-                                               int recalc_positions = 0,     // set all autoplace flags to 1
-                                               int draw = 1);
+               const char **column_titles, int *column_widths, int columns,
+               int xposition = 0, int yposition = 0,
+               int highlighted_number = -1,  // Flat index of item cursor is over
+               int recalc_positions = 0,     // set all autoplace flags to 1
+               int draw = 1);
        void center_selection();
        void update_format(int display_format, int redraw);
        int get_format();
@@ -246,6 +238,7 @@ public:
        int get_xscroll_x();
        int get_xscroll_y();
        int get_xscroll_width();
+       void set_scroll_stretch(int xv, int yv);
        int get_column_offset(int column);
        int get_column_width(int column, int clamp_right = 0);
        int get_title_h();
@@ -264,7 +257,6 @@ public:
        int get_first_visible() { return first_in_view; }
        int get_last_visible() { return last_in_view; }
 
-
        enum
        {
                SORT_ASCENDING,
@@ -326,6 +318,12 @@ public:
                int indent /* = 0 */,
                int master_column);
 
+       int get_icon_x(BC_ListBoxItem *item);
+       int get_icon_y(BC_ListBoxItem *item);
+       int get_icon_w(BC_ListBoxItem *item);
+       int get_icon_h(BC_ListBoxItem *item);
+       int get_text_w(BC_ListBoxItem *item);
+       int get_text_h(BC_ListBoxItem *item);
        int get_item_x(BC_ListBoxItem *item);
        int get_item_y(BC_ListBoxItem *item);
        int get_item_w(BC_ListBoxItem *item);
@@ -333,6 +331,8 @@ public:
 
 // Draw the list items
        int draw_items(int flash, int bg_draw=0);
+       int is_highlighted();
+       int get_cursor_item();
 
 private:
        void delete_columns();
@@ -413,10 +413,6 @@ private:
        int get_items_height(ArrayList<BC_ListBoxItem*> *data,
                int columns,
                int *result = 0);
-       int get_icon_w(BC_ListBoxItem *item);
-       int get_icon_h(BC_ListBoxItem *item);
-       int get_text_w(BC_ListBoxItem *item);
-       int get_text_h(BC_ListBoxItem *item);
        int get_baseline(BC_ListBoxItem *item);
        int get_item_highlight(ArrayList<BC_ListBoxItem*> *data, int column, int item);
        int get_item_color(ArrayList<BC_ListBoxItem*> *data, int column, int item);
@@ -517,7 +513,7 @@ private:
 // Size of the popup if there is one
        char **column_titles;
        int *column_width;
-       int default_column_width[1];
+       int default_column_width[32];
        int columns;
        int master_column;
        int search_column;
@@ -531,6 +527,7 @@ private:
 // In BCLISTBOX_SELECT mode determines the value to set items to
        int new_value;
        int need_xscroll, need_yscroll;
+       int xscroll_orientation, yscroll_orientation;
 // Move items during drag operation of text items.
        int process_drag;
        int allow_drag;
@@ -597,6 +594,7 @@ private:
 // More state variables
        int button_highlighted;
        int list_highlighted;
+       int packed_icons;
 // item cursor is over.  May not exist in tables.
 // Must be an index since this is needed to change the database.
        int highlighted_item;