remove non-gpl components
[goodguy/history.git] / cinelerra-5.1 / guicast / bctextbox.h
index e681f76fc2de3e66155ad018c8ca72333ed7519b..ffc5c0e429c0ca29d4f4b0d4154b38317a2ca02e 100644 (file)
@@ -23,6 +23,8 @@
 #define BCTEXTBOX_H
 
 #include "bclistbox.h"
+#include "bcmenuitem.h"
+#include "bcpopupmenu.h"
 #include "bcsubwindow.h"
 #include "bctumble.h"
 #include "fonts.h"
@@ -39,7 +41,7 @@ class BC_TextBoxSuggestions;
 class BC_ScrollTextBoxXScroll;
 class BC_ScrollTextBoxYScroll;
 class BC_ScrollTextBoxText;
-
+class BC_TextMenu;
 
 class BC_TextBox : public BC_SubWindow
 {
@@ -50,10 +52,13 @@ class BC_TextBox : public BC_SubWindow
                else ch = -1;
                return ch;
        }
-
+// may be local fixed/dynamic, or shared fixed ref via set_text
        char *text;
+// always local dynamic
        wchar_t *wtext;
 public:
+// size > 0: fixed buffer, size == 0: dynamic buffer
+// size < 0: fixed shared buffer via set_text
        BC_TextBox(int x, int y, int w, int rows, int size, char *text,
                int has_border=1, int font=MEDIUMFONT);
        BC_TextBox(int x, int y, int w, int rows, int size, wchar_t *wtext,
@@ -101,11 +106,14 @@ public:
        int button_release_event();
        int repeat_event(int64_t repeat_id);
        int keypress_event();
+       int selection_clear_event();
        int activate();
        int deactivate();
        const char* get_text();
        const wchar_t* get_wtext();
        void set_text(char *text, int isz);
+       int wdemand(int len);
+       int tdemand(int len);
        int get_text_rows();
 // Set top left of text view
        void set_text_row(int row);
@@ -114,9 +122,15 @@ public:
        int get_text_y();
        void set_text_x(int v);
        void set_text_y(int v);
+       int get_back_color();
+       void set_back_color(int v);
 
        int reposition_window(int x, int y, int w = -1, int rows = -1);
        int uses_text();
+       int cut(int do_update);
+       int copy(int do_update);
+       int paste(int do_update);
+       
        static int calculate_h(BC_WindowBase *gui, int font, int has_border, int rows);
        static int calculate_row_h(int rows, BC_WindowBase *parent_window, int has_border = 1, int font = MEDIUMFONT);
        static int pixels_to_rows(BC_WindowBase *window, int font, int pixels);
@@ -156,6 +170,7 @@ public:
        BC_ScrollTextBoxYScroll *yscroll;
 private:
        int reset_parameters(int rows, int has_border, int font, int size);
+       BC_TextMenu *menu;
        void draw(int flush);
        void draw_border();
        void draw_cursor();
@@ -218,6 +233,7 @@ private:
        ArrayList<BC_ListBoxItem*> *suggestions;
        BC_TextBoxSuggestions *suggestions_popup;
        int suggestion_column;
+       int selection_active;
 };
 
 
@@ -453,7 +469,7 @@ class BC_TumbleTextBoxText : public BC_TextBox
 {
 public:
        BC_TumbleTextBoxText(BC_TumbleTextBox *popup, int64_t default_value, int x, int y);
-       BC_TumbleTextBoxText(BC_TumbleTextBox *popup, float default_value, int x, int y);
+       BC_TumbleTextBoxText(BC_TumbleTextBox *popup, float default_value, int x, int y, int precision);
        virtual ~BC_TumbleTextBoxText();
        int handle_event();
        int button_press_event();
@@ -461,4 +477,40 @@ public:
 };
 
 
+class BC_TextMenu : public BC_PopupMenu
+{
+public:
+       BC_TextMenu(BC_TextBox *textbox);
+       ~BC_TextMenu();
+       
+       void create_objects();
+       
+       BC_TextBox *textbox;
+};
+
+class BC_TextMenuCut : public BC_MenuItem
+{
+public:
+       BC_TextMenuCut(BC_TextMenu *menu);
+       int handle_event();
+       BC_TextMenu *menu;
+};
+
+class BC_TextMenuCopy : public BC_MenuItem
+{
+public:
+       BC_TextMenuCopy(BC_TextMenu *menu);
+       int handle_event();
+       BC_TextMenu *menu;
+};
+
+class BC_TextMenuPaste : public BC_MenuItem
+{
+public:
+       BC_TextMenuPaste(BC_TextMenu *menu);
+       int handle_event();
+       BC_TextMenu *menu;
+};
+
+
 #endif