diff options
author | 2021-07-12 21:44:01 +0200 | |
---|---|---|
committer | 2021-07-12 21:44:01 +0200 | |
commit | 735cfb790813c44852612400e31c0190b9c641a6 (patch) | |
tree | 4b33019dc01fd8afbe3d79431660788961262dcd /native | |
parent | 1428e9180ae9f4edbf22514bb74c5c7e9df9c712 (diff) | |
download | iced-735cfb790813c44852612400e31c0190b9c641a6.tar.gz iced-735cfb790813c44852612400e31c0190b9c641a6.tar.bz2 iced-735cfb790813c44852612400e31c0190b9c641a6.zip |
Move `menu` module from `iced_native` to `iced_core`
Diffstat (limited to 'native')
-rw-r--r-- | native/src/lib.rs | 6 | ||||
-rw-r--r-- | native/src/menu.rs | 84 |
2 files changed, 2 insertions, 88 deletions
diff --git a/native/src/lib.rs b/native/src/lib.rs index 564f2514..cbb02506 100644 --- a/native/src/lib.rs +++ b/native/src/lib.rs @@ -37,7 +37,6 @@ pub mod clipboard; pub mod event; pub mod keyboard; pub mod layout; -pub mod menu; pub mod mouse; pub mod overlay; pub mod program; @@ -62,8 +61,8 @@ mod debug; mod debug; pub use iced_core::{ - Align, Background, Color, Font, HorizontalAlignment, Length, Padding, - Point, Rectangle, Size, Vector, VerticalAlignment, + menu, Align, Background, Color, Font, HorizontalAlignment, Length, Menu, + Padding, Point, Rectangle, Size, Vector, VerticalAlignment, }; pub use iced_futures::{executor, futures, Command}; @@ -76,7 +75,6 @@ pub use element::Element; pub use event::Event; pub use hasher::Hasher; pub use layout::Layout; -pub use menu::Menu; pub use overlay::Overlay; pub use program::Program; pub use renderer::Renderer; diff --git a/native/src/menu.rs b/native/src/menu.rs deleted file mode 100644 index fe770216..00000000 --- a/native/src/menu.rs +++ /dev/null @@ -1,84 +0,0 @@ -//! Build menus for your application. -use crate::keyboard::Hotkey; - -/// Menu representation. -/// -/// This can be used by `shell` implementations to create a menu. -#[derive(Debug, Clone, PartialEq)] -pub struct Menu<Message> { - entries: Vec<Entry<Message>>, -} - -impl<Message> Menu<Message> { - /// Creates an empty [`Menu`]. - pub fn new() -> Self { - Self::with_entries(Vec::new()) - } - - /// Creates a new [`Menu`] with the given entries. - pub fn with_entries(entries: Vec<Entry<Message>>) -> Self { - Self { entries } - } - - /// Adds an [`Entry`] to the [`Menu`]. - pub fn push(mut self, entry: Entry<Message>) -> Self { - self.entries.push(entry); - self - } - - /// Returns a [`MenuEntry`] iterator. - pub fn iter(self) -> impl Iterator<Item = Entry<Message>> { - self.entries.into_iter() - } -} - -/// Represents one of the possible entries used to build a [`Menu`]. -#[derive(Debug, Clone, PartialEq)] -pub enum Entry<Message> { - /// Item for a [`Menu`] - Item { - /// The title of the item - content: String, - /// The [`Hotkey`] to activate the item, if any - hotkey: Option<Hotkey>, - /// The message generated when the item is activated - on_activation: Message, - }, - /// Dropdown for a [`Menu`] - Dropdown { - /// Title of the dropdown - content: String, - /// The submenu of the dropdown - submenu: Menu<Message>, - }, - /// Separator for a [`Menu`] - Separator, -} - -impl<Message> Entry<Message> { - /// Creates an [`Entry::Item`]. - pub fn item<S: Into<String>>( - content: S, - hotkey: impl Into<Option<Hotkey>>, - on_activation: Message, - ) -> Self { - let content = content.into(); - let hotkey = hotkey.into(); - - Entry::Item { - content, - hotkey, - on_activation, - } - } - - /// Creates an [`Entry::Dropdown`]. - pub fn dropdown<S: Into<String>>( - content: S, - submenu: Menu<Message>, - ) -> Self { - let content = content.into(); - - Entry::Dropdown { content, submenu } - } -} |