aboutsummaryrefslogtreecommitdiff
path: root/examples/iced.rs
diff options
context:
space:
mode:
Diffstat (limited to 'examples/iced.rs')
-rw-r--r--examples/iced.rs63
1 files changed, 63 insertions, 0 deletions
diff --git a/examples/iced.rs b/examples/iced.rs
new file mode 100644
index 0000000..e031d08
--- /dev/null
+++ b/examples/iced.rs
@@ -0,0 +1,63 @@
+#![allow(missing_docs)]
+use iced::widget::{center, column, responsive};
+use iced::{Center, Element, color};
+use iced_selection::{rich_text, span};
+
+fn main() -> iced::Result {
+ iced::run(State::update, State::view)
+}
+
+#[derive(Default)]
+struct State {
+ link: Option<String>,
+}
+
+#[derive(Debug, Clone)]
+enum Message {
+ LinkClicked(String),
+}
+
+impl State {
+ fn update(&mut self, message: Message) {
+ match message {
+ Message::LinkClicked(link) => {
+ let _ = open::that(&link);
+ self.link = Some(link);
+ }
+ };
+ }
+
+ fn view(&self) -> Element<'_, Message> {
+ responsive(|size| {
+ center(
+ column![
+ rich_text![
+ span("iced")
+ .color(color!(0x2b79a2))
+ .link("https://iced.rs"),
+ " is a cross-platform GUI library for ",
+ span("Rust")
+ .color(color!(0x2b79a2))
+ .link("https://rust-lang.org"),
+ ". It is inspired by ",
+ span("Elm")
+ .color(color!(0x2b79a2))
+ .link("https://elm-lang.org"),
+ "."
+ ]
+ .on_link_click(Message::LinkClicked),
+ self.link.as_deref().map(|link| rich_text![
+ "Last clicked link: ",
+ span(link).color(color!(0x2b79a2)).link(link)
+ ]
+ .on_link_click(Message::LinkClicked))
+ ]
+ .spacing(10)
+ .align_x(Center)
+ .max_width(size.width * 0.8),
+ )
+ .into()
+ })
+ .into()
+ }
+}