Builder pattern for constructing canvas menus fluently. More...
#include <canvas_menu_builder.h>

Public Member Functions | |
| CanvasMenuBuilder ()=default | |
| CanvasMenuBuilder & | AddItem (const std::string &label, std::function< void()> callback) |
| Add a simple menu item. | |
| CanvasMenuBuilder & | AddItem (const std::string &label, const std::string &icon, std::function< void()> callback) |
| Add a menu item with icon. | |
| CanvasMenuBuilder & | AddItem (const std::string &label, const std::string &icon, const std::string &shortcut, std::function< void()> callback) |
| Add a menu item with icon and shortcut hint. | |
| CanvasMenuBuilder & | AddPopupItem (const std::string &label, const std::string &popup_id, std::function< void()> render_callback) |
| Add a menu item that opens a persistent popup. | |
| CanvasMenuBuilder & | AddPopupItem (const std::string &label, const std::string &icon, const std::string &popup_id, std::function< void()> render_callback) |
| Add a menu item with icon that opens a persistent popup. | |
| CanvasMenuBuilder & | AddConditionalItem (const std::string &label, std::function< void()> callback, std::function< bool()> condition) |
| Add a conditional menu item (enabled only when condition is true) | |
| CanvasMenuBuilder & | AddSubmenu (const std::string &label, const std::vector< CanvasMenuItem > &subitems) |
| Add a submenu with nested items. | |
| CanvasMenuBuilder & | AddSeparator () |
| Add a separator to visually group items. | |
| CanvasMenuBuilder & | BeginSection (const std::string &title="", MenuSectionPriority priority=MenuSectionPriority::kEditorSpecific) |
| Start a new section with optional title. | |
| CanvasMenuBuilder & | EndSection () |
| End the current section. | |
| CanvasMenuDefinition | Build () |
| Build the final menu definition. | |
| CanvasMenuBuilder & | Reset () |
| Reset the builder to start building a new menu. | |
Private Member Functions | |
| void | FlushPendingItems () |
Private Attributes | |
| CanvasMenuDefinition | menu_ |
| CanvasMenuSection * | current_section_ = nullptr |
| std::vector< CanvasMenuItem > | pending_items_ |
Builder pattern for constructing canvas menus fluently.
Phase 4: Simplifies menu construction with chainable methods.
Example usage:
Definition at line 30 of file canvas_menu_builder.h.
|
default |
| CanvasMenuBuilder & yaze::gui::CanvasMenuBuilder::AddItem | ( | const std::string & | label, |
| std::function< void()> | callback | ||
| ) |
Add a simple menu item.
| label | Menu item label |
| callback | Action to perform when selected |
Definition at line 6 of file canvas_menu_builder.cc.
References yaze::gui::CanvasMenuItem::callback, yaze::gui::CanvasMenuItem::label, and pending_items_.
| CanvasMenuBuilder & yaze::gui::CanvasMenuBuilder::AddItem | ( | const std::string & | label, |
| const std::string & | icon, | ||
| std::function< void()> | callback | ||
| ) |
Add a menu item with icon.
| label | Menu item label |
| icon | Material Design icon or Unicode glyph |
| callback | Action to perform when selected |
Definition at line 15 of file canvas_menu_builder.cc.
References yaze::gui::CanvasMenuItem::callback, yaze::gui::CanvasMenuItem::icon, yaze::gui::CanvasMenuItem::label, and pending_items_.
| CanvasMenuBuilder & yaze::gui::CanvasMenuBuilder::AddItem | ( | const std::string & | label, |
| const std::string & | icon, | ||
| const std::string & | shortcut, | ||
| std::function< void()> | callback | ||
| ) |
Add a menu item with icon and shortcut hint.
| label | Menu item label |
| icon | Material Design icon or Unicode glyph |
| shortcut | Keyboard shortcut hint (e.g., "Ctrl+S") |
| callback | Action to perform when selected |
Definition at line 26 of file canvas_menu_builder.cc.
References yaze::gui::CanvasMenuItem::callback, yaze::gui::CanvasMenuItem::icon, yaze::gui::CanvasMenuItem::label, pending_items_, and yaze::gui::CanvasMenuItem::shortcut.
| CanvasMenuBuilder & yaze::gui::CanvasMenuBuilder::AddPopupItem | ( | const std::string & | label, |
| const std::string & | popup_id, | ||
| std::function< void()> | render_callback | ||
| ) |
Add a menu item that opens a persistent popup.
| label | Menu item label |
| popup_id | Unique popup identifier |
| render_callback | Callback to render popup content |
Definition at line 39 of file canvas_menu_builder.cc.
References pending_items_, and yaze::gui::CanvasMenuItem::WithPopup().

