8 std::function<
void(
const std::string&, std::function<
void()>)>
9 popup_opened_callback) {
17 ImGui::BeginDisabled();
21 std::string display_label = item.
label;
22 if (!item.
icon.empty()) {
23 display_label = item.
icon +
" " + item.
label;
29 bool selected =
false;
30 if (item.
color.x != 1.0f || item.
color.y != 1.0f || item.
color.z != 1.0f ||
31 item.
color.w != 1.0f) {
33 ImGui::PushStyleColor(ImGuiCol_Text, item.
color);
34 selected = ImGui::MenuItem(
35 display_label.c_str(),
37 ImGui::PopStyleColor();
39 selected = ImGui::MenuItem(
40 display_label.c_str(),
51 if (item.
popup.has_value() && item.
popup->auto_open_on_select &&
52 popup_opened_callback) {
53 popup_opened_callback(item.
popup->popup_id,
54 item.
popup->render_callback);
59 if (ImGui::BeginMenu(display_label.c_str())) {
60 for (
const auto& subitem : item.
subitems) {
void RenderCanvasMenu(const CanvasMenuDefinition &menu, std::function< void(const std::string &, std::function< void()>)> popup_opened_callback)
Render a complete menu definition.
void RenderMenuItem(const CanvasMenuItem &item, std::function< void(const std::string &, std::function< void()>)> popup_opened_callback)
Render a single menu item.