#![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, } #[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() } }