diff options
Diffstat (limited to 'examples/tour/src')
| -rw-r--r-- | examples/tour/src/main.rs | 84 | 
1 files changed, 45 insertions, 39 deletions
diff --git a/examples/tour/src/main.rs b/examples/tour/src/main.rs index 800254ed..e8755d39 100644 --- a/examples/tour/src/main.rs +++ b/examples/tour/src/main.rs @@ -4,7 +4,7 @@ use iced::{      Sandbox, Scrollable, Settings, Slider, Space, Text, TextInput,  }; -pub fn main() { +pub fn main() -> iced::Result {      env_logger::init();      Tour::run(Settings::default()) @@ -190,7 +190,7 @@ enum Step {      Welcome,      Slider {          state: slider::State, -        value: u16, +        value: u8,      },      RowsAndColumns {          layout: Layout, @@ -222,13 +222,13 @@ enum Step {  #[derive(Debug, Clone)]  pub enum StepMessage { -    SliderChanged(f32), +    SliderChanged(u8),      LayoutChanged(Layout), -    SpacingChanged(f32), -    TextSizeChanged(f32), +    SpacingChanged(u16), +    TextSizeChanged(u16),      TextColorChanged(Color),      LanguageSelected(Language), -    ImageWidthChanged(f32), +    ImageWidthChanged(u16),      InputChanged(String),      ToggleSecureInput(bool),      DebugToggled(bool), @@ -249,12 +249,12 @@ impl<'a> Step {              }              StepMessage::SliderChanged(new_value) => {                  if let Step::Slider { value, .. } = self { -                    *value = new_value.round() as u16; +                    *value = new_value;                  }              }              StepMessage::TextSizeChanged(new_size) => {                  if let Step::Text { size, .. } = self { -                    *size = new_size.round() as u16; +                    *size = new_size;                  }              }              StepMessage::TextColorChanged(new_color) => { @@ -269,12 +269,12 @@ impl<'a> Step {              }              StepMessage::SpacingChanged(new_spacing) => {                  if let Step::RowsAndColumns { spacing, .. } = self { -                    *spacing = new_spacing.round() as u16; +                    *spacing = new_spacing;                  }              }              StepMessage::ImageWidthChanged(new_width) => {                  if let Step::Image { width, .. } = self { -                    *width = new_width.round() as u16; +                    *width = new_width;                  }              }              StepMessage::InputChanged(new_value) => { @@ -384,7 +384,7 @@ impl<'a> Step {      fn slider(          state: &'a mut slider::State, -        value: u16, +        value: u8,      ) -> Column<'a, StepMessage> {          Self::container("Slider")              .push(Text::new( @@ -397,8 +397,8 @@ impl<'a> Step {              ))              .push(Slider::new(                  state, -                0.0..=100.0, -                value as f32, +                0..=100, +                value,                  StepMessage::SliderChanged,              ))              .push( @@ -444,8 +444,8 @@ impl<'a> Step {              .spacing(10)              .push(Slider::new(                  spacing_slider, -                0.0..=80.0, -                spacing as f32, +                0..=80, +                spacing,                  StepMessage::SpacingChanged,              ))              .push( @@ -486,30 +486,25 @@ impl<'a> Step {              )              .push(Slider::new(                  size_slider, -                10.0..=70.0, -                size as f32, +                10..=70, +                size,                  StepMessage::TextSizeChanged,              ));          let [red, green, blue] = color_sliders; + +        let color_sliders = Row::new() +            .spacing(10) +            .push(color_slider(red, color.r, move |r| Color { r, ..color })) +            .push(color_slider(green, color.g, move |g| Color { g, ..color })) +            .push(color_slider(blue, color.b, move |b| Color { b, ..color })); +          let color_section = Column::new()              .padding(20)              .spacing(20)              .push(Text::new("And its color:"))              .push(Text::new(&format!("{:?}", color)).color(color)) -            .push( -                Row::new() -                    .spacing(10) -                    .push(Slider::new(red, 0.0..=1.0, color.r, move |r| { -                        StepMessage::TextColorChanged(Color { r, ..color }) -                    })) -                    .push(Slider::new(green, 0.0..=1.0, color.g, move |g| { -                        StepMessage::TextColorChanged(Color { g, ..color }) -                    })) -                    .push(Slider::new(blue, 0.0..=1.0, color.b, move |b| { -                        StepMessage::TextColorChanged(Color { b, ..color }) -                    })), -            ); +            .push(color_sliders);          Self::container("Text")              .push(Text::new( @@ -530,7 +525,7 @@ impl<'a> Step {                  |choices, language| {                      choices.push(Radio::new(                          language, -                        language.into(), +                        language,                          selection,                          StepMessage::LanguageSelected,                      )) @@ -559,8 +554,8 @@ impl<'a> Step {              .push(ferris(width))              .push(Slider::new(                  slider, -                100.0..=500.0, -                width as f32, +                100..=500, +                width,                  StepMessage::ImageWidthChanged,              ))              .push( @@ -694,7 +689,7 @@ fn ferris<'a>(width: u16) -> Container<'a, StepMessage> {      .center_x()  } -fn button<'a, Message>( +fn button<'a, Message: Clone>(      state: &'a mut button::State,      label: &str,  ) -> Button<'a, Message> { @@ -706,6 +701,17 @@ fn button<'a, Message>(      .min_width(100)  } +fn color_slider( +    state: &mut slider::State, +    component: f32, +    update: impl Fn(f32) -> Color + 'static, +) -> Slider<f64, StepMessage> { +    Slider::new(state, 0.0..=1.0, f64::from(component), move |c| { +        StepMessage::TextColorChanged(update(c as f32)) +    }) +    .step(0.01) +} +  #[derive(Debug, Clone, Copy, PartialEq, Eq)]  pub enum Language {      Rust, @@ -729,16 +735,16 @@ impl Language {      }  } -impl From<Language> for &str { -    fn from(language: Language) -> &'static str { -        match language { +impl From<Language> for String { +    fn from(language: Language) -> String { +        String::from(match language {              Language::Rust => "Rust",              Language::Elm => "Elm",              Language::Ruby => "Ruby",              Language::Haskell => "Haskell",              Language::C => "C",              Language::Other => "Other", -        } +        })      }  } @@ -763,7 +769,7 @@ mod style {                      Button::Primary => Color::from_rgb(0.11, 0.42, 0.87),                      Button::Secondary => Color::from_rgb(0.5, 0.5, 0.5),                  })), -                border_radius: 12, +                border_radius: 12.0,                  shadow_offset: Vector::new(1.0, 1.0),                  text_color: Color::from_rgb8(0xEE, 0xEE, 0xEE),                  ..button::Style::default()  | 
