Sun, 13 Mar 2022 18:46:10 +0200
Handle properties in a generic manner in the object editor
#pragma once #include <QWidget> #include "../main.h" #include "../model.h" #include "polygonobjecteditor.h" class Document; class ObjectEditor : public QWidget { Q_OBJECT public: explicit ObjectEditor(Document* document, ldraw::id_t id = ldraw::NULL_ID); void setObjectId(ldraw::id_t id); private: Q_SLOT void handleColorChange(ldraw::Color value); Q_SLOT void handleVec3Change(const glm::vec3& value); Document* const document; ldraw::id_t objectId = ldraw::NULL_ID; QWidget* formContainer; class QLabel* objectTypeNameLabel; class QLabel* objectTypeIconLabel; QMap<ldraw::Property, QPair<QWidget*, QWidget*>> propertyWidgets; QWidget* makeEditorWidgetForProperty(ldraw::Property property); void handlePropertyChange(QObject* caller, const QVariant& value); };