49 lines
No EOL
1,015 B
C++
49 lines
No EOL
1,015 B
C++
#pragma once
|
|
|
|
#include <typeindex>
|
|
#include <map>
|
|
#include <QFrame>
|
|
#include <QVBoxLayout>
|
|
#include <QScrollArea>
|
|
#include <component.hpp>
|
|
|
|
#include "inspectors/inspectorbase.h"
|
|
|
|
class Component;
|
|
class Asset;
|
|
|
|
class Inspector : public QFrame
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
explicit Inspector(QWidget* parent = nullptr);
|
|
~Inspector();
|
|
|
|
QFrame* GetInspector(std::type_index, Component* component);
|
|
QFrame* GetInspectorAsset(Asset* asset);
|
|
|
|
template<class Object, class Inspector>
|
|
void Register()
|
|
{
|
|
m_inspectors.emplace(typeid(Object), new Inspector(nullptr));
|
|
}
|
|
|
|
public slots:
|
|
void Rebuild(bool override = false);
|
|
|
|
private:
|
|
int m_lastEntitySelected = 0;
|
|
|
|
QLabel* m_label;
|
|
QVBoxLayout* m_masterlayout;
|
|
QFrame* m_itemsContainer;
|
|
QScrollArea* m_scrollArea;
|
|
|
|
QGridLayout* m_layout2;
|
|
|
|
QMenu* m_addComponentMenu;
|
|
QPushButton* m_addComponentButton;
|
|
|
|
std::vector<QFrame*> m_inspectorFrames;
|
|
std::map<std::type_index, InspectorBase*> m_inspectors;
|
|
}; |