yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
canvas_menu_builder.h
Go to the documentation of this file.
1#ifndef YAZE_APP_GUI_CANVAS_CANVAS_MENU_BUILDER_H
2#define YAZE_APP_GUI_CANVAS_CANVAS_MENU_BUILDER_H
3
4#include <functional>
5#include <string>
6#include <vector>
7
9
10namespace yaze {
11namespace gui {
12
31 public:
32 CanvasMenuBuilder() = default;
33
40 CanvasMenuBuilder& AddItem(const std::string& label,
41 std::function<void()> callback);
42
50 CanvasMenuBuilder& AddItem(const std::string& label, const std::string& icon,
51 std::function<void()> callback);
52
61 CanvasMenuBuilder& AddItem(const std::string& label, const std::string& icon,
62 const std::string& shortcut,
63 std::function<void()> callback);
64
72 CanvasMenuBuilder& AddPopupItem(const std::string& label,
73 const std::string& popup_id,
74 std::function<void()> render_callback);
75
84 CanvasMenuBuilder& AddPopupItem(const std::string& label,
85 const std::string& icon,
86 const std::string& popup_id,
87 std::function<void()> render_callback);
88
96 CanvasMenuBuilder& AddConditionalItem(const std::string& label,
97 std::function<void()> callback,
98 std::function<bool()> condition);
99
106 CanvasMenuBuilder& AddSubmenu(const std::string& label,
107 const std::vector<CanvasMenuItem>& subitems);
108
114
122 const std::string& title = "",
124
130
136
142
143 private:
146 std::vector<CanvasMenuItem> pending_items_;
147
148 void FlushPendingItems();
149};
150
151} // namespace gui
152} // namespace yaze
153
154#endif // YAZE_APP_GUI_CANVAS_CANVAS_MENU_BUILDER_H
Builder pattern for constructing canvas menus fluently.
CanvasMenuBuilder & AddSubmenu(const std::string &label, const std::vector< CanvasMenuItem > &subitems)
Add a submenu with nested items.
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 & AddItem(const std::string &label, std::function< void()> callback)
Add a simple menu item.
CanvasMenuBuilder & Reset()
Reset the builder to start building a new menu.
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.
std::vector< CanvasMenuItem > pending_items_
CanvasMenuDefinition Build()
Build the final menu definition.
CanvasMenuBuilder & BeginSection(const std::string &title="", MenuSectionPriority priority=MenuSectionPriority::kEditorSpecific)
Start a new section with optional title.
CanvasMenuBuilder & EndSection()
End the current section.
CanvasMenuBuilder & AddSeparator()
Add a separator to visually group items.
MenuSectionPriority
Menu section priority for controlling rendering order.
Definition canvas_menu.h:23
Complete menu definition.
Menu section grouping related menu items.