A box over the rest of the UI that has to be dealt with first, e.g. a question or a login code.
More...
|
| | Modal () |
| | Default constructor.
|
| |
| const ModalStyle & | get_style (const Context &ctx) const |
| | Get the style this modal draws with.
|
| |
| Label & | add_text (const std::string &text, const asw::Font &font=nullptr) |
| | Add a line of text, sized to fit.
|
| |
| Button & | add_button (const std::string &text, std::function< void()> on_click) |
| | Add a button, sized to its text.
|
| |
| void | close () |
| | Close the modal. Calls on_close, then takes it off the screen. Safe to call from its own buttons or from on_close.
|
| |
| bool | closed () const |
| | True once closed.
|
| |
| void | measure (Context &ctx) override |
| | Size to the children, at least the style's min_width.
|
| |
| bool | on_event (Context &ctx, const UIEvent &e) override |
| | Close on back.
|
| |
| void | draw (Context &ctx) override |
| | Draw the box, then the children.
|
| |
| void | layout (Context &ctx) override |
| | Place the children.
|
| |
| | 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 | on_focus_changed (Context &ctx, bool focused) |
| | Called when focus state changes.
|
| |
| 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.
|
| |
|
| std::function< void()> | on_close |
| | Called once when the modal closes, from close() or back.
|
| |
| bool | close_on_back = true |
| | Close back when pressed. Turn off for a modal the player must answer with one of its buttons.
|
| |
| std::optional< ModalStyle > | style |
| | Style for this modal only. Uses the theme modal style when empty.
|
| |
| Direction | direction = Direction::Vertical |
| | Direction children are placed in.
|
| |
| Align | align = Align::Stretch |
| | Where children sit across the stack.
|
| |
| float | gap = 8.0F |
| | Space between children.
|
| |
| float | padding = 0.0F |
| | Space inside the stack on every side.
|
| |
| 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.
|
| |
A box over the rest of the UI that has to be dealt with first, e.g. a question or a login code.
Open one with Root::open_modal. While it is open the screen behind is dimmed, the pointer and focus only reach the modal, and back closes it. Its children stack top to bottom, centred, and it sizes itself to them.
Definition at line 31 of file modal.h.