8 std::function<
void(
const std::string&, std::function<
void()>)>
9 popup_opened_callback) {
21 ImGui::BeginDisabled();
25 std::string display_label = item.
label;
26 if (!item.
icon.empty()) {
27 display_label = item.
icon +
" " + item.
label;
33 bool selected =
false;
34 if (item.
color.x != 1.0f || item.
color.y != 1.0f || item.
color.z != 1.0f ||
35 item.
color.w != 1.0f) {
37 ImGui::PushStyleColor(ImGuiCol_Text, item.
color);
41 display_label.c_str(),
45 display_label.c_str(),
47 ImGui::PopStyleColor();
52 display_label.c_str(),
56 display_label.c_str(),
67 if (item.
popup.has_value() && item.
popup->auto_open_on_select &&
68 popup_opened_callback) {
69 popup_opened_callback(item.
popup->popup_id,
70 item.
popup->render_callback);
75 if (ImGui::BeginMenu(display_label.c_str())) {
76 for (
const auto& subitem : item.
subitems) {
96 std::function<
void(
const std::string&, std::function<
void()>)>
97 popup_opened_callback) {
99 if (section.
items.empty()) {
104 if (!section.
title.empty()) {
110 for (
const auto& item : section.
items) {
122 std::function<
void(
const std::string&, std::function<
void()>)>
123 popup_opened_callback) {
130 for (
const auto& section : menu.
sections) {
void RenderCanvasMenu(const CanvasMenuDefinition &menu, std::function< void(const std::string &, std::function< void()>)> popup_opened_callback)
Render a complete menu definition.
void RenderMenuSection(const CanvasMenuSection §ion, std::function< void(const std::string &, std::function< void()>)> popup_opened_callback)
Render a menu section.
void RenderMenuItem(const CanvasMenuItem &item, std::function< void(const std::string &, std::function< void()>)> popup_opened_callback)
Render a single menu item.