FLTK 1.3.9
Loading...
Searching...
No Matches
Fl_Text_Editor Class Reference

This is the FLTK text editor widget. More...

#include <Fl_Text_Editor.H>

Inheritance diagram for Fl_Text_Editor:
Fl_Text_Display Fl_Group Fl_Widget

Classes

struct  Key_Binding
 Simple linked list item associating a key/state to a function. More...
 

Public Types

typedef int(* Key_Func) (int key, Fl_Text_Editor *editor)
 Key function binding callback type.
 
- Public Types inherited from Fl_Text_Display
enum  {
  NORMAL_CURSOR , CARET_CURSOR , DIM_CURSOR , BLOCK_CURSOR ,
  HEAVY_CURSOR , SIMPLE_CURSOR
}
 text display cursor shapes enumeration More...
 
enum  { CURSOR_POS , CHARACTER_POS }
 the character position is the left edge of a character, whereas the cursor is thought to be between the centers of two consecutive characters.
 
enum  {
  DRAG_NONE = -2 , DRAG_START_DND = -1 , DRAG_CHAR = 0 , DRAG_WORD = 1 ,
  DRAG_LINE = 2
}
 drag types - they match Fl::event_clicks() so that single clicking to start a collection selects by character, double clicking selects by word and triple clicking selects by line.
 
enum  { WRAP_NONE , WRAP_AT_COLUMN , WRAP_AT_PIXEL , WRAP_AT_BOUNDS }
 wrap types - used in wrap_mode() More...
 
typedef void(* Unfinished_Style_Cb) (int, void *)
 

Public Member Functions

void add_default_key_bindings (Key_Binding **list)
 Adds all of the default editor key bindings to the specified key binding list.
 
void add_key_binding (int key, int state, Key_Func f)
 Adds a key of state state with the function f.
 
void add_key_binding (int key, int state, Key_Func f, Key_Binding **list)
 Adds a key of state state with the function function to an arbitrary key binding list list.
 
Key_Func bound_key_function (int key, int state) const
 Returns the function associated with a key binding.
 
Key_Func bound_key_function (int key, int state, Key_Binding *list) const
 Returns the function associated with a key binding.
 
void default_key_function (Key_Func f)
 Sets the default key function for unassigned keys.
 
 Fl_Text_Editor (int X, int Y, int W, int H, const char *l=0)
 The constructor creates a new text editor widget.
 
virtual int handle (int e)
 Event handling.
 
int insert_mode ()
 Gets the current insert mode; if non-zero, new text is inserted before the current cursor position.
 
void insert_mode (int b)
 Sets the current insert mode; if non-zero, new text is inserted before the current cursor position.
 
void remove_all_key_bindings ()
 Removes all of the key bindings associated with the text editor or list.
 
void remove_all_key_bindings (Key_Binding **list)
 Removes all of the key bindings associated with the text editor or list.
 
void remove_key_binding (int key, int state)
 Removes the key binding associated with the key "key" of state "state".
 
void remove_key_binding (int key, int state, Key_Binding **list)
 Removes the key binding associated with the key key of state state from the Key_Binding list list.
 
int tab_nav () const
 Check if Tab focus navigation is enabled.
 
void tab_nav (int val)
 Enables or disables Tab key focus navigation.
 
- Public Member Functions inherited from Fl_Text_Display
Fl_Text_Bufferbuffer () const
 Gets the current text buffer associated with the text widget.
 
void buffer (Fl_Text_Buffer &buf)
 Sets the current text buffer associated with the text widget.
 
void buffer (Fl_Text_Buffer *buf)
 Attach a text buffer to display, replacing the current buffer (if any)
 
double col_to_x (double col) const
 Convert a column number into an x pixel position.
 
int count_lines (int start, int end, bool start_pos_is_line_start) const
 Count the number of lines between two positions.
 
Fl_Color cursor_color () const
 Gets the text cursor color.
 
void cursor_color (Fl_Color n)
 Sets the text cursor color.
 
void cursor_style (int style)
 Sets the text cursor style.
 
 Fl_Text_Display (int X, int Y, int W, int H, const char *l=0)
 Creates a new text display widget.
 
void hide_cursor ()
 Hides the text cursor.
 
void highlight_data (Fl_Text_Buffer *styleBuffer, const Style_Table_Entry *styleTable, int nStyles, char unfinishedStyle, Unfinished_Style_Cb unfinishedHighlightCB, void *cbArg)
 Attach (or remove) highlight information in text display and redisplay.
 
int in_selection (int x, int y) const
 Check if a pixel position is within the primary selection.
 
void insert (const char *text)
 Inserts "text" at the current cursor location.
 
int insert_position () const
 Gets the position of the text insertion cursor for text display.
 
void insert_position (int newPos)
 Sets the position of the text insertion cursor for text display.
 
int line_end (int startPos, bool startPosIsLineStart) const
 Returns the end of a line.
 
int line_start (int pos) const
 Return the beginning of a line.
 
Fl_Align linenumber_align () const
 Returns the alignment used for line numbers (if enabled).
 
void linenumber_align (Fl_Align val)
 Set alignment for line numbers (if enabled).
 
Fl_Color linenumber_bgcolor () const
 Returns the background color used for line numbers (if enabled).
 
void linenumber_bgcolor (Fl_Color val)
 Set the background color used for line numbers (if enabled).
 
Fl_Color linenumber_fgcolor () const
 Return the foreground color used for line numbers (if enabled).
 
void linenumber_fgcolor (Fl_Color val)
 Set the foreground color used for line numbers (if enabled).
 
Fl_Font linenumber_font () const
 Return the font used for line numbers (if enabled).
 
