The Battle for Wesnoth  1.19.0-dev
Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
gui::textbox Class Reference

#include <textbox.hpp>

Inheritance diagram for gui::textbox:

Public Member Functions

 textbox (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)
 
virtual void layout () override
 Called by draw_manager to validate layout. More...
 
- Public Member Functions inherited from gui::scrollarea
 scrollarea (bool auto_join=true)
 Create a zone with automatic handling of scrollbar. More...
 
virtual void hide (bool value=true)
 
- Public Member Functions inherited from gui::widget
const rectlocation () 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 queue_redraw ()
 Indicate that the widget should be redrawn. More...
 
void queue_redraw (const rect &)
 Indicate that a specific region of the screen should be redrawn. More...
 
void set_dirty (bool dirty=true)
 
bool dirty () const
 
const std::string & id () const
 
void set_id (const std::string &id)
 
void set_tooltip_string (const std::string &str)
 
virtual void process_tooltip_string (int mousex, int mousey) override
 
virtual bool expose (const rect &region) override
 Called by draw_manager when it believes a redraw is necessary. More...
 
virtual rect screen_location () override
 The current draw location of the display, on the screen. More...
 
- Public Member Functions inherited from events::sdl_handler
virtual void handle_window_event (const SDL_Event &)
 
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_handleroperator= (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
 
- Public Member Functions inherited from gui2::top_level_drawable
virtual void update ()
 Update state and any parameters that may effect layout, or any of the later stages. More...
 
virtual void render ()
 Perform any internal rendering necessary to prepare the drawable. More...
 

Protected Member Functions

virtual void draw_contents () override
 
virtual void update_location (const SDL_Rect &rect) override
 
virtual void set_inner_location (const SDL_Rect &) override
 
virtual void scroll (unsigned int pos) override
 
- Protected Member Functions inherited from gui::scrollarea
virtual sdl_handler_vector handler_members ()
 
virtual void process_event ()
 
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
 
- Protected Member Functions inherited from gui::widget
 widget (const bool auto_join=true)
 
virtual ~widget ()
 
bool mouse_locked () const
 
void aquire_mouse_lock ()
 
void free_mouse_lock ()
 
- Protected Member Functions inherited from events::sdl_handler
 sdl_handler (const bool auto_join=true)
 
 sdl_handler (const sdl_handler &)
 
sdl_handleroperator= (const sdl_handler &)
 
virtual ~sdl_handler ()
 
- Protected Member Functions inherited from gui2::top_level_drawable
 top_level_drawable ()
 
virtual ~top_level_drawable ()
 
 top_level_drawable (const top_level_drawable &)
 
top_level_drawableoperator= (const top_level_drawable &)
 
 top_level_drawable (top_level_drawable &&)
 
top_level_drawableoperator= (top_level_drawable &&)
 

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) override
 
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)
 
texture 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 override
 
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_
 
texture text_image_
 
bool wrap_
 
std::size_t line_height_
 
std::size_t yscroll_
 
double alpha_
 
double alpha_focus_
 
textboxedit_target_
 
bool listening_
 

Additional Inherited Members

- Protected Attributes inherited from gui::widget
bool focus_
 

Detailed Description

Definition at line 26 of file textbox.hpp.

Constructor & Destructor Documentation

◆ textbox()

gui::textbox::textbox ( 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 
)

◆ ~textbox()

gui::textbox::~textbox ( )
virtual

Definition at line 51 of file textbox.cpp.

References cursor::get(), cursor::IBEAM, cursor::NORMAL, and cursor::set().

Member Function Documentation

◆ add_text_line()

texture gui::textbox::add_text_line ( const std::u32string &  text,
const color_t color = font::NORMAL_COLOR 
)
private

◆ append_text()

void gui::textbox::append_text ( const std::string &  text,
bool  auto_scroll = false,
const color_t color = font::NORMAL_COLOR 
)

◆ clear()

void gui::textbox::clear ( )

◆ draw_contents()

void gui::textbox::draw_contents ( )
overrideprotectedvirtual

◆ draw_cursor()

void gui::textbox::draw_cursor ( int  pos) const
private

Definition at line 159 of file textbox.cpp.

References editable_, gui::widget::enabled(), draw::fill(), gui::widget::location(), and show_cursor_.

