feat(parameter): populate parameterPanel

This commit is contained in:
parker
2025-07-23 19:54:40 +01:00
parent c3fabfa47b
commit ae78e15931
15 changed files with 79 additions and 22 deletions

View File

@@ -42,17 +42,18 @@ EnzoUI::EnzoUI()
viewportSplitter_->addWidget(viewport);
viewportSplitter_->addWidget(networkSplitter_);
viewportSplitter_->setStretchFactor(0, 4);
viewportSplitter_->setStretchFactor(0, 25);
viewportSplitter_->setStretchFactor(1, 1);
networkSplitter_->addWidget(parametersPanel);
networkSplitter_->addWidget(network);
networkSplitter_->setStretchFactor(0, 1);
networkSplitter_->setStretchFactor(1, 15);
networkSplitter_->setStretchFactor(1, 10);
mainLayout_->addWidget(viewportSplitter_);
// connect signals
connect(&enzo::nt::nm(), &enzo::nt::NetworkManager::updateDisplay, viewport, &Viewport::geometryChanged);
connect(&enzo::nt::nm(), &enzo::nt::NetworkManager::updateDisplay, parametersPanel, &ParametersPanel::selectionChanged);
}

View File

@@ -399,8 +399,8 @@ void Network::mouseReleaseEvent(QMouseEvent *event)
NodeGraphic* prevDisplayNode = nodeStore_.at(*prevDisplayOpId);
prevDisplayNode->setDisplayFlag(false);
}
nm.setDisplayOp(opId);
static_cast<DisplayFlagButton*>(clickedDisplayFlag)->setEnabled(true);
nm.setDisplayOp(opId);
}
if(state_==State::MOVING_NODE)
{

View File

@@ -4,9 +4,19 @@
#include <QLabel>
enzo::ui::AbstractFormParm::AbstractFormParm()
enzo::ui::AbstractFormParm::AbstractFormParm(std::weak_ptr<prm::Parameter> parameter)
{
auto label = new QLabel("Parm name:");
std::string name;
if(auto sharedParameter=parameter.lock())
{
name = sharedParameter->getName();
}
else
{
return;
}
auto label = new QLabel(QString::fromStdString(name+":"));
label->setStyleSheet("QLabel{background: none}");
label->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred);

View File

@@ -1,5 +1,7 @@
#include "Engine/Parameter/Parameter.h"
#include <QWidget>
#include <QHBoxLayout>
#include <memory>
namespace enzo::ui
{
@@ -8,7 +10,7 @@ class AbstractFormParm
: public QWidget
{
public:
AbstractFormParm();
AbstractFormParm(std::weak_ptr<prm::Parameter> parameter);
private:
QHBoxLayout* mainLayout_;

View File

@@ -1,7 +1,10 @@
#include "Gui/ParametersPanel/ParametersPanel.h"
#include "Engine/Operator/GeometryOperator.h"
#include "Gui/Parameters/AbstractSliderParm.h"
#include "Gui/Parameters/AbstractFormParm.h"
#include "Gui/Parameters/FloatParm.h"
#include "Engine/Network/NetworkManager.h"
#include <memory>
#include <qboxlayout.h>
#include <QSpinBox>
#include <qnamespace.h>
@@ -29,15 +32,34 @@ ParametersPanel::ParametersPanel(QWidget *parent, Qt::WindowFlags f)
mainLayout_->addLayout(parametersLayout_);
mainLayout_->addWidget(bgWidget_);
// parametersLayout_->addWidget(new enzo::ui::AbstractSliderParm());
// parametersLayout_->addWidget(new enzo::ui::AbstractSliderParm());
// parametersLayout_->addWidget(new enzo::ui::FloatParm());
// parametersLayout_->addWidget(new enzo::ui::FloatParm());
parametersLayout_->addWidget(new enzo::ui::AbstractFormParm());
parametersLayout_->addWidget(new enzo::ui::AbstractFormParm());
parametersLayout_->addWidget(new enzo::ui::AbstractFormParm());
parametersLayout_->addWidget(new enzo::ui::AbstractFormParm());
// parametersLayout_->addWidget(new enzo::ui::AbstractFormParm());
// parametersLayout_->addWidget(new enzo::ui::AbstractFormParm());
// parametersLayout_->addWidget(new enzo::ui::AbstractFormParm());
// parametersLayout_->addWidget(new enzo::ui::AbstractFormParm());
setLayout(mainLayout_);
}
void ParametersPanel::selectionChanged()
{
enzo::nt::NetworkManager& nm = enzo::nt::nm();
std::optional<enzo::nt::OpId> displayOpId = nm.getDisplayOp();
if(!displayOpId.has_value()) return;
// clear layout safely
QLayoutItem *child;
while ((child = parametersLayout_->takeAt(0)) != nullptr) {
delete child->widget();
delete child;
}
enzo::nt::GeometryOperator& displayOp = nm.getGeoOperator(displayOpId.value());
auto parameters = displayOp.getParameters();
for(auto parameter : parameters)
{
parametersLayout_->addWidget(new enzo::ui::AbstractFormParm(parameter));
}
}

View File

@@ -8,6 +8,8 @@ class ParametersPanel
{
public:
ParametersPanel(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());
public slots:
void selectionChanged();
private:
QVBoxLayout* mainLayout_;
QVBoxLayout* parametersLayout_;