feat(parameter): persistant parameter value

This commit is contained in:
parker
2025-07-23 20:31:02 +01:00
parent 2f3f9f09db
commit 8ac9b80a69
6 changed files with 60 additions and 24 deletions

View File

@@ -13,3 +13,12 @@ std::string enzo::prm::Parameter::getName() const
return template_.getName(); return template_.getName();
} }
enzo::bt::floatT enzo::prm::Parameter::evalFloat() const
{
return floatValue_;
}
void enzo::prm::Parameter::setFloat(bt::floatT value)
{
floatValue_ = value;
}

View File

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

View File

@@ -2,27 +2,26 @@
#include "Gui/Parameters/AbstractSliderParm.h" #include "Gui/Parameters/AbstractSliderParm.h"
#include <qboxlayout.h> #include <qboxlayout.h>
#include <QLabel> #include <QLabel>
#include <iostream>
enzo::ui::AbstractFormParm::AbstractFormParm(std::weak_ptr<prm::Parameter> parameter) enzo::ui::AbstractFormParm::AbstractFormParm(std::weak_ptr<prm::Parameter> parameter)
: parameter_{parameter}
{ {
std::string name; if(auto sharedParameter=parameter_.lock())
if(auto sharedParameter=parameter.lock())
{ {
name = sharedParameter->getName(); std::string name = sharedParameter->getName();
}
else
{
return;
}
auto label = new QLabel(QString::fromStdString(name+":")); 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);
auto slider = new AbstractSliderParm();
connect(slider, &AbstractSliderParm::valueChanged, this, &AbstractFormParm::changeValue);
slider->setValue(sharedParameter->evalFloat());
mainLayout_ = new QHBoxLayout(); mainLayout_ = new QHBoxLayout();
mainLayout_->addWidget(label); mainLayout_->addWidget(label);
mainLayout_->addWidget(new AbstractSliderParm()); mainLayout_->addWidget(slider);
mainLayout_->setContentsMargins(0,0,0,0); mainLayout_->setContentsMargins(0,0,0,0);
setFixedHeight(24); setFixedHeight(24);
@@ -31,3 +30,18 @@ enzo::ui::AbstractFormParm::AbstractFormParm(std::weak_ptr<prm::Parameter> param
setLayout(mainLayout_); setLayout(mainLayout_);
} }
}
void enzo::ui::AbstractFormParm::changeValue(enzo::bt::floatT value)
{
if(auto sharedParameter=parameter_.lock())
{
sharedParameter->setFloat(value);
}
else
{
std::cout << "ERROR: parameter no longer exists\n";
}
}

View File

@@ -12,8 +12,13 @@ class AbstractFormParm
public: public:
AbstractFormParm(std::weak_ptr<prm::Parameter> parameter); AbstractFormParm(std::weak_ptr<prm::Parameter> parameter);
protected slots:
void changeValue(bt::floatT value);
private: private:
QHBoxLayout* mainLayout_; QHBoxLayout* mainLayout_;
std::weak_ptr<prm::Parameter> parameter_;
}; };

View File

@@ -13,6 +13,8 @@
enzo::ui::AbstractSliderParm::AbstractSliderParm(QWidget *parent, Qt::WindowFlags f) enzo::ui::AbstractSliderParm::AbstractSliderParm(QWidget *parent, Qt::WindowFlags f)
: QWidget(parent, f) : QWidget(parent, f)
{ {
// tells qt to style the widget even though it's a Q_OBJECT
setAttribute(Qt::WA_StyledBackground, true);
setFixedHeight(24); setFixedHeight(24);
value_ = defaultValue_; value_ = defaultValue_;
@@ -53,8 +55,8 @@ void enzo::ui::AbstractSliderParm::paintEvent(QPaintEvent *event)
void enzo::ui::AbstractSliderParm::setValue(bt::floatT value) void enzo::ui::AbstractSliderParm::setValue(bt::floatT value)
{ {
if(value_==value) // if(value_==value)
return; // return;
if(clampMin_ && value<minValue_) { value = minValue_; } if(clampMin_ && value<minValue_) { value = minValue_; }
if(clampMax_ && value>maxValue_) { value = maxValue_; } if(clampMax_ && value>maxValue_) { value = maxValue_; }
@@ -65,6 +67,8 @@ void enzo::ui::AbstractSliderParm::setValue(bt::floatT value)
valStr.truncate(4); valStr.truncate(4);
valueLabel_->setText(valStr); valueLabel_->setText(valStr);
valueChanged(value_);
} }

View File

@@ -10,11 +10,15 @@ namespace enzo::ui
class AbstractSliderParm class AbstractSliderParm
: public QWidget : public QWidget
{ {
Q_OBJECT
public: public:
AbstractSliderParm(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags()); AbstractSliderParm(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());
void setValue(bt::floatT value);
signals:
void valueChanged(bt::floatT value);
private: private:
void setValue(bt::floatT value);
QVBoxLayout* mainLayout_; QVBoxLayout* mainLayout_;
QLabel* valueLabel_; QLabel* valueLabel_;