attach vtk context to gcompose

This commit is contained in:
AndreaRigoni
2026-03-22 12:18:33 +00:00
parent a8f786d8d1
commit 324aaa91b7
36 changed files with 674 additions and 19 deletions

View File

@@ -3,6 +3,7 @@
#include <typeinfo>
#include <cxxabi.h>
#include <functional>
#include "Core/Object.h"
ContextModel::ContextModel(QObject* parent)
: QAbstractItemModel(parent), m_rootContext(nullptr) {}
@@ -12,6 +13,12 @@ ContextModel::~ContextModel() {}
void ContextModel::setContext(uLib::ObjectsContext* context) {
beginResetModel();
m_rootContext = context;
if (m_rootContext) {
uLib::Object::connect(m_rootContext, &uLib::Object::Updated, [this]() {
this->beginResetModel();
this->endResetModel();
});
}
endResetModel();
}
@@ -118,7 +125,14 @@ QVariant ContextModel::data(const QModelIndex& index, int role) const {
uLib::Object* obj = static_cast<uLib::Object*>(index.internalPointer());
if (role == Qt::DisplayRole) {
return getDemangledName(typeid(*obj));
QString typeName = getDemangledName(typeid(*obj));
std::string instName = obj->GetInstanceName();
if (instName.empty()) return typeName;
return QString("%1 (%2)").arg(QString::fromStdString(instName)).arg(typeName);
}
if (role == Qt::EditRole) {
return QString::fromStdString(obj->GetInstanceName());
}
return QVariant();
@@ -130,3 +144,18 @@ QVariant ContextModel::headerData(int section, Qt::Orientation orientation, int
}
return QVariant();
}
Qt::ItemFlags ContextModel::flags(const QModelIndex& index) const {
if (!index.isValid()) return Qt::NoItemFlags;
return Qt::ItemIsEditable | Qt::ItemIsSelectable | Qt::ItemIsEnabled;
}
bool ContextModel::setData(const QModelIndex& index, const QVariant& value, int role) {
if (index.isValid() && role == Qt::EditRole) {
uLib::Object* obj = static_cast<uLib::Object*>(index.internalPointer());
obj->SetInstanceName(value.toString().toStdString());
emit dataChanged(index, index, {Qt::DisplayRole, Qt::EditRole});
return true;
}
return false;
}