| CanvasMenuBuilder & yaze::gui::CanvasMenuBuilder::AddPopupItem | ( | const std::string & | label, |
| const std::string & | icon, | ||
| const std::string & | popup_id, | ||
| std::function< void()> | render_callback | ||
| ) |
Add a menu item with icon that opens a persistent popup.
| label | Menu item label |
| icon | Material Design icon or Unicode glyph |
| popup_id | Unique popup identifier |
| render_callback | Callback to render popup content |
Definition at line 47 of file canvas_menu_builder.cc.
References yaze::gui::CanvasMenuItem::icon, pending_items_, and yaze::gui::CanvasMenuItem::WithPopup().

| CanvasMenuBuilder & yaze::gui::CanvasMenuBuilder::AddConditionalItem | ( | const std::string & | label, |
| std::function< void()> | callback, | ||
| std::function< bool()> | condition | ||
| ) |
Add a conditional menu item (enabled only when condition is true)
| label | Menu item label |
| callback | Action to perform when selected |
| condition | Function that returns true when item should be enabled |
Definition at line 56 of file canvas_menu_builder.cc.
References yaze::gui::CanvasMenuItem::Conditional(), and pending_items_.

| CanvasMenuBuilder & yaze::gui::CanvasMenuBuilder::AddSubmenu | ( | const std::string & | label, |
| const std::vector< CanvasMenuItem > & | subitems | ||
| ) |
Add a submenu with nested items.
| label | Submenu label |
| subitems | Nested menu items |
Definition at line 64 of file canvas_menu_builder.cc.
References yaze::gui::CanvasMenuItem::label, pending_items_, and yaze::gui::CanvasMenuItem::subitems.
| CanvasMenuBuilder & yaze::gui::CanvasMenuBuilder::AddSeparator | ( | ) |
Add a separator to visually group items.
Definition at line 73 of file canvas_menu_builder.cc.
References pending_items_.
| CanvasMenuBuilder & yaze::gui::CanvasMenuBuilder::BeginSection | ( | const std::string & | title = "", |
| MenuSectionPriority | priority = MenuSectionPriority::kEditorSpecific |
||
| ) |
Start a new section with optional title.
| title | Section title (empty for no title) |
| priority | Section priority (controls rendering order) |
Definition at line 80 of file canvas_menu_builder.cc.
References current_section_, FlushPendingItems(), menu_, yaze::gui::CanvasMenuSection::priority, yaze::gui::CanvasMenuDefinition::sections, yaze::gui::CanvasMenuSection::separator_after, and yaze::gui::CanvasMenuSection::title.

| CanvasMenuBuilder & yaze::gui::CanvasMenuBuilder::EndSection | ( | ) |
End the current section.
Definition at line 98 of file canvas_menu_builder.cc.
References current_section_, and FlushPendingItems().

| CanvasMenuDefinition yaze::gui::CanvasMenuBuilder::Build | ( | ) |
Build the final menu definition.
Definition at line 104 of file canvas_menu_builder.cc.
References FlushPendingItems(), and menu_.

| CanvasMenuBuilder & yaze::gui::CanvasMenuBuilder::Reset | ( | ) |
Reset the builder to start building a new menu.
Definition at line 109 of file canvas_menu_builder.cc.
References current_section_, menu_, pending_items_, and yaze::gui::CanvasMenuDefinition::sections.
|
private |
Definition at line 116 of file canvas_menu_builder.cc.
References current_section_, yaze::gui::CanvasMenuSection::items, yaze::gui::kEditorSpecific, menu_, pending_items_, yaze::gui::CanvasMenuSection::priority, yaze::gui::CanvasMenuDefinition::sections, and yaze::gui::CanvasMenuSection::separator_after.
Referenced by BeginSection(), Build(), and EndSection().
|
private |
Definition at line 146 of file canvas_menu_builder.h.
Referenced by BeginSection(), Build(), FlushPendingItems(), and Reset().
|
private |
Definition at line 147 of file canvas_menu_builder.h.
Referenced by BeginSection(), EndSection(), FlushPendingItems(), and Reset().
|
private |
Definition at line 148 of file canvas_menu_builder.h.
Referenced by AddConditionalItem(), AddItem(), AddItem(), AddItem(), AddPopupItem(), AddPopupItem(), AddSeparator(), AddSubmenu(), FlushPendingItems(), and Reset().