7#include "text_field_delegate.hpp"
8#include "../observable.hpp"
10#include "../charconv.hpp"
22template<std::
integral T>
29 template<
typename Value>
36 value.subscribe(callback_ptr);
42 value.unsubscribe(callback_ptr);
48 [[maybe_unused]]
auto dummy = from_string<value_type>(text, 10);
50 return {
l10n{
"Invalid integer"}};
58 return to_string(*value);
64 value = from_string<value_type>(text, 10);
72template<std::
floating_po
int T>
73class default_text_field_delegate<T> :
public text_field_delegate {
77 observable<value_type> value;
79 template<
typename Value>
80 default_text_field_delegate(Value &&value) noexcept : value(std::forward<Value>(value))
84 callback_ptr_type subscribe(text_field_widget &sender, callback_ptr_type
const &callback_ptr)
noexcept override
86 value.subscribe(callback_ptr);
90 void unsubscribe(text_field_widget &sender, callback_ptr_type
const &callback_ptr)
noexcept override
92 value.unsubscribe(callback_ptr);
98 [[maybe_unused]]
auto dummy = from_string<value_type>(text);
100 return {
l10n{
"Invalid integer"}};
108 return to_string(*value);
114 value = from_string<value_type>(text);
122template<
typename Value>
123default_text_field_delegate(Value &&) -> default_text_field_delegate<observable_argument_t<std::remove_cvref_t<Value>>>;
125template<
typename Value,
typename... Args>
128 using value_type = observable_argument_t<std::remove_cvref_t<Value>>;
129 return std::make_unique<default_text_field_delegate<value_type>>(std::forward<Value>(value), std::forward<Args>(args)...);
Exception thrown during parsing on an error.
Definition exception.hpp:26
A localizable message.
Definition l10n.hpp:149
A value which can be observed for modifications.
Definition observable.hpp:464
Definition default_text_field_delegate.hpp:20
std::string text(text_field_widget &sender) noexcept override
Get the text to show in the text field.
Definition default_text_field_delegate.hpp:56
void set_text(text_field_widget &sender, std::string_view text) noexcept override
Set the text as entered by the user.
Definition default_text_field_delegate.hpp:61
std::optional< label > validate(text_field_widget &sender, std::string_view text) noexcept override
Validate the text field.
Definition default_text_field_delegate.hpp:45
Definition text_field_delegate.hpp:15
A single line text field.
Definition text_field_widget.hpp:55