Struct Switch

Source
pub struct Switch { /* private fields */ }
Expand description

A switch that toggles a bool.

Implementations§

Source§

impl Switch

Source

pub fn new() -> Switch

Create a new Switch.

Examples found in repository?
examples/switches.rs (line 37)
34fn build_widget() -> impl Widget<DemoState> {
35    let mut col = Flex::column();
36    let mut row = Flex::row();
37    let switch = LensWrap::new(Switch::new(), DemoState::value);
38    let check_box = LensWrap::new(Checkbox::new(""), DemoState::value);
39    let switch_label = Label::new("Setting label");
40
41    row.add_child(Padding::new(5.0, switch_label));
42    row.add_child(Padding::new(5.0, switch));
43    row.add_child(Padding::new(5.0, check_box));
44
45    let stepper = LensWrap::new(
46        Stepper::new()
47            .with_range(0.0, 10.0)
48            .with_step(0.5)
49            .with_wraparound(false),
50        DemoState::stepper_value,
51    );
52
53    let mut textbox_row = Flex::row();
54    // TODO: Replace Parse usage with TextBox::with_formatter
55    #[allow(deprecated)]
56    let textbox = LensWrap::new(
57        Parse::new(TextBox::new()),
58        DemoState::stepper_value.map(|x| Some(*x), |x, y| *x = y.unwrap_or(0.0)),
59    );
60    textbox_row.add_child(Padding::new(5.0, textbox));
61    textbox_row.add_child(Padding::new(5.0, stepper.center()));
62
63    let mut label_row = Flex::row();
64
65    let label = Label::new(|data: &DemoState, _env: &_| {
66        format!("Stepper value: {0:.2}", data.stepper_value)
67    });
68
69    label_row.add_child(Padding::new(5.0, label));
70
71    col.set_main_axis_alignment(MainAxisAlignment::Center);
72    col.add_child(Padding::new(5.0, row));
73    col.add_child(Padding::new(5.0, textbox_row));
74    col.add_child(Padding::new(5.0, label_row));
75    col.center()
76}
More examples
Hide additional examples
examples/flex.rs (line 273)
241fn build_widget(state: &Params) -> Box<dyn Widget<AppState>> {
242    let mut flex = match state.axis {
243        FlexType::Column => Flex::column(),
244        FlexType::Row => Flex::row(),
245    }
246    .cross_axis_alignment(state.cross_alignment)
247    .main_axis_alignment(state.main_alignment)
248    .must_fill_main_axis(state.fill_major_axis);
249
250    flex.add_child(
251        TextBox::new()
252            .with_placeholder("Sample text")
253            .lens(DemoState::input_text),
254    );
255    space_if_needed(&mut flex, state);
256
257    flex.add_child(
258        Button::new("Clear").on_click(|_ctx, data: &mut DemoState, _env| {
259            data.input_text.clear();
260            data.enabled = false;
261            data.volume = 0.0;
262        }),
263    );
264
265    space_if_needed(&mut flex, state);
266
267    flex.add_child(
268        Label::new(|data: &DemoState, _: &Env| data.input_text.clone()).with_text_size(32.0),
269    );
270    space_if_needed(&mut flex, state);
271    flex.add_child(Checkbox::new("Demo").lens(DemoState::enabled));
272    space_if_needed(&mut flex, state);
273    flex.add_child(Switch::new().lens(DemoState::enabled));
274    space_if_needed(&mut flex, state);
275    flex.add_child(Slider::new().lens(DemoState::volume));
276    space_if_needed(&mut flex, state);
277    flex.add_child(ProgressBar::new().lens(DemoState::volume));
278    space_if_needed(&mut flex, state);
279    flex.add_child(
280        Stepper::new()
281            .with_range(0.0, 1.0)
282            .with_step(0.1)
283            .with_wraparound(true)
284            .lens(DemoState::volume),
285    );
286
287    let mut flex = SizedBox::new(flex);
288    if state.fix_minor_axis {
289        match state.axis {
290            FlexType::Row => flex = flex.height(200.),
291            FlexType::Column => flex = flex.width(200.),
292        }
293    }
294    if state.fix_major_axis {
295        match state.axis {
296            FlexType::Row => flex = flex.width(600.),
297            FlexType::Column => flex = flex.height(300.),
298        }
299    }
300
301    let flex = flex
302        .padding(8.0)
303        .border(Color::grey(0.6), 2.0)
304        .rounded(5.0)
305        .lens(AppState::demo_state);
306
307    if state.debug_layout {
308        flex.debug_paint_layout().boxed()
309    } else {
310        flex.boxed()
311    }
312}
examples/disabled.rs (line 89)
44fn main_widget() -> impl Widget<AppData> {
45    Flex::column()
46        .with_child(named_child("text:", TextBox::new().lens(AppData::text)))
47        .with_default_spacer()
48        .with_child(
49            named_child("text (disabled):", TextBox::new().lens(AppData::text))
50                .disabled_if(|data, _| data.disabled),
51        )
52        .with_default_spacer()
53        .with_child(named_child("text:", TextBox::new().lens(AppData::text)))
54        .with_default_spacer()
55        .with_child(
56            named_child("text (disabled):", TextBox::new().lens(AppData::text))
57                .disabled_if(|data, _| data.disabled),
58        )
59        .with_default_spacer()
60        .with_default_spacer()
61        .with_child(
62            named_child(
63                "value (disabled):",
64                Slider::new().with_range(0.0, 10.0).lens(AppData::value),
65            )
66            .disabled_if(|data, _| data.disabled),
67        )
68        .with_default_spacer()
69        .with_child(
70            named_child(
71                "value (disabled):",
72                Stepper::new()
73                    .with_range(0.0, 10.0)
74                    .with_step(0.5)
75                    .lens(AppData::value),
76            )
77            .disabled_if(|data, _| data.disabled),
78        )
79        .with_default_spacer()
80        .with_child(
81            named_child(
82                "option (disabled):",
83                Checkbox::new("option").lens(AppData::option),
84            )
85            .disabled_if(|data, _| data.disabled),
86        )
87        .with_default_spacer()
88        .with_child(
89            named_child("option (disabled):", Switch::new().lens(AppData::option))
90                .disabled_if(|data, _| data.disabled),
91        )
92        .with_default_spacer()
93        .with_child(
94            Flex::row()
95                .with_child(
96                    Button::new("-")
97                        .on_click(|_, data: &mut f64, _| *data -= 1.0)
98                        .disabled_if(|data, _| *data < 1.0),
99                )
100                .with_default_spacer()
101                .with_child(Label::dynamic(|data: &f64, _| data.to_string()))
102                .with_default_spacer()
103                .with_child(
104                    Button::new("+")
105                        .on_click(|_, data: &mut f64, _| *data += 1.0)
106                        .disabled_if(|data, _| *data > 9.0),
107                )
108                .lens(AppData::value)
109                .disabled_if(|data: &AppData, _| data.disabled),
110        )
111        .with_default_spacer()
112        .with_default_spacer()
113        .with_default_spacer()
114        .with_child(Checkbox::new("disabled").lens(AppData::disabled))
115        .with_default_spacer()
116        .cross_axis_alignment(CrossAxisAlignment::End)
117        .align_horizontal(UnitPoint::CENTER)
118}

