#define BCTEXTBOX_H
#include "bclistbox.h"
+#include "bcmenuitem.h"
+#include "bcpopupmenu.h"
#include "bcsubwindow.h"
#include "bctumble.h"
#include "fonts.h"
class BC_TextBoxSuggestions;
-class BC_ScrollTextBoxYScroll;
+class BC_ScrollTextBoxXScroll;
+class BC_ScrollTextBoxYScroll;
+class BC_ScrollTextBoxText;
+class BC_TextMenu;
class BC_TextBox : public BC_SubWindow
{
friend class BC_TextBoxSuggestions;
+ friend class BC_ScrollTextBox;
// Whenever the contents of the text change
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();
// Set top left of text view
void set_text_row(int row);
int get_text_row();
+ int get_text_x();
+ int get_text_y();
+ void set_text_x(int v);
+ void set_text_y(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);
// column - starting column to replace
void no_suggestions();
void set_suggestions(ArrayList<char*> *suggestions, int column);
- BC_ScrollTextBoxYScroll *yscroll;
+ BC_ScrollTextBoxXScroll *xscroll;
+ 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();
// ibeam_left causes the ibeam to move left.
int is_separator(const char *txt, int i);
void do_separators(int ibeam_left);
+ int get_x_position(int i, int start=0);
void get_ibeam_position(int &x, int &y);
void find_ibeam(int dispatch_event);
void select_word(int &letter1, int &letter2, int ibeam_letter);
int high_color, back_color;
int background_color;
int size, tsize, dirty;
- int wlen, wsize, *positions, plen;
+ int wlen, wsize;
char temp_string[KEYPRESSLEN];
int is_utf8;
int active;
ArrayList<BC_ListBoxItem*> *suggestions;
BC_TextBoxSuggestions *suggestions_popup;
int suggestion_column;
+ int selection_active;
};
};
-
-class BC_ScrollTextBoxText;
-class BC_ScrollTextBoxYScroll;
-
-
class BC_ScrollTextBox
{
BC_ScrollTextBoxText *text;
+ BC_ScrollTextBoxXScroll *xscroll;
BC_ScrollTextBoxYScroll *yscroll;
BC_WindowBase *parent_window;
const char *default_text;
int x, y, w, rows;
friend class BC_ScrollTextBoxText;
+ friend class BC_ScrollTextBoxXScroll;
friend class BC_ScrollTextBoxYScroll;
public:
BC_ScrollTextBox(BC_WindowBase *parent_window,
void update(const char *text);
void update(const wchar_t *wtext);
void reposition_window(int x, int y, int w, int rows);
+ void update_scrollbars();
// accessors
int get_x() { return x; }
int get_y() { return y; }
int get_w() { return w; }
// Visible rows for resizing
int get_rows() { return rows; }
-
+ int get_x_pos();
+ void set_x_pos(int x);
// forward functions
int get_h();
const char *get_text();
int button_release_event() { return gui->button_release_event(); }
};
+class BC_ScrollTextBoxXScroll : public BC_ScrollBar
+{
+public:
+ BC_ScrollTextBoxXScroll(BC_ScrollTextBox *gui);
+ virtual ~BC_ScrollTextBoxXScroll();
+ int handle_event();
+ BC_ScrollTextBox *gui;
+};
+
class BC_ScrollTextBoxYScroll : public BC_ScrollBar
{
public:
int get_y();
int get_w();
int get_h();
+ int get_show_query();
+ void set_show_query(int v);
+
void update(const char *text);
void update_list(ArrayList<BC_ListBoxItem*> *data);
void reposition_window(int x, int y);
{
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();
};
+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