From ba95042fff378213f5029b2b164d79e768482a47 Mon Sep 17 00:00:00 2001 From: Casper Storm Date: Mon, 12 Dec 2022 15:27:00 +0100 Subject: Vertical orientation added to Slider. --- examples/slider/Cargo.toml | 9 ++++++ examples/slider/README.md | 14 +++++++++ examples/slider/sliders.gif | Bin 0 -> 87275 bytes examples/slider/src/main.rs | 69 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 92 insertions(+) create mode 100644 examples/slider/Cargo.toml create mode 100644 examples/slider/README.md create mode 100644 examples/slider/sliders.gif create mode 100644 examples/slider/src/main.rs (limited to 'examples/slider') diff --git a/examples/slider/Cargo.toml b/examples/slider/Cargo.toml new file mode 100644 index 00000000..112d7cff --- /dev/null +++ b/examples/slider/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "slider" +version = "0.1.0" +authors = ["Casper Rogild Storm"] +edition = "2021" +publish = false + +[dependencies] +iced = { path = "../.." } diff --git a/examples/slider/README.md b/examples/slider/README.md new file mode 100644 index 00000000..0d409dc6 --- /dev/null +++ b/examples/slider/README.md @@ -0,0 +1,14 @@ +## Slider + +A bar and a handle that selects a single value from a range of values. +Can be oriented both vertical and horizontal. + +
+ +
+ +You can run it with `cargo run`: + +``` +cargo run --package slider +``` diff --git a/examples/slider/sliders.gif b/examples/slider/sliders.gif new file mode 100644 index 00000000..f906d05a Binary files /dev/null and b/examples/slider/sliders.gif differ diff --git a/examples/slider/src/main.rs b/examples/slider/src/main.rs new file mode 100644 index 00000000..44770382 --- /dev/null +++ b/examples/slider/src/main.rs @@ -0,0 +1,69 @@ +use iced::widget::{column, container, slider, text}; +use iced::{Element, Length, Sandbox, Settings}; + +pub fn main() -> iced::Result { + Slider::run(Settings::default()) +} + +#[derive(Debug, Clone)] +pub enum Message { + SliderChanged(u8), +} + +pub struct Slider { + slider_value: u8, +} + +impl Sandbox for Slider { + type Message = Message; + + fn new() -> Slider { + Slider { slider_value: 50 } + } + + fn title(&self) -> String { + String::from("Slider - Iced") + } + + fn update(&mut self, message: Message) { + match message { + Message::SliderChanged(value) => { + self.slider_value = value; + } + } + } + + fn view(&self) -> Element { + use slider::Orientation::{Horizontal, Vertical}; + + let value = self.slider_value; + + let h_slider = container( + slider(0..=100, value, Message::SliderChanged) + .orientation(Horizontal), + ) + .width(Length::Units(250)); + + let v_slider = container( + slider(0..=100, value, Message::SliderChanged) + .orientation(Vertical), + ) + .height(Length::Units(200)); + + let text = text(format!("{value}")); + + container( + column![ + container(v_slider).width(Length::Fill).center_x(), + container(h_slider).width(Length::Fill).center_x(), + container(text).width(Length::Fill).center_x(), + ] + .spacing(25), + ) + .height(Length::Fill) + .width(Length::Fill) + .center_x() + .center_y() + .into() + } +} -- cgit From bb4161c1aec0a2a76de39ff2e5ed65f7acbad471 Mon Sep 17 00:00:00 2001 From: Casper Storm Date: Tue, 13 Dec 2022 10:05:52 +0100 Subject: Split vertical orientation into VerticalSlider --- examples/slider/src/main.rs | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) (limited to 'examples/slider') diff --git a/examples/slider/src/main.rs b/examples/slider/src/main.rs index 44770382..6286d625 100644 --- a/examples/slider/src/main.rs +++ b/examples/slider/src/main.rs @@ -1,4 +1,4 @@ -use iced::widget::{column, container, slider, text}; +use iced::widget::{column, container, slider, text, vertical_slider}; use iced::{Element, Length, Sandbox, Settings}; pub fn main() -> iced::Result { @@ -34,21 +34,15 @@ impl Sandbox for Slider { } fn view(&self) -> Element { - use slider::Orientation::{Horizontal, Vertical}; - let value = self.slider_value; - let h_slider = container( - slider(0..=100, value, Message::SliderChanged) - .orientation(Horizontal), - ) - .width(Length::Units(250)); + let h_slider = + container(slider(0..=100, value, Message::SliderChanged)) + .width(Length::Units(250)); - let v_slider = container( - slider(0..=100, value, Message::SliderChanged) - .orientation(Vertical), - ) - .height(Length::Units(200)); + let v_slider = + container(vertical_slider(0..=100, value, Message::SliderChanged)) + .height(Length::Units(200)); let text = text(format!("{value}")); -- cgit From 55f36bc865652009f1c13e3da6f62d55964a10c2 Mon Sep 17 00:00:00 2001 From: Casper Storm Date: Tue, 13 Dec 2022 10:13:27 +0100 Subject: updated README for slider example --- examples/slider/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'examples/slider') diff --git a/examples/slider/README.md b/examples/slider/README.md index 0d409dc6..829d8285 100644 --- a/examples/slider/README.md +++ b/examples/slider/README.md @@ -1,7 +1,7 @@ ## Slider -A bar and a handle that selects a single value from a range of values. -Can be oriented both vertical and horizontal. +A `Slider` is a bar and a handle that selects a single value from a range of values. +There exists both `Slider` and `VerticalSlider` depending on which orientation you need.
-- cgit