diff options
Diffstat (limited to 'widget/src/helpers.rs')
| -rw-r--r-- | widget/src/helpers.rs | 42 | 
1 files changed, 39 insertions, 3 deletions
| diff --git a/widget/src/helpers.rs b/widget/src/helpers.rs index 62343a55..d7631959 100644 --- a/widget/src/helpers.rs +++ b/widget/src/helpers.rs @@ -12,7 +12,8 @@ use crate::pick_list::{self, PickList};  use crate::progress_bar::{self, ProgressBar};  use crate::radio::{self, Radio};  use crate::rule::{self, Rule}; -use crate::runtime::{Action, Task}; +use crate::runtime::task::{self, Task}; +use crate::runtime::Action;  use crate::scrollable::{self, Scrollable};  use crate::slider::{self, Slider};  use crate::text::{self, Text}; @@ -889,6 +890,41 @@ where      crate::Svg::new(handle)  } +/// Creates an [`Element`] that displays the iced logo with the given `text_size`. +/// +/// Useful for showing some love to your favorite GUI library in your "About" screen, +/// for instance. +#[cfg(feature = "svg")] +pub fn iced<'a, Message, Theme, Renderer>( +    text_size: impl Into<Pixels>, +) -> Element<'a, Message, Theme, Renderer> +where +    Message: 'a, +    Renderer: core::Renderer +        + core::text::Renderer<Font = core::Font> +        + core::svg::Renderer +        + 'a, +    Theme: text::Catalog + crate::svg::Catalog + 'a, +{ +    use crate::core::{Alignment, Font}; +    use crate::svg; +    use once_cell::sync::Lazy; + +    static LOGO: Lazy<svg::Handle> = Lazy::new(|| { +        svg::Handle::from_memory(include_bytes!("../assets/iced-logo.svg")) +    }); + +    let text_size = text_size.into(); + +    row![ +        svg(LOGO.clone()).width(text_size * 1.3), +        text("iced").size(text_size).font(Font::MONOSPACE) +    ] +    .spacing(text_size.0 / 3.0) +    .align_items(Alignment::Center) +    .into() +} +  /// Creates a new [`Canvas`].  ///  /// [`Canvas`]: crate::Canvas @@ -930,12 +966,12 @@ where  /// Focuses the previous focusable widget.  pub fn focus_previous<T>() -> Task<T> { -    Task::effect(Action::widget(operation::focusable::focus_previous())) +    task::effect(Action::widget(operation::focusable::focus_previous()))  }  /// Focuses the next focusable widget.  pub fn focus_next<T>() -> Task<T> { -    Task::effect(Action::widget(operation::focusable::focus_next())) +    task::effect(Action::widget(operation::focusable::focus_next()))  }  /// A container intercepting mouse events. | 
