diff options
| author | 2021-09-15 15:50:25 +0700 | |
|---|---|---|
| committer | 2021-09-15 15:50:25 +0700 | |
| commit | 099981cfc2f61a1f37e84100592d65babb94fb82 (patch) | |
| tree | 1b063e251d92f8bc63f0f27a20e78d178f6bd532 /core | |
| parent | 5870cbb312ec5de1219b6983e09e460419d95912 (diff) | |
| parent | c0ab9888426b7d1f2606afafc9dba06eed7f9419 (diff) | |
| download | iced-099981cfc2f61a1f37e84100592d65babb94fb82.tar.gz iced-099981cfc2f61a1f37e84100592d65babb94fb82.tar.bz2 iced-099981cfc2f61a1f37e84100592d65babb94fb82.zip  | |
Merge pull request #1047 from iced-rs/revert-menus
Revert system menus support
Diffstat (limited to '')
| -rw-r--r-- | core/src/keyboard.rs | 2 | ||||
| -rw-r--r-- | core/src/keyboard/hotkey.rs | 18 | ||||
| -rw-r--r-- | core/src/lib.rs | 2 | ||||
| -rw-r--r-- | core/src/menu.rs | 145 | 
4 files changed, 0 insertions, 167 deletions
diff --git a/core/src/keyboard.rs b/core/src/keyboard.rs index 6827a4db..4c6ca08d 100644 --- a/core/src/keyboard.rs +++ b/core/src/keyboard.rs @@ -1,10 +1,8 @@  //! Listen to keyboard events.  mod event; -mod hotkey;  mod key_code;  mod modifiers;  pub use event::Event; -pub use hotkey::Hotkey;  pub use key_code::KeyCode;  pub use modifiers::Modifiers; diff --git a/core/src/keyboard/hotkey.rs b/core/src/keyboard/hotkey.rs deleted file mode 100644 index 310ef286..00000000 --- a/core/src/keyboard/hotkey.rs +++ /dev/null @@ -1,18 +0,0 @@ -use crate::keyboard::{KeyCode, Modifiers}; - -/// Representation of a hotkey, consists on the combination of a [`KeyCode`] and [`Modifiers`]. -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub struct Hotkey { -    /// The key that represents this hotkey. -    pub key: KeyCode, - -    /// The list of modifiers that represents this hotkey. -    pub modifiers: Modifiers, -} - -impl Hotkey { -    /// Creates a new [`Hotkey`] with the given [`Modifiers`] and [`KeyCode`]. -    pub fn new(modifiers: Modifiers, key: KeyCode) -> Self { -        Self { modifiers, key } -    } -} diff --git a/core/src/lib.rs b/core/src/lib.rs index a0decdab..e937264d 100644 --- a/core/src/lib.rs +++ b/core/src/lib.rs @@ -15,7 +15,6 @@  #![forbid(unsafe_code)]  #![forbid(rust_2018_idioms)]  pub mod keyboard; -pub mod menu;  pub mod mouse;  pub mod text; @@ -35,7 +34,6 @@ pub use background::Background;  pub use color::Color;  pub use font::Font;  pub use length::Length; -pub use menu::Menu;  pub use padding::Padding;  pub use point::Point;  pub use rectangle::Rectangle; diff --git a/core/src/menu.rs b/core/src/menu.rs deleted file mode 100644 index 8a679085..00000000 --- a/core/src/menu.rs +++ /dev/null @@ -1,145 +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)] -pub struct Menu<Message> { -    entries: Vec<Entry<Message>>, -} - -impl<Message> PartialEq for Menu<Message> { -    fn eq(&self, other: &Self) -> bool { -        self.entries == other.entries -    } -} - -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 } -    } - -    /// Returns a [`MenuEntry`] iterator. -    pub fn iter(&self) -> impl Iterator<Item = &Entry<Message>> { -        self.entries.iter() -    } - -    /// Adds an [`Entry`] to the [`Menu`]. -    pub fn push(mut self, entry: Entry<Message>) -> Self { -        self.entries.push(entry); -        self -    } - -    /// Maps the `Message` of the [`Menu`] using the provided function. -    /// -    /// This is useful to compose menus and split them into different -    /// abstraction levels. -    pub fn map<B>(self, f: impl Fn(Message) -> B + Copy) -> Menu<B> { -        // TODO: Use a boxed trait to avoid reallocation of entries -        Menu { -            entries: self -                .entries -                .into_iter() -                .map(|entry| entry.map(f)) -                .collect(), -        } -    } -} - -/// Represents one of the possible entries used to build a [`Menu`]. -#[derive(Debug, Clone)] -pub enum Entry<Message> { -    /// Item for a [`Menu`] -    Item { -        /// The title of the item -        title: 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 -        title: 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>>( -        title: S, -        hotkey: impl Into<Option<Hotkey>>, -        on_activation: Message, -    ) -> Self { -        let title = title.into(); -        let hotkey = hotkey.into(); - -        Self::Item { -            title, -            hotkey, -            on_activation, -        } -    } - -    /// Creates an [`Entry::Dropdown`]. -    pub fn dropdown<S: Into<String>>(title: S, submenu: Menu<Message>) -> Self { -        let title = title.into(); - -        Self::Dropdown { title, submenu } -    } - -    fn map<B>(self, f: impl Fn(Message) -> B + Copy) -> Entry<B> { -        match self { -            Self::Item { -                title, -                hotkey, -                on_activation, -            } => Entry::Item { -                title, -                hotkey, -                on_activation: f(on_activation), -            }, -            Self::Dropdown { title, submenu } => Entry::Dropdown { -                title, -                submenu: submenu.map(f), -            }, -            Self::Separator => Entry::Separator, -        } -    } -} - -impl<Message> PartialEq for Entry<Message> { -    fn eq(&self, other: &Self) -> bool { -        match (self, other) { -            ( -                Entry::Item { title, hotkey, .. }, -                Entry::Item { -                    title: other_title, -                    hotkey: other_hotkey, -                    .. -                }, -            ) => title == other_title && hotkey == other_hotkey, -            ( -                Entry::Dropdown { title, submenu }, -                Entry::Dropdown { -                    title: other_title, -                    submenu: other_submenu, -                }, -            ) => title == other_title && submenu == other_submenu, -            (Entry::Separator, Entry::Separator) => true, -            _ => false, -        } -    } -}  | 