void linenumber_font (Fl_Font val)
 Set the font used for line numbers (if enabled).
 
const char * linenumber_format () const
 Returns the line number printf() format string.
 
void linenumber_format (const char *val)
 Sets the printf() style format string used for line numbers.
 
Fl_Fontsize linenumber_size () const
 Return the font size used for line numbers (if enabled).
 
void linenumber_size (Fl_Fontsize val)
 Set the font size used for line numbers (if enabled).
 
int linenumber_width () const
 Return the screen area width provided for line numbers.
 
void linenumber_width (int width)
 Set width of screen area for line numbers.
 
int move_down ()
 Moves the current insert position down one line.
 
int move_left ()
 Moves the current insert position left one character.
 
int move_right ()
 Moves the current insert position right one character.
 
int move_up ()
 Moves the current insert position up one line.
 
void next_word (void)
 Moves the current insert position right one word.
 
void overstrike (const char *text)
 Replaces text at the current insert position.
 
int position_style (int lineStartPos, int lineLen, int lineIndex) const
 Find the correct style for a character.
 
int position_to_xy (int pos, int *x, int *y) const
 Convert a character index into a pixel position.
 
void previous_word (void)
 Moves the current insert position left one word.
 
void redisplay_range (int start, int end)
 Marks text from start to end as needing a redraw.
 
virtual void resize (int X, int Y, int W, int H)
 Change the size of the displayed text area.
 
int rewind_lines (int startPos, int nLines)
 Skip a number of lines back.
 
void scroll (int topLineNum, int horizOffset)
 Scrolls the current buffer to start at the specified line and column.
 
Fl_Align scrollbar_align () const
 Gets the scrollbar alignment type.
 
void scrollbar_align (Fl_Align a)
 Sets the scrollbar alignment type.
 
int scrollbar_width () const
 Gets the width/height of the scrollbars.
 
void scrollbar_width (int W)
 Sets the width/height of the scrollbars.
 
int shortcut () const
 
void shortcut (int s)
 
void show_cursor (int b=1)
 Shows the text cursor.
 
void show_insert_position ()
 Scrolls the text buffer to show the current insert position.
 
int skip_lines (int startPos, int nLines, bool startPosIsLineStart)
 Skip a number of lines forward.
 
Fl_Color textcolor () const
 Gets the default color of text in the widget.
 
void textcolor (Fl_Color n)
 Sets the default color of text in the widget.
 
Fl_Font textfont () const
 Gets the default font used when drawing text in the widget.
 
void textfont (Fl_Font s)
 Sets the default font used when drawing text in the widget.
 
Fl_Fontsize textsize () const
 Gets the default size of text in the widget.
 
void textsize (Fl_Fontsize s)
 Sets the default size of text in the widget.
 
int word_end (int pos) const
 Moves the insert position to the end of the current word.
 
int word_start (int pos) const
 Moves the insert position to the beginning of the current word.
 
void wrap_mode (int wrap, int wrap_margin)
 Set the new text wrap mode.
 
int wrapped_column (int row, int column) const
 Nobody knows what this function does.
 
int wrapped_row (int row) const
 Nobody knows what this function does.
 
double x_to_col (double x) const
 Convert an x pixel position into a column number.
 
 ~Fl_Text_Display ()
 Free a text display and release its associated memory.
 
- Public Member Functions inherited from Fl_Group
Fl_Widget *& _ddfdesign_kludge ()
 This is for forms compatibility only.
 
void add (Fl_Widget &)
 The widget is removed from its current group (if any) and then added to the end of this group.
 
void add (Fl_Widget *o)
 See void Fl_Group::add(Fl_Widget &w)
 
void add_resizable (Fl_Widget &o)
 Adds a widget to the group and makes it the resizable widget.
 
Fl_Widget *const * array () const
 Returns a pointer to the array of children.
 
virtual Fl_Groupas_group ()
 Returns an Fl_Group pointer if this widget is an Fl_Group.
 
void begin ()
 Sets the current group so you can build the widget tree by just constructing the widgets.
 
Fl_Widgetchild (int n) const
 Returns array()[n].
 
int children () const
 Returns how many child widgets the group has.
 
void clear ()
 Deletes all child widgets from memory recursively.
 
unsigned int clip_children ()
 Returns the current clipping mode.
 
void clip_children (int c)
 Controls whether the group widget clips the drawing of child widgets to its bounding box.
 
void end ()
 Exactly the same as current(this->parent()).
 
int find (const Fl_Widget &o) const
 See int Fl_Group::find(const Fl_Widget *w) const.
 
int find (const Fl_Widget *) const
 Searches the child array for the widget and returns the index.
 
 Fl_Group (int, int, int, int, const char *=0)
 Creates a new Fl_Group widget using the given position, size, and label string.
 
void focus (Fl_Widget *W)
 
void forms_end ()
 This is for forms compatibility only.
 
void init_sizes ()
 Resets the internal array of widget sizes and positions.
 
void insert (Fl_Widget &, int i)
 The widget is removed from its current group (if any) and then inserted into this group.
 
void insert (Fl_Widget &o, Fl_Widget *before)
 This does insert(w, find(before)).
 
void remove (Fl_Widget &)
 Removes a widget from the group but does not delete it.
 
void remove (Fl_Widget *o)
 Removes the widget o from the group.
 
void remove (int index)
 Removes the widget at index from the group but does not delete it.
 
Fl_Widgetresizable () const
 See void Fl_Group::resizable(Fl_Widget *box)
 
void resizable (Fl_Widget &o)
 See void Fl_Group::resizable(Fl_Widget *box)
 
void resizable (Fl_Widget *o)
 The resizable widget defines the resizing box for the group.
 
virtual ~Fl_Group ()
 The destructor also deletes all the children.
 
- Public Member Functions inherited from Fl_Widget
void _clear_fullscreen ()
 
void _set_fullscreen ()
 
void activate ()
 Activates the widget.
 
unsigned int active () const
 Returns whether the widget is active.
 
int active_r () const
 Returns whether the widget and all of its parents are active.
 
Fl_Align align () const
 Gets the label alignment.
 
void align (Fl_Align alignment)
 Sets the label alignment.
 
long argument () const
 Gets the current user data (long) argument that is passed to the callback function.
 
void argument (long v)
 Sets the current user data (long) argument that is passed to the callback function.
 
virtual class Fl_Gl_Windowas_gl_window ()
 Returns an Fl_Gl_Window pointer if this widget is an Fl_Gl_Window.
 
virtual Fl_Windowas_window ()
 Returns an Fl_Window pointer if this widget is an Fl_Window.
 
Fl_Boxtype box () const
 Gets the box type of the widget.
 
void box (Fl_Boxtype new_box)
 Sets the box type for the widget.
 
Fl_Callback_p callback () const
 Gets the current callback function for the widget.
 
void callback (Fl_Callback *cb)
 Sets the current callback function for the widget.
 
void callback (Fl_Callback *cb, void *p)
 Sets the current callback function for the widget.
 
void callback (Fl_Callback0 *cb)
 Sets the current callback function for the widget.
 
void callback (Fl_Callback1 *cb, long p=0)
 Sets the current callback function for the widget.
 
unsigned int changed () const
 Checks if the widget value changed since the last callback.
 
void clear_active ()
 Marks the widget as inactive without sending events or changing focus.
 
void clear_changed ()
 Marks the value of the widget as unchanged.
 
void clear_damage (uchar c=0)
 Clears or sets the damage flags.
 
void clear_output ()
 Sets a widget to accept input.
 
void clear_visible ()
 Hides the widget.
 
void clear_visible_focus ()
 Disables keyboard focus navigation with this widget.
 
Fl_Color color () const
 Gets the background color of the widget.
 
void color (Fl_Color bg)
 Sets the background color of the widget.
 
void color (Fl_Color bg, Fl_Color sel)
 Sets the background and selection color of the widget.
 
Fl_Color color2 () const
 For back compatibility only.
 
void color2 (unsigned a)
 For back compatibility only.
 
int contains (const Fl_Widget *w) const
 Checks if w is a child of this widget.
 
void copy_label (const char *new_label)
 Sets the current label.
 
void copy_tooltip (const char *text)
 Sets the current tooltip text.
 
uchar damage () const
 Returns non-zero if draw() needs to be called.
 
void damage (uchar c)
 Sets the damage bits for the widget.
 
void damage (uchar c, int x, int y, int w, int h)
 Sets the damage bits for an area inside the widget.
 
int damage_resize (int, int, int, int)
 Internal use only.
 
void deactivate ()
 Deactivates the widget.
 
Fl_Imagedeimage ()
 Gets the image that is used as part of the widget label.
 
const Fl_Imagedeimage () const
 
void deimage (Fl_Image &img)
 Sets the image to use as part of the widget label.
 
void deimage (Fl_Image *img)
 Sets the image to use as part of the widget label.
 
void do_callback ()
 Calls the widget callback.
 
void do_callback (Fl_Widget *o, long arg)
 Calls the widget callback.
 
void do_callback (Fl_Widget *o, void *arg=0)
 Calls the widget callback.
 
void draw_label (int, int, int, int, Fl_Align) const
 Draws the label in an arbitrary bounding box with an arbitrary alignment.
 
int h () const
 Gets the widget height.
 
virtual void hide ()
 Makes a widget invisible.
 
Fl_Imageimage ()
 Gets the image that is used as part of the widget label.
 
const Fl_Imageimage () const
 
void image (Fl_Image &img)
 Sets the image to use as part of the widget label.
 
void image (Fl_Image *img)
 Sets the image to use as part of the widget label.
 
int inside (const Fl_Widget *wgt) const
 Checks if this widget is a child of wgt.
 
int is_label_copied () const
 Returns whether the current label was assigned with copy_label().
 
const char * label () const
 Gets the current label text.
 
void label (const char *text)
 Sets the current label pointer.
 
void label (Fl_Labeltype a, const char *b)
 Shortcut to set the label text and type in one call.
 
Fl_Color labelcolor () const
 Gets the label color.
 
void labelcolor (Fl_Color c)
 Sets the label color.
 
Fl_Font labelfont () const
 Gets the font to use.
 
void labelfont (Fl_Font f)
 Sets the font to use.
 
Fl_Fontsize labelsize () const
 Gets the font size in pixels.
 
void labelsize (Fl_Fontsize pix)
 Sets the font size in pixels.
 
Fl_Labeltype labeltype () const
 Gets the label type.
 
void labeltype (Fl_Labeltype a)
 Sets the label type.
 
void measure_label (int &ww, int &hh) const
 Sets width ww and height hh accordingly with the label size.
 
unsigned int output () const
 Returns if a widget is used for output only.
 
Fl_Groupparent () const
 Returns a pointer to the parent widget.
 
void parent (Fl_Group *p)
 Internal use only - "for hacks only".
 
void position (int X, int Y)
 Repositions the window or widget.
 
void redraw ()
 Schedules the drawing of the widget.
 
void redraw_label ()
 Schedules the drawing of the label.
 
Fl_Color selection_color () const
 Gets the selection color.
 
