feat(parameter): populate parameterPanel

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

View File

@@ -76,6 +76,9 @@ qt_add_executable(${AppExec}
target_link_libraries(${AppExec} PRIVATE Qt6::Core Qt6::Widgets Qt6::SvgWidgets Qt6::OpenGLWidgets glm::glm Eigen3::Eigen TBB::tbb Boost::filesystem Boost::system) target_link_libraries(${AppExec} PRIVATE Qt6::Core Qt6::Widgets Qt6::SvgWidgets Qt6::OpenGLWidgets glm::glm Eigen3::Eigen TBB::tbb Boost::filesystem Boost::system)
target_include_directories(${AppExec} PUBLIC src) target_include_directories(${AppExec} PUBLIC src)
# compile nodes
add_subdirectory(src/OpDefs)
# tests # tests
# Include(FetchContent) # Include(FetchContent)
@@ -110,4 +113,3 @@ target_include_directories(${AppExec} PUBLIC src)
# target_compile_definitions(${BenchExec} PRIVATE UNIT_TEST) # target_compile_definitions(${BenchExec} PRIVATE UNIT_TEST)
# target_include_directories(${BenchExec} PUBLIC src) # target_include_directories(${BenchExec} PUBLIC src)
# add_subdirectory(src/OpDefs)

View File

@@ -83,6 +83,10 @@ std::vector<std::shared_ptr<const nt::GeometryConnection>> nt::GeometryOperator:
} }
return inputConnections; return inputConnections;
} }
std::vector<std::weak_ptr<prm::Parameter>> nt::GeometryOperator::getParameters()
{
return {parameters_.begin(), parameters_.end()};
}
std::vector<std::shared_ptr<const nt::GeometryConnection>> nt::GeometryOperator::getOutputConnections() const std::vector<std::shared_ptr<const nt::GeometryConnection>> nt::GeometryOperator::getOutputConnections() const
{ {

View File

@@ -26,7 +26,7 @@ public:
void addOutputConnection(std::shared_ptr<nt::GeometryConnection> connection); void addOutputConnection(std::shared_ptr<nt::GeometryConnection> connection);
std::vector<std::shared_ptr<const GeometryConnection>> getInputConnections() const; std::vector<std::shared_ptr<const GeometryConnection>> getInputConnections() const;
std::vector<std::shared_ptr<const GeometryConnection>> getOutputConnections() const; std::vector<std::shared_ptr<const GeometryConnection>> getOutputConnections() const;
std::vector<std::weak_ptr<prm::Parameter>> getParameters();
unsigned int getMaxInputs() const; unsigned int getMaxInputs() const;

View File

@@ -7,13 +7,17 @@ void enzo::op::OperatorTable::addOperator(const char* internalName, const char*
{ {
std::cout << "OPERATOR TABLE ADDED\n"; std::cout << "OPERATOR TABLE ADDED\n";
std::cout << "adding operator: " << displayName << "\n"; std::cout << "adding operator: " << displayName << "\n";
std::cout << "tempalate size: " << sizeof(templates) << "\n";
for(const prm::Template* t = templates; t->isValid(); ++t)
{
std::cout << "name: " << t->getName() << "\n";
}
enzo::op::OpInfo info { enzo::op::OpInfo info {
internalName, internalName,
displayName, displayName,
ctorFunc, ctorFunc,
templates, templates,
sizeof(*templates)
}; };
opInfoStore_.push_back(info); opInfoStore_.push_back(info);

View File

@@ -7,3 +7,9 @@ enzo::prm::Parameter::Parameter(Template prmTemplate)
{ {
std::cout << "created new parameter: " << prmTemplate.getName() << "\n"; std::cout << "created new parameter: " << prmTemplate.getName() << "\n";
} }
std::string enzo::prm::Parameter::getName() const
{
return template_.getName();
}

View File

@@ -8,6 +8,7 @@ class Parameter
{ {
public: public:
Parameter(Template prmTemplate); Parameter(Template prmTemplate);
std::string getName() const;
inline bt::floatT evalFloat() const {return floatValue_;} inline bt::floatT evalFloat() const {return floatValue_;}
inline void setFloat(bt::floatT value) {floatValue_ = value;} inline void setFloat(bt::floatT value) {floatValue_ = value;}
private: private:

View File

@@ -42,17 +42,18 @@ EnzoUI::EnzoUI()
viewportSplitter_->addWidget(viewport); viewportSplitter_->addWidget(viewport);
viewportSplitter_->addWidget(networkSplitter_); viewportSplitter_->addWidget(networkSplitter_);
viewportSplitter_->setStretchFactor(0, 4); viewportSplitter_->setStretchFactor(0, 25);
viewportSplitter_->setStretchFactor(1, 1); viewportSplitter_->setStretchFactor(1, 1);
networkSplitter_->addWidget(parametersPanel); networkSplitter_->addWidget(parametersPanel);
networkSplitter_->addWidget(network); networkSplitter_->addWidget(network);
networkSplitter_->setStretchFactor(0, 1); networkSplitter_->setStretchFactor(0, 1);
networkSplitter_->setStretchFactor(1, 15); networkSplitter_->setStretchFactor(1, 10);
mainLayout_->addWidget(viewportSplitter_); mainLayout_->addWidget(viewportSplitter_);
// connect signals // connect signals
connect(&enzo::nt::nm(), &enzo::nt::NetworkManager::updateDisplay, viewport, &Viewport::geometryChanged); 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); NodeGraphic* prevDisplayNode = nodeStore_.at(*prevDisplayOpId);
prevDisplayNode->setDisplayFlag(false); prevDisplayNode->setDisplayFlag(false);
} }
nm.setDisplayOp(opId);
static_cast<DisplayFlagButton*>(clickedDisplayFlag)->setEnabled(true); static_cast<DisplayFlagButton*>(clickedDisplayFlag)->setEnabled(true);
nm.setDisplayOp(opId);
} }
if(state_==State::MOVING_NODE) if(state_==State::MOVING_NODE)
{ {

View File

@@ -4,9 +4,19 @@
#include <QLabel> #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->setStyleSheet("QLabel{background: none}");
label->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); label->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred);

View File

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

View File

@@ -1,7 +1,10 @@
#include "Gui/ParametersPanel/ParametersPanel.h" #include "Gui/ParametersPanel/ParametersPanel.h"
#include "Engine/Operator/GeometryOperator.h"
#include "Gui/Parameters/AbstractSliderParm.h" #include "Gui/Parameters/AbstractSliderParm.h"
#include "Gui/Parameters/AbstractFormParm.h" #include "Gui/Parameters/AbstractFormParm.h"
#include "Gui/Parameters/FloatParm.h" #include "Gui/Parameters/FloatParm.h"
#include "Engine/Network/NetworkManager.h"
#include <memory>
#include <qboxlayout.h> #include <qboxlayout.h>
#include <QSpinBox> #include <QSpinBox>
#include <qnamespace.h> #include <qnamespace.h>
@@ -29,15 +32,34 @@ ParametersPanel::ParametersPanel(QWidget *parent, Qt::WindowFlags f)
mainLayout_->addLayout(parametersLayout_); mainLayout_->addLayout(parametersLayout_);
mainLayout_->addWidget(bgWidget_); mainLayout_->addWidget(bgWidget_);
// parametersLayout_->addWidget(new enzo::ui::AbstractSliderParm()); // parametersLayout_->addWidget(new enzo::ui::AbstractFormParm());
// parametersLayout_->addWidget(new enzo::ui::AbstractSliderParm()); // parametersLayout_->addWidget(new enzo::ui::AbstractFormParm());
// parametersLayout_->addWidget(new enzo::ui::FloatParm()); // parametersLayout_->addWidget(new enzo::ui::AbstractFormParm());
// 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());
setLayout(mainLayout_); 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: public:
ParametersPanel(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags()); ParametersPanel(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());
public slots:
void selectionChanged();
private: private:
QVBoxLayout* mainLayout_; QVBoxLayout* mainLayout_;
QVBoxLayout* parametersLayout_; QVBoxLayout* parametersLayout_;

View File

@@ -81,5 +81,6 @@ void GOP_house::cookOp(enzo::op::Context context)
enzo::prm::Template GOP_house::parameterList[] = enzo::prm::Template GOP_house::parameterList[] =
{ {
enzo::prm::Template(enzo::prm::Type::FLOAT, "Size"),
enzo::prm::Terminator enzo::prm::Terminator
}; };

View File

@@ -39,9 +39,11 @@ void GopTransform::cookOp(enzo::op::Context context)
} }
enzo::prm::Template GopTransform::parameterList[] = { enzo::prm::Template GopTransform::parameterList[] =
enzo::prm::Template(enzo::prm::Type::FLOAT, "Test"), {
enzo::prm::Template(enzo::prm::Type::FLOAT, "Test2"), enzo::prm::Template(enzo::prm::Type::FLOAT, "translateX"),
enzo::prm::Template(enzo::prm::Type::FLOAT, "translateY"),
enzo::prm::Template(enzo::prm::Type::FLOAT, "translateZ"),
enzo::prm::Terminator enzo::prm::Terminator
}; };

View File

@@ -18,7 +18,7 @@ extern "C"
"house", "house",
"House", "House",
&GOP_house::ctor, &GOP_house::ctor,
GopTransform::parameterList GOP_house::parameterList
); );
} }