yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
yaze::editor::MenuBuilder Class Reference

Fluent interface for building ImGui menus with icons. More...

#include <menu_builder.h>

Collaboration diagram for yaze::editor::MenuBuilder:

Classes

struct  Menu
 
struct  MenuItem
 

Public Types

using Callback = std::function< void()>
 
using EnabledCheck = std::function< bool()>
 

Public Member Functions

 MenuBuilder ()=default
 
MenuBuilderBeginMenu (const char *label, const char *icon=nullptr)
 Begin a top-level menu.
 
MenuBuilderBeginSubMenu (const char *label, const char *icon=nullptr, EnabledCheck enabled=nullptr)
 Begin a submenu.
 
MenuBuilderEndMenu ()
 End the current menu/submenu.
 
MenuBuilderItem (const char *label, const char *icon, Callback callback, const char *shortcut=nullptr, EnabledCheck enabled=nullptr, EnabledCheck checked=nullptr)
 Add a menu item.
 
MenuBuilderItem (const char *label, Callback callback, const char *shortcut=nullptr, EnabledCheck enabled=nullptr)
 Add a menu item without icon (convenience)
 
MenuBuilderSeparator ()
 Add a separator.
 
MenuBuilderDisabledItem (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< Menumenus_
 
Menucurrent_menu_ = nullptr
 
std::vector< bool > submenu_stack_
 
int skip_depth_ = 0
 

Detailed Description

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 32 of file menu_builder.h.

Member Typedef Documentation

◆ Callback

using yaze::editor::MenuBuilder::Callback = std::function<void()>

Definition at line 34 of file menu_builder.h.

◆ EnabledCheck

using yaze::editor::MenuBuilder::EnabledCheck = std::function<bool()>

Definition at line 35 of file menu_builder.h.

Constructor & Destructor Documentation

◆ MenuBuilder()

yaze::editor::MenuBuilder::MenuBuilder ( )
default

References BeginMenu().

Here is the call graph for this function:

Member Function Documentation

◆ BeginMenu()

MenuBuilder & yaze::editor::MenuBuilder::BeginMenu ( const char *  label,
const char *  icon = nullptr 
)

◆ BeginSubMenu()

◆ EndMenu()

◆ Item() [1/2]

◆ Item() [2/2]

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().

Here is the call graph for this function:

◆ Separator()

◆ DisabledItem()

MenuBuilder & yaze::editor::MenuBuilder::DisabledItem ( const char *  label,
const char *  icon = nullptr 
)

◆ Draw()

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::EditorManager::BuildModernMenu().

Here is the call graph for this function:

◆ Clear()

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::EditorManager::BuildModernMenu().

◆ DrawMenuItem()

Member Data Documentation

◆ menus_

std::vector<Menu> yaze::editor::MenuBuilder::menus_
private

Definition at line 115 of file menu_builder.h.

Referenced by BeginMenu(), Clear(), and Draw().

◆ current_menu_

Menu* yaze::editor::MenuBuilder::current_menu_ = nullptr
private

Definition at line 116 of file menu_builder.h.

Referenced by BeginMenu(), BeginSubMenu(), Clear(), DisabledItem(), EndMenu(), Item(), and Separator().

◆ submenu_stack_

std::vector<bool> yaze::editor::MenuBuilder::submenu_stack_
mutableprivate

Definition at line 119 of file menu_builder.h.

Referenced by Draw(), and DrawMenuItem().

◆ skip_depth_

int yaze::editor::MenuBuilder::skip_depth_ = 0
mutableprivate

Definition at line 120 of file menu_builder.h.

Referenced by Draw(), and DrawMenuItem().


The documentation for this class was generated from the following files: