pub struct EditBox<G: EditGuard = DefaultGuard<()>> { /* private fields */ }
Expand description
A text-edit box
A single- or multi-line editor for unformatted text.
See also notes on EditField
.
By default, the editor supports a single-line only;
Self::with_multi_line
and Self::with_class
can be used to change this.
Implementations§
Source§impl<A: 'static> EditBox<DefaultGuard<A>>
impl<A: 'static> EditBox<DefaultGuard<A>>
Sourcepub fn text<S: ToString>(text: S) -> Self
pub fn text<S: ToString>(text: S) -> Self
Construct an EditBox
with the given inital text
(no event handling)
Sourcepub fn string(
value_fn: impl Fn(&A) -> String + 'static,
) -> EditBox<StringGuard<A>>
pub fn string( value_fn: impl Fn(&A) -> String + 'static, ) -> EditBox<StringGuard<A>>
Construct a read-only EditBox
displaying some String
value
Sourcepub fn parser<T: Debug + Display + FromStr, M: Debug + 'static>(
value_fn: impl Fn(&A) -> T + 'static,
msg_fn: impl Fn(T) -> M + 'static,
) -> EditBox<ParseGuard<A, T>>
pub fn parser<T: Debug + Display + FromStr, M: Debug + 'static>( value_fn: impl Fn(&A) -> T + 'static, msg_fn: impl Fn(T) -> M + 'static, ) -> EditBox<ParseGuard<A, T>>
Construct an EditBox
for a parsable value (e.g. a number)
On update, value_fn
is used to extract a value from input data
which is then formatted as a string via Display
.
If, however, the input field has focus, the update is ignored.
On every edit, the guard attempts to parse the field’s input as type
T
via FromStr
, caching the result and setting the error state.
On field activation and focus loss when a T
value is cached (see
previous paragraph), on_afl
is used to construct a message to be
emitted via EventCx::push
. The cached value is then cleared to
avoid sending duplicate messages.
Sourcepub fn instant_parser<T: Debug + Display + FromStr, M: Debug + 'static>(
value_fn: impl Fn(&A) -> T + 'static,
msg_fn: impl Fn(T) -> M + 'static,
) -> EditBox<InstantParseGuard<A, T>>
pub fn instant_parser<T: Debug + Display + FromStr, M: Debug + 'static>( value_fn: impl Fn(&A) -> T + 'static, msg_fn: impl Fn(T) -> M + 'static, ) -> EditBox<InstantParseGuard<A, T>>
Construct an EditBox
for a parsable value (e.g. a number)
On update, value_fn
is used to extract a value from input data
which is then formatted as a string via Display
.
If, however, the input field has focus, the update is ignored.
On every edit, the guard attempts to parse the field’s input as type
T
via FromStr
. On success, the result is converted to a
message via on_afl
then emitted via EventCx::push
.
Source§impl<A: 'static> EditBox<StringGuard<A>>
impl<A: 'static> EditBox<StringGuard<A>>
Sourcepub fn with_msg<M>(self, msg_fn: impl Fn(&str) -> M + 'static) -> Selfwhere
M: Debug + 'static,
pub fn with_msg<M>(self, msg_fn: impl Fn(&str) -> M + 'static) -> Selfwhere
M: Debug + 'static,
Assign a message function for a String
value
The msg_fn
is called when the field is activated (Enter)
and when it loses focus after content is changed.
This method sets self as editable (see Self::with_editable
).
Source§impl<G: EditGuard> EditBox<G>
impl<G: EditGuard> EditBox<G>
Sourcepub fn with_text(self, text: impl ToString) -> Self
pub fn with_text(self, text: impl ToString) -> Self
Set the initial text (inline)
This method should only be used on a new EditBox
.
Sourcepub fn with_editable(self, editable: bool) -> Self
pub fn with_editable(self, editable: bool) -> Self
Set whether this widget is editable (inline)
Sourcepub fn with_multi_line(self, multi_line: bool) -> Self
pub fn with_multi_line(self, multi_line: bool) -> Self
Set whether this EditBox
uses multi-line mode
This setting has two effects: the vertical size allocation is increased and wrapping is enabled if true. Default: false.
This method is ineffective if the text class is set by
Self::with_class
to anything other than TextClass::Edit
.
Sourcepub fn with_class(self, class: TextClass) -> Self
pub fn with_class(self, class: TextClass) -> Self
Set the text class used
Sourcepub fn with_lines(self, min_lines: i32, ideal_lines: i32) -> Self
pub fn with_lines(self, min_lines: i32, ideal_lines: i32) -> Self
Adjust the height allocation (inline)
Sourcepub fn with_width_em(self, min_em: f32, ideal_em: f32) -> Self
pub fn with_width_em(self, min_em: f32, ideal_em: f32) -> Self
Adjust the width allocation (inline)
Methods from Deref<Target = EditField<G>>§
Sourcepub fn set_outer_rect(&mut self, outer_rect: Rect, style: FrameStyle)
pub fn set_outer_rect(&mut self, outer_rect: Rect, style: FrameStyle)
Set outer rect
Optionally, call this immediately after Self::set_rect
with the
“outer” rect and frame style. In this case, a frame will be drawn using
this outer_rect
and style
. The advantages are:
- The “error state” background can correctly fill the frame
- Clicks on the frame get registered as clicks on self
Any other widgets painted over the outer_rect
should be drawn after
the EditField
.
Sourcepub fn is_editable(&self) -> bool
pub fn is_editable(&self) -> bool
Get whether this EditField
is editable
Sourcepub fn set_editable(&mut self, editable: bool)
pub fn set_editable(&mut self, editable: bool)
Set whether this EditField
is editable
Sourcepub fn multi_line(&self) -> bool
pub fn multi_line(&self) -> bool
True if the editor uses multi-line mode
See also: Self::with_multi_line
Sourcepub fn set_width_em(&mut self, min_em: f32, ideal_em: f32)
pub fn set_width_em(&mut self, min_em: f32, ideal_em: f32)
Adjust the width allocation
Sourcepub fn has_edit_focus(&self) -> bool
pub fn has_edit_focus(&self) -> bool
Get whether the widget has edit focus
This is true when the widget is editable and has keyboard focus.
Sourcepub fn set_error_state(&mut self, error_state: bool) -> Action
pub fn set_error_state(&mut self, error_state: bool) -> Action
Set the error state
When true, the input field’s background is drawn red.
This state is cleared by Self::set_string
.
Trait Implementations§
Source§impl<G: EditGuard> Events for EditBox<G>
impl<G: EditGuard> Events for EditBox<G>
Source§fn handle_messages(&mut self, cx: &mut EventCx<'_>, _: &G::Data)
fn handle_messages(&mut self, cx: &mut EventCx<'_>, _: &G::Data)
Source§fn handle_scroll(&mut self, cx: &mut EventCx<'_>, _: &G::Data, _: Scroll)
fn handle_scroll(&mut self, cx: &mut EventCx<'_>, _: &G::Data, _: Scroll)
Source§fn configure_recurse(&mut self, cx: &mut ConfigCx<'_>, data: &Self::Data)
fn configure_recurse(&mut self, cx: &mut ConfigCx<'_>, data: &Self::Data)
Source§fn update(&mut self, cx: &mut ConfigCx<'_>, data: &Self::Data)
fn update(&mut self, cx: &mut ConfigCx<'_>, data: &Self::Data)
Source§fn update_recurse(&mut self, cx: &mut ConfigCx<'_>, data: &Self::Data)
fn update_recurse(&mut self, cx: &mut ConfigCx<'_>, data: &Self::Data)
Source§impl<G: EditGuard> Layout for EditBox<G>
impl<G: EditGuard> Layout for EditBox<G>
Source§fn size_rules(&mut self, sizer: SizeCx<'_>, axis: AxisInfo) -> SizeRules
fn size_rules(&mut self, sizer: SizeCx<'_>, axis: AxisInfo) -> SizeRules
Source§fn set_rect(
&mut self,
cx: &mut ConfigCx<'_>,
outer_rect: Rect,
hints: AlignHints,
)
fn set_rect( &mut self, cx: &mut ConfigCx<'_>, outer_rect: Rect, hints: AlignHints, )
Source§fn widget_name(&self) -> &'static str
fn widget_name(&self) -> &'static str
Source§fn num_children(&self) -> usize
fn num_children(&self) -> usize
Source§fn get_child(&self, index: usize) -> Option<&dyn Layout>
fn get_child(&self, index: usize) -> Option<&dyn Layout>
dyn Layout
Read moreSource§fn find_child_index(&self, id: &Id) -> Option<usize>
fn find_child_index(&self, id: &Id) -> Option<usize>
id
, if any Read moreSource§fn translation(&self) -> Offset
fn translation(&self) -> Offset
Auto Trait Implementations§
impl<G> Freeze for EditBox<G>where
G: Freeze,
impl<G> RefUnwindSafe for EditBox<G>where
G: RefUnwindSafe,
impl<G = DefaultGuard<()>> !Send for EditBox<G>
impl<G = DefaultGuard<()>> !Sync for EditBox<G>
impl<G> Unpin for EditBox<G>where
G: Unpin,
impl<G> UnwindSafe for EditBox<G>where
G: UnwindSafe,
Blanket Implementations§
Source§impl<W> AdaptWidget for Wwhere
W: Widget,
impl<W> AdaptWidget for Wwhere
W: Widget,
Source§fn pack(self, hints: AlignHints) -> Pack<Self>
fn pack(self, hints: AlignHints) -> Pack<Self>
Source§fn margins(self, dirs: Directions, style: MarginStyle) -> Margins<Self>
fn margins(self, dirs: Directions, style: MarginStyle) -> Margins<Self>
Source§fn on_configure<F>(self, f: F) -> AdaptEvents<Self>where
F: Fn(&mut AdaptConfigCx<'_, '_>, &mut Self) + 'static,
fn on_configure<F>(self, f: F) -> AdaptEvents<Self>where
F: Fn(&mut AdaptConfigCx<'_, '_>, &mut Self) + 'static,
Events::configure
Read moreSource§fn on_update<F>(self, f: F) -> AdaptEvents<Self>
fn on_update<F>(self, f: F) -> AdaptEvents<Self>
Events::update
Read moreSource§fn on_message<M, H>(self, handler: H) -> AdaptEvents<Self>
fn on_message<M, H>(self, handler: H) -> AdaptEvents<Self>
M
Read moreSource§fn map_message<M, N, H>(self, handler: H) -> AdaptEvents<Self>
fn map_message<M, N, H>(self, handler: H) -> AdaptEvents<Self>
Source§fn on_messages<H>(self, handler: H) -> AdaptEvents<Self>
fn on_messages<H>(self, handler: H) -> AdaptEvents<Self>
Source§fn with_min_size_px(self, w: i32, h: i32) -> Reserve<Self>
fn with_min_size_px(self, w: i32, h: i32) -> Reserve<Self>
Source§fn with_min_size_em(self, w: f32, h: f32) -> Reserve<Self>
fn with_min_size_em(self, w: f32, h: f32) -> Reserve<Self>
Source§fn with_label<D, T>(self, direction: D, label: T) -> WithLabel<Self, D>
fn with_label<D, T>(self, direction: D, label: T) -> WithLabel<Self, D>
Source§impl<W> AdaptWidgetAny for W
impl<W> AdaptWidgetAny for W
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<S, T> CastApprox<T> for Swhere
T: ConvApprox<S>,
impl<S, T> CastApprox<T> for Swhere
T: ConvApprox<S>,
Source§fn try_cast_approx(self) -> Result<T, Error>
fn try_cast_approx(self) -> Result<T, Error>
Source§fn cast_approx(self) -> T
fn cast_approx(self) -> T
Source§impl<S, T> CastFloat<T> for Swhere
T: ConvFloat<S>,
impl<S, T> CastFloat<T> for Swhere
T: ConvFloat<S>,
Source§fn cast_trunc(self) -> T
fn cast_trunc(self) -> T
Source§fn cast_nearest(self) -> T
fn cast_nearest(self) -> T
Source§fn cast_floor(self) -> T
fn cast_floor(self) -> T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<W> LayoutExt for W
impl<W> LayoutExt for W
Source§fn identify(&self) -> IdentifyWidget<'_>
fn identify(&self) -> IdentifyWidget<'_>
Source§fn is_strict_ancestor_of(&self, id: &Id) -> bool
fn is_strict_ancestor_of(&self, id: &Id) -> bool
id
is not self and is a descendant Read more