Fluent interface for building ImGui menus with icons. More...
#include <menu_builder.h>

Classes | |
| struct | Menu |
| struct | MenuItem |
Public Types | |
| using | Callback = std::function< void()> |
| using | EnabledCheck = std::function< bool()> |
Public Member Functions | |
| MenuBuilder ()=default | |
| MenuBuilder & | BeginMenu (const char *label, const char *icon=nullptr) |
| Begin a top-level menu. | |
| MenuBuilder & | BeginSubMenu (const char *label, const char *icon=nullptr, EnabledCheck enabled=nullptr) |
| Begin a submenu. | |
| MenuBuilder & | EndMenu () |
| End the current menu/submenu. | |
| MenuBuilder & | Item (const char *label, const char *icon, Callback callback, const char *shortcut=nullptr, EnabledCheck enabled=nullptr, EnabledCheck checked=nullptr) |
| Add a menu item. | |
| MenuBuilder & | Item (const char *label, Callback callback, const char *shortcut=nullptr, EnabledCheck enabled=nullptr) |
| Add a menu item without icon (convenience) | |
| MenuBuilder & | Separator () |
| Add a separator. | |
| MenuBuilder & | DisabledItem (const char *label, const char *icon=nullptr) |
| Add a disabled item (grayed out) | |
| void | Draw () |
| Draw the menu bar (call in main menu bar) | |
| void | Clear () |
| Clear all menus. | |
Private Member Functions | |
| void | DrawMenuItem (const MenuItem &item) |
Private Attributes | |
| std::vector< Menu > | menus_ |
| Menu * | current_menu_ = nullptr |
| std::vector< bool > | submenu_stack_ |
| int | skip_depth_ = 0 |
Fluent interface for building ImGui menus with icons.
Provides a cleaner, more maintainable way to construct menus:
MenuBuilder menu; menu.BeginMenu("File", ICON_MD_FOLDER) .Item("Open", ICON_MD_FILE_OPEN, []() { OpenFile(); }) .Separator() .Item("Quit", ICON_MD_EXIT_TO_APP, []() { Quit(); }) .EndMenu();
Definition at line 34 of file menu_builder.h.
| using yaze::editor::MenuBuilder::Callback = std::function<void()> |
Definition at line 36 of file menu_builder.h.
| using yaze::editor::MenuBuilder::EnabledCheck = std::function<bool()> |
Definition at line 37 of file menu_builder.h.
|
default |
| MenuBuilder & yaze::editor::MenuBuilder::BeginMenu | ( | const char * | label, |
| const char * | icon = nullptr |
||
| ) |
Begin a top-level menu.
Definition at line 8 of file menu_builder.cc.
References current_menu_, yaze::editor::MenuBuilder::Menu::icon, yaze::editor::MenuBuilder::Menu::label, and menus_.
Referenced by yaze::editor::MenuOrchestrator::BuildDebugMenu(), yaze::editor::MenuOrchestrator::BuildEditMenu(), yaze::editor::MenuOrchestrator::BuildFileMenu(), yaze::editor::MenuOrchestrator::BuildHelpMenu(), yaze::editor::MenuOrchestrator::BuildToolsMenu(), yaze::editor::MenuOrchestrator::BuildViewMenu(), yaze::editor::MenuOrchestrator::BuildWindowMenu(), and MenuBuilder().
| MenuBuilder & yaze::editor::MenuBuilder::BeginSubMenu | ( | const char * | label, |
| const char * | icon = nullptr, |
||
| EnabledCheck | enabled = nullptr |
||
| ) |
Begin a submenu.
Definition at line 19 of file menu_builder.cc.
References current_menu_, yaze::editor::MenuBuilder::MenuItem::enabled, yaze::editor::MenuBuilder::MenuItem::icon, yaze::editor::MenuBuilder::Menu::items, yaze::editor::MenuBuilder::MenuItem::kSubMenuBegin, yaze::editor::MenuBuilder::MenuItem::label, and yaze::editor::MenuBuilder::MenuItem::type.
Referenced by yaze::editor::MenuOrchestrator::AddDebugMenuItems(), yaze::editor::MenuOrchestrator::AddToolsMenuItems(), and yaze::editor::MenuOrchestrator::AddWindowMenuItems().
| MenuBuilder & yaze::editor::MenuBuilder::EndMenu | ( | ) |
End the current menu/submenu.
Definition at line 34 of file menu_builder.cc.
References current_menu_, yaze::editor::MenuBuilder::Menu::items, yaze::editor::MenuBuilder::MenuItem::kSubMenuBegin, yaze::editor::MenuBuilder::MenuItem::kSubMenuEnd, and yaze::editor::MenuBuilder::MenuItem::type.
Referenced by yaze::editor::MenuOrchestrator::BuildDebugMenu(), yaze::editor::MenuOrchestrator::BuildEditMenu(), yaze::editor::MenuOrchestrator::BuildFileMenu(), yaze::editor::MenuOrchestrator::BuildHelpMenu(), yaze::editor::MenuOrchestrator::BuildToolsMenu(), yaze::editor::MenuOrchestrator::BuildViewMenu(), and yaze::editor::MenuOrchestrator::BuildWindowMenu().
| MenuBuilder & yaze::editor::MenuBuilder::Item | ( | const char * | label, |
| const char * | icon, | ||
| Callback | callback, | ||
| const char * | shortcut = nullptr, |
||
| EnabledCheck | enabled = nullptr, |
||
| EnabledCheck | checked = nullptr |
||
| ) |
Add a menu item.
Definition at line 67 of file menu_builder.cc.
References yaze::editor::MenuBuilder::MenuItem::callback, yaze::editor::MenuBuilder::MenuItem::checked, current_menu_, yaze::editor::MenuBuilder::MenuItem::enabled, yaze::editor::MenuBuilder::MenuItem::icon, yaze::editor::MenuBuilder::Menu::items, yaze::editor::MenuBuilder::MenuItem::kItem, yaze::editor::MenuBuilder::MenuItem::label, yaze::editor::MenuBuilder::MenuItem::shortcut, and yaze::editor::MenuBuilder::MenuItem::type.
Referenced by yaze::editor::MenuOrchestrator::AddDebugMenuItems(), yaze::editor::MenuOrchestrator::AddEditMenuItems(), yaze::editor::MenuOrchestrator::AddFileMenuItems(), yaze::editor::MenuOrchestrator::AddHelpMenuItems(), yaze::editor::MenuOrchestrator::AddToolsMenuItems(), yaze::editor::MenuOrchestrator::AddViewMenuItems(), yaze::editor::MenuOrchestrator::AddWindowMenuItems(), and Item().
| MenuBuilder & yaze::editor::MenuBuilder::Item | ( | const char * | label, |
| Callback | callback, | ||
| const char * | shortcut = nullptr, |
||
| EnabledCheck | enabled = nullptr |
||
| ) |
Add a menu item without icon (convenience)
Definition at line 88 of file menu_builder.cc.
References Item().

