63 lines
1.5 KiB
Rust
63 lines
1.5 KiB
Rust
use iced::widget::{column, container, slider, text, vertical_slider};
|
|
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> {
|
|
let value = self.slider_value;
|
|
|
|
let h_slider =
|
|
container(slider(0..=100, value, Message::SliderChanged))
|
|
.width(250);
|
|
|
|
let v_slider =
|
|
container(vertical_slider(0..=100, value, Message::SliderChanged))
|
|
.height(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()
|
|
}
|
|
}
|