diff options
author | 2022-02-16 17:15:43 +0700 | |
---|---|---|
committer | 2022-02-16 17:15:43 +0700 | |
commit | 6e242fe0e506f8086371a24f03e7fbe3a10ca2ae (patch) | |
tree | b480ea3d6c8e63567a191d0dfb79bec522178832 | |
parent | 019af8ddbf96680ffcee2b3407819e90575760cb (diff) | |
download | iced-6e242fe0e506f8086371a24f03e7fbe3a10ca2ae.tar.gz iced-6e242fe0e506f8086371a24f03e7fbe3a10ca2ae.tar.bz2 iced-6e242fe0e506f8086371a24f03e7fbe3a10ca2ae.zip |
Add `pick_list` function helper in `iced_pure::widget`
-rw-r--r-- | pure/src/widget.rs | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/pure/src/widget.rs b/pure/src/widget.rs index 6dda653d..62f9d95b 100644 --- a/pure/src/widget.rs +++ b/pure/src/widget.rs @@ -40,6 +40,8 @@ use iced_native::overlay; use iced_native::renderer; use iced_native::{Clipboard, Hasher, Length, Point, Rectangle, Shell}; +use std::borrow::Cow; + pub trait Widget<Message, Renderer> { fn width(&self) -> Length; @@ -210,6 +212,19 @@ where Slider::new(range, value, on_change) } +pub fn pick_list<'a, Message, Renderer, T>( + options: impl Into<Cow<'a, [T]>>, + selected: Option<T>, + on_selected: impl Fn(T) -> Message + 'a, +) -> PickList<'a, T, Message, Renderer> +where + T: ToString + Eq + 'static, + [T]: ToOwned<Owned = Vec<T>>, + Renderer: iced_native::text::Renderer, +{ + PickList::new(options, selected, on_selected) +} + pub fn image<Handle>(handle: impl Into<Handle>) -> Image<Handle> { Image::new(handle.into()) } |