pub struct SpinBox<A, T: SpinValue> { /* private fields */ }
Expand description
A numeric entry widget with up/down arrows
The value is constrained to a given range
. Increment and decrement
operations advance to the next/previous multiple of step
.
Recommendations for optimal behaviour:
- Ensure that range end points are a multiple of
step
- With floating-point types, ensure that
step
is exactly representable, e.g. an integer or a power of 2.
§Messages
SetValueF64
may be used to set the input value.
IncrementStep
and DecrementStep
change the value by one step.
SetValueText
may be used to set the input as a text value.
ReplaceSelectedText
may be used to replace the selected text.
Implementations§
Source§impl<A, T: SpinValue> SpinBox<A, T>
impl<A, T: SpinValue> SpinBox<A, T>
Sourcepub fn new(
range: RangeInclusive<T>,
state_fn: impl Fn(&ConfigCx<'_>, &A) -> T + 'static,
) -> Self
pub fn new( range: RangeInclusive<T>, state_fn: impl Fn(&ConfigCx<'_>, &A) -> T + 'static, ) -> Self
Construct a spin box
Values vary within the given range
. The default step size is
1 for common types (see SpinValue::default_step
).
Sourcepub fn new_msg<M: Debug + 'static>(
range: RangeInclusive<T>,
state_fn: impl Fn(&ConfigCx<'_>, &A) -> T + 'static,
msg_fn: impl Fn(T) -> M + 'static,
) -> Self
pub fn new_msg<M: Debug + 'static>( range: RangeInclusive<T>, state_fn: impl Fn(&ConfigCx<'_>, &A) -> T + 'static, msg_fn: impl Fn(T) -> M + 'static, ) -> Self
Construct a spin box
- Values vary within the given
range
- The default step size is 1 for common types (see
SpinValue::default_step
) state_fn
extracts the current state from input data- A message generated by
msg_fn
is emitted when toggled
Sourcepub fn with_msg<M>(self, f: impl Fn(T) -> M + 'static) -> Selfwhere
M: Debug + 'static,
pub fn with_msg<M>(self, f: impl Fn(T) -> M + 'static) -> Selfwhere
M: Debug + 'static,
Send the message generated by f
on change
Sourcepub fn with(self, f: impl Fn(&mut EventCx<'_>, &A, T) + 'static) -> Self
pub fn with(self, f: impl Fn(&mut EventCx<'_>, &A, T) + 'static) -> Self
Call the handler f
on change
This closure is called when the value is changed, specifically:
- If the increment/decrement buttons, Up/Down keys or mouse scroll wheel is used and the value changes
- If the value is adjusted via the edit box and the result is valid
- If Enter is pressed in the edit box
Sourcepub fn with_class(self, class: TextClass) -> Self
pub fn with_class(self, class: TextClass) -> Self
Set the text class used
The default is: TextClass::Edit(false)
.
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 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)
Sourcepub fn set_unit(&mut self, cx: &mut EventState, unit: impl ToString)
pub fn set_unit(&mut self, cx: &mut EventState, unit: impl ToString)
Set the unit
This is an annotation shown after the value.
Trait Implementations§
Source§impl<A, T: SpinValue> Events for SpinBox<A, T>
impl<A, T: SpinValue> Events for SpinBox<A, T>
Source§fn handle_messages(&mut self, cx: &mut EventCx<'_>, data: &A)
fn handle_messages(&mut self, cx: &mut EventCx<'_>, data: &A)
Source§const REDRAW_ON_MOUSE_OVER: bool = false
const REDRAW_ON_MOUSE_OVER: bool = false
Source§fn mouse_over_icon(&self) -> Option<CursorIcon>
fn mouse_over_icon(&self) -> Option<CursorIcon>
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<A, T: SpinValue> Layout for SpinBox<A, T>
impl<A, T: SpinValue> Layout for SpinBox<A, T>
Source§impl<A, T: SpinValue> MacroDefinedLayout for SpinBox<A, T>
impl<A, T: SpinValue> MacroDefinedLayout for SpinBox<A, T>
Source§impl<A, T: SpinValue> Tile for SpinBox<A, T>
impl<A, T: SpinValue> Tile for SpinBox<A, T>
Source§fn get_child(&self, index: usize) -> Option<&dyn Tile>
fn get_child(&self, index: usize) -> Option<&dyn Tile>
dyn Tile
, if available Read moreSource§fn child_indices(&self) -> ChildIndices
fn child_indices(&self) -> ChildIndices
Source§fn role_child_properties(&self, cx: &mut dyn RoleCx, index: usize)
fn role_child_properties(&self, cx: &mut dyn RoleCx, index: usize)
index
Read moreAuto Trait Implementations§
impl<A, T> Freeze for SpinBox<A, T>where
T: Freeze,
impl<A, T> !RefUnwindSafe for SpinBox<A, T>
impl<A, T> !Send for SpinBox<A, T>
impl<A, T> !Sync for SpinBox<A, T>
impl<A, T> Unpin for SpinBox<A, T>where
T: Unpin,
impl<A, T> !UnwindSafe for SpinBox<A, T>
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> 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> TileExt for W
impl<W> TileExt for W
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