From 38740f7ef87d637f01696ea53235222d86a461ec Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Mon, 27 Feb 2017 14:28:22 +0200 Subject: [PATCH] Fix incorrect saving grainline angle and length. --HG-- branch : feature --- src/libs/vlayout/vlayoutpiece.cpp | 8 ++--- .../dialogs/tools/dialogseamallowance.cpp | 32 +++++++++++++++++-- .../dialogs/tools/dialogseamallowance.h | 2 ++ src/libs/vtools/dialogs/tools/dialogtool.cpp | 2 +- src/libs/vtools/dialogs/tools/dialogtool.h | 2 +- 5 files changed, 36 insertions(+), 10 deletions(-) diff --git a/src/libs/vlayout/vlayoutpiece.cpp b/src/libs/vlayout/vlayoutpiece.cpp index 3102eaabb..98c875149 100644 --- a/src/libs/vlayout/vlayoutpiece.cpp +++ b/src/libs/vlayout/vlayoutpiece.cpp @@ -238,16 +238,12 @@ void VLayoutPiece::SetGrainline(const VGrainlineData& geom, const VContainer& rP try { - QString qsFormula = geom.GetRotation().replace("\n", " "); - qsFormula = qApp->TrVars()->FormulaFromUser(qsFormula, qApp->Settings()->GetOsSeparator()); Calculator cal1; - dAng = cal1.EvalFormula(rPattern.PlainVariables(), qsFormula); + dAng = cal1.EvalFormula(rPattern.PlainVariables(), geom.GetRotation()); dAng = qDegreesToRadians(dAng); - qsFormula = geom.GetLength().replace("\n", " "); - qsFormula = qApp->TrVars()->FormulaFromUser(qsFormula, qApp->Settings()->GetOsSeparator()); Calculator cal2; - dLen = cal2.EvalFormula(rPattern.PlainVariables(), qsFormula); + dLen = cal2.EvalFormula(rPattern.PlainVariables(), geom.GetLength()); dLen = ToPixel(dLen, *rPattern.GetPatternUnit()); } catch(qmu::QmuParserError &e) diff --git a/src/libs/vtools/dialogs/tools/dialogseamallowance.cpp b/src/libs/vtools/dialogs/tools/dialogseamallowance.cpp index 01b839741..194e23d53 100644 --- a/src/libs/vtools/dialogs/tools/dialogseamallowance.cpp +++ b/src/libs/vtools/dialogs/tools/dialogseamallowance.cpp @@ -213,8 +213,8 @@ void DialogSeamAllowance::SetPiece(const VPiece &piece) UpdateList(); ui->groupBoxGrainline->setChecked(piece.GetGrainlineGeometry().IsVisible()); - ui->lineEditRotFormula->setPlainText(piece.GetGrainlineGeometry().GetRotation()); - ui->lineEditLenFormula->setPlainText(piece.GetGrainlineGeometry().GetLength()); + SetGrainlineAngle(piece.GetGrainlineGeometry()); + SetGrainlineLength(piece.GetGrainlineGeometry()); ui->comboBoxArrow->setCurrentIndex(int(piece.GetGrainlineGeometry().GetArrowType())); m_oldData = piece.GetPatternPieceData(); @@ -1989,3 +1989,31 @@ QVector DialogSeamAllowance::GetPieceInternals(const QListWidget *list) const } return internals; } + +//--------------------------------------------------------------------------------------------------------------------- +void DialogSeamAllowance::SetGrainlineAngle(const VGrainlineData &data) +{ + const QString formula = qApp->TrVars()->FormulaToUser(data.GetRotation(), qApp->Settings()->GetOsSeparator()); + // increase height if needed. + if (formula.length() > 80) + { + this->DeployRotation(); + } + ui->lineEditRotFormula->setPlainText(formula); + + MoveCursorToEnd(ui->lineEditRotFormula); +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogSeamAllowance::SetGrainlineLength(const VGrainlineData &data) +{ + const QString formula = qApp->TrVars()->FormulaToUser(data.GetLength(), qApp->Settings()->GetOsSeparator()); + // increase height if needed. + if (formula.length() > 80) + { + this->DeployLength(); + } + ui->lineEditLenFormula->setPlainText(formula); + + MoveCursorToEnd(ui->lineEditLenFormula); +} diff --git a/src/libs/vtools/dialogs/tools/dialogseamallowance.h b/src/libs/vtools/dialogs/tools/dialogseamallowance.h index 267bc7c30..0bcb47371 100644 --- a/src/libs/vtools/dialogs/tools/dialogseamallowance.h +++ b/src/libs/vtools/dialogs/tools/dialogseamallowance.h @@ -198,6 +198,8 @@ private: template QVector GetPieceInternals(const QListWidget *list) const; + void SetGrainlineAngle(const VGrainlineData &data); + void SetGrainlineLength(const VGrainlineData &data); }; #endif // DIALOGSEAMALLOWANCE_H diff --git a/src/libs/vtools/dialogs/tools/dialogtool.cpp b/src/libs/vtools/dialogs/tools/dialogtool.cpp index 64ddd7550..6216b6b20 100644 --- a/src/libs/vtools/dialogs/tools/dialogtool.cpp +++ b/src/libs/vtools/dialogs/tools/dialogtool.cpp @@ -353,7 +353,7 @@ void DialogTool::ChangeCurrentData(QComboBox *box, const QVariant &value) const } //--------------------------------------------------------------------------------------------------------------------- -void DialogTool::MoveCursorToEnd(QPlainTextEdit *plainTextEdit) +void DialogTool::MoveCursorToEnd(QPlainTextEdit *plainTextEdit) const { SCASSERT(plainTextEdit != nullptr) QTextCursor cursor = plainTextEdit->textCursor(); diff --git a/src/libs/vtools/dialogs/tools/dialogtool.h b/src/libs/vtools/dialogs/tools/dialogtool.h index 0cf0a8b90..b57bcb642 100644 --- a/src/libs/vtools/dialogs/tools/dialogtool.h +++ b/src/libs/vtools/dialogs/tools/dialogtool.h @@ -262,7 +262,7 @@ protected: * @brief SaveData Put dialog data in local variables */ virtual void SaveData() {} - void MoveCursorToEnd(QPlainTextEdit *plainTextEdit); + void MoveCursorToEnd(QPlainTextEdit *plainTextEdit) const; virtual bool eventFilter(QObject *object, QEvent *event) Q_DECL_OVERRIDE; quint32 DNumber(const QString &baseName) const;