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,
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
115
CanvasMenuBuilder
&
AddSeparator
();
116
123
CanvasMenuBuilder
&
BeginSection
(
124
const
std::string& title =
""
,
125
MenuSectionPriority
priority =
MenuSectionPriority::kEditorSpecific
);
126
131
CanvasMenuBuilder
&
EndSection
();
132
137
CanvasMenuDefinition
Build
();
138
143
CanvasMenuBuilder
&
Reset
();
144
145
private
:
146
CanvasMenuDefinition
menu_
;
147
CanvasMenuSection
*
current_section_
=
nullptr
;
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
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:64
yaze::gui::CanvasMenuBuilder::FlushPendingItems
void FlushPendingItems()
Definition
canvas_menu_builder.cc:116
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:56
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:146
yaze::gui::CanvasMenuBuilder::Reset
CanvasMenuBuilder & Reset()
Reset the builder to start building a new menu.
Definition
canvas_menu_builder.cc:109
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:148
yaze::gui::CanvasMenuBuilder::Build
CanvasMenuDefinition Build()
Build the final menu definition.
Definition
canvas_menu_builder.cc:104
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:80
yaze::gui::CanvasMenuBuilder::EndSection
CanvasMenuBuilder & EndSection()
End the current section.
Definition
canvas_menu_builder.cc:98
yaze::gui::CanvasMenuBuilder::AddSeparator
CanvasMenuBuilder & AddSeparator()
Add a separator to visually group items.
Definition
canvas_menu_builder.cc:73
yaze::gui::CanvasMenuBuilder::current_section_
CanvasMenuSection * current_section_
Definition
canvas_menu_builder.h:147
yaze::gui::MenuSectionPriority
MenuSectionPriority
Menu section priority for controlling rendering order.
Definition
canvas_menu.h:23
yaze::gui::MenuSectionPriority::kEditorSpecific
@ kEditorSpecific
yaze
Main namespace for the application.
Definition
controller.cc:20
yaze::gui::CanvasMenuDefinition
Complete menu definition.
Definition
canvas_menu.h:184
yaze::gui::CanvasMenuSection
Menu section grouping related menu items.
Definition
canvas_menu.h:147
src
app
gui
canvas
canvas_menu_builder.h
Generated by
1.9.8