| MenuBuilder & yaze::editor::MenuBuilder::Separator | ( | ) |
Add a separator.
Definition at line 93 of file menu_builder.cc.
References current_menu_, yaze::editor::MenuBuilder::Menu::items, yaze::editor::MenuBuilder::MenuItem::kSeparator, and yaze::editor::MenuBuilder::MenuItem::type.
Referenced by yaze::editor::MenuOrchestrator::AddDebugMenuItems(), and yaze::editor::MenuOrchestrator::AddWindowMenuItems().
| MenuBuilder & yaze::editor::MenuBuilder::DisabledItem | ( | const char * | label, |
| const char * | icon = nullptr |
||
| ) |
Add a disabled item (grayed out)
Definition at line 102 of file menu_builder.cc.
References current_menu_, yaze::editor::MenuBuilder::MenuItem::icon, yaze::editor::MenuBuilder::Menu::items, yaze::editor::MenuBuilder::MenuItem::kDisabled, yaze::editor::MenuBuilder::MenuItem::label, and yaze::editor::MenuBuilder::MenuItem::type.
| void yaze::editor::MenuBuilder::Draw | ( | ) |
Draw the menu bar (call in main menu bar)
Definition at line 115 of file menu_builder.cc.
References DrawMenuItem(), menus_, skip_depth_, and submenu_stack_.
Referenced by yaze::editor::MenuOrchestrator::BuildMainMenu().

| void yaze::editor::MenuBuilder::Clear | ( | ) |
Clear all menus.
Definition at line 226 of file menu_builder.cc.
References current_menu_, and menus_.
Referenced by yaze::editor::MenuOrchestrator::ClearMenu().
|
private |
Definition at line 131 of file menu_builder.cc.
References yaze::editor::MenuBuilder::MenuItem::callback, yaze::editor::MenuBuilder::MenuItem::checked, yaze::editor::MenuBuilder::MenuItem::enabled, yaze::editor::MenuBuilder::MenuItem::icon, yaze::editor::MenuBuilder::MenuItem::kDisabled, yaze::editor::MenuBuilder::MenuItem::kItem, yaze::editor::MenuBuilder::MenuItem::kSeparator, yaze::editor::MenuBuilder::MenuItem::kSubMenuBegin, yaze::editor::MenuBuilder::MenuItem::kSubMenuEnd, yaze::editor::MenuBuilder::MenuItem::label, yaze::editor::MenuBuilder::MenuItem::shortcut, skip_depth_, submenu_stack_, and yaze::editor::MenuBuilder::MenuItem::type.
Referenced by Draw().
|
private |
Definition at line 117 of file menu_builder.h.
Referenced by BeginMenu(), Clear(), and Draw().
|
private |
Definition at line 118 of file menu_builder.h.
Referenced by BeginMenu(), BeginSubMenu(), Clear(), DisabledItem(), EndMenu(), Item(), and Separator().
|
mutableprivate |
Definition at line 121 of file menu_builder.h.
Referenced by Draw(), and DrawMenuItem().
|
mutableprivate |
Definition at line 122 of file menu_builder.h.
Referenced by Draw(), and DrawMenuItem().