Trait Implementations§

Source§

impl Clone for Switch

Source§

fn clone(&self) -> Switch

Returns a copy of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Switch

Source§

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

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

impl Default for Switch

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Widget<bool> for Switch

Source§

fn event( &mut self, ctx: &mut EventCtx<'_, '_>, event: &Event, data: &mut bool, env: &Env, )

Handle an event. Read more
Source§

fn lifecycle( &mut self, ctx: &mut LifeCycleCtx<'_, '_>, event: &LifeCycle, _data: &bool, env: &Env, )

Handle a life cycle notification. Read more
Source§

fn update( &mut self, ctx: &mut UpdateCtx<'_, '_>, old_data: &bool, data: &bool, _env: &Env, )

Update the widget’s appearance in response to a change in the app’s Data or Env. Read more
Source§

fn layout( &mut self, ctx: &mut LayoutCtx<'_, '_>, bc: &BoxConstraints, _data: &bool, env: &Env, ) -> Size

Compute layout. Read more
Source§

fn paint(&mut self, ctx: &mut PaintCtx<'_, '_, '_>, data: &bool, env: &Env)

Paint the widget appearance. Read more
Source§

fn compute_max_intrinsic( &mut self, axis: Axis, ctx: &mut LayoutCtx<'_, '_>, bc: &BoxConstraints, data: &T, env: &Env, ) -> f64

Computes max intrinsic/preferred dimension of a widget on the provided axis. Read more

Auto Trait Implementations§

§

impl !Freeze for Switch

§

impl !RefUnwindSafe for Switch

§

impl !Send for Switch

§

impl !Sync for Switch

§

impl Unpin for Switch

§

impl !UnwindSafe for Switch

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> 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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> RoundFrom<T> for T

Source§

fn round_from(x: T) -> T

Performs the conversion.
Source§

impl<T, U> RoundInto<U> for T
where U: RoundFrom<T>,

Source§

fn round_into(self) -> U

Performs the conversion.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, W> TestWidgetExt<T> for W
where T: Data, W: Widget<T> + 'static,

Source§

fn record(self, recording: &Recording) -> Recorder<Self>

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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.
Source§

impl<T, W> WidgetExt<T> for W
where T: Data, W: Widget<T> + 'static,

Source§

fn padding(self, insets: impl Into<KeyOrValue<Insets>>) -> Padding<T, Self>

Wrap this widget in a Padding widget with the given Insets. Read more
Source§

fn center(self) -> Align<T>

Wrap this widget in an Align widget, configured to center it.
Source§

fn align_left(self) -> Align<T>

Wrap this widget in an Align widget, configured to align left.
Source§

fn align_right(self) -> Align<T>

Wrap this widget in an Align widget, configured to align right.
Source§

fn align_vertical(self, align: UnitPoint) -> Align<T>

Wrap this widget in an Align widget, configured to align vertically.
Source§

fn align_horizontal(self, align: UnitPoint) -> Align<T>

Wrap this widget in an Align widget, configured to align horizontally.
Source§

fn fix_width(self, width: impl Into<KeyOrValue<f64>>) -> SizedBox<T>

Wrap this widget in a SizedBox with an explicit width.
Source§

fn fix_height(self, height: impl Into<KeyOrValue<f64>>) -> SizedBox<T>

Wrap this widget in a SizedBox with an explicit height.
Source§

fn fix_size( self, width: impl Into<KeyOrValue<f64>>, height: impl Into<KeyOrValue<f64>>, ) -> SizedBox<T>

Wrap this widget in an SizedBox with an explicit width and height
Source§

fn expand(self) -> SizedBox<T>

Wrap this widget in a SizedBox with an infinite width and height. Read more
Source§

fn expand_width(self) -> SizedBox<T>

Wrap this widget in a SizedBox with an infinite width. Read more
Source§

fn expand_height(self) -> SizedBox<T>

Wrap this widget in a SizedBox with an infinite width. Read more
Source§

fn background(self, brush: impl Into<BackgroundBrush<T>>) -> Container<T>

Wrap this widget in a Container with the provided background brush. Read more
Source§

fn foreground(self, brush: impl Into<BackgroundBrush<T>>) -> Container<T>

Wrap this widget in a Container with the provided foreground brush. Read more
Source§

fn border( self, color: impl Into<KeyOrValue<Color>>, width: impl Into<KeyOrValue<f64>>, ) -> Container<T>

Wrap this widget in a Container with the given border. Read more
Source§

fn env_scope(self, f: impl Fn(&mut Env, &T) + 'static) -> EnvScope<T, Self>

Wrap this widget in a EnvScope widget, modifying the parent Env with the provided closure.
Source§

fn controller<C: Controller<T, Self>>( self, controller: C, ) -> ControllerHost<Self, C>

Wrap this widget with the provided Controller.
Source§

fn on_added( self, f: impl Fn(&mut Self, &mut LifeCycleCtx<'_, '_>, &T, &Env) + 'static, ) -> ControllerHost<Self, Added<T, Self>>

Provide a closure that will be called when this widget is added to the widget tree. Read more
Source§

fn on_click( self, f: impl Fn(&mut EventCtx<'_, '_>, &mut T, &Env) + 'static, ) -> ControllerHost<Self, Click<T>>

Control the events of this widget with a Click widget. The closure provided will be called when the widget is clicked with the left mouse button. Read more
Source§

fn debug_paint_layout(self) -> EnvScope<T, Self>

Draw the layout Rects of this widget and its children.
Source§

fn debug_widget_id(self) -> EnvScope<T, Self>

Display the WidgetIds for this widget and its children, when hot. Read more
Source§

fn debug_invalidation(self) -> DebugInvalidation<T, Self>

Draw a color-changing rectangle over this widget, allowing you to see the invalidation regions.
Source§

fn debug_widget(self) -> EnvScope<T, Self>

Set the DEBUG_WIDGET env variable for this widget (and its descendants). Read more
Source§

fn lens<S: Data, L: Lens<S, T>>(self, lens: L) -> LensWrap<S, T, L, Self>

Wrap this widget in a LensWrap widget for the provided Lens.
Source§

fn with_id(self, id: WidgetId) -> IdentityWrapper<Self>

Assign the widget a specific WidgetId. Read more
Source§

fn boxed(self) -> Box<dyn Widget<T>>

Wrap this widget in a Box.
Source§

fn scroll(self) -> Scroll<T, Self>

Wrap this widget in a Scroll widget.
Source§

fn disabled_if( self, disabled_if: impl Fn(&T, &Env) -> bool + 'static, ) -> DisabledIf<T, Self>

Wrap this widget in a DisabledIf widget. Read more
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more