summaryrefslogtreecommitdiffstats
path: root/examples/slider
diff options
context:
space:
mode:
authorLibravatar Casper Storm <casper.storm@lich.io>2022-12-12 15:27:00 +0100
committerLibravatar Casper Storm <casper.storm@lich.io>2022-12-12 15:27:00 +0100
commitba95042fff378213f5029b2b164d79e768482a47 (patch)
tree2c39410effb4da37a27fee4f2366defb7c04e65d /examples/slider
parent1c00adad615f7c2909d175c696765dbe081bde33 (diff)
downloadiced-ba95042fff378213f5029b2b164d79e768482a47.tar.gz
iced-ba95042fff378213f5029b2b164d79e768482a47.tar.bz2
iced-ba95042fff378213f5029b2b164d79e768482a47.zip
Vertical orientation added to Slider.
Diffstat (limited to 'examples/slider')
-rw-r--r--examples/slider/Cargo.toml9
-rw-r--r--examples/slider/README.md14
-rw-r--r--examples/slider/sliders.gifbin0 -> 87275 bytes
-rw-r--r--examples/slider/src/main.rs69
4 files changed, 92 insertions, 0 deletions
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<casper@rogildstorm.com>"]
+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.
+
+<div align="center">
+ <img src="sliders.gif">
+</div>
+
+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
--- /dev/null
+++ b/examples/slider/sliders.gif
Binary files 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<Message> {
+ 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()
+ }
+}