void selection_color (Fl_Color a)
 Sets the selection color.
 
void set_active ()
 Marks the widget as active without sending events or changing focus.
 
void set_changed ()
 Marks the value of the widget as changed.
 
void set_output ()
 Sets a widget to output only.
 
void set_visible ()
 Makes the widget visible.
 
void set_visible_focus ()
 Enables keyboard focus navigation with this widget.
 
virtual void show ()
 Makes a widget visible.
 
void size (int W, int H)
 Changes the size of the widget.
 
int take_focus ()
 Gives the widget the keyboard focus.
 
unsigned int takesevents () const
 Returns if the widget is able to take events.
 
int test_shortcut ()
 Returns true if the widget's label contains the entered '&x' shortcut.
 
const char * tooltip () const
 Gets the current tooltip text.
 
void tooltip (const char *text)
 Sets the current tooltip text.
 
Fl_Windowtop_window () const
 Returns a pointer to the top-level window for the widget.
 
Fl_Windowtop_window_offset (int &xoff, int &yoff) const
 Finds the x/y offset of the current widget relative to the top-level window.
 
uchar type () const
 Gets the widget type.
 
void type (uchar t)
 Sets the widget type.
 
int use_accents_menu ()
 Returns non zero if MAC_USE_ACCENTS_MENU flag is set, 0 otherwise.
 
void * user_data () const
 Gets the user data for this widget.
 
void user_data (void *v)
 Sets the user data for this widget.
 
unsigned int visible () const
 Returns whether a widget is visible.
 
unsigned int visible_focus ()
 Checks whether this widget has a visible focus.
 
void visible_focus (int v)
 Modifies keyboard focus navigation.
 
int visible_r () const
 Returns whether a widget and all its parents are visible.
 
int w () const
 Gets the widget width.
 
Fl_When when () const
 Returns the conditions under which the callback is called.
 
void when (uchar i)
 Sets the flags used to decide when a callback is called.
 
Fl_Windowwindow () const
 Returns a pointer to the nearest parent window up the widget hierarchy.
 
int x () const
 Gets the widget position in its window.
 
int y () const
 Gets the widget position in its window.
 
virtual ~Fl_Widget ()
 Destroys the widget.
 

Static Public Member Functions

static int kf_backspace (int c, Fl_Text_Editor *e)
 Does a backspace for key 'c' in the current buffer of editor 'e'.
 
static int kf_c_s_move (int c, Fl_Text_Editor *e)
 Extends the current selection in the direction indicated by control key 'c' in editor 'e'.
 
static int kf_copy (int c, Fl_Text_Editor *e)
 Does a copy of selected text or the current character in the current buffer of editor 'e'.
 
static int kf_ctrl_move (int c, Fl_Text_Editor *e)
 Moves the current text cursor in the direction indicated by control key 'c' in editor 'e'.
 
static int kf_cut (int c, Fl_Text_Editor *e)
 Does a cut of selected text in the current buffer of editor 'e'.
 
static int kf_default (int c, Fl_Text_Editor *e)
 Inserts the text associated with key 'c' in editor 'e'.
 
static int kf_delete (int c, Fl_Text_Editor *e)
 Does a delete of selected text or the current character in the current buffer of editor 'e'.
 
static int kf_down (int c, Fl_Text_Editor *e)
 Moves the text cursor one line down for editor 'e'.
 
static int kf_end (int c, Fl_Text_Editor *e)
 Moves the text cursor to the end of the current line in editor 'e'.
 
static int kf_enter (int c, Fl_Text_Editor *e)
 Inserts a newline for key 'c' at the current cursor position in editor 'e'.
 
static int kf_home (int, Fl_Text_Editor *e)
 Moves the text cursor to the beginning of the current line in editor 'e'.
 
static int kf_ignore (int c, Fl_Text_Editor *e)
 Ignores the key 'c' in editor 'e'.
 
static int kf_insert (int c, Fl_Text_Editor *e)
 Toggles the insert mode for editor 'e'.
 
static int kf_left (int c, Fl_Text_Editor *e)
 Moves the text cursor one character to the left in editor 'e'.
 
static int kf_m_s_move (int c, Fl_Text_Editor *e)
 Extends the current selection in the direction indicated by meta key 'c' in editor 'e'.
 
static int kf_meta_move (int c, Fl_Text_Editor *e)
 Moves the current text cursor in the direction indicated by meta key 'c' in editor 'e'.
 
static int kf_move (int c, Fl_Text_Editor *e)
 Moves the text cursor in the direction indicated by key 'c' in editor 'e'.
 
static int kf_page_down (int c, Fl_Text_Editor *e)
 Moves the text cursor down one page for editor 'e'.
 
static int kf_page_up (int c, Fl_Text_Editor *e)
 Moves the text cursor up one page for editor 'e'.
 
static int kf_paste (int c, Fl_Text_Editor *e)
 Does a paste of selected text in the current buffer of editor 'e'.
 
static int kf_right (int c, Fl_Text_Editor *e)
 Moves the text cursor one character to the right for editor 'e'.
 
static int kf_select_all (int c, Fl_Text_Editor *e)
 Selects all text in the current buffer in editor 'e'.
 
static int kf_shift_move (int c, Fl_Text_Editor *e)
 Extends the current selection in the direction of key 'c' in editor 'e'.
 
static int kf_undo (int c, Fl_Text_Editor *e)
 Undo last edit in the current buffer of editor 'e'.
 
static int kf_up (int c, Fl_Text_Editor *e)
 Moves the text cursor one line up for editor 'e'.
 
- Static Public Member Functions inherited from Fl_Group
static Fl_Groupcurrent ()
 Returns the currently active group.
 
