diff options
| author | 2019-11-02 02:17:00 +0100 | |
|---|---|---|
| committer | 2019-11-02 02:17:00 +0100 | |
| commit | f3baae92282566ccb6ff3689a08fcaa907430ef7 (patch) | |
| tree | 0aa3e309a9f90c9b21d4103d2557b9cfe279ea1d /examples/tour.rs | |
| parent | c427ce0cece8d4dc358b4737eaeb6eb2f8f20730 (diff) | |
| download | iced-f3baae92282566ccb6ff3689a08fcaa907430ef7.tar.gz iced-f3baae92282566ccb6ff3689a08fcaa907430ef7.tar.bz2 iced-f3baae92282566ccb6ff3689a08fcaa907430ef7.zip | |
Add text input section to `tour`
Diffstat (limited to 'examples/tour.rs')
| -rw-r--r-- | examples/tour.rs | 60 | 
1 files changed, 55 insertions, 5 deletions
| diff --git a/examples/tour.rs b/examples/tour.rs index 7d8e4e3e..c2b3e645 100644 --- a/examples/tour.rs +++ b/examples/tour.rs @@ -1,7 +1,7 @@  use iced::{ -    button, scrollable, slider, text::HorizontalAlignment, Align, Application, -    Background, Button, Checkbox, Color, Column, Element, Image, Justify, -    Length, Radio, Row, Scrollable, Slider, Text, +    button, scrollable, slider, text::HorizontalAlignment, text_input, Align, +    Application, Background, Button, Checkbox, Color, Column, Element, Image, +    Justify, Length, Radio, Row, Scrollable, Slider, Text, TextInput,  };  pub fn main() { @@ -101,7 +101,7 @@ impl Application for Tour {      }  } -#[derive(Debug, Clone, Copy)] +#[derive(Debug, Clone)]  pub enum Message {      BackPressed,      NextPressed, @@ -139,6 +139,10 @@ impl Steps {                      slider: slider::State::new(),                  },                  Step::Scrollable, +                Step::TextInput { +                    value: String::new(), +                    state: text_input::State::new(), +                },                  Step::Debugger,                  Step::End,              ], @@ -201,11 +205,15 @@ enum Step {          slider: slider::State,      },      Scrollable, +    TextInput { +        value: String, +        state: text_input::State, +    },      Debugger,      End,  } -#[derive(Debug, Clone, Copy)] +#[derive(Debug, Clone)]  pub enum StepMessage {      SliderChanged(f32),      LayoutChanged(Layout), @@ -214,6 +222,7 @@ pub enum StepMessage {      TextColorChanged(Color),      LanguageSelected(Language),      ImageWidthChanged(f32), +    InputChanged(String),      DebugToggled(bool),  } @@ -260,6 +269,11 @@ impl<'a> Step {                      *width = new_width.round() as u16;                  }              } +            StepMessage::InputChanged(new_value) => { +                if let Step::TextInput { value, .. } = self { +                    *value = new_value; +                } +            }          };      } @@ -272,6 +286,7 @@ impl<'a> Step {              Step::Image { .. } => true,              Step::RowsAndColumns { .. } => true,              Step::Scrollable => true, +            Step::TextInput { value, .. } => !value.is_empty(),              Step::Debugger => true,              Step::End => false,          } @@ -297,6 +312,9 @@ impl<'a> Step {                  Self::rows_and_columns(*layout, spacing_slider, *spacing).into()              }              Step::Scrollable => Self::scrollable().into(), +            Step::TextInput { value, state } => { +                Self::text_input(value, state).into() +            }              Step::Debugger => Self::debugger(debug).into(),              Step::End => Self::end().into(),          } @@ -562,6 +580,38 @@ impl<'a> Step {              )      } +    fn text_input( +        value: &str, +        state: &'a mut text_input::State, +    ) -> Column<'a, StepMessage> { +        Self::container("Text input") +            .push(Text::new( +                "Use a text input to ask for different kinds of information.", +            )) +            .push( +                TextInput::new( +                    state, +                    "Type something to continue...", +                    value, +                    StepMessage::InputChanged, +                ) +                .padding(10) +                .size(30), +            ) +            .push(Text::new( +                "A text input produces a message every time it changes. It is \ +                 very easy to keep track of its contents:", +            )) +            .push( +                Text::new(if value.is_empty() { +                    "You have not typed anything yet..." +                } else { +                    value +                }) +                .horizontal_alignment(HorizontalAlignment::Center), +            ) +    } +      fn debugger(debug: bool) -> Column<'a, StepMessage> {          Self::container("Debugger")              .push(Text::new( | 
