11#include "../l10n/l10n.hpp"
12#include "../macros.hpp"
17namespace hi {
inline namespace v1 {
18class selection_widget;
27 using callback_token = notifier_type::callback_token;
28 using callback_proto = notifier_type::callback_proto;
57 return _notifier.subscribe(hi_forward(callback), flags);
61 notifier_type _notifier;
90 value(hi_forward(value)), options(hi_forward(options)), off_value(hi_forward(off_value))
93 _value_cbt = this->value.subscribe([&](
auto...){ this->_notifier(); });
94 _options_cbt = this->options.subscribe([&](
auto...){ this->_notifier(); });
95 _off_value_cbt = this->off_value.subscribe([&](
auto...){ this->_notifier(); });
113 if (index == -1 || index >= std::ssize(*options)) {
116 value = (*options)[index].first;
127 for (
auto&&
option : *options) {
128 if (*value ==
option.first) {
139 typename decltype(value)::callback_token _value_cbt;
140 typename decltype(options)::callback_token _options_cbt;
141 typename decltype(off_value)::callback_token _off_value_cbt;
155 requires(
sizeof...(off_value) <= 1)
and
159 hi_forward(value), hi_forward(options), hi_forward(off_value)...};
162 return std::make_shared<default_selection_delegate<observer_decay_t<
decltype(value)>>>(
163 hi_forward(value), hi_forward(options), hi_forward(off_value)...);
std::shared_ptr< selection_delegate > make_default_selection_delegate(auto &&value, auto &&options, auto &&...off_value) noexcept
Create a shared pointer to a default selection delegate.
Definition selection_delegate.hpp:154
DOXYGEN BUG.
Definition algorithm.hpp:16
geometry/margins.hpp
Definition lookahead_iterator.hpp:5
constexpr Out narrow_cast(In const &rhs) noexcept
Cast numeric values without loss of precision.
Definition cast.hpp:377
A delegate that controls the state of a selection_widget.
Definition selection_delegate.hpp:24
virtual std::pair< std::vector< label >, ssize_t > options_and_selected(selection_widget const &sender) const noexcept
Retrieve the label of an option.
Definition selection_delegate.hpp:47
virtual void set_selected(selection_widget &sender, ssize_t index) noexcept
Called when an option is selected by the user.
Definition selection_delegate.hpp:41
callback_token subscribe(forward_of< callback_proto > auto &&callback, callback_flags flags=callback_flags::synchronous) noexcept
Subscribe a callback for notifying the widget of a data change.
Definition selection_delegate.hpp:55
A delegate that control the state of a selection_widget.
Definition selection_delegate.hpp:70
std::pair< std::vector< label >, ptrdiff_t > options_and_selected(selection_widget const &sender) const noexcept override
Retrieve the label of an option.
Definition selection_delegate.hpp:120
default_selection_delegate(forward_of< observer< value_type > > auto &&value, forward_of< observer< options_type > > auto &&options, forward_of< observer< value_type > > auto &&off_value) noexcept
Construct a default selection delegate.
Definition selection_delegate.hpp:86
default_selection_delegate(forward_of< observer< value_type > > auto &&value, forward_of< observer< options_type > > auto &&options) noexcept
Construct a default selection delegate.
Definition selection_delegate.hpp:104
A graphical control element that allows the user to choose only one of a predefined set of mutually e...
Definition selection_widget.hpp:45
True if T is a forwarded type of Forward.
Definition concepts.hpp:131