From 5e2b3d4a51be97c77124dcd60e5ee3bed1b19826 Mon Sep 17 00:00:00 2001 From: Jonatan Pettersson Date: Wed, 20 Sep 2023 20:56:50 +0200 Subject: Enhance `Slider` and `VerticalSlider` functionality * Add optional default behavior * Add a `default` field * Add a `default()` method to set the `default` field * A double-click, ctrl-click or command-click will set the slider to the default value * Add optional fine-grained control * Add an optional `step_fine` field * Add a `step_fine()` method to set the `step_fine` field * Use `step_fine` in place of `step` while shift is pressed * Add increment/decrement via up/down keys * Update `Slider` and `VerticalSlider` examples --- examples/slider/src/main.rs | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) (limited to 'examples/slider/src') diff --git a/examples/slider/src/main.rs b/examples/slider/src/main.rs index e83804c2..e9820aed 100644 --- a/examples/slider/src/main.rs +++ b/examples/slider/src/main.rs @@ -12,13 +12,21 @@ pub enum Message { pub struct Slider { slider_value: u8, + slider_default: u8, + slider_step: u8, + slider_step_fine: u8, } impl Sandbox for Slider { type Message = Message; fn new() -> Slider { - Slider { slider_value: 50 } + Slider { + slider_value: 50, + slider_default: 50, + slider_step: 5, + slider_step_fine: 1, + } } fn title(&self) -> String { @@ -35,14 +43,25 @@ impl Sandbox for Slider { fn view(&self) -> Element { let value = self.slider_value; + let default = self.slider_default; + let step = self.slider_step; + let step_fine = self.slider_step_fine; - let h_slider = - container(slider(0..=100, value, Message::SliderChanged)) - .width(250); + let h_slider = container( + slider(0..=100, value, Message::SliderChanged) + .default(default) + .step(step) + .step_fine(step_fine), + ) + .width(250); - let v_slider = - container(vertical_slider(0..=100, value, Message::SliderChanged)) - .height(200); + let v_slider = container( + vertical_slider(0..=100, value, Message::SliderChanged) + .default(default) + .step(step) + .step_fine(step_fine), + ) + .height(200); let text = text(format!("{value}")); -- cgit From 468f6a461a6bed9b4aaa905005559f04f16755ef Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Wed, 31 Jan 2024 21:56:55 +0100 Subject: Simplify `slider` example --- examples/slider/src/main.rs | 41 ++++++++++++++++++----------------------- 1 file changed, 18 insertions(+), 23 deletions(-) (limited to 'examples/slider/src') diff --git a/examples/slider/src/main.rs b/examples/slider/src/main.rs index e9820aed..f71dac01 100644 --- a/examples/slider/src/main.rs +++ b/examples/slider/src/main.rs @@ -11,10 +11,10 @@ pub enum Message { } pub struct Slider { - slider_value: u8, - slider_default: u8, - slider_step: u8, - slider_step_fine: u8, + value: u8, + default: u8, + step: u8, + shift_step: u8, } impl Sandbox for Slider { @@ -22,10 +22,10 @@ impl Sandbox for Slider { fn new() -> Slider { Slider { - slider_value: 50, - slider_default: 50, - slider_step: 5, - slider_step_fine: 1, + value: 50, + default: 50, + step: 5, + shift_step: 1, } } @@ -36,34 +36,29 @@ impl Sandbox for Slider { fn update(&mut self, message: Message) { match message { Message::SliderChanged(value) => { - self.slider_value = value; + self.value = value; } } } fn view(&self) -> Element { - let value = self.slider_value; - let default = self.slider_default; - let step = self.slider_step; - let step_fine = self.slider_step_fine; - let h_slider = container( - slider(0..=100, value, Message::SliderChanged) - .default(default) - .step(step) - .step_fine(step_fine), + slider(0..=100, self.value, Message::SliderChanged) + .default(self.default) + .step(self.step) + .shift_step(self.shift_step), ) .width(250); let v_slider = container( - vertical_slider(0..=100, value, Message::SliderChanged) - .default(default) - .step(step) - .step_fine(step_fine), + vertical_slider(0..=100, self.value, Message::SliderChanged) + .default(self.default) + .step(self.step) + .shift_step(self.shift_step), ) .height(200); - let text = text(format!("{value}")); + let text = text(self.value); container( column![ -- cgit