From abc94199988380708e778b5c496922af6e6e344a Mon Sep 17 00:00:00 2001 From: parker Date: Sun, 3 Aug 2025 20:44:38 +0100 Subject: [PATCH] feat: add consistant padding --- src/Gui/Parameters/AbstractFormParm.cpp | 20 +++++++++--- src/Gui/Parameters/AbstractFormParm.h | 4 +++ src/Gui/ParametersPanel/ParametersPanel.cpp | 35 ++++++++++----------- 3 files changed, 36 insertions(+), 23 deletions(-) diff --git a/src/Gui/Parameters/AbstractFormParm.cpp b/src/Gui/Parameters/AbstractFormParm.cpp index af2c6ed..58d3092 100644 --- a/src/Gui/Parameters/AbstractFormParm.cpp +++ b/src/Gui/Parameters/AbstractFormParm.cpp @@ -13,12 +13,12 @@ enzo::ui::AbstractFormParm::AbstractFormParm(std::weak_ptr param if(auto sharedParameter=parameter_.lock()) { std::string name = sharedParameter->getName(); - auto label = new QLabel(QString::fromStdString(name+":")); - label->setStyleSheet("QLabel{background: none}"); - label->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); + label_ = new QLabel(QString::fromStdString(name+":")); + label_->setStyleSheet("QLabel{background: none}"); + label_->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); mainLayout_ = new QHBoxLayout(); - mainLayout_->addWidget(label); + mainLayout_->addWidget(label_); mainLayout_->setContentsMargins(0,0,0,0); switch(sharedParameter->getType()) @@ -65,6 +65,18 @@ enzo::ui::AbstractFormParm::AbstractFormParm(std::weak_ptr param } +int enzo::ui::AbstractFormParm::getLeftPadding() +{ + + return label_->minimumSizeHint().width(); +} + +void enzo::ui::AbstractFormParm::setLeftPadding(int padding) +{ + label_->setFixedWidth(padding); +} + + void enzo::ui::AbstractFormParm::changeValue(enzo::bt::floatT value, unsigned int index) { diff --git a/src/Gui/Parameters/AbstractFormParm.h b/src/Gui/Parameters/AbstractFormParm.h index 0149c20..b05e643 100644 --- a/src/Gui/Parameters/AbstractFormParm.h +++ b/src/Gui/Parameters/AbstractFormParm.h @@ -3,6 +3,7 @@ #include #include #include +#include namespace enzo::ui { @@ -13,12 +14,15 @@ class AbstractFormParm Q_OBJECT public: AbstractFormParm(std::weak_ptr parameter); + int getLeftPadding(); + void setLeftPadding(int padding); protected Q_SLOTS: void changeValue(bt::floatT value, unsigned int index=0); private: QHBoxLayout* mainLayout_; + QLabel* label_; std::weak_ptr parameter_; }; diff --git a/src/Gui/ParametersPanel/ParametersPanel.cpp b/src/Gui/ParametersPanel/ParametersPanel.cpp index d7fd023..83040d0 100644 --- a/src/Gui/ParametersPanel/ParametersPanel.cpp +++ b/src/Gui/ParametersPanel/ParametersPanel.cpp @@ -33,12 +33,6 @@ ParametersPanel::ParametersPanel(QWidget *parent, Qt::WindowFlags f) mainLayout_->addWidget(bgWidget_); - // 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_); } @@ -59,27 +53,30 @@ void ParametersPanel::selectionChanged() enzo::nt::GeometryOperator& displayOp = nm.getGeoOperator(displayOpId.value()); auto parameters = displayOp.getParameters(); + + std::vector parameterWidgets; + parameterWidgets.reserve(parameters.size()); + + int maxLeftPadding = 0; + for(auto parameter : parameters) { auto parameterShared = parameter.lock(); if(!parameterShared) throw std::runtime_error("Failed to lock parameter"); - + enzo::ui::AbstractFormParm* parameterWidget = new enzo::ui::AbstractFormParm(parameter); + int leftPadding = parameterWidget->getLeftPadding(); + if(leftPadding > maxLeftPadding) maxLeftPadding = leftPadding; - parametersLayout_->addWidget(new enzo::ui::AbstractFormParm(parameter)); - // switch(parameterShared->getType()) - // { - // case prm::Type::FLOAT: - // parametersLayout_->addWidget(new enzo::ui::AbstractFormParm(parameter)); - // break; - // case prm::Type::VECTOR3: - // parametersLayout_->addWidget(new enzo::ui::VectorParr(parameter)); - // break; - // default: - // throw std::runtime_error("Parameter panel: paremeter type not accounted for"); + parameterWidgets.push_back(parameterWidget); + } - // } + const int leftPadding = maxLeftPadding + 5; + for(auto parameterWidget : parameterWidgets) + { + parameterWidget->setLeftPadding(leftPadding); + parametersLayout_->addWidget(parameterWidget); } }