supercell-wx/scwx-qt/source/scwx/qt/model/imgui_context_model.hpp
2022-11-29 10:13:47 -06:00

64 lines
1.2 KiB
C++

#pragma once
#include <memory>
#include <string>
#include <QAbstractListModel>
struct ImFontAtlas;
struct ImGuiContext;
namespace scwx
{
namespace qt
{
namespace model
{
class ImGuiContextModelImpl;
struct ImGuiContextInfo
{
size_t id_ {};
std::string name_ {};
ImGuiContext* context_ {};
bool operator==(const ImGuiContextInfo& o) const;
};
class ImGuiContextModel : public QAbstractListModel
{
private:
Q_OBJECT
Q_DISABLE_COPY(ImGuiContextModel)
public:
explicit ImGuiContextModel();
~ImGuiContextModel();
int rowCount(const QModelIndex& parent = QModelIndex()) const override;
QVariant data(const QModelIndex& index,
int role = Qt::DisplayRole) const override;
QModelIndex IndexOf(const std::string& contextName) const;
ImGuiContext* CreateContext(const std::string& name);
void DestroyContext(const std::string& name);
std::vector<ImGuiContextInfo> contexts() const;
ImFontAtlas* font_atlas();
static ImGuiContextModel& Instance();
signals:
void ContextsUpdated();
private:
friend class ImGuiContextModelImpl;
std::unique_ptr<ImGuiContextModelImpl> p;
};
} // namespace model
} // namespace qt
} // namespace scwx