TermOx
|
Interactive Glyph_string display with text wrapping, alignment, etc... More...
#include <textbox.hpp>
Classes | |
struct | Parameters |
Public Member Functions | |
Textbox (Glyph_string text=U"", Align alignment=Align::Left, Wrap wrap=Wrap::Word, Brush insert_brush=Brush{}, int scroll_speed=1, bool text_input=true) | |
Construct a Textbox with initial contents and strong focus. | |
Textbox (Parameters p) | |
void | set_scroll_speed (int x) noexcept |
Set the number of lines scrolled vertically on scroll wheel events. More... | |
auto | scroll_speed () const noexcept -> int |
Return the current scroll wheel speed. | |
void | enable_text_input () noexcept |
Enable the Textbox to take keyboard input. | |
void | disable_text_input () noexcept |
Disable the Textbox from taking keyboard input. | |
auto | has_text_input () const noexcept -> bool |
Return true if currently takes text keyboard input. | |
Public Member Functions inherited from ox::detail::Textbox_base | |
void | set_cursor (Point position) |
Set the cursor to position , or the nearest Glyph if no glyph there. | |
void | set_cursor (std::size_t index) |
Set the cursor to the Glyph at index into contents. | |
void | scroll_up (int n=1) override |
Add cursor movement to Text_view::scroll_up. | |
void | scroll_down (int n=1) override |
Add cursor movement to Text_view::scroll_down. | |
void | cursor_up (int n=1) |
Move the cursor up n lines, scroll if at the top line. More... | |
void | cursor_down (int n=1) |
Move the cursor down n lines, scroll if at the bottom line. More... | |
void | cursor_left (int n=1) |
Move the cursor n indices towards the beginning of contents. More... | |
void | cursor_right (int n=1) |
Move the cursor n indices towards the end of contents. More... | |
Public Member Functions inherited from ox::Text_view | |
Text_view (Glyph_string text=U"", Align alignment=Align::Left, Wrap wrap=Wrap::Word, Brush insert_brush=Brush{}) | |
Construct a Text_view with initial Glyph_string text . More... | |
Text_view (Parameters p) | |
void | set_text (Glyph_string text) |
Replace the current contents with text . More... | |
auto | text () -> Glyph_string & |
Return the entire contents of the Text_view. More... | |
auto | text () const -> Glyph_string const & |
Return the entire contents of the Text_view. | |
void | set_alignment (Align type) |
Set the Alignment, changing how the contents are displayed. More... | |
auto | alignment () const -> Align |
Return the currently used Alignment. | |
void | set_wrap (Wrap w) |
Set the type of text wrapping at line boundaries. | |
auto | wrap () const -> Wrap |
Return the currently set text Wrap type. | |
void | insert (Glyph_string text, int index) |
Inserts text starting at index into the current contents. More... | |
void | append (Glyph_string text) |
Inserts text to the end of the current contents. More... | |
void | erase (int index, int length=Glyph_string::npos) |
Remove Glyphs from contents starting at index , for length Glyphs. | |
void | pop_back () |
Remove the last Glyph from the current contents. No-op if this->empty();. | |
void | clear () |
Remove all Glyphs from the this text display. More... | |
auto | row_length (int y) const -> int |
Return the length of the line at row y . More... | |
auto | display_height () const -> int |
Return the number of lines currently displayed. | |
auto | line_count () const -> int |
Return the total number of lines in display_state_. | |
void | set_top_line (int n) |
Set the top line, by row index. | |
auto | index_at (Point position) const -> int |
Return the index into the contents from a physical Point on the Widget. More... | |
auto | display_position (int index) const -> Point |
Return the position of the Glyph at index . More... | |
void | update () override |
Add call to Text_view::update_display() before posting Paint_event. | |
Public Member Functions inherited from ox::Widget | |
Widget (std::string name="", Focus_policy focus_policy_=Focus_policy::None, Size_policy width_policy_=Size_policy{}, Size_policy height_policy_=Size_policy{}, Brush brush_=Brush{}, Glyph wallpaper=U' ', bool brush_paints_wallpaper=true, Cursor cursor=Cursor{}) | |
Create an empty Widget. | |
Widget (Parameters p) | |
Create an empty Widget. | |
Widget (Widget const &)=delete | |
Widget (Widget &&)=delete | |
Widget & | operator= (Widget const &)=delete |
Widget & | operator= (Widget &&)=delete |
void | set_name (std::string name) |
Set the identifying name of the Widget. | |
auto | name () const -> std::string const & |
Return the name of the Widget. | |
auto | unique_id () const -> std::uint16_t |
Return the ID number unique to this Widget. | |
void | set_wallpaper (Glyph g) |
Used to fill in empty space that is not filled in by paint_event(). | |
auto | get_wallpaper () const -> Glyph |
Return the currently in use wallpaper or std::nullopt if none. | |
void | enable (bool enable=true) |
Enable this Widget and send an Enable_event to itself. More... | |
void | disable (bool disable=true) |
Disable this Widget and send a Disable_event to itself. More... | |
auto | is_enabled () const -> bool |
Check whether the Widget is enabled. | |
auto | parent () const -> Widget * |
Return the Widget's parent pointer. More... | |
auto | top_left () const -> Point |
Return the global top left corner of this widget. | |
auto | area () const -> Area |
Return the area the widget occupies. | |
virtual auto | is_layout_type () const -> bool |
void | install_event_filter (Widget &filter) |
Install another Widget as an Event filter. More... | |
void | remove_event_filter (Widget &filter) |
Remove a Widget from the Event filter list. More... | |
auto | get_event_filters () const -> std::set< Widget * > const & |
Return the list of Event filter Widgets. | |
void | enable_animation (std::chrono::milliseconds interval) |
Enable animation on this Widget. More... | |
void | enable_animation (FPS fps) |
Enable animation with a frames-per-second value. | |
void | disable_animation () |
Turn off animation, no more Timer_events will be sent to this Widget. More... | |
auto | is_animated () const -> bool |
Return true if this Widget has animation enabled. | |
auto | get_children () |
Get a range containing Widget& to each child. | |
auto | get_children () const |
Get a const range containing Widget& to each child. | |
auto | get_descendants () const -> std::vector< Widget * > |
Return container of all descendants of self_. | |
void | paint_wallpaper_with_brush (bool paints=true) |
Set if the brush is applied to the wallpaper Glyph. | |
auto | paints_wallpaper_with_brush () const -> bool |
If true, the brush will apply to the wallpaper Glyph. | |
auto | generate_wallpaper () const -> Glyph |
Return the wallpaper Glyph. More... | |
auto | get_child_offset () const -> std::size_t |
Return the index of the first child displayed by this Widget. | |
auto | child_count () const -> std::size_t |
Return the number of children held by this Widget. | |
virtual auto | enable_event () -> bool |
Handles Enable_event objects. | |
virtual auto | disable_event () -> bool |
Handles Disable_event objects. | |
virtual auto | child_added_event (Widget &child) -> bool |
Handles Child_added_event objects. | |
virtual auto | child_removed_event (Widget &child) -> bool |
Handles Child_removed_event objects. | |
virtual auto | child_polished_event (Widget &child) -> bool |
Handles Child_polished_event objects. | |
virtual auto | move_event (Point new_position, Point old_position) -> bool |
Handles Move_event objects. | |
virtual auto | mouse_release_event (Mouse const &m) -> bool |
Handles Mouse_release_event objects. | |
virtual auto | mouse_move_event (Mouse const &m) -> bool |
Handles Mouse_move_event objects. | |
virtual auto | key_release_event (Key k) -> bool |
Handles Key_release_event objects. More... | |
virtual auto | focus_in_event () -> bool |
Handles Focus_in_event objects. | |
virtual auto | focus_out_event () -> bool |
Handles Focus_out_event objects. | |
virtual auto | delete_event () -> bool |
Handles Delete_event objects. | |
virtual auto | timer_event () -> bool |
Handles Timer_event objects. | |
virtual auto | enable_event_filter (Widget &receiver) -> bool |
Handles Enable_event objects filtered from other Widgets. | |
virtual auto | disable_event_filter (Widget &receiver) -> bool |
Handles Disable_event objects filtered from other Widgets. | |
virtual auto | child_added_event_filter (Widget &receiver, Widget &child) -> bool |
Handles Child_added_event objects filtered from other Widgets. | |
virtual auto | child_removed_event_filter (Widget &receiver, Widget &child) -> bool |
Handles Child_removed_event objects filtered from other Widgets. | |
virtual auto | child_polished_event_filter (Widget &receiver, Widget &child) -> bool |
Handles Child_polished_event objects filtered from other Widgets. | |
virtual auto | move_event_filter (Widget &receiver, Point new_position, Point old_position) -> bool |
Handles Move_event objects filtered from other Widgets. | |
virtual auto | resize_event_filter (Widget &receiver, Area new_size, Area old_size) -> bool |
Handles Resize_event objects filtered from other Widgets. | |
virtual auto | mouse_press_event_filter (Widget &receiver, Mouse const &m) -> bool |
Handles Mouse_press_event objects filtered from other Widgets. | |
virtual auto | mouse_release_event_filter (Widget &receiver, Mouse const &m) -> bool |
Handles Mouse_release_event objects filtered from other Widgets. | |
virtual auto | mouse_wheel_event_filter (Widget &receiver, Mouse const &m) -> bool |
Handles Mouse_wheel_event objects filtered from other Widgets. | |
virtual auto | mouse_move_event_filter (Widget &receiver, Mouse const &m) -> bool |
Handles Mouse_move_event objects filtered from other Widgets. | |
virtual auto | key_press_event_filter (Widget &receiver, Key k) -> bool |
Handles Key_press_event objects filtered from other Widgets. | |
virtual auto | key_release_event_filter (Widget &receiver, Key k) -> bool |
Handles Key_release_event objects filtered from other Widgets. | |
virtual auto | focus_in_event_filter (Widget &receiver) -> bool |
Handles Focus_in_event objects filtered from other Widgets. | |
virtual auto | focus_out_event_filter (Widget &receiver) -> bool |
Handles Focus_out_event objects filtered from other Widgets. | |
virtual auto | delete_event_filter (Widget &receiver) -> bool |
Handles Delete_event objects filtered from other Widgets. | |
virtual auto | paint_event_filter (Widget &receiver, Painter &p) -> bool |
Handles Paint_event objects filtered from other Widgets. | |
virtual auto | timer_event_filter (Widget &receiver) -> bool |
Handles Timer_event objects filtered from other Widgets. | |
void | set_top_left (Point p) |
Should only be used by Move_event send() function. | |
void | set_area (Area a) |
Should only be used by Resize_event send() function. | |
void | set_parent (Widget *parent) |
Should only be used by Layout. | |
Protected Member Functions | |
auto | key_press_event (Key k) -> bool override |
Either input a Glyph from the Key, or move the cursor on arrow presses. | |
auto | mouse_press_event (Mouse const &m) -> bool override |
Move the cursor to the pressed, or nearest cell, that contains a Glyph. | |
auto | mouse_wheel_event (Mouse const &m) -> bool override |
Scroll. | |
Protected Member Functions inherited from ox::detail::Textbox_base | |
Textbox_base (Glyph_string text=U"", Align alignment=Align::Left, Wrap wrap=Wrap::Word, Brush insert_brush=Brush{}) | |
Construct with initial text , enable cursor. | |
Textbox_base (Parameters p) | |
auto | cursor_index () const -> int |
Return the index into contents that the cursor is located at. | |
auto | resize_event (Area new_size, Area old_size) -> bool override |
Scroll to make the cursor visible if no longer on screen after resize. | |
Protected Member Functions inherited from ox::Text_view | |
auto | paint_event (Painter &p) -> bool override |
Paint the portion of contents that is currently visible on screen. | |
auto | line_at (int index) const -> int |
Return the line number that contains index . | |
auto | top_line () const -> int |
Return the line number that is being displayed at the top of the Widget. | |
auto | bottom_line () const -> int |
Return line number that is being displayed at the bottom of the Widget. | |
auto | last_line () const -> int |
Return the index into display_state_ of the last line. | |
auto | first_index_at (int line) const -> int |
Return the index of the first Glyph at line number line . | |
auto | last_index_at (int line) const -> int |
Returns one past the last index of the last Glyph at line number line . | |
auto | line_length (int line) const -> int |
Return the number of Glyphs contained at line index line . | |
auto | end_index () const -> int |
Return the index of the last Glyph in contents. | |
void | update_display (int from_line=0) |
Recalculate the text layout via display_state_. More... | |
Additional Inherited Members | |
Public Attributes inherited from ox::detail::Textbox_base | |
sl::Signal< void(std::size_t n)> | cursor_moved_left |
Emitted when the cursor moves left, passes along positions moved. | |
sl::Signal< void(std::size_t n)> | cursor_moved_right |
Emitted when the cursor moves right, passes along positions moved. | |
sl::Signal< void(std::size_t n)> | cursor_moved_up |
Emitted when the cursor moves up, passes along positions moved. | |
sl::Signal< void(std::size_t n)> | cursor_moved_down |
Emitted when the cursor moves down, passes along positions moved. | |
Public Attributes inherited from ox::Text_view | |
Brush | insert_brush |
Brush to be applied to all new incoming Glyphs, but not existing Glyphs. More... | |
sl::Signal< void(int n)> | scrolled_up |
Emitted when text is scrolled up. Sends number of lines scrolled by. | |
sl::Signal< void(int n)> | scrolled_down |
Emitted when text is scrolled down. Sends number of lines scrolled by. | |
sl::Signal< void(int n)> | scrolled_to |
Emitted when text is scrolled, sends the top line. | |
sl::Signal< void(Glyph_string const &)> | contents_modified |
Emitted when contents are modified. Sends a reference to the contents. | |
sl::Signal< void(int)> | line_count_changed |
Emitted when total line count changes. | |
Public Attributes inherited from ox::Widget | |
Signal< void()> | enabled |
Signal< void()> | disabled |
Signal< void(Widget &)> | child_added |
Signal< void(Widget &)> | child_removed |
Signal< void(Widget &)> | child_polished |
Signal< void(Point, Point)> | moved |
Signal< void(Area, Area)> | resized |
Signal< void(Mouse const &)> | mouse_pressed |
Signal< void(Mouse const &)> | mouse_released |
Signal< void(Mouse const &)> | mouse_wheel_scrolled |
Signal< void(Mouse const &)> | mouse_moved |
Signal< void(Key)> | key_pressed |
Signal< void(Key)> | key_released |
Signal< void()> | focused_in |
Signal< void()> | focused_out |
Signal< void()> | deleted |
Signal< void(Painter &)> | painted |
Signal< void()> | timer |
Signal< bool(Widget &)> | enabled_filter |
Signal< bool(Widget &)> | disabled_filter |
Signal< bool(Widget &, Widget &)> | child_added_filter |
Signal< bool(Widget &, Widget &)> | child_removed_filter |
Signal< bool(Widget &, Widget &)> | child_polished_filter |
Signal< bool(Widget &, Point, Point)> | moved_filter |
Signal< bool(Widget &, Area, Area)> | resized_filter |
Signal< bool(Widget &, Mouse const &)> | mouse_pressed_filter |
Signal< bool(Widget &, Mouse const &)> | mouse_released_filter |
Signal< bool(Widget &, Mouse const &)> | mouse_wheel_scrolled_filter |
Signal< bool(Widget &, Mouse const &)> | mouse_moved_filter |
Signal< bool(Widget &, Key)> | key_pressed_filter |
Signal< bool(Widget &, Key)> | key_released_filter |
Signal< bool(Widget &)> | focused_in_filter |
Signal< bool(Widget &)> | focused_out_filter |
Signal< bool(Widget &)> | deleted_filter |
Signal< bool(Widget &, Painter &)> | painted_filter |
Signal< bool(Widget &)> | timer_filter |
Focus_policy | focus_policy |
Describes how focus is given to this Widget. | |
Cursor | cursor |
Provides information on where the cursor is and if it is enabled. | |
Size_policy | width_policy |
Describes how the width of this Widget should be modified by a Layout. | |
Size_policy | height_policy |
Describes how the height of this Widget should be modified by a Layout. | |
Brush | brush |
A Brush that is applied to every Glyph painted by this Widget. | |
sl::Lifetime | lifetime |
Slots can track this object's lifetime to disable Slot invocations. | |
Protected Types inherited from ox::Widget | |
using | Children_t = std::vector< std::unique_ptr< Widget > > |
Protected Attributes inherited from ox::Widget | |
Children_t | children_ |
std::size_t | child_offset_ = 0 |
Interactive Glyph_string display with text wrapping, alignment, etc...
Provides common text interaction and presentation options as well as proper cursor movement for these interactions.
|
noexcept |
Set the number of lines scrolled vertically on scroll wheel events.
Default value is one. Negative will invert.