Referenced by draw_contents().

◆ editable()

bool gui::textbox::editable ( ) const

Definition at line 256 of file textbox.cpp.

References editable_.

Referenced by handle_key_down(), and pass_event_to_target().

◆ erase_selection()

void gui::textbox::erase_selection ( )
private

Definition at line 388 of file textbox.cpp.

References cursor_, is_selection(), selend_, selstart_, and text_.

Referenced by handle_key_down(), and handle_text_input().

◆ font_size()

int gui::textbox::font_size ( ) const

Definition at line 261 of file textbox.cpp.

References font_size_.

◆ handle_event() [1/2]

void gui::textbox::handle_event ( const SDL_Event &  event)
overrideprivatevirtual

Reimplemented from gui::scrollarea.

Definition at line 437 of file textbox.cpp.

References gui::widget::handle_event(), and handle_event().

◆ handle_event() [2/2]

void gui::textbox::handle_event ( const SDL_Event &  event,
bool  was_forwarded 
)
private

◆ handle_key_down()

bool gui::textbox::handle_key_down ( const SDL_Event &  event)
private

◆ handle_text_changed()

virtual void gui::textbox::handle_text_changed ( const std::u32string &  )
inlineprivatevirtual

Definition at line 63 of file textbox.hpp.

Referenced by append_text(), clear(), handle_event(), and set_text().

◆ handle_text_input()

bool gui::textbox::handle_text_input ( const SDL_Event &  event)
private

Definition at line 443 of file textbox.cpp.

References cursor_, DBG_G, editable_, erase_selection(), is_selection(), max_size_, pass_event_to_target(), s, and text_.

Referenced by handle_event().

◆ is_selection()

bool gui::textbox::is_selection ( )
private

Definition at line 383 of file textbox.cpp.

References selend_, and selstart_.

Referenced by draw_contents(), erase_selection(), handle_event(), handle_key_down(), and handle_text_input().

◆ layout()

void gui::textbox::layout ( )
overridevirtual

Called by draw_manager to validate layout.

Reimplemented from gui::widget.

Definition at line 173 of file textbox.cpp.

References text_image_, and update_text_cache().

◆ pass_event_to_target()

void gui::textbox::pass_event_to_target ( const SDL_Event &  event)
private

Definition at line 734 of file textbox.cpp.

References edit_target_, editable(), and handle_event().

Referenced by handle_key_down(), and handle_text_input().

◆ requires_event_focus()

bool gui::textbox::requires_event_focus ( const SDL_Event *  event = nullptr) const
overrideprivatevirtual

Reimplemented from events::sdl_handler.

Definition at line 409 of file textbox.cpp.

References gui::widget::enabled(), gui::widget::focus_, and gui::widget::hidden().

◆ scroll()

void gui::textbox::scroll ( unsigned int  pos)
overrideprotectedvirtual

Implements gui::scrollarea.

Definition at line 285 of file textbox.cpp.

References gui::widget::queue_redraw(), and yscroll_.

◆ scroll_to_bottom()

void gui::textbox::scroll_to_bottom ( )

Definition at line 271 of file textbox.cpp.

References gui::scrollarea::get_max_position(), and gui::scrollarea::set_position().

Referenced by append_text().

◆ set_cursor_pos()

void gui::textbox::set_cursor_pos ( const int  cursor_pos)

Definition at line 144 of file textbox.cpp.

References cursor_, editable_, gui::widget::queue_redraw(), text_, update_text_cache(), and WRN_DP.

◆ set_edit_target()

void gui::textbox::set_edit_target ( textbox target)

Definition at line 741 of file textbox.cpp.

References edit_target_.

◆ set_editable()

void gui::textbox::set_editable ( bool  value)

Definition at line 251 of file textbox.cpp.

References editable_.

◆ set_font_size()

void gui::textbox::set_font_size ( int  fs)

Definition at line 266 of file textbox.cpp.

References font_size_.

◆ set_inner_location()

void gui::textbox::set_inner_location ( const SDL_Rect &  )
overrideprotectedvirtual

Implements gui::scrollarea.

Definition at line 66 of file textbox.cpp.

References text_image_, text_pos_, and update_text_cache().

◆ set_selection()

void gui::textbox::set_selection ( const int  selstart,
const int  selend 
)

Definition at line 129 of file textbox.cpp.

References editable_, gui::widget::queue_redraw(), selend_, selstart_, text_, and WRN_DP.

Referenced by handle_key_down().

◆ set_text()

void gui::textbox::set_text ( const std::string &  text,
const color_t color = font::NORMAL_COLOR 
)

◆ set_wrap()

void gui::textbox::set_wrap ( bool  val)

Definition at line 276 of file textbox.cpp.

References gui::widget::queue_redraw(), update_text_cache(), and wrap_.

◆ show_scrollbar()

bool gui::textbox::show_scrollbar ( ) const
private

◆ text()

const std::string gui::textbox::text ( ) const

Definition at line 73 of file textbox.cpp.

References text_.

Referenced by add_text_line(), append_text(), and set_text().

◆ update_location()

void gui::textbox::update_location ( const SDL_Rect &  rect)
overrideprotectedvirtual

Reimplemented from gui::scrollarea.

Definition at line 59 of file textbox.cpp.

References gui::widget::queue_redraw(), gui::scrollarea::update_location(), and update_text_cache().

◆ update_text_cache()

void gui::textbox::update_text_cache ( bool  reset = false,
const color_t color = font::NORMAL_COLOR 
)
private

Member Data Documentation

◆ alpha_

double gui::textbox::alpha_
private

Definition at line 95 of file textbox.hpp.

Referenced by draw_contents().

◆ alpha_focus_

double gui::textbox::alpha_focus_
private

Definition at line 96 of file textbox.hpp.

Referenced by draw_contents().

◆ char_x_

std::vector<int> gui::textbox::char_x_
private

Definition at line 79 of file textbox.hpp.

Referenced by add_text_line(), draw_contents(), handle_event(), and update_text_cache().

◆ char_y_

std::vector<int> gui::textbox::char_y_
private

Definition at line 79 of file textbox.hpp.

Referenced by add_text_line(), draw_contents(), handle_event(), and update_text_cache().

◆ cursor_

int gui::textbox::cursor_
private

◆ cursor_pos_

int gui::textbox::cursor_pos_
private

Definition at line 78 of file textbox.hpp.

Referenced by clear(), draw_contents(), and update_text_cache().

◆ edit_target_

textbox* gui::textbox::edit_target_
private

Definition at line 98 of file textbox.hpp.

Referenced by pass_event_to_target(), and set_edit_target().

◆ editable_

bool gui::textbox::editable_
private

◆ font_size_

int gui::textbox::font_size_
private

Definition at line 67 of file textbox.hpp.

Referenced by add_text_line(), font_size(), set_font_size(), and textbox().

◆ grabmouse_

bool gui::textbox::grabmouse_
private

Definition at line 75 of file textbox.hpp.

Referenced by handle_event().

◆ line_height_

std::size_t gui::textbox::line_height_
private

Definition at line 93 of file textbox.hpp.

Referenced by add_text_line(), draw_contents(), and handle_event().

◆ listening_

bool gui::textbox::listening_
private

Definition at line 104 of file textbox.hpp.

Referenced by handle_event(), and handle_key_down().

◆ max_size_

std::size_t gui::textbox::max_size_
private

Definition at line 65 of file textbox.hpp.

Referenced by handle_key_down(), and handle_text_input().

◆ selend_

int gui::textbox::selend_
private

◆ selstart_

int gui::textbox::selstart_
private

◆ show_cursor_

bool gui::textbox::show_cursor_
private

Definition at line 83 of file textbox.hpp.

Referenced by draw_cursor(), and handle_event().

◆ show_cursor_at_

int gui::textbox::show_cursor_at_
private

Definition at line 88 of file textbox.hpp.

Referenced by handle_event().

◆ text_

std::u32string gui::textbox::text_
private

◆ text_image_

texture gui::textbox::text_image_
private

◆ text_pos_

int gui::textbox::text_pos_
private

◆ wrap_

bool gui::textbox::wrap_
private

Definition at line 91 of file textbox.hpp.

Referenced by add_text_line(), append_text(), and set_wrap().

◆ yscroll_

std::size_t gui::textbox::yscroll_
private

Definition at line 93 of file textbox.hpp.

Referenced by draw_contents(), handle_event(), and scroll().


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