From 9b5b8dde048e829c3af697daf8ad19295de0e2bf Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Wed, 24 Jan 2018 19:10:29 +0200 Subject: [PATCH] Improve Formula Wizard. Disable data types not available in certain cases. --HG-- branch : develop --- src/app/tape/tmainwindow.cpp | 1 + .../valentina/dialogs/dialogincrements.cpp | 5 ++++ .../support/dialogeditwrongformula.cpp | 25 +++++++++++++++++++ .../dialogs/support/dialogeditwrongformula.h | 3 +++ 4 files changed, 34 insertions(+) diff --git a/src/app/tape/tmainwindow.cpp b/src/app/tape/tmainwindow.cpp index 8e0b376f5..97d5f2f27 100644 --- a/src/app/tape/tmainwindow.cpp +++ b/src/app/tape/tmainwindow.cpp @@ -1224,6 +1224,7 @@ void TMainWindow::Fx() DialogEditWrongFormula *dialog = new DialogEditWrongFormula(meash->GetData(), NULL_ID, this); dialog->setWindowTitle(tr("Edit measurement")); + dialog->SetMeasurementsMode(); dialog->SetFormula(qApp->TrVars()->TryFormulaFromUser(ui->plainTextEditFormula->toPlainText().replace("\n", " "), true)); const QString postfix = UnitsToStr(mUnit, true);//Show unit in dialog lable (cm, mm or inch) diff --git a/src/app/valentina/dialogs/dialogincrements.cpp b/src/app/valentina/dialogs/dialogincrements.cpp index f206e20ec..16dc9ee34 100644 --- a/src/app/valentina/dialogs/dialogincrements.cpp +++ b/src/app/valentina/dialogs/dialogincrements.cpp @@ -1254,13 +1254,16 @@ void DialogIncrements::Fx() QTableWidget *table = nullptr; QPlainTextEdit *plainTextEditFormula = nullptr; + bool incrementMode = true; if (button == ui->toolButtonExpr) { + incrementMode = true; table = ui->tableWidgetIncrement; plainTextEditFormula = ui->plainTextEditFormula; } else if (button == ui->toolButtonExprPC) { + incrementMode = false; table = ui->tableWidgetPC; plainTextEditFormula = ui->plainTextEditFormulaPC; } @@ -1281,6 +1284,8 @@ void DialogIncrements::Fx() QScopedPointer dialog(new DialogEditWrongFormula(incr->GetData(), NULL_ID, this)); dialog->setWindowTitle(tr("Edit increment")); + incrementMode ? dialog->SetIncrementsMode() : dialog->SetPreviewCalculationsMode(); + dialog->SetFormula(qApp->TrVars()->TryFormulaFromUser(plainTextEditFormula->toPlainText().replace("\n", " "), qApp->Settings()->GetOsSeparator())); const QString postfix = UnitsToStr(qApp->patternUnit(), true); diff --git a/src/libs/vtools/dialogs/support/dialogeditwrongformula.cpp b/src/libs/vtools/dialogs/support/dialogeditwrongformula.cpp index 52bc069eb..5e6ab5d88 100644 --- a/src/libs/vtools/dialogs/support/dialogeditwrongformula.cpp +++ b/src/libs/vtools/dialogs/support/dialogeditwrongformula.cpp @@ -422,6 +422,31 @@ void DialogEditWrongFormula::setPostfix(const QString &value) postfix = value; } +//--------------------------------------------------------------------------------------------------------------------- +void DialogEditWrongFormula::SetMeasurementsMode() +{ + ui->radioButtonIncrements->setDisabled(true); + SetIncrementsMode(); +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogEditWrongFormula::SetIncrementsMode() +{ + ui->radioButtonPC->setDisabled(true); + SetPreviewCalculationsMode(); +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogEditWrongFormula::SetPreviewCalculationsMode() +{ + ui->radioButtonLengthLine->setDisabled(true); + ui->radioButtonLengthSpline->setDisabled(true); + ui->radioButtonAngleLine->setDisabled(true); + ui->radioButtonRadiusesArcs->setDisabled(true); + ui->radioButtonAnglesCurves->setDisabled(true); + ui->radioButtonCLength->setDisabled(true); +} + //--------------------------------------------------------------------------------------------------------------------- QString DialogEditWrongFormula::GetFormula() const { diff --git a/src/libs/vtools/dialogs/support/dialogeditwrongformula.h b/src/libs/vtools/dialogs/support/dialogeditwrongformula.h index d801717e4..02677c534 100644 --- a/src/libs/vtools/dialogs/support/dialogeditwrongformula.h +++ b/src/libs/vtools/dialogs/support/dialogeditwrongformula.h @@ -67,6 +67,9 @@ public: void setCheckZero(bool value); void setCheckLessThanZero(bool value); void setPostfix(const QString &value); + void SetMeasurementsMode(); + void SetIncrementsMode(); + void SetPreviewCalculationsMode(); public slots: virtual void DialogAccepted() Q_DECL_OVERRIDE; virtual void DialogRejected() Q_DECL_OVERRIDE;