static void current (Fl_Group *g)
 Sets the current group.
 
- Static Public Member Functions inherited from Fl_Widget
static void default_callback (Fl_Widget *cb, void *d)
 The default callback for all widgets that don't set a callback.
 
static unsigned int label_shortcut (const char *t)
 Returns the Unicode value of the '&x' shortcut in a given text.
 
static int test_shortcut (const char *, const bool require_alt=false)
 Returns true if the given text t contains the entered '&x' shortcut.
 

Protected Member Functions

int handle_key ()
 Handles a key press in the editor.
 
void maybe_do_callback ()
 does or does not a callback according to changed() and when() settings
 
- Protected Member Functions inherited from Fl_Text_Display
void absolute_top_line_number (int oldFirstChar)
 Line numbering stuff, currently unused.
 
void calc_last_char ()
 Update last display character index.
 
void calc_line_starts (int startLine, int endLine)
 Update the line start arrays.
 
void clear_rect (int style, int x, int y, int width, int height) const
 Clear a rectangle with the appropriate background color for style.
 
void display_insert ()
 Scroll the display to bring insertion cursor into view.
 
virtual void draw ()
 Draw the widget.
 
void draw_cursor (int, int)
 Draw a cursor with top center at X, Y.
 
void draw_line_numbers (bool clearAll)
 Refresh the line number area.
 
void draw_range (int start, int end)
 Draw a range of text.
 
void draw_string (int style, int x, int y, int toX, const char *string, int nChars) const
 Draw a text segment in a single style.
 
void draw_text (int X, int Y, int W, int H)
 Refresh a rectangle of the text display.
 
void draw_vline (int visLineNum, int leftClip, int rightClip, int leftCharIndex, int rightCharIndex)
 Draw a single line of text.
 
int empty_vlines () const
 Return true if there are lines visible with no corresponding buffer text.
 
void extend_range_for_styles (int *start, int *end)
 I don't know what this does!
 
void find_line_end (int pos, bool start_pos_is_line_start, int *lineEnd, int *nextLineStart) const
 Finds both the end of the current line and the start of the next line.
 
void find_wrap_range (const char *deletedText, int pos, int nInserted, int nDeleted, int *modRangeStart, int *modRangeEnd, int *linesInserted, int *linesDeleted)
 Wrapping calculations.
 
int find_x (const char *s, int len, int style, int x) const
 Find the index of the character that lies at the given x position.
 
int get_absolute_top_line_number () const
 Line numbering stuff, currently unused.
 
int handle_vline (int mode, int lineStart, int lineLen, int leftChar, int rightChar, int topClip, int bottomClip, int leftClip, int rightClip) const
 Universal pixel machine.
 
int longest_vline () const
 Find the longest line of all visible lines.
 
void maintain_absolute_top_line_number (int state)
 Line numbering stuff, currently unused.
 
int maintaining_absolute_top_line_number () const
 Line numbering stuff, currently unused.
 
void measure_deleted_lines (int pos, int nDeleted)
 Wrapping calculations.
 
double measure_proportional_character (const char *s, int colNum, int pos) const
 Wrapping calculations.
 
int measure_vline (int visLineNum) const
 Returns the width in pixels of the displayed line pointed to by "visLineNum".
 
void offset_line_starts (int newTopLineNum)
 Offset line start counters for a new vertical scroll position.
 
int position_to_line (int pos, int *lineNum) const
 Convert a position index into a line number offset.
 
int position_to_linecol (int pos, int *lineNum, int *column) const
 Find the line and column number of position pos.
 
void reset_absolute_top_line_number ()
 Line numbering stuff, probably unused.
 
int scroll_ (int topLineNum, int horizOffset)
 Scrolls the current buffer to start at the specified line and column.
 
double string_width (const char *string, int length, int style) const
 Find the width of a string in the font of a particular style.
 
void update_h_scrollbar ()
 Update horizontal scrollbar.
 
void update_line_starts (int pos, int charsInserted, int charsDeleted, int linesInserted, int linesDeleted, int *scrolled)
 Update line start arrays and variables.
 
void update_v_scrollbar ()
 Update vertical scrollbar.
 
int vline_length (int visLineNum) const
 Count number of bytes in a visible line.
 
int wrap_uses_character (int lineEndPos) const
 Check if the line break is caused by a \n or by line wrapping.
 
void wrapped_line_counter (Fl_Text_Buffer *buf, int startPos, int maxPos, int maxLines, bool startPosIsLineStart, int styleBufOffset, int *retPos, int *retLines, int *retLineStart, int *retLineEnd, bool countLastLineMissingNewLine=true) const
 Wrapping calculations.
 
int xy_to_position (int x, int y, int PosType=CHARACTER_POS) const
 Translate a pixel position into a character index.
 
void xy_to_rowcol (int x, int y, int *row, int *column, int PosType=CHARACTER_POS) const
 Translate pixel coordinates into row and column.
 
- Protected Member Functions inherited from Fl_Group
void draw_child (Fl_Widget &widget) const
 Forces a child to redraw.
 
void draw_children ()
 Draws all children of the group.
 
void draw_outside_label (const Fl_Widget &widget) const
 Parents normally call this to draw outside labels of child widgets.
 
int * sizes ()
 Returns the internal array of widget sizes and positions.
 
void update_child (Fl_Widget &widget) const
 Draws a child only if it needs it.
 
- Protected Member Functions inherited from Fl_Widget
void clear_flag (unsigned int c)
 Clears a flag in the flags mask.
 
void draw_backdrop () const
 If FL_ALIGN_IMAGE_BACKDROP is set, the image or deimage will be drawn.
 
