class BC_TextBox : public BC_SubWindow
{
+ static inline int nib(int ch) {
+ if( ch >= '0' && ch <= '9' ) ch -= '0';
+ else if( ch >= 'A' && ch <= 'F' ) ch -= 'A'-10;
+ else if( ch >= 'a' && ch <= 'f' ) ch -= 'a'-10;
+ else ch = -1;
+ return ch;
+ }
+
char *text;
wchar_t *wtext;
public:
// Whenever the position of the text changes
virtual int motion_event() { return 0; };
void set_selection(int char1, int char2, int ibeam);
+ void wset_selection(int char1, int char2, int ibeam);
int update(const char *text);
int update(const wchar_t *wtext);
int update(int64_t value);
int deactivate();
const char* get_text();
const wchar_t* get_wtext();
- const char* get_utf8text();
void set_text(char *text, int isz);
int get_text_rows();
// Set top left of text view
void set_text_row(int row);
int get_text_row();
+
int reposition_window(int x, int y, int w = -1, int rows = -1);
int uses_text();
-#ifdef X_HAVE_UTF8_STRING
- int utf8seek(int i, int reverse);
-#endif
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);
+ static int wcpos(const char *text, const char *ep);
+
void set_precision(int precision);
// Whether to draw every time there is a keypress or rely on user to
// follow up every keypress with an update().
// Compute suggestions for a path
// If entries is null, just search absolute paths
- int calculate_suggestions(ArrayList<BC_ListBoxItem*> *entries);
+ int calculate_suggestions(ArrayList<BC_ListBoxItem*> *entries=0, const char *filter=0);
// User computes suggestions after handle_event.
// A highlighted extension is added if 1 suggestion or a popup appears
// if multiple suggestions.
// column - starting column to replace
+ void no_suggestions();
void set_suggestions(ArrayList<char*> *suggestions, int column);
BC_ScrollTextBoxYScroll *yscroll;
// Top left of cursor relative to text
int ibeam_x, ibeam_y;
- int ibeam_letter;
+ int ibeam_letter, unicode_active;
int highlight_letter1, highlight_letter2;
int highlight_letter3, highlight_letter4;
int text_x1, text_start, text_end;
BC_TextBoxSuggestions(BC_TextBox *text_box, int x, int y);
virtual ~BC_TextBoxSuggestions();
- int selection_changed();
int handle_event();
-
BC_TextBox *text_box;
};
void update(const char *text);
void update(const wchar_t *wtext);
void set_selection(int char1, int char2, int ibeam);
+ void wset_selection(int char1, int char2, int ibeam);
void reposition_window(int x, int y, int w, int rows);
int get_x();
int get_y();
int get_h();
// Visible rows for resizing
int get_rows();
+ int get_ibeam_letter();
friend class BC_ScrollTextBoxText;
friend class BC_ScrollTextBoxYScroll;
int get_y();
int get_w();
int get_h();
- void disable();
+ void disable(int hide_text=0);
void enable();
int get_enabled();
void reposition_window(int x, int y);