#include <textbox.hpp>
Public Member Functions | |
textbox (CVideo &video, int width, const std::string &text="", bool editable=true, std::size_t max_size=256, int font_size=font::SIZE_PLUS, double alpha=0.4, double alpha_focus=0.2, const bool auto_join=true) | |
virtual | ~textbox () |
const std::string | text () const |
void | set_text (const std::string &text, const color_t &color=font::NORMAL_COLOR) |
void | append_text (const std::string &text, bool auto_scroll=false, const color_t &color=font::NORMAL_COLOR) |
void | clear () |
void | set_selection (const int selstart, const int selend) |
void | set_cursor_pos (const int cursor_pos) |
void | set_editable (bool value) |
bool | editable () const |
int | font_size () const |
void | set_font_size (int fs) |
void | scroll_to_bottom () |
void | set_wrap (bool val) |
void | set_edit_target (textbox *target) |
![]() | |
scrollarea (CVideo &video, bool auto_join=true) | |
Create a zone with automatic handling of scrollbar. More... | |
virtual void | hide (bool value=true) |
![]() | |
const SDL_Rect & | location () const |
virtual void | set_location (const SDL_Rect &rect) |
void | set_location (int x, int y) |
void | set_width (int w) |
void | set_height (int h) |
void | set_measurements (int w, int h) |
int | width () const |
int | height () const |
bool | focus (const SDL_Event *event) |
void | set_focus (bool focus) |
bool | hidden () const |
virtual void | enable (bool new_val=true) |
bool | enabled () const |
void | set_clip_rect (const SDL_Rect &rect) |
void | set_volatile (bool val=true) |
void | set_dirty (bool dirty=true) |
bool | dirty () const |
const std::string & | id () const |
void | set_id (const std::string &id) |
void | set_help_string (const std::string &str) |
void | set_tooltip_string (const std::string &str) |
virtual void | process_help_string (int mousex, int mousey) |
virtual void | process_tooltip_string (int mousex, int mousey) |
virtual void | draw () |
![]() | |
virtual void | join () |
virtual void | join (context &c) |
virtual void | join_same (sdl_handler *parent) |
virtual void | leave () |
virtual void | join_global () |
virtual void | leave_global () |
virtual bool | has_joined () |
virtual bool | has_joined_global () |
sdl_handler & | operator= (sdl_handler &&)=delete |
Moving would require two instances' context membership to be handled, it's simpler to delete these and require the two instances to be separately constructed / destructed. More... | |
sdl_handler (sdl_handler &&)=delete | |
Protected Member Functions | |
virtual void | draw_contents () |
virtual void | update_location (const SDL_Rect &rect) |
virtual void | set_inner_location (const SDL_Rect &) |
virtual void | scroll (unsigned int pos) |
![]() | |
virtual sdl_handler_vector | handler_members () |
virtual void | process_event () |
SDL_Rect | inner_location () const |
unsigned | scrollbar_width () const |
unsigned | get_position () const |
unsigned | get_max_position () const |
void | set_position (unsigned pos) |
void | adjust_position (unsigned pos) |
void | move_position (int dep) |
void | set_shown_size (unsigned h) |
void | set_full_size (unsigned h) |
void | set_scroll_rate (unsigned r) |
bool | has_scrollbar () const |
![]() | |
widget (CVideo &video, const bool auto_join=true) | |
virtual | ~widget () |
void | bg_register (const SDL_Rect &rect) |
void | bg_restore () const |
void | bg_restore (const SDL_Rect &rect) const |
void | bg_update () |
void | bg_cancel () |
CVideo & | video () const |
const SDL_Rect * | clip_rect () const |
virtual sdl_handler_vector | member_handlers () |
virtual void | handle_window_event (const SDL_Event &event) |
bool | mouse_locked () const |
void | aquire_mouse_lock () |
void | free_mouse_lock () |
![]() | |
sdl_handler (const bool auto_join=true) | |
sdl_handler (const sdl_handler &) | |
sdl_handler & | operator= (const sdl_handler &) |
virtual | ~sdl_handler () |
Private Member Functions | |
virtual void | handle_text_changed (const std::u32string &) |
void | handle_event (const SDL_Event &event, bool was_forwarded) |
void | handle_event (const SDL_Event &event) |
void | pass_event_to_target (const SDL_Event &event) |
void | draw_cursor (int pos) const |
void | update_text_cache (bool reset=false, const color_t &color=font::NORMAL_COLOR) |
surface | add_text_line (const std::u32string &text, const color_t &color=font::NORMAL_COLOR) |
bool | is_selection () |
void | erase_selection () |
bool | requires_event_focus (const SDL_Event *event=nullptr) const |
bool | show_scrollbar () const |
bool | handle_text_input (const SDL_Event &event) |
bool | handle_key_down (const SDL_Event &event) |
Private Attributes | |
std::size_t | max_size_ |
int | font_size_ |
std::u32string | text_ |
int | cursor_ |
int | selstart_ |
int | selend_ |
bool | grabmouse_ |
int | text_pos_ |
int | cursor_pos_ |
std::vector< int > | char_x_ |
std::vector< int > | char_y_ |
bool | editable_ |
bool | show_cursor_ |
int | show_cursor_at_ |
surface | text_image_ |
bool | wrap_ |
std::size_t | line_height_ |
std::size_t | yscroll_ |
double | alpha_ |
double | alpha_focus_ |
textbox * | edit_target_ |
bool | listening_ |
Additional Inherited Members | |
![]() | |
bool | focus_ |
Definition at line 25 of file textbox.hpp.
gui::textbox::textbox | ( | CVideo & | video, |
int | width, | ||
const std::string & | text = "" , |
||
bool | editable = true , |
||
std::size_t | max_size = 256 , |
||
int | font_size = font::SIZE_PLUS , |
||
double | alpha = 0.4 , |
||
double | alpha_focus = 0.2 , |
||
const bool | auto_join = true |
||
) |
Definition at line 33 of file textbox.cpp.
References font_size_, font::get_max_height(), gui::widget::set_measurements(), gui::scrollarea::set_scroll_rate(), and update_text_cache().
|
virtual |
Definition at line 50 of file textbox.cpp.
References cursor::get(), cursor::IBEAM, cursor::NORMAL, and cursor::set().
|
private |
Definition at line 303 of file textbox.cpp.
References char_x_, char_y_, font_size_, font::get_max_height(), font::get_rendered_text(), gui::scrollarea::inner_location(), line_height_, font::line_width(), s, unicode_cast(), w, and wrap_.
Referenced by append_text(), and update_text_cache().
void gui::textbox::append_text | ( | const std::string & | text, |
bool | auto_scroll = false , |
||
const color_t & | color = font::NORMAL_COLOR |
||
) |
Definition at line 92 of file textbox.cpp.
References add_text_line(), adjust_surface_alpha(), surface::get(), gui::scrollarea::get_max_position(), gui::scrollarea::get_position(), handle_text_changed(), utils::isnewline(), scroll_to_bottom(), sdl_blit(), gui::widget::set_dirty(), set_text(), text(), text_, text_image_, unicode_cast(), update_text_cache(), and wrap_.
void gui::textbox::clear | ( | ) |
Definition at line 133 of file textbox.cpp.
References cursor_, cursor_pos_, handle_text_changed(), selend_, selstart_, gui::widget::set_dirty(), text_, text_pos_, and update_text_cache().
|
protectedvirtual |
Reimplemented from gui::widget.
Definition at line 190 of file textbox.cpp.
References color_t::a, adjust_surface_alpha(), alpha_, alpha_focus_, c, char_x_, char_y_, sdl::create_rect(), cursor_pos_, draw_cursor(), gui::widget::enabled(), sdl::fill_rectangle(), gui::widget::focus(), ftofxp, CVideo::getSurface(), gui::scrollarea::inner_location(), is_selection(), line_height_, right, CVideo::screen_area(), sdl_blit(), selend_, selstart_, editor::start(), text_image_, text_pos_, update_text_cache(), gui::widget::video(), and yscroll_.
|
private |
Definition at line 176 of file textbox.cpp.
References editable_, gui::widget::enabled(), sdl::fill_rectangle(), gui::widget::location(), and show_cursor_.
Referenced by draw_contents().
bool gui::textbox::editable | ( | ) | const |
Definition at line 268 of file textbox.cpp.
References editable_.
Referenced by handle_key_down(), and pass_event_to_target().
|
private |
Definition at line 402 of file textbox.cpp.
References cursor_, is_selection(), selend_, selstart_, and text_.
Referenced by handle_key_down(), and handle_text_input().
int gui::textbox::font_size | ( | ) | const |
Definition at line 273 of file textbox.cpp.
References font_size_.
|
private |
Definition at line 632 of file textbox.cpp.
References char_x_, char_y_, cursor_, gui::widget::draw(), gui::widget::enabled(), gui::widget::focus(), events::focus_handler(), cursor::get(), grabmouse_, gui::scrollarea::handle_event(), handle_key_down(), handle_text_changed(), handle_text_input(), gui::widget::hidden(), i, cursor::IBEAM, gui::scrollarea::inner_location(), is_selection(), line_height_, listening_, gui::widget::mouse_locked(), cursor::NORMAL, sdl::point_in_rect(), selend_, selstart_, cursor::set(), gui::widget::set_dirty(), gui::widget::set_focus(), show_cursor_, show_cursor_at_, text_, text_image_, text_pos_, update_text_cache(), WRN_DP, gui::scrollarea::x, gui::scrollarea::y, and yscroll_.
Referenced by handle_event(), and pass_event_to_target().
|
privatevirtual |
Reimplemented from gui::scrollarea.
Definition at line 451 of file textbox.cpp.
References gui::widget::handle_event(), and handle_event().
|
private |
Definition at line 481 of file textbox.cpp.
References c, desktop::clipboard::copy_from_clipboard(), desktop::clipboard::copy_to_clipboard(), cursor_, editable(), editable_, erase_selection(), is_selection(), utils::isnewline(), listening_, max_size_, pass_event_to_target(), s, selend_, selstart_, set_selection(), text_, and unicode_cast().
Referenced by handle_event().
|
inlineprivatevirtual |
Definition at line 58 of file textbox.hpp.
Referenced by append_text(), clear(), handle_event(), and set_text().
|
private |
Definition at line 457 of file textbox.cpp.
References cursor_, DBG_G, editable_, erase_selection(), is_selection(), max_size_, pass_event_to_target(), s, text_, and unicode_cast().
Referenced by handle_event().
|
private |
Definition at line 397 of file textbox.cpp.
References selend_, and selstart_.
Referenced by draw_contents(), erase_selection(), handle_event(), handle_key_down(), and handle_text_input().
|
private |
Definition at line 756 of file textbox.cpp.
References edit_target_, editable(), and handle_event().
Referenced by handle_key_down(), and handle_text_input().
|
privatevirtual |
Reimplemented from events::sdl_handler.
Definition at line 423 of file textbox.cpp.
References gui::widget::enabled(), gui::widget::focus_, and gui::widget::hidden().
|
protectedvirtual |
Implements gui::scrollarea.
Definition at line 297 of file textbox.cpp.
References gui::widget::set_dirty(), and yscroll_.
void gui::textbox::scroll_to_bottom | ( | ) |
Definition at line 283 of file textbox.cpp.
References gui::scrollarea::get_max_position(), and gui::scrollarea::set_position().
Referenced by append_text().
void gui::textbox::set_cursor_pos | ( | const int | cursor_pos | ) |
Definition at line 161 of file textbox.cpp.
References cursor_, editable_, gui::widget::set_dirty(), text_, update_text_cache(), and WRN_DP.
void gui::textbox::set_edit_target | ( | textbox * | target | ) |
Definition at line 763 of file textbox.cpp.
References edit_target_.
void gui::textbox::set_editable | ( | bool | value | ) |
Definition at line 263 of file textbox.cpp.
References editable_.
void gui::textbox::set_font_size | ( | int | fs | ) |
Definition at line 278 of file textbox.cpp.
References font_size_.
|
protectedvirtual |
Implements gui::scrollarea.
Definition at line 65 of file textbox.cpp.
References gui::widget::bg_register(), text_image_, text_pos_, and update_text_cache().
void gui::textbox::set_selection | ( | const int | selstart, |
const int | selend | ||
) |
Definition at line 146 of file textbox.cpp.
References editable_, selend_, selstart_, gui::widget::set_dirty(), text_, and WRN_DP.
Referenced by handle_key_down().
void gui::textbox::set_text | ( | const std::string & | text, |
const color_t & | color = font::NORMAL_COLOR |
||
) |
Definition at line 80 of file textbox.cpp.
References cursor_, handle_text_changed(), selend_, selstart_, gui::widget::set_dirty(), text(), text_, text_pos_, unicode_cast(), and update_text_cache().
Referenced by append_text().
void gui::textbox::set_wrap | ( | bool | val | ) |
Definition at line 288 of file textbox.cpp.
References gui::widget::set_dirty(), update_text_cache(), and wrap_.
|
private |
const std::string gui::textbox::text | ( | ) | const |
Definition at line 73 of file textbox.cpp.
References text_, and unicode_cast().
Referenced by append_text(), and set_text().
|
protectedvirtual |
Reimplemented from gui::scrollarea.
Definition at line 58 of file textbox.cpp.
References gui::widget::set_dirty(), gui::scrollarea::update_location(), and update_text_cache().
|
private |
Definition at line 373 of file textbox.cpp.
References add_text_line(), char_x_, char_y_, cursor_, cursor_pos_, h, gui::widget::location(), gui::scrollarea::set_full_size(), gui::scrollarea::set_shown_size(), text_, text_image_, text_pos_, and w.
Referenced by append_text(), clear(), draw_contents(), handle_event(), set_cursor_pos(), set_inner_location(), set_text(), set_wrap(), textbox(), and update_location().
|
private |
Definition at line 90 of file textbox.hpp.
Referenced by draw_contents().
|
private |
Definition at line 91 of file textbox.hpp.
Referenced by draw_contents().
|
private |
Definition at line 74 of file textbox.hpp.
Referenced by add_text_line(), draw_contents(), handle_event(), and update_text_cache().
|
private |
Definition at line 74 of file textbox.hpp.
Referenced by add_text_line(), draw_contents(), handle_event(), and update_text_cache().
|
private |
Definition at line 67 of file textbox.hpp.
Referenced by clear(), erase_selection(), handle_event(), handle_key_down(), handle_text_input(), set_cursor_pos(), set_text(), and update_text_cache().
|
private |
Definition at line 73 of file textbox.hpp.
Referenced by clear(), draw_contents(), and update_text_cache().
|
private |
Definition at line 93 of file textbox.hpp.
Referenced by pass_event_to_target(), and set_edit_target().
|
private |
Definition at line 76 of file textbox.hpp.
Referenced by draw_cursor(), editable(), handle_key_down(), handle_text_input(), set_cursor_pos(), set_editable(), and set_selection().
|
private |
Definition at line 62 of file textbox.hpp.
Referenced by add_text_line(), font_size(), set_font_size(), and textbox().
|
private |
Definition at line 70 of file textbox.hpp.
Referenced by handle_event().
|
private |
Definition at line 88 of file textbox.hpp.
Referenced by add_text_line(), draw_contents(), and handle_event().
|
private |
Definition at line 99 of file textbox.hpp.
Referenced by handle_event(), and handle_key_down().
|
private |
Definition at line 60 of file textbox.hpp.
Referenced by handle_key_down(), and handle_text_input().
|
private |
Definition at line 69 of file textbox.hpp.
Referenced by clear(), draw_contents(), erase_selection(), handle_event(), handle_key_down(), is_selection(), set_selection(), and set_text().
|
private |
Definition at line 68 of file textbox.hpp.
Referenced by clear(), draw_contents(), erase_selection(), handle_event(), handle_key_down(), is_selection(), set_selection(), and set_text().
|
private |
Definition at line 78 of file textbox.hpp.
Referenced by draw_cursor(), and handle_event().
|
private |
Definition at line 83 of file textbox.hpp.
Referenced by handle_event().
|
private |
Definition at line 64 of file textbox.hpp.
Referenced by append_text(), clear(), erase_selection(), handle_event(), handle_key_down(), handle_text_input(), set_cursor_pos(), set_selection(), set_text(), text(), and update_text_cache().
|
private |
Definition at line 84 of file textbox.hpp.
Referenced by append_text(), draw_contents(), handle_event(), set_inner_location(), and update_text_cache().
|
private |
Definition at line 72 of file textbox.hpp.
Referenced by clear(), draw_contents(), handle_event(), set_inner_location(), set_text(), and update_text_cache().
|
private |
Definition at line 86 of file textbox.hpp.
Referenced by add_text_line(), append_text(), and set_wrap().
|
private |
Definition at line 88 of file textbox.hpp.
Referenced by draw_contents(), handle_event(), and scroll().