void draw_box () const
 Draws the widget box according its box style.
 
void draw_box (Fl_Boxtype t, Fl_Color c) const
 Draws a box of type t, of color c at the widget's position and size.
 
void draw_box (Fl_Boxtype t, int x, int y, int w, int h, Fl_Color c) const
 Draws a box of type t, of color c at the position X,Y and size W,H.
 
void draw_focus ()
 draws a focus rectangle around the widget
 
void draw_focus (Fl_Boxtype t, int x, int y, int w, int h) const
 Draws a focus box for the widget at the given position and size.
 
void draw_label () const
 Draws the widget's label at the defined label position.
 
void draw_label (int, int, int, int) const
 Draws the label in an arbitrary bounding box.
 
 Fl_Widget (int x, int y, int w, int h, const char *label=0L)
 Creates a widget at the given position and size.
 
unsigned int flags () const
 Gets the widget flags mask.
 
void h (int v)
 Internal use only.
 
void set_flag (unsigned int c)
 Sets a flag in the flags mask.
 
void w (int v)
 Internal use only.
 
void x (int v)
 Internal use only.
 
void y (int v)
 Internal use only.
 

Static Protected Attributes

static Key_Bindingglobal_key_bindings
 Global key binding list.
 

Additional Inherited Members

- Protected Types inherited from Fl_Text_Display
enum  { DRAW_LINE , FIND_INDEX , FIND_INDEX_FROM_ZERO , GET_WIDTH }
 
- Protected Types inherited from Fl_Widget
enum  {
  INACTIVE = 1<<0 , INVISIBLE = 1<<1 , OUTPUT = 1<<2 , NOBORDER = 1<<3 ,
  FORCE_POSITION = 1<<4 , NON_MODAL = 1<<5 , SHORTCUT_LABEL = 1<<6 , CHANGED = 1<<7 ,
  OVERRIDE = 1<<8 , VISIBLE_FOCUS = 1<<9 , COPIED_LABEL = 1<<10 , CLIP_CHILDREN = 1<<11 ,
  MENU_WINDOW = 1<<12 , TOOLTIP_WINDOW = 1<<13 , MODAL = 1<<14 , NO_OVERLAY = 1<<15 ,
  GROUP_RELATIVE = 1<<16 , COPIED_TOOLTIP = 1<<17 , FULLSCREEN = 1<<18 , MAC_USE_ACCENTS_MENU = 1<<19 ,
  USERFLAG3 = 1<<29 , USERFLAG2 = 1<<30 , USERFLAG1 = 1<<31
}
 flags possible values enumeration. More...
 
- Static Protected Member Functions inherited from Fl_Text_Display
static void buffer_modified_cb (int pos, int nInserted, int nDeleted, int nRestyled, const char *deletedText, void *cbArg)
 This is called whenever the buffer is modified.
 
static void buffer_predelete_cb (int pos, int nDeleted, void *cbArg)
 This is called before any characters are deleted.
 
static void h_scrollbar_cb (Fl_Scrollbar *w, Fl_Text_Display *d)
 Callbacks for drag or valueChanged on horizontal scrollbar.
 
static void scroll_timer_cb (void *)
 Timer callback for scroll events.
 
static void v_scrollbar_cb (Fl_Scrollbar *w, Fl_Text_Display *d)
 Callbacks for drag or valueChanged on vertical scrollbar.
 
- Protected Attributes inherited from Fl_Text_Display
int damage_range1_end
 
int damage_range1_start
 
int damage_range2_end
 
int damage_range2_start
 
int display_insert_position_hint
 
int dragging
 
int dragPos
 
int dragType
 
Fl_Align linenumber_align_
 
Fl_Color linenumber_bgcolor_
 
Fl_Color linenumber_fgcolor_
 
Fl_Font linenumber_font_
 
const char * linenumber_format_
 
Fl_Fontsize linenumber_size_
 
int mAbsTopLineNum
 
Fl_Text_BuffermBuffer
 
double mColumnScale
 
int mContinuousWrap
 
Fl_Color mCursor_color
 
int mCursorOldY
 
int mCursorOn
 
int mCursorPos
 
int mCursorPreferredXPos
 
int mCursorStyle
 
int mCursorToHint
 
int mFirstChar
 
void * mHighlightCBArg
 
int mHorizOffset
 
int mHorizOffsetHint
 
Fl_ScrollbarmHScrollBar
 
int mLastChar
 
int mLineNumLeft
 
int mLineNumWidth
 
int * mLineStarts
 
int mMaxsize
 
int mModifyingTabDistance
 
int mNBufferLines
 
int mNeedAbsTopLineNum
 
int mNLinesDeleted
 
int mNStyles
 
int mNVisibleLines
 
Fl_Text_BuffermStyleBuffer
 
const Style_Table_EntrymStyleTable
 
int mSuppressResync
 
int mTopLineNum
 
int mTopLineNumHint
 
Unfinished_Style_Cb mUnfinishedHighlightCB
 
char mUnfinishedStyle
 
Fl_ScrollbarmVScrollBar
 
int mWrapMarginPix
 
Fl_Align scrollbar_align_
 
int scrollbar_width_
 
int shortcut_
 
struct { 
 
   int   h 
 
   int   w 
 
   int   x 
 
