12#include "../observer.hpp"
18namespace hi {
inline namespace v1 {
26 using notifier_type = notifier<>;
27 using callback_token = notifier_type::callback_token;
28 using callback_proto = notifier_type::callback_proto;
31 virtual void init(
widget const& sender)
noexcept {}
32 virtual void deinit(
widget const& sender)
noexcept {}
70 subscribe(forward_of<callback_proto>
auto&& callback, callback_flags flags = callback_flags::synchronous)
noexcept
72 return _notifier.subscribe(
hi_forward(callback), flags);
76 notifier_type _notifier;
94template<std::
integral T>
99 observer<value_type> value;
103 _value_cbt = this->value.subscribe([&](
auto...) {
111 [[maybe_unused]]
auto dummy = from_text<value_type>(
text, 10);
113 return label{tr{
"Invalid integer"}};
121 return to_text(*value);
127 value = from_text<value_type>(
text, 10);
135 typename decltype(value)::callback_token _value_cbt;
145template<std::
floating_po
int T>
148 using value_type = T;
150 observer<value_type> value;
154 _value_cbt = this->value.subscribe([&](
auto...) {
162 [[maybe_unused]]
auto dummy = from_text<value_type>(
text);
164 return label{elusive_icon::WarningSign, tr{
"[E]Invalid floating point number."}};
172 return to_text(*value);
178 value = from_text<value_type>(
text);
186 typename decltype(value)::callback_token _value_cbt;
201 using value_type = observer_decay_t<
decltype(value)>;
202 return std::make_shared<default_text_field_delegate<value_type>>(
hi_forward(value));
Functionality for labels, text and icons.
#define hi_forward(x)
Forward a value, based on the decltype of the value.
Definition utility.hpp:29
std::shared_ptr< text_field_delegate > make_default_text_field_delegate(auto &&value) noexcept
Create a shared pointer to a default text delegate.
Definition text_field_delegate.hpp:196
DOXYGEN BUG.
Definition algorithm.hpp:13
geometry/margins.hpp
Definition cache.hpp:11
Exception thrown during parsing on an error.
Definition exception.hpp:50
A delegate that controls the state of a text_field_widget.
Definition text_field_delegate.hpp:24
virtual std::optional< label > validate(widget &sender, hi::text_view text) noexcept
Validate the text field.
Definition text_field_delegate.hpp:40
virtual hi::text text(widget &sender) noexcept
Get the text to show in the text field.
Definition text_field_delegate.hpp:52
virtual void set_text(widget &sender, hi::text_view text) noexcept
Set the text as entered by the user.
Definition text_field_delegate.hpp:67
A default text delegate.
Definition text_field_delegate.hpp:85
void set_text(widget &sender, hi::text_view text) noexcept override
Set the text as entered by the user.
Definition text_field_delegate.hpp:124
std::optional< label > validate(widget &sender, hi::text_view text) noexcept override
Validate the text field.
Definition text_field_delegate.hpp:108
std::optional< label > validate(widget &sender, text_view text) noexcept override
Validate the text field.
Definition text_field_delegate.hpp:159
hi::text text(widget &sender) noexcept override
Get the text to show in the text field.
Definition text_field_delegate.hpp:119