Skip to content

Commit

Permalink
Gui: enable range check in QuantitySpinBox when opening expression ed…
Browse files Browse the repository at this point in the history
…itor
  • Loading branch information
wwmayer committed Dec 19, 2022
1 parent d795753 commit e171a1f
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 1 deletion.
9 changes: 9 additions & 0 deletions src/Gui/Placement.cpp
Expand Up @@ -355,9 +355,18 @@ void Placement::setupUnits()
ui->yCnt->setValue(Base::Quantity(0, Base::Unit::Length));
ui->zCnt->setValue(Base::Quantity(0, Base::Unit::Length));
ui->angle->setUnit(Base::Unit::Angle);
ui->yawAngle->setMaximum(180.0F);
ui->yawAngle->setMinimum(-180.0F);
ui->yawAngle->setUnit(Base::Unit::Angle);
ui->yawAngle->checkRangeInExpression(true);
ui->pitchAngle->setMaximum(90.0F);
ui->pitchAngle->setMinimum(-90.0F);
ui->pitchAngle->setUnit(Base::Unit::Angle);
ui->pitchAngle->checkRangeInExpression(true);
ui->rollAngle->setMaximum(180.0F);
ui->rollAngle->setMinimum(-180.0F);
ui->rollAngle->setUnit(Base::Unit::Angle);
ui->rollAngle->checkRangeInExpression(true);
}

void Placement::setupSignalMapper()
Expand Down
19 changes: 18 additions & 1 deletion src/Gui/QuantitySpinBox.cpp
Expand Up @@ -64,6 +64,7 @@ class QuantitySpinBoxPrivate
QuantitySpinBoxPrivate(QuantitySpinBox *q) :
validInput(true),
pendingEmit(false),
checkRangeInExpression(false),
unitValue(0),
maximum(DOUBLE_MAX),
minimum(-DOUBLE_MAX),
Expand Down Expand Up @@ -230,6 +231,7 @@ class QuantitySpinBoxPrivate
QLocale locale;
bool validInput;
bool pendingEmit;
bool checkRangeInExpression;
QString validStr;
Base::Quantity quantity;
Base::Quantity cached;
Expand Down Expand Up @@ -516,7 +518,9 @@ void QuantitySpinBox::openFormulaDialog()

Q_D(const QuantitySpinBox);
auto box = new Gui::Dialog::DlgExpressionInput(getPath(), getExpression(), d->unit, this);
box->setRange(d->minimum, d->maximum);
if (d->checkRangeInExpression) {
box->setRange(d->minimum, d->maximum);
}
QObject::connect(box, &Gui::Dialog::DlgExpressionInput::finished, [=]() {
if (box->result() == QDialog::Accepted)
setExpression(box->getExpression());
Expand Down Expand Up @@ -638,6 +642,19 @@ void QuantitySpinBox::setRange(double minimum, double maximum)
d->maximum = maximum;
}

void QuantitySpinBox::checkRangeInExpression(bool on)
{
Q_D(QuantitySpinBox);
d->checkRangeInExpression = on;
}

bool QuantitySpinBox::isCheckedRangeInExpresion() const
{
Q_D(const QuantitySpinBox);
return d->checkRangeInExpression;
}


int QuantitySpinBox::decimals() const
{
Q_D(const QuantitySpinBox);
Expand Down
2 changes: 2 additions & 0 deletions src/Gui/QuantitySpinBox.h
Expand Up @@ -114,6 +114,8 @@ class GuiExport QuantitySpinBox : public QAbstractSpinBox, public ExpressionSpin
void selectNumber();

void setRange(double min, double max);
void checkRangeInExpression(bool);
bool isCheckedRangeInExpresion() const;

Base::Quantity valueFromText(const QString &text) const;
QString textFromValue(const Base::Quantity& val) const;
Expand Down

0 comments on commit e171a1f

Please sign in to comment.