   int   y 
 
text_area 
 
Fl_Color textcolor_
 
Fl_Font textfont_
 
Fl_Fontsize textsize_
 

Detailed Description

This is the FLTK text editor widget.

It allows the user to edit multiple lines of text and supports highlighting and scrolling. The buffer that is displayed in the widget is managed by the Fl_Text_Buffer class.

Member Function Documentation

◆ add_key_binding()

void Fl_Text_Editor::add_key_binding ( int  key,
int  state,
Key_Func  function,
Key_Binding **  list 
)

Adds a key of state state with the function function to an arbitrary key binding list list.

This can be used in derived classes to add global key bindings by using the global (static) Key_Binding list Fl_Text_Editor::global_key_bindings.

◆ handle()

int Fl_Text_Editor::handle ( int  e)
virtual

Event handling.

Reimplemented from Fl_Text_Display.

◆ insert_mode() [1/2]

int Fl_Text_Editor::insert_mode ( )
inline

Gets the current insert mode; if non-zero, new text is inserted before the current cursor position.

Otherwise, new text replaces text at the current cursor position.

◆ insert_mode() [2/2]

void Fl_Text_Editor::insert_mode ( int  b)
inline

Sets the current insert mode; if non-zero, new text is inserted before the current cursor position.

Otherwise, new text replaces text at the current cursor position.

◆ kf_backspace()

int Fl_Text_Editor::kf_backspace ( int  c,
Fl_Text_Editor e 
)
static

Does a backspace for key 'c' in the current buffer of editor 'e'.

Any current selection is deleted. Otherwise, the character left is deleted and the cursor moved. The key value 'c' is currently unused.

◆ kf_c_s_move()

int Fl_Text_Editor::kf_c_s_move ( int  c,
Fl_Text_Editor e 
)
static

Extends the current selection in the direction indicated by control key 'c' in editor 'e'.

See also
kf_ctrl_move().

◆ kf_copy()

int Fl_Text_Editor::kf_copy ( int  c,
Fl_Text_Editor e 
)
static

Does a copy of selected text or the current character in the current buffer of editor 'e'.

The key value 'c' is currently unused.

◆ kf_ctrl_move()

int Fl_Text_Editor::kf_ctrl_move ( int  c,
Fl_Text_Editor e 
)
static

Moves the current text cursor in the direction indicated by control key 'c' in editor 'e'.

Supported values for 'c' are currently:

FL_Home -- moves the cursor to the beginning of the document
FL_End -- moves the cursor to the end of the document
FL_Left -- moves the cursor left one word
FL_Right -- moves the cursor right one word
FL_Up -- scrolls up one line, without moving cursor
FL_Down -- scrolls down one line, without moving cursor
FL_Page_Up -- moves the cursor to the beginning of the top line on the current page
FL_Page_Down -- moves the cursor to the beginning of the last line on the current page
#define FL_Up
The up arrow key.
Definition Enumerations.H:479
#define FL_End
The end key.
Definition Enumerations.H:484
#define FL_Page_Up
The page-up key.
Definition Enumerations.H:482
#define FL_Right
The right arrow key.
Definition Enumerations.H:480
#define FL_Home
The home key.
Definition Enumerations.H:477
#define FL_Down
The down arrow key.
Definition Enumerations.H:481
#define FL_Page_Down
The page-down key.
Definition Enumerations.H:483
#define FL_Left
The left arrow key.
Definition Enumerations.H:478
void end()
Exactly the same as current(this->parent()).
Definition Fl_Group.cxx:75
static Fl_Group * current()
Returns the currently active group.
Definition Fl_Group.cxx:84

◆ kf_cut()

int Fl_Text_Editor::kf_cut ( int  c,
Fl_Text_Editor e 
)
static

Does a cut of selected text in the current buffer of editor 'e'.

The key value 'c' is currently unused.

◆ kf_default()

int Fl_Text_Editor::kf_default ( int  c,
Fl_Text_Editor e 
)
static

Inserts the text associated with key 'c' in editor 'e'.

Honors the current selection and insert/overstrike mode.

◆ kf_delete()

int Fl_Text_Editor::kf_delete ( int  c,
Fl_Text_Editor e 
)
static

Does a delete of selected text or the current character in the current buffer of editor 'e'.

The key value 'c' is currently unused.

◆ kf_down()

int Fl_Text_Editor::kf_down ( int  c,
Fl_Text_Editor e 
)
static

Moves the text cursor one line down for editor 'e'.

Same as kf_move(FL_Down, e). The key value 'c' is currently unused.

◆ kf_end()

int Fl_Text_Editor::kf_end ( int  c,
Fl_Text_Editor e 
)
static

Moves the text cursor to the end of the current line in editor 'e'.

Same as kf_move(FL_End, e). The key value 'c' is currently unused.

◆ kf_enter()

int Fl_Text_Editor::kf_enter ( int  c,
Fl_Text_Editor e 
)
static

Inserts a newline for key 'c' at the current cursor position in editor 'e'.

The key value 'c' is currently unused.

◆ kf_home()

int Fl_Text_Editor::kf_home ( int  ,
Fl_Text_Editor e 
)
static

Moves the text cursor to the beginning of the current line in editor 'e'.

Same as kf_move(FL_Home, e). The key value 'c' is currently unused.

◆ kf_ignore()

int Fl_Text_Editor::kf_ignore ( int  c,
Fl_Text_Editor e 
)
static

Ignores the key 'c' in editor 'e'.

This method can be used as a keyboard binding to disable a key that might otherwise be handled or entered as text.

An example would be disabling FL_Escape, so that it isn't added to the buffer when invoked by the user.

◆ kf_insert()

int Fl_Text_Editor::kf_insert ( int  c,
Fl_Text_Editor e 
)
static

Toggles the insert mode for editor 'e'.

The key value 'c' is currently unused.

◆ kf_left()

int Fl_Text_Editor::kf_left ( int  c,
Fl_Text_Editor e 
)
static

Moves the text cursor one character to the left in editor 'e'.

Same as kf_move(FL_Left, e). The key value 'c' is currently unused.

◆ kf_m_s_move()

int Fl_Text_Editor::kf_m_s_move ( int  c,
Fl_Text_Editor e 
)
static

Extends the current selection in the direction indicated by meta key 'c' in editor 'e'.

See also
kf_meta_move().

◆ kf_meta_move()

int Fl_Text_Editor::kf_meta_move ( int  c,
Fl_Text_Editor e 
)
static

Moves the current text cursor in the direction indicated by meta key 'c' in editor 'e'.

Supported values for 'c' are currently:

FL_Up -- moves cursor to the beginning of the current document
FL_Down -- moves cursor to the end of the current document
FL_Left -- moves the cursor to the beginning of the current line
FL_Right -- moves the cursor to the end of the current line

◆ kf_move()

int Fl_Text_Editor::kf_move ( int  c,
Fl_Text_Editor e 
)
static

Moves the text cursor in the direction indicated by key 'c' in editor 'e'.

Supported values for 'c' are currently:

FL_Home -- moves the cursor to the beginning of the current line
FL_End -- moves the cursor to the end of the current line
FL_Left -- moves the cursor left one character
FL_Right -- moves the cursor right one character
FL_Up -- moves the cursor up one line
FL_Down -- moves the cursor down one line
FL_Page_Up -- moves the cursor up one page
FL_Page_Down -- moves the cursor down one page

◆ kf_page_down()

int Fl_Text_Editor::kf_page_down ( int  c,
Fl_Text_Editor e 
)
static

Moves the text cursor down one page for editor 'e'.

Same as kf_move(FL_Page_Down, e). The key value 'c' is currently unused.

◆ kf_page_up()

int Fl_Text_Editor::kf_page_up ( int  c,
Fl_Text_Editor e 
)
static

Moves the text cursor up one page for editor 'e'.

Same as kf_move(FL_Page_Up, e). The key value 'c' is currently unused.

◆ kf_paste()

int Fl_Text_Editor::kf_paste ( int  c,
Fl_Text_Editor e 
)
static

Does a paste of selected text in the current buffer of editor 'e'.

Any current selection is replaced with the pasted content. The key value 'c' is currently unused.

◆ kf_right()

int Fl_Text_Editor::kf_right ( int  c,
Fl_Text_Editor e 
)
static

Moves the text cursor one character to the right for editor 'e'.

Same as kf_move(FL_Right, e). The key value 'c' is currently unused.

◆ kf_select_all()

int Fl_Text_Editor::kf_select_all ( int  c,
Fl_Text_Editor e 
)
static

Selects all text in the current buffer in editor 'e'.

The key value 'c' is currently unused.

◆ kf_shift_move()

int Fl_Text_Editor::kf_shift_move ( int  c,
Fl_Text_Editor e 
)
static

Extends the current selection in the direction of key 'c' in editor 'e'.

See also
kf_move()

◆ kf_undo()

int Fl_Text_Editor::kf_undo ( int  c,
Fl_Text_Editor e 
)
static

Undo last edit in the current buffer of editor 'e'.

Also deselects previous selection. The key value 'c' is currently unused.

◆ kf_up()

int Fl_Text_Editor::kf_up ( int  c,
Fl_Text_Editor e 
)
static

Moves the text cursor one line up for editor 'e'.

Same as kf_move(FL_Up, e). The key value 'c' is currently unused.

◆ remove_key_binding()

void Fl_Text_Editor::remove_key_binding ( int  key,
int  state,
Key_Binding **  list 
)

Removes the key binding associated with the key key of state state from the Key_Binding list list.

This can be used in derived classes to remove global key bindings by using the global (static) Key_Binding list Fl_Text_Editor::global_key_bindings.

◆ tab_nav() [1/2]

int Fl_Text_Editor::tab_nav ( ) const

Check if Tab focus navigation is enabled.

If disabled (default), hitting Tab inserts a tab character into the editor buffer.

If enabled, hitting Tab navigates focus to the next widget, and Shift-Tab navigates focus to the previous widget.

Returns
if Tab inserts tab characters or moves the focus
Return values
0Tab inserts tab characters (default)
1Tab navigation is enabled.
See also
tab_nav(int), Fl::OPTION_ARROW_FOCUS.
Version
1.3.4 ABI feature

◆ tab_nav() [2/2]

void Fl_Text_Editor::tab_nav ( int  val)

Enables or disables Tab key focus navigation.

When disabled (default), tab characters are inserted into Fl_Text_Editor. Only the mouse can change focus. This behavior is desireable when Fl_Text_Editor is used, e.g. in a source code editor.

When enabled, Tab navigates focus to the next widget, and Shift-Tab navigates focus to the previous widget. This behavior is desireable when Fl_Text_Editor is used e.g. in a database input form.

Currently, this method is implemented as a convenience method that adjusts the key bindings for the Tab key. This implementation detail may change in the future. Know that changing the editor's key bindings for Tab and Shift-Tab may affect tab navigation.

Parameters
[in]valIf val is 0, Tab inserts a tab character (default).
If val is 1, Tab navigates widget focus.
See also
tab_nav(), Fl::OPTION_ARROW_FOCUS.
Version
1.3.4 ABI feature

Member Data Documentation

◆ global_key_bindings

Key_Binding* Fl_Text_Editor::global_key_bindings
staticprotected

Global key binding list.

Derived classes can add key bindings for all Fl_Text_Editor widgets by adding a Key_Binding to this list.

See also
add_key_binding(int key, int state, Key_Func f, Key_Binding** list);

The documentation for this class was generated from the following files: