diff options
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/iced.rs | 63 |
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() + } +} |
