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...) {
113 return label{tr{
"Invalid integer"}};
121 return to_text(*value);
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...) {
164 return label{elusive_icon::WarningSign, tr{
"[E]Invalid floating point number."}};
172 return to_text(*value);
186 typename decltype(value)::callback_token _value_cbt;
201 using value_type = observer_decay_t<
decltype(value)>;
#define hi_forward(x)
Forward a value, based on the decltype of the value.
Definition utility.hpp:29
Functionality for labels, text and icons.
T from_text(text_view str, int base=10)
Convert a string to an integer.
Definition text.hpp:518
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
geometry/margins.hpp
Definition cache.hpp:11
The HikoGUI API version 1.
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