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) | |
| MenuBuilder & | CustomMenu (const char *label, Callback draw_callback) |
| Add a custom menu with a callback for drawing dynamic content. | |
| MenuBuilder & | CustomItems (Callback draw_callback) |
| Add items drawn by a callback inside the current menu. | |
| 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_ |
Friends | |
| class | ProjectUiTestPeer |
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 38 of file menu_builder.h.
| using yaze::editor::MenuBuilder::EnabledCheck = std::function<bool()> |
Definition at line 39 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 10 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::BuildEditMenu(), yaze::editor::MenuOrchestrator::BuildFileMenu(), yaze::editor::MenuOrchestrator::BuildToolsMenu(), and yaze::editor::MenuOrchestrator::BuildViewMenu().
| MenuBuilder & yaze::editor::MenuBuilder::BeginSubMenu | ( | const char * | label, |
| const char * | icon = nullptr, | ||
| EnabledCheck | enabled = nullptr ) |
Begin a submenu.
Definition at line 21 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::AddHackWorkflowMenuItems(), yaze::editor::MenuOrchestrator::AddRecentFilesSubmenu(), yaze::editor::MenuOrchestrator::AddRomAnalysisMenuItems(), yaze::editor::MenuOrchestrator::AddThemeSubmenu(), and yaze::editor::MenuOrchestrator::AddToolsMenuItems().
| MenuBuilder & yaze::editor::MenuBuilder::EndMenu | ( | ) |
End the current menu/submenu.
Definition at line 37 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::AddHackWorkflowMenuItems(), yaze::editor::MenuOrchestrator::AddRecentFilesSubmenu(), yaze::editor::MenuOrchestrator::AddThemeSubmenu(), yaze::editor::MenuOrchestrator::BuildEditMenu(), yaze::editor::MenuOrchestrator::BuildFileMenu(), yaze::editor::MenuOrchestrator::BuildToolsMenu(), and yaze::editor::MenuOrchestrator::BuildViewMenu().
| 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 71 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::AddAppearanceMenuItems(), yaze::editor::MenuOrchestrator::AddDrawersMenuItems(), yaze::editor::MenuOrchestrator::AddEditMenuItems(), yaze::editor::MenuOrchestrator::AddFileMenuItems(), yaze::editor::MenuOrchestrator::AddHackWorkflowMenuItems(), yaze::editor::MenuOrchestrator::AddRecentFilesSubmenu(), yaze::editor::MenuOrchestrator::AddRomAnalysisMenuItems(), yaze::editor::MenuOrchestrator::AddSearchMenuItems(), yaze::editor::MenuOrchestrator::AddThemeSubmenu(), yaze::editor::MenuOrchestrator::AddToolsMenuItems(), and yaze::editor::MenuOrchestrator::AddViewMenuItems().
| 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 93 of file menu_builder.cc.
References yaze::editor::Item.
| MenuBuilder & yaze::editor::MenuBuilder::Separator | ( | ) |
Add a separator.
Definition at line 98 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::AddFileMenuItems(), yaze::editor::MenuOrchestrator::AddRecentFilesSubmenu(), yaze::editor::MenuOrchestrator::AddToolsMenuItems(), and yaze::editor::MenuOrchestrator::AddViewMenuItems().
| MenuBuilder & yaze::editor::MenuBuilder::DisabledItem | ( | const char * | label, |
| const char * | icon = nullptr ) |
Add a disabled item (grayed out)
Definition at line 108 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.
Referenced by yaze::editor::MenuOrchestrator::AddRecentFilesSubmenu(), and yaze::editor::MenuOrchestrator::AddThemeSubmenu().
| MenuBuilder & yaze::editor::MenuBuilder::CustomMenu | ( | const char * | label, |
| Callback | draw_callback ) |
Add a custom menu with a callback for drawing dynamic content.
Use this for menus that need dynamic/runtime-generated content. The callback is responsible for drawing menu items using ImGui directly.
Definition at line 122 of file menu_builder.cc.
References current_menu_, yaze::editor::MenuBuilder::Menu::custom_draw, yaze::editor::MenuBuilder::Menu::is_custom, yaze::editor::MenuBuilder::Menu::label, and menus_.
Referenced by yaze::editor::MenuOrchestrator::BuildEditorMenu(), and yaze::editor::MenuOrchestrator::BuildPanelsMenu().
| MenuBuilder & yaze::editor::MenuBuilder::CustomItems | ( | Callback | draw_callback | ) |
Add items drawn by a callback inside the current menu.
The callback runs where the item sits, inside the open menu scope, and draws its own ImGui menu items (or nothing).
Definition at line 133 of file menu_builder.cc.
References yaze::editor::MenuBuilder::MenuItem::callback, current_menu_, yaze::editor::MenuBuilder::Menu::items, yaze::editor::MenuBuilder::MenuItem::kCustom, and yaze::editor::MenuBuilder::MenuItem::type.
Referenced by yaze::editor::MenuOrchestrator::AddEditMenuItems().
| void yaze::editor::MenuBuilder::Draw | ( | ) |
Draw the menu bar (call in main menu bar)
Definition at line 144 of file menu_builder.cc.
References DrawMenuItem(), yaze::gui::WidgetIdRegistry::Instance(), menus_, yaze::gui::WidgetIdRegistry::RegisterWidget(), skip_depth_, and submenu_stack_.
Referenced by yaze::editor::MenuOrchestrator::BuildMainMenu().

| void yaze::editor::MenuBuilder::Clear | ( | ) |
Clear all menus.
Definition at line 276 of file menu_builder.cc.
References current_menu_, and menus_.
|
private |
Definition at line 167 of file menu_builder.cc.
References yaze::gui::AutoRegisterLastItem(), yaze::editor::MenuBuilder::MenuItem::callback, yaze::editor::MenuBuilder::MenuItem::checked, yaze::editor::MenuBuilder::MenuItem::enabled, yaze::editor::MenuBuilder::MenuItem::icon, yaze::editor::MenuBuilder::MenuItem::kCustom, 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().

|
friend |
Definition at line 35 of file menu_builder.h.
|
private |
Definition at line 138 of file menu_builder.h.
Referenced by BeginMenu(), Clear(), CustomMenu(), and Draw().
|
private |
Definition at line 139 of file menu_builder.h.
Referenced by BeginMenu(), BeginSubMenu(), Clear(), CustomItems(), CustomMenu(), DisabledItem(), EndMenu(), Item(), and Separator().
|
mutableprivate |
Definition at line 142 of file menu_builder.h.
Referenced by Draw(), and DrawMenuItem().
|
mutableprivate |
Definition at line 143 of file menu_builder.h.
Referenced by Draw(), and DrawMenuItem().