feat(parameter): populate parameterPanel
This commit is contained in:
@@ -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)
|
|
||||||
|
|||||||
@@ -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
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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_;
|
||||||
|
|||||||
@@ -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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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_;
|
||||||
|
|||||||
@@ -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
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ extern "C"
|
|||||||
"house",
|
"house",
|
||||||
"House",
|
"House",
|
||||||
&GOP_house::ctor,
|
&GOP_house::ctor,
|
||||||
GopTransform::parameterList
|
GOP_house::parameterList
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user