summaryrefslogtreecommitdiffstats
path: root/examples/tour.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-11-02 02:17:00 +0100
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-11-02 02:17:00 +0100
commitf3baae92282566ccb6ff3689a08fcaa907430ef7 (patch)
tree0aa3e309a9f90c9b21d4103d2557b9cfe279ea1d /examples/tour.rs
parentc427ce0cece8d4dc358b4737eaeb6eb2f8f20730 (diff)
downloadiced-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.rs60
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(