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};