Skip to content

File ImguiMenu.h

File List > src > UI > ImguiMenu.h

Go to the documentation of this file

#pragma once
#include <iostream>

#include "ImguiMenuItem.h"
#include "Context.h"

class ImguiMenu
{
private:
    mutable std::unordered_map<std::string, int> name_order;
public:
    ImguiMenu();
    ImguiMenu(const std::string& name);
    ~ImguiMenu();

public:
    mutable std::string menu_name = "";
    mutable int menu_id;

public:
    mutable std::vector<std::shared_ptr<ImguiMenuItem>> subm_list;

    template<class MItemType, class... Args>
    void PushSubMenu(Args... args);
    void PushSubMenu(std::shared_ptr<ImguiMenuItem> subm);

    ImguiMenuItem* FindMenuItem(const std::string _name);

    void RenderMenu(const Context& ctx) const;
};



template<class MItemType, class... Args>
void ImguiMenu::PushSubMenu(Args... args)
{
    std::shared_ptr<MItemType> item = std::make_shared<MItemType>(args...);
    PushSubMenu(std::dynamic_pointer_cast<ImguiMenuItem>(item));
}