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,
51 const std::string& icon,
52 std::function<void()> callback);
53
62 CanvasMenuBuilder& AddItem(const std::string& label,
63 const std::string& icon,
64 const std::string& shortcut,
65 std::function<void()> callback);
66
74 CanvasMenuBuilder& AddPopupItem(const std::string& label,
75 const std::string& popup_id,
76 std::function<void()> render_callback);
77
86 CanvasMenuBuilder& AddPopupItem(const std::string& label,
87 const std::string& icon,
88 const std::string& popup_id,
89 std::function<void()> render_callback);
90
98 CanvasMenuBuilder& AddConditionalItem(const std::string& label,
99 std::function<void()> callback,
100 std::function<bool()> condition);
101
108 CanvasMenuBuilder& AddSubmenu(const std::string& label,
109 const std::vector<CanvasMenuItem>& subitems);
110
116
124 const std::string& title = "",
126
132
138
144
145 private:
148 std::vector<CanvasMenuItem> pending_items_;
149
150 void FlushPendingItems();
151};
152
153} // namespace gui
154} // namespace yaze
155
156#endif // YAZE_APP_GUI_CANVAS_CANVAS_MENU_BUILDER_H
157
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
Main namespace for the application.
Definition controller.cc:20
Complete menu definition.
Menu section grouping related menu items.