|
ASW Lib
A.D.S. Games SDL Wrapper Library. A library targeted at Allegro4 users who want to switch to SDL3 and use modern c++.
|
A text input widget. More...
#include <input_box.h>
Public Member Functions | |
| InputBox () | |
| Default constructor. | |
| ~InputBox () override | |
| Stops text input if the box is destroyed while focused. | |
| InputBox (const InputBox &)=delete | |
| InputBox & | operator= (const InputBox &)=delete |
| void | on_focus_changed (Context &ctx, bool focused) override |
| Called when focus state changes. | |
| bool | on_event (Context &ctx, const UIEvent &e) override |
| Handle a UI event. | |
| void | draw (Context &ctx) override |
| Draw the input box. | |
| const InputStyle & | get_style (const Context &ctx) const |
| Get the style this input box draws with. | |
Public Member Functions inherited from asw::ui::Widget | |
| Widget () | |
| Default constructor for Widget. | |
| virtual | ~Widget ()=default |
| Default virtual destructor. | |
| Widget (Widget &&other) noexcept | |
| Move constructor. The children move over and point to the new widget as their parent. The new widget gets its own id and no parent, since it is not in the old parent's children. Removed children stay with the old widget, which is where Root finds and frees them. | |
| Widget & | operator= (Widget &&other) noexcept |
| Move assignment operator. The children move over and point to this widget as their parent. This widget keeps its place in the tree: its parent, id and state. Its old children are removed as by clear_children. Removed children of the other widget stay with it. | |
| Widget (const Widget &)=delete | |
| Widget & | operator= (const Widget &)=delete |
| WidgetId | id () const |
| Get the unique identifier for this widget. | |
| const std::vector< std::unique_ptr< Widget > > & | children () const |
| Get the child widgets. Change them with add_child, remove_child and clear_children, which keep removed widgets alive until Root is done with them. | |
| virtual void | measure (Context &ctx) |
| Set this widget's own size, before its parent places it. Does nothing by default. | |
| virtual void | layout (Context &ctx) |
| Lay out this widget and its children. | |
| virtual void | activate (Context &ctx) |
| Called when the widget is clicked, or activated with the keyboard or a controller while focused. Does nothing by default. | |
| template<class T , class... Args> | |
| T & | add_child (Args &&... args) |
| Add a child widget. | |
| bool | remove_child (const Widget &child) |
| Remove a child widget. It leaves the tree now and is destroyed at the next Root::update, so a callback can remove any widget, even the one it runs in. | |
| void | clear_children () |
| Remove every child widget, destroyed as for remove_child. | |
| bool | is_hovered () const |
| Whether the pointer is currently over this widget. | |
| bool | is_pressed () const |
| Whether this widget is currently being pressed. | |
| bool | is_focused () const |
| Whether this widget currently holds focus. | |
| bool | is_captured () const |
| Whether this widget was pressed and the pointer is still held, even if it has moved off the widget. | |
| bool | is_highlighted (const Context &ctx) const |
| Whether to draw the hover look: hovered, pressed, or focused while focus is shown. | |
Public Attributes | |
| std::function< void(const std::string &)> | on_change |
| Callback invoked when the value changes. | |
| asw::Font | font |
| The font for the text. Uses the theme font when empty. | |
| std::string | value |
| The current text value. | |
| std::string | placeholder |
| Placeholder text shown when value is empty. | |
| std::optional< InputStyle > | style |
| Style for this input box only. Uses the theme input style when empty. | |
Public Attributes inherited from asw::ui::Widget | |
| bool | visible = true |
| Whether the widget is visible. | |
| bool | enabled = true |
| Whether the widget is enabled. | |
| bool | focusable = false |
| Whether the widget can receive focus. Focusable widgets are also the ones the pointer can press. | |
| Widget * | nav_up = nullptr |
| Widget to focus on up, instead of the nearest one. Optional. | |
| Widget * | nav_down = nullptr |
| Widget to focus on down, instead of the nearest one. Optional. | |
| Widget * | nav_left = nullptr |
| Widget to focus on left, instead of the nearest one. Optional. | |
| Widget * | nav_right = nullptr |
| Widget to focus on right, instead of the nearest one. Optional. | |
| bool | focus_ring = true |
| Draw the theme focus ring around this widget while it has visible focus. Turn off for widgets that show focus themselves. | |
| Widget * | parent = nullptr |
| Pointer to the parent widget. | |
| asw::Quad< float > | transform |
| The transform (position and size) of the widget. | |
| Anchor | anchor = Anchor::None |
| Pin this widget to a point of its parent, e.g. BottomRight for a corner button. The parent places it on every layout, so it stays in place when the screen or its own size changes. Stack and Grid place their children themselves and ignore it. | |
| asw::Vec2< float > | anchor_margin { 0.0F, 0.0F } |
| Space between an anchored widget and the parent's edges. | |
Private Attributes | |
| std::size_t | _cursor_pos = 0 |
| float | _scroll = 0.0F |
| How far the text is scrolled left, so the caret stays in view. | |
Additional Inherited Members | |
Protected Member Functions inherited from asw::ui::Widget | |
| void | place_anchored (Widget &child) const |
| Place a child that has an anchor inside this widget. | |
Protected Attributes inherited from asw::ui::Widget | |
| bool | _hovered = false |
| bool | _pressed = false |
| bool | _focused = false |
| bool | _captured = false |
A text input widget.
Definition at line 24 of file input_box.h.
|
inline |
Default constructor.
Definition at line 28 of file input_box.h.
|
override |
Stops text input if the box is destroyed while focused.
Definition at line 44 of file input_box.cpp.
|
delete |
|
overridevirtual |
Draw the input box.
| ctx | The UI context. |
Reimplemented from asw::ui::Widget.
Definition at line 144 of file input_box.cpp.
|
inline |
Get the style this input box draws with.
| ctx | The UI context. |
Definition at line 81 of file input_box.h.
Handle a UI event.
| ctx | The UI context. |
| e | The event to handle. |
Reimplemented from asw::ui::Widget.
Definition at line 63 of file input_box.cpp.
|
overridevirtual |
Called when focus state changes.
| ctx | The UI context. |
| focused | Whether the widget is now focused. |
Reimplemented from asw::ui::Widget.
Definition at line 51 of file input_box.cpp.
|
private |
Definition at line 87 of file input_box.h.
|
private |
How far the text is scrolled left, so the caret stays in view.
Definition at line 90 of file input_box.h.
| asw::Font asw::ui::InputBox::font |
The font for the text. Uses the theme font when empty.
Definition at line 65 of file input_box.h.
| std::function<void(const std::string&)> asw::ui::InputBox::on_change |
Callback invoked when the value changes.
Definition at line 41 of file input_box.h.
| std::string asw::ui::InputBox::placeholder |
Placeholder text shown when value is empty.
Definition at line 71 of file input_box.h.
| std::optional<InputStyle> asw::ui::InputBox::style |
Style for this input box only. Uses the theme input style when empty.
Definition at line 74 of file input_box.h.
| std::string asw::ui::InputBox::value |
The current text value.
Definition at line 68 of file input_box.h.