feat(parameter): persistant parameter value
This commit is contained in:
@@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
@@ -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_;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -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_);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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_;
|
||||||
|
|||||||
Reference in New Issue
Block a user