slider/
slider.rs

1use iced_native::widget::slider::State as SliderState;
2use iced_native::{Column, Container, Element, Length, Slider, Text};
3use iced_pancurses::{PancursesRenderer, Sandbox};
4
5pub struct MyState {
6    slider_state: SliderState,
7    curr_val: f32,
8}
9
10#[derive(Debug, Clone, Copy)]
11pub enum MyMessage {
12    ChangeVal(f32),
13}
14
15impl Sandbox for MyState {
16    type Message = MyMessage;
17
18    fn new() -> Self {
19        MyState {
20            slider_state: SliderState::new(),
21            curr_val: 0.,
22        }
23    }
24
25    fn view(&mut self) -> Element<MyMessage, PancursesRenderer> {
26        Container::new(
27            Column::new()
28                .spacing(1)
29                .push(
30                    Text::new(&format!("Hello sliders! {:.2}", self.curr_val))
31                        .width(Length::Shrink),
32                )
33                .push(
34                    Column::new()
35                        .height(Length::Units(3))
36                        .push(Slider::new(
37                            &mut self.slider_state,
38                            0.0..=100.,
39                            self.curr_val,
40                            |new| MyMessage::ChangeVal(new),
41                        ))
42                        .width(Length::Units(20)),
43                )
44                .width(Length::Shrink),
45        )
46        .width(Length::Fill)
47        .height(Length::Fill)
48        .center_x()
49        .center_y()
50        .into()
51    }
52
53    fn update(&mut self, messages: Vec<MyMessage>) {
54        messages.into_iter().for_each(|m| match m {
55            MyMessage::ChangeVal(x) => self.curr_val = x,
56        });
57    }
58}
59
60fn main() {
61    MyState::run()
62}