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
8
#include "
app/gui/canvas/canvas_menu.h
"
9
10
namespace
yaze
{
11
namespace
gui {
12
30
class
CanvasMenuBuilder
{
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
113
CanvasMenuBuilder
&
AddSeparator
();
114
121
CanvasMenuBuilder
&
BeginSection
(
122
const
std::string& title =
""
,
123
MenuSectionPriority
priority =
MenuSectionPriority::kEditorSpecific
);
124
129
CanvasMenuBuilder
&
EndSection
();
130
135
CanvasMenuDefinition
Build
();
136
141
CanvasMenuBuilder
&
Reset
();
142
143
private
:
144
CanvasMenuDefinition
menu_
;
145
CanvasMenuSection
*
current_section_
=
nullptr
;
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
canvas_menu.h
yaze::gui::CanvasMenuBuilder
Builder pattern for constructing canvas menus fluently.
Definition
canvas_menu_builder.h:30
yaze::gui::CanvasMenuBuilder::CanvasMenuBuilder
CanvasMenuBuilder()=default
yaze::gui::CanvasMenuBuilder::AddSubmenu
CanvasMenuBuilder & AddSubmenu(const std::string &label, const std::vector< CanvasMenuItem > &subitems)
Add a submenu with nested items.
Definition
canvas_menu_builder.cc:66
yaze::gui::CanvasMenuBuilder::FlushPendingItems
void FlushPendingItems()
Definition
canvas_menu_builder.cc:118
yaze::gui::CanvasMenuBuilder::AddConditionalItem
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)
Definition
canvas_menu_builder.cc:58
yaze::gui::CanvasMenuBuilder::AddItem
CanvasMenuBuilder & AddItem(const std::string &label, std::function< void()> callback)
Add a simple menu item.
Definition
canvas_menu_builder.cc:6
yaze::gui::CanvasMenuBuilder::menu_
CanvasMenuDefinition menu_
Definition
canvas_menu_builder.h:144
yaze::gui::CanvasMenuBuilder::Reset
CanvasMenuBuilder & Reset()
Reset the builder to start building a new menu.
Definition
canvas_menu_builder.cc:111
yaze::gui::CanvasMenuBuilder::AddPopupItem
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.
Definition
canvas_menu_builder.cc:39
yaze::gui::CanvasMenuBuilder::pending_items_
std::vector< CanvasMenuItem > pending_items_
Definition
canvas_menu_builder.h:146
yaze::gui::CanvasMenuBuilder::Build
CanvasMenuDefinition Build()
Build the final menu definition.
Definition
canvas_menu_builder.cc:106
yaze::gui::CanvasMenuBuilder::BeginSection
CanvasMenuBuilder & BeginSection(const std::string &title="", MenuSectionPriority priority=MenuSectionPriority::kEditorSpecific)
Start a new section with optional title.
Definition
canvas_menu_builder.cc:82
yaze::gui::CanvasMenuBuilder::EndSection
CanvasMenuBuilder & EndSection()
End the current section.
Definition
canvas_menu_builder.cc:100
yaze::gui::CanvasMenuBuilder::AddSeparator
CanvasMenuBuilder & AddSeparator()
Add a separator to visually group items.
Definition
canvas_menu_builder.cc:75
yaze::gui::CanvasMenuBuilder::current_section_
CanvasMenuSection * current_section_
Definition
canvas_menu_builder.h:145
yaze::gui::MenuSectionPriority
MenuSectionPriority
Menu section priority for controlling rendering order.
Definition
canvas_menu.h:23
yaze::gui::MenuSectionPriority::kEditorSpecific
@ kEditorSpecific
yaze
Definition
application.cc:18
yaze::gui::CanvasMenuDefinition
Complete menu definition.
Definition
canvas_menu.h:193
yaze::gui::CanvasMenuSection
Menu section grouping related menu items.
Definition
canvas_menu.h:154
src
app
gui
canvas
canvas_menu_builder.h
Generated by
1.10.0