cosmic/widget/
menu.rs

1// From iced_aw, license MIT
2
3//! A [`MenuBar`] widget for displaying [`MenuTree`]s
4//!
5//! *This API requires the following crate features to be activated: `menu`*
6//!
7//! # Example
8//!
9//! ```ignore
10//! use iced::widget::button;
11//! use iced_aw::menu::{MenuTree, MenuBar};
12//!
13//! let sub_2 = MenuTree::with_children(
14//!     button("Sub Menu 2"),
15//!     vec![
16//!         MenuTree::new(button("item_1")),
17//!         MenuTree::new(button("item_2")),
18//!         MenuTree::new(button("item_3")),
19//!     ]
20//! );
21//!
22//! let sub_1 = MenuTree::with_children(
23//!     button("Sub Menu 1"),
24//!     vec![
25//!         MenuTree::new(button("item_1")),
26//!         sub_2,
27//!         MenuTree::new(button("item_2")),
28//!         MenuTree::new(button("item_3")),
29//!     ]
30//! );
31//!
32//!
33//! let root_1 = MenuTree::with_children(
34//!     button("Menu 1"),
35//!     vec![
36//!         MenuTree::new(button("item_1")),
37//!         MenuTree::new(button("item_2")),
38//!         sub_1,
39//!         MenuTree::new(button("item_3")),
40//!     ]
41//! );
42//!
43//! let root_2 = MenuTree::with_children(
44//!     button("Menu 2"),
45//!     vec![
46//!         MenuTree::new(button("item_1")),
47//!         MenuTree::new(button("item_2")),
48//!         MenuTree::new(button("item_3")),
49//!     ]
50//! );
51//!
52//! let menu_bar = MenuBar::new(vec![root_1, root_2]);
53//!
54//! ```
55//!
56
57pub mod action;
58
59pub use action::MenuAction as Action;
60
61mod flex;
62pub mod key_bind;
63pub use key_bind::KeyBind;
64
65mod menu_bar;
66pub(crate) use menu_bar::MenuBarState;
67pub use menu_bar::{MenuBar, menu_bar as bar};
68
69mod menu_inner;
70mod menu_tree;
71pub use menu_tree::{
72    MenuItem as Item, MenuTree as Tree, menu_button, menu_items as items, menu_root as root,
73};
74
75pub use crate::style::menu_bar::{Appearance, StyleSheet};
76pub(crate) use menu_bar::{menu_roots_children, menu_roots_diff};
77pub(crate) use menu_inner::Menu;
78pub use menu_inner::{CloseCondition, ItemHeight, ItemWidth, PathHighlight};