fix(geometrySpreadsheet): geometry updates with displayGeoChanged signal

This commit is contained in:
parker
2025-08-10 11:31:01 +01:00
parent add55e720f
commit 13da4a79f4
9 changed files with 15 additions and 19 deletions

View File

@@ -35,7 +35,7 @@ enzo::nt::OpId enzo::nt::NetworkManager::addOperator(op::OpInfo opInfo)
if(getDisplayOp().has_value() && getDisplayOp().value()==dependentId)
{
cookOp(dependentId);
updateDisplay(dependentOp.getOutputGeo(0));
displayGeoChanged(dependentOp.getOutputGeo(0));
}
}
}
@@ -80,7 +80,7 @@ void enzo::nt::NetworkManager::setDisplayOp(OpId opId)
cookOp(opId);
enzo::nt::GeometryOperator& displayOp = getGeoOperator(opId);
updateDisplay(displayOp.getOutputGeo(0));
displayGeoChanged(displayOp.getOutputGeo(0));
displayNodeChanged(opId);
}

View File

@@ -25,6 +25,7 @@ public:
void setDisplayOp(OpId opId);
boost::signals2::signal<void (nt::OpId)> displayNodeChanged;
boost::signals2::signal<void (enzo::geo::Geometry& geometry)> displayGeoChanged;
#ifdef UNIT_TEST
void _reset();
@@ -47,9 +48,6 @@ private:
std::optional<OpId> displayOp_=std::nullopt;
Q_SIGNALS:
void updateDisplay(enzo::geo::Geometry& geometry);
};
inline enzo::nt::NetworkManager& nm() {

View File

@@ -14,13 +14,12 @@ GeometrySpreadsheetModel::GeometrySpreadsheetModel(const QStringList &strings, Q
}
void GeometrySpreadsheetModel::selectionChanged(enzo::nt::OpId opId)
void GeometrySpreadsheetModel::geometryChanged(enzo::geo::Geometry& geometry)
{
beginResetModel();
enzo::nt::NetworkManager& nm = enzo::nt::nm();
opId_ = opId;
// enzo::nt::NetworkManager& nm = enzo::nt::nm();
IC();
geometry_ = nm.getGeoOperator(opId).getOutputGeo(0);
geometry_ = geometry;
// get sizes
const auto attribCount = geometry_.getNumAttributes(enzo::ga::AttributeOwner::POINT);

View File

@@ -18,7 +18,7 @@ public:
int role = Qt::DisplayRole) const override;
int indexFromSection(unsigned int section) const;
void selectionChanged(enzo::nt::OpId opId);
void geometryChanged(enzo::geo::Geometry& geometry);
private:

View File

@@ -36,9 +36,9 @@ GeometrySpreadsheetPanel::GeometrySpreadsheetPanel(QWidget *parent, Qt::WindowFl
setLayout(mainLayout_);
}
void GeometrySpreadsheetPanel::selectionChanged(enzo::nt::OpId opId)
void GeometrySpreadsheetPanel::geometryChanged(enzo::geo::Geometry& geometry)
{
model_->selectionChanged(opId);
model_->geometryChanged(geometry);
view_->update();
}

View File

@@ -12,7 +12,7 @@ class GeometrySpreadsheetPanel
public:
GeometrySpreadsheetPanel(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());
public Q_SLOTS:
void selectionChanged(enzo::nt::OpId opId);
void geometryChanged(enzo::geo::Geometry& geometry);
private:
QVBoxLayout* mainLayout_;
QWidget* bgWidget_;

View File

@@ -1,5 +1,6 @@
#include "Gui/Interface.h"
#include "Engine/Network/NetworkManager.h"
#include "Engine/Operator/Geometry.h"
#include "Gui/GeometrySpreadsheetPanel/GeometrySpreadsheetPanel.h"
#include "Gui/ParametersPanel/ParametersPanel.h"
#include "Gui/Viewport/Viewport.h"
@@ -61,8 +62,7 @@ EnzoUI::EnzoUI()
mainLayout_->addWidget(viewportSplitter_);
// connect signals
connect(&enzo::nt::nm(), &enzo::nt::NetworkManager::updateDisplay, viewport, &Viewport::geometryChanged);
enzo::nt::nm().displayNodeChanged.connect([parametersPanel](enzo::nt::OpId opId){parametersPanel->selectionChanged(opId);});
enzo::nt::nm().displayNodeChanged.connect([geometrySpreadsheetPanel](enzo::nt::OpId opId){geometrySpreadsheetPanel->selectionChanged(opId);});
// connect(&enzo::nt::nm(), &enzo::nt::NetworkManager::updateDisplay, parametersPanel, &ParametersPanel::selectionChanged);
enzo::nt::nm().displayGeoChanged.connect([geometrySpreadsheetPanel](enzo::geo::Geometry& geometry){geometrySpreadsheetPanel->geometryChanged(geometry);});
enzo::nt::nm().displayGeoChanged.connect([viewport](enzo::geo::Geometry& geometry){viewport->setGeometry(geometry);});
}

View File

@@ -20,7 +20,7 @@ Viewport::Viewport(QWidget *parent, Qt::WindowFlags f)
this->setLayout(mainLayout_);
}
void Viewport::geometryChanged(enzo::geo::Geometry& geometry)
void Viewport::setGeometry(enzo::geo::Geometry& geometry)
{
openGLWidget_->geometryChanged(geometry);
}

View File

@@ -8,6 +8,7 @@ class Viewport
{
public:
Viewport(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());
void setGeometry(enzo::geo::Geometry& geometry);
private:
QVBoxLayout* mainLayout_;
ViewportGLWidget* openGLWidget_;
@@ -23,6 +24,4 @@ private:
QPointF leftStartPos_;
bool rightMouseDown_=false;
QPointF rightStartPos_;
public Q_SLOTS:
void geometryChanged(enzo::geo::Geometry& geometry);
};