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
This commit is contained in:
parent
66c8a804c6
commit
5e2b3d4a51
3 changed files with 324 additions and 40 deletions
|
|
@ -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<Message> {
|
||||
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}"));
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue