libcosmic-yoda/src/widget/menu.rs
Eduardo Flores 0b47efe1de improv(menu): simplify menu construction.
- Added `MenuAction` trait to call the `message` method on button press.
- Added two new methods to construct a MenuTree.
- Added MenuItem enum to represent an action or a separator in a MenuTree.
- Added menu example.
- Moved Modifier enum and KeyBind struct to libcosmic.
- Moved menu_button macro to libcosmic.
2024-03-16 19:00:12 -06:00

69 lines
1.8 KiB
Rust

// From iced_aw, license MIT
//! A [`MenuBar`] widget for displaying [`MenuTree`]s
//!
//! *This API requires the following crate features to be activated: `menu`*
//!
//! # Example
//!
//! ```ignore
//! use iced::widget::button;
//! use iced_aw::menu::{MenuTree, MenuBar};
//!
//! let sub_2 = MenuTree::with_children(
//! button("Sub Menu 2"),
//! vec![
//! MenuTree::new(button("item_1")),
//! MenuTree::new(button("item_2")),
//! MenuTree::new(button("item_3")),
//! ]
//! );
//!
//! let sub_1 = MenuTree::with_children(
//! button("Sub Menu 1"),
//! vec![
//! MenuTree::new(button("item_1")),
//! sub_2,
//! MenuTree::new(button("item_2")),
//! MenuTree::new(button("item_3")),
//! ]
//! );
//!
//!
//! let root_1 = MenuTree::with_children(
//! button("Menu 1"),
//! vec![
//! MenuTree::new(button("item_1")),
//! MenuTree::new(button("item_2")),
//! sub_1,
//! MenuTree::new(button("item_3")),
//! ]
//! );
//!
//! let root_2 = MenuTree::with_children(
//! button("Menu 2"),
//! vec![
//! MenuTree::new(button("item_1")),
//! MenuTree::new(button("item_2")),
//! MenuTree::new(button("item_3")),
//! ]
//! );
//!
//! let menu_bar = MenuBar::new(vec![root_1, root_2]);
//!
//! ```
//!
pub mod action;
mod flex;
pub mod key_bind;
pub mod menu_bar;
mod menu_inner;
pub mod menu_tree;
pub use crate::style::menu_bar::{Appearance, StyleSheet};
/// A `MenuBar` collects `MenuTree`s and handles
pub type MenuBar<'a, Message, Renderer> = menu_bar::MenuBar<'a, Message, Renderer>;
pub use menu_inner::{CloseCondition, ItemHeight, ItemWidth, PathHighlight};
/// Nested menu is essentially a tree of items, a menu is a collection of items
pub type MenuTree<'a, Message, Renderer> = menu_tree::MenuTree<'a, Message, Renderer>;