summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--examples/text_input/Cargo.toml9
-rw-r--r--examples/text_input/README.md10
-rw-r--r--examples/text_input/src/main.rs93
-rw-r--r--examples/tour/fonts/icons.ttf (renamed from examples/text_input/fonts/icons.ttf)bin1612 -> 1612 bytes
-rw-r--r--examples/tour/src/main.rs78
5 files changed, 66 insertions, 124 deletions
diff --git a/examples/text_input/Cargo.toml b/examples/text_input/Cargo.toml
deleted file mode 100644
index 5937ef8e..00000000
--- a/examples/text_input/Cargo.toml
+++ /dev/null
@@ -1,9 +0,0 @@
-[package]
-name = "text_input"
-version = "0.1.0"
-authors = ["Casper Rogild Storm<casper@rogildstorm.com>"]
-edition = "2021"
-publish = false
-
-[dependencies]
-iced = { path = "../..", features = ["debug"] }
diff --git a/examples/text_input/README.md b/examples/text_input/README.md
deleted file mode 100644
index 2b2d8059..00000000
--- a/examples/text_input/README.md
+++ /dev/null
@@ -1,10 +0,0 @@
-## TextInput
-
-A `TextInput` is a field that can be filled with text.
-
-You can run it with `cargo run`:
-```
-cargo run --package text_input
-```
-
-[`main`]: src/main.rs
diff --git a/examples/text_input/src/main.rs b/examples/text_input/src/main.rs
deleted file mode 100644
index e0ba1983..00000000
--- a/examples/text_input/src/main.rs
+++ /dev/null
@@ -1,93 +0,0 @@
-use iced::widget::{checkbox, column, container, text_input};
-use iced::{Element, Font, Length, Sandbox, Settings};
-
-const ICON_FONT: Font = Font::External {
- name: "Icons",
- bytes: include_bytes!("../fonts/icons.ttf"),
-};
-
-pub fn main() -> iced::Result {
- Example::run(Settings::default())
-}
-
-#[derive(Default)]
-struct Example {
- value: String,
- is_showing_icon: bool,
-}
-
-#[derive(Debug, Clone)]
-enum Message {
- Changed(String),
- ToggleIcon(bool),
-}
-
-impl Sandbox for Example {
- type Message = Message;
-
- fn new() -> Self {
- Self::default()
- }
-
- fn title(&self) -> String {
- String::from("Text Input - Iced")
- }
-
- fn update(&mut self, message: Message) {
- match message {
- Message::Changed(value) => self.value = value,
- Message::ToggleIcon(_) => {
- self.is_showing_icon = !self.is_showing_icon
- }
- }
- }
-
- fn view(&self) -> Element<Message> {
- let checkbox =
- checkbox("Icon", self.is_showing_icon, Message::ToggleIcon)
- .spacing(5)
- .text_size(16);
-
- let mut text_input =
- text_input("Placeholder", self.value.as_str(), Message::Changed);
-
- if self.is_showing_icon {
- text_input = text_input.icon(text_input::Icon {
- font: ICON_FONT,
- code_point: '\u{e900}',
- size: Some(18),
- position: text_input::IconPosition::Right,
- });
- }
-
- let content = column!["What is blazing fast?", text_input, checkbox]
- .width(Length::Units(200))
- .spacing(10);
-
- container(content)
- .width(Length::Fill)
- .height(Length::Fill)
- .center_x()
- .center_y()
- .into()
- }
-
- fn theme(&self) -> iced::Theme {
- iced::Theme::default()
- }
-
- fn style(&self) -> iced::theme::Application {
- iced::theme::Application::default()
- }
-
- fn scale_factor(&self) -> f64 {
- 1.0
- }
-
- fn run(settings: Settings<()>) -> Result<(), iced::Error>
- where
- Self: 'static + Sized,
- {
- <Self as iced::Application>::run(settings)
- }
-}
diff --git a/examples/text_input/fonts/icons.ttf b/examples/tour/fonts/icons.ttf
index bfe8a24b..bfe8a24b 100644
--- a/examples/text_input/fonts/icons.ttf
+++ b/examples/tour/fonts/icons.ttf
Binary files differ
diff --git a/examples/tour/src/main.rs b/examples/tour/src/main.rs
index de063d00..5edee850 100644
--- a/examples/tour/src/main.rs
+++ b/examples/tour/src/main.rs
@@ -5,8 +5,14 @@ use iced::widget::{
scrollable, slider, text, text_input, toggler, vertical_space,
};
use iced::widget::{Button, Column, Container, Slider};
+use iced::Font;
use iced::{Color, Element, Length, Renderer, Sandbox, Settings};
+const ICON_FONT: Font = Font::External {
+ name: "Icons",
+ bytes: include_bytes!("../fonts/icons.ttf"),
+};
+
pub fn main() -> iced::Result {
env_logger::init();
@@ -127,6 +133,7 @@ impl Steps {
Step::TextInput {
value: String::new(),
is_secure: false,
+ is_showing_icon: false,
},
Step::Debugger,
Step::End,
@@ -171,14 +178,32 @@ impl Steps {
enum Step {
Welcome,
- Slider { value: u8 },
- RowsAndColumns { layout: Layout, spacing: u16 },
- Text { size: u16, color: Color },
- Radio { selection: Option<Language> },
- Toggler { can_continue: bool },
- Image { width: u16 },
+ Slider {
+ value: u8,
+ },
+ RowsAndColumns {
+ layout: Layout,
+ spacing: u16,
+ },
+ Text {
+ size: u16,
+ color: Color,
+ },
+ Radio {
+ selection: Option<Language>,
+ },
+ Toggler {
+ can_continue: bool,
+ },
+ Image {
+ width: u16,
+ },
Scrollable,
- TextInput { value: String, is_secure: bool },
+ TextInput {
+ value: String,
+ is_secure: bool,
+ is_showing_icon: bool,
+ },
Debugger,
End,
}
@@ -194,6 +219,7 @@ pub enum StepMessage {
ImageWidthChanged(u16),
InputChanged(String),
ToggleSecureInput(bool),
+ ToggleTextInputIcon(bool),
DebugToggled(bool),
TogglerChanged(bool),
}
@@ -256,6 +282,14 @@ impl<'a> Step {
*can_continue = value;
}
}
+ StepMessage::ToggleTextInputIcon(toggle) => {
+ if let Step::TextInput {
+ is_showing_icon, ..
+ } = self
+ {
+ *is_showing_icon = toggle
+ }
+ }
};
}
@@ -303,9 +337,11 @@ impl<'a> Step {
Self::rows_and_columns(*layout, *spacing)
}
Step::Scrollable => Self::scrollable(),
- Step::TextInput { value, is_secure } => {
- Self::text_input(value, *is_secure)
- }
+ Step::TextInput {
+ value,
+ is_secure,
+ is_showing_icon,
+ } => Self::text_input(value, *is_secure, *is_showing_icon),
Step::Debugger => Self::debugger(debug),
Step::End => Self::end(),
}
@@ -530,8 +566,12 @@ impl<'a> Step {
)
}
- fn text_input(value: &str, is_secure: bool) -> Column<'a, StepMessage> {
- let text_input = text_input(
+ fn text_input(
+ value: &str,
+ is_secure: bool,
+ is_showing_icon: bool,
+ ) -> Column<'a, StepMessage> {
+ let mut text_input = text_input(
"Type something to continue...",
value,
StepMessage::InputChanged,
@@ -539,6 +579,15 @@ impl<'a> Step {
.padding(10)
.size(30);
+ if is_showing_icon {
+ text_input = text_input.icon(text_input::Icon {
+ font: ICON_FONT,
+ code_point: '\u{e900}',
+ size: Some(35),
+ position: text_input::IconPosition::Right,
+ });
+ }
+
Self::container("Text input")
.push("Use a text input to ask for different kinds of information.")
.push(if is_secure {
@@ -551,6 +600,11 @@ impl<'a> Step {
is_secure,
StepMessage::ToggleSecureInput,
))
+ .push(checkbox(
+ "Show icon",
+ is_showing_icon,
+ StepMessage::ToggleTextInputIcon,
+ ))
.push(
"A text input produces a message every time it changes. It is \
very easy to keep track of its contents:",