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}