Skip to main content

Checkbox

Struct Checkbox 

Source
pub struct Checkbox<M> { /* private fields */ }
Expand description

A checkbox with an optional label beside it.

The message is a function of the new value rather than a fixed value, so an application matches on what the checkbox became rather than looking the widget up afterwards. An enum’s tuple variant already is such a function:

enum Message { Muted(bool) }
Checkbox::new("Mute", Message::Muted);

A plain fn pointer rather than a closure, so this needs no allocation, no M: Clone, and works in no_std.

§Why there is no indeterminate state

The third state only means anything for a checkbox that summarises other checkboxes — a parent over a list of children — and neither the list nor the hierarchy exists here yet. It is also additive when it does: HTML keeps indeterminate as a property separate from checked precisely because it is a way of drawing a checkbox rather than a third value it can hold. So this stays a bool and gains a flag later, rather than becoming an enum everybody has to match on for a case nothing can currently produce.

Implementations§

Source§

impl<M> Checkbox<M>

Source

pub fn new(label: impl Into<String>, message: fn(bool) -> M) -> Self

An unchecked box whose message is built from the value it changes to.

Source

pub fn inert(label: impl Into<String>) -> Self

A checkbox that emits nothing, for a value the application reads rather than reacts to.

Source

pub fn with_checked(self, checked: bool) -> Self

Sets the initial value.

Source

pub fn with_role(self, role: Role) -> Self

Sets the colour role of the filled box. The tick comes from the theme’s pairing, so it stays readable whichever role and theme are chosen.

Source

pub fn with_style(self, style: TextStyle) -> Self

Sets the label’s font and size.

Source

pub fn with_size(self, size_px: u16) -> Self

Sets the label’s size, keeping the font.

Source

pub const fn checked(&self) -> bool

Whether the box is ticked.

Source

pub fn set_checked(&mut self, checked: bool)

Sets the value without emitting anything.

The message reports what a person did. An application that assigns here and then receives its own message back would either loop or have to guard against itself, which is the bug this rule exists to prevent.

Source

pub fn label(&self) -> &str

The current label.

Source

pub fn set_label(&mut self, label: impl Into<String>)

Replaces the label.

Source

pub fn set_role(&mut self, role: Role)

Replaces the colour role.

Source

pub fn set_style(&mut self, style: TextStyle)

Replaces the label’s font and size.

For an application that registers a font after building its tree, which is the ordinary case: the tree has to exist before anyone knows whether the font file was there.

Source

pub fn preferred_width(&self, theme: &Theme, engine: &mut TextEngine) -> i32

Width this checkbox needs for its box, its gap and its label.

Takes the theme because the box is a theme metric — a touch theme’s box is 28 logical pixels where a mouse theme’s is 20 — and the engine because with a proportional font the label’s width is not the character count times anything.

Trait Implementations§

Source§

impl<M: Clone> Clone for Checkbox<M>

Source§

fn clone(&self) -> Checkbox<M>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<M: Debug> Debug for Checkbox<M>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<M> Describe for Checkbox<M>

Source§

const KIND: &'static str = "checkbox"

The name a form file uses for this widget. Kebab-case.
Source§

const DOC: &'static str = "A box and a tick: one thing that is either on or off."

One line saying what this widget is, for somebody choosing one. Read more
Source§

const GROUP: Group = Group::Input

Which shelf of the catalogue this belongs on.
Source§

const ICON: &'static Icon

The widget’s glyph: a small portrait of the thing, for a palette to draw beside — or instead of — its name. Read more
Source§

const PROPERTIES: &'static [Property]

Every property, in the order an inspector should show them.
Source§

fn get(&self, name: &str) -> Option<Value>

The current value. Read more
Source§

fn apply(&mut self, name: &str, value: Value) -> Result<(), Mismatch>

Applies a value, reporting only what went wrong. Read more
Source§

fn set(&mut self, name: &str, value: Value) -> Result<(), PropertyError>

Applies a value, reporting what went wrong and where.
Source§

impl<M: 'static> Widget<M> for Checkbox<M>

Source§

fn describe(&self) -> Option<&dyn DynDescribe>

This widget’s property description, if it has one. Read more
Source§

fn describe_mut(&mut self) -> Option<&mut dyn DynDescribe>

The mutable half of describe.
Source§

fn measure(&self, ctx: &mut MeasureCtx<'_>, _offered: Offer) -> Measured

How big this widget would like to be, given what the caller can promise. Read more
Source§

fn paint(&self, ctx: &mut PaintCtx<'_>, canvas: &mut Pen<'_>)

Draws into canvas, which is already clipped to this widget’s bounds intersected with the damage region being repainted. Read more
Source§

fn on_event(&mut self, event: &Event<'_>, ctx: &mut EventCtx<'_, M>) -> Handled

Reacts to an event routed to this widget.
Source§

fn accepts_pointer(&self) -> bool

Returns true if the pointer can hit this widget. Read more
Source§

fn focusable(&self) -> bool

Returns true if this widget can take keyboard focus.
Source§

fn preserves_focus(&self) -> bool

Returns true if a press on this widget should leave focus exactly where it is. Read more
Source§

fn animate(&mut self, now_ms: u64) -> Animation

Advances time-based state. Called only while this widget has asked to animate — see EventCtx::request_animation — and stops being called the moment it answers Wake::Never. Read more
Source§

fn snap(&mut self, now_ms: u64) -> Animation

Lands whatever is in flight at its end state, without animating it. Read more

Auto Trait Implementations§

§

impl<M> Freeze for Checkbox<M>
where Option<fn(bool) -> M>: Freeze,

§

impl<M> RefUnwindSafe for Checkbox<M>
where Option<fn(bool) -> M>: RefUnwindSafe,

§

impl<M> Send for Checkbox<M>
where Option<fn(bool) -> M>: Send,

§

impl<M> Sync for Checkbox<M>
where Option<fn(bool) -> M>: Sync,

§

impl<M> Unpin for Checkbox<M>
where Option<fn(bool) -> M>: Unpin,

§

impl<M> UnsafeUnpin for Checkbox<M>
where Option<fn(bool) -> M>: UnsafeUnpin,

§

impl<M> UnwindSafe for Checkbox<M>
where Option<fn(bool) -> M>: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> AsAny for T
where T: Any,

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Borrows as dyn Any.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Mutably borrows as dyn Any.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynDescribe for T
where T: Describe,

Source§

fn kind(&self) -> &'static str

Source§

fn properties(&self) -> &'static [Property]

Source§

fn get_property(&self, name: &str) -> Option<Value>

Source§

fn set_property( &mut self, name: &str, value: Value, ) -> Result<(), PropertyError>

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.