#pragma once #include #include "datatypes/base.h" #include "objects/base/instance.h" class Ui_MainWindow; class PropertiesItemDelegate; namespace Data { class Variant; }; class PropertiesView : public QTreeWidget { Q_DECLARE_PRIVATE(QTreeView) bool ignorePropertyUpdates = false; std::weak_ptr currentInstance; void propertyChanged(QTreeWidgetItem *item, int column); void activateProperty(QTreeWidgetItem *item, int column); void rebuildCompositeProperty(QTreeWidgetItem *item, const TypeInfo*, Variant); void onPropertyUpdated(std::shared_ptr instance, std::string property, Variant newValue); friend PropertiesItemDelegate; protected: void drawBranches(QPainter *painter, const QRect &rect, const QModelIndex &index) const override; QModelIndex indexAt(const QPoint &point) const override; public: PropertiesView(QWidget* parent = nullptr); ~PropertiesView() override; void setSelected(std::optional> instance); };