7 std::function<
void(
const std::string&, std::function<
void()>)>
8 popup_opened_callback) {
16 ImGui::BeginDisabled();
20 std::string display_label = item.
label;
21 if (!item.
icon.empty()) {
22 display_label = item.
icon +
" " + item.
label;
28 bool selected =
false;
29 if (item.
color.x != 1.0f || item.
color.y != 1.0f ||
30 item.
color.z != 1.0f || item.
color.w != 1.0f) {
32 ImGui::PushStyleColor(ImGuiCol_Text, item.
color);
33 selected = ImGui::MenuItem(display_label.c_str(),
35 ImGui::PopStyleColor();
37 selected = ImGui::MenuItem(display_label.c_str(),
48 if (item.
popup.has_value() &&
49 item.
popup->auto_open_on_select &&
50 popup_opened_callback) {
51 popup_opened_callback(item.
popup->popup_id, item.
popup->render_callback);
56 if (ImGui::BeginMenu(display_label.c_str())) {
57 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.