|
HikoGUI
A low latency retained GUI
|
#include <hikogui/widgets/selection_widget.hpp>
Public Types | |
| using | super = widget |
| using | delegate_type = selection_delegate |
Public Types inherited from hi::v1::widget | |
| using | callback_token = notifier<void()>::callback_token |
| using | awaiter_type = notifier<void()>::awaiter_type |
Public Member Functions | |
| selection_widget (widget *parent, std::shared_ptr< delegate_type > delegate) noexcept | |
| Construct a selection widget with a delegate. | |
| selection_widget (widget *parent, std::shared_ptr< delegate_type > delegate, selection_widget_attribute auto &&first_attribute, selection_widget_attribute auto &&...attributes) noexcept | |
| Construct a selection widget with a delegate. | |
| template<different_from< std::shared_ptr< delegate_type > > Value, forward_of< observer< std::vector< std::pair< observer_decay_t< Value >, label > > > > OptionList, selection_widget_attribute... Attributes> requires requires { make_default_selection_delegate(hi_forward(value), hi_forward(option_list)); } | |
| selection_widget (widget *parent, Value &&value, OptionList &&option_list, Attributes &&...attributes) noexcept | |
| Construct a selection widget which will monitor an option list and a value. | |
| template<different_from< std::shared_ptr< delegate_type > > Value, forward_of< observer< std::vector< std::pair< observer_decay_t< Value >, label > > > > OptionList, forward_of< observer< observer_decay_t< Value > > > OffValue, selection_widget_attribute... Attributes> requires requires { make_default_selection_delegate(hi_forward(value), hi_forward(option_list), hi_forward(off_value)); } | |
| selection_widget (widget *parent, Value &&value, OptionList &&option_list, OffValue &&off_value, Attributes &&...attributes) noexcept | |
| Construct a selection widget which will monitor an option list and a value. | |
Public Member Functions inherited from hi::v1::widget | |
| widget (widget *parent) noexcept | |
| widget (widget const &)=delete | |
| widget (widget &&)=delete | |
| widget & | operator= (widget &&)=delete |
| widget & | operator= (widget const &)=delete |
| generator< widget & > | children (bool include_invisible) noexcept |
| virtual hitbox | hitbox_test_from_parent (point2 position) const noexcept |
| Call hitbox_test from a parent widget. | |
| virtual hitbox | hitbox_test_from_parent (point2 position, hitbox sibling_hitbox) const noexcept |
| Call hitbox_test from a parent widget. | |
| void | reset_layout (gfx_surface *new_surface, float new_scale) noexcept |
| Reset the layout. | |
| virtual void | layout () noexcept |
| virtual sub_theme_selector_type | sub_theme_selector () const noexcept |
| virtual bool | process_event (gui_event const &event) const noexcept |
| virtual void | request_redraw () const noexcept |
| Request the widget to be redrawn on the next frame. | |
| virtual bool | handle_event_recursive (gui_event const &event, std::vector< widget_id > const &reject_list=std::vector< widget_id >{}) noexcept |
| Handle command recursive. | |
| virtual widget_id | find_next_widget (widget_id current_keyboard_widget, keyboard_focus_group group, keyboard_focus_direction direction) const noexcept |
| Find the next widget that handles keyboard focus. | |
| widget_id | find_first_widget (keyboard_focus_group group) const noexcept |
| widget_id | find_last_widget (keyboard_focus_group group) const noexcept |
| bool | is_first (keyboard_focus_group group) const noexcept |
| bool | is_last (keyboard_focus_group group) const noexcept |
| virtual void | scroll_to_show (hi::aarectangle rectangle) noexcept |
| Scroll to show the given rectangle on the window. | |
| std::vector< widget_id > | parent_chain () const noexcept |
| Get a list of parents of a given widget. | |
| virtual bool | is_tab_button () const noexcept |
| Check if this widget is a tab-button. | |
| template<forward_of< void()> Callback> | |
| callback_token | subscribe (Callback &&callback, callback_flags flags=callback_flags::synchronous) const noexcept |
| awaiter_type | operator co_await () const noexcept |
Data Fields | |
| std::shared_ptr< delegate_type > | delegate |
| observer< label > | off_label |
| The label to show when nothing is selected. | |
| observer< alignment > | alignment = hi::alignment::middle_flush() |
| How the label and icon are aligned. | |
Data Fields inherited from hi::v1::widget | |
| widget_id | id = {} |
| The numeric identifier of a widget. | |
| widget * | parent = nullptr |
| Pointer to the parent widget. | |
| gfx_surface * | surface = nullptr |
| The surface this widget is drawn on. | |
| observer< widget_mode > | mode = widget_mode::enabled |
| The widget mode. | |
| observer< bool > | hover = false |
| Mouse cursor is hovering over the widget. | |
| observer< bool > | clicked = false |
| The widget is being clicked by the mouse. | |
| observer< bool > | focus = false |
| The widget has keyboard focus. | |
| observer< widget_state > | state = widget_state::off |
| The state of the widget. | |
| size_t | semantic_layer = 0_uz |
| The draw layer of the widget. | |
| grid_cell | cell |
Static Public Attributes | |
| static constexpr auto | prefix = Name / "selection" |
A graphical control element that allows the user to choose only one of a predefined set of mutually exclusive options.
The following example creates a selection widget with three options. which will monitor and modify value to display the options from the option_list. At application startup, value is zero and none of the options is selected:
|
inlinenoexcept |
Construct a selection widget with a delegate.
| parent | The owner of the selection widget. |
| delegate | The delegate which will control the selection widget. |
|
inlinenoexcept |
Construct a selection widget with a delegate.
| parent | The owner of the selection widget. |
| delegate | The delegate which will control the selection widget. |
| first_attribute | First of attributes. |
| attributes | Different attributes used to configure the label's on the selection box: a label, alignment. If an label is passed it is used as the label to show in the off-state. |
|
inlinenoexcept |
Construct a selection widget which will monitor an option list and a value.
| parent | The owner of the selection widget. |
| value | The value or observer value to monitor. |
| option_list | An vector or an observer vector of pairs of keys and labels. The keys are of the same type as the value. The labels are of type label. |
| attributes | Different attributes used to configure the label's on the selection box: a label, alignment. If an label is passed it is used as the label to show in the off-state. |
|
inlinenoexcept |
Construct a selection widget which will monitor an option list and a value.
| parent | The owner of the selection widget. |
| value | The value or observer value to monitor. |
| option_list | An vector or an observer vector of pairs of keys and labels. The keys are of the same type as the value. The labels are of type label. |
| off_value | An optional off-value. This value is used to determine which value yields an 'off' state. |
| attributes | Different attributes used to configure the label's on the selection box: a label, alignment. If an label is passed it is used as the label to show in the off-state. |
| observer<alignment> hi::v1::selection_widget< Name >::alignment = hi::alignment::middle_flush() |
How the label and icon are aligned.
Different layouts:
alignment::top_left: icon and text are inline with each other, with the icon in the top-left corner.alignment::top_right: icon and text are inline with each other, with the icon in the top-right corner.alignment::middle_left: icon and text are inline with each other, with the icon in the middle-left.alignment::middle_right: icon and text are inline with each other, with the icon in the middle-right.alignment::bottom_left: icon and text are inline with each other, with the icon in the bottom-left.alignment::bottom_right: icon and text are inline with each other, with the icon in the bottom-right.alignment::top_center: Larger icon above the text, both center aligned.alignment::bottom_center: Larger icon below the text, both center aligned.alignment::middle_center: text drawn across a large icon. Should only be used with a pixmap icon. | observer<label> hi::v1::selection_widget< Name >::off_label |
The label to show when nothing is selected.