diff --git a/src/app/tape/tmainwindow.cpp b/src/app/tape/tmainwindow.cpp index 97d5f2f27..f434ddce4 100644 --- a/src/app/tape/tmainwindow.cpp +++ b/src/app/tape/tmainwindow.cpp @@ -615,12 +615,7 @@ bool TMainWindow::eventFilter(QObject *object, QEvent *event) if (event->type() == QEvent::KeyPress) { QKeyEvent *keyEvent = static_cast(event); - if ((keyEvent->key() == Qt::Key_Enter) || (keyEvent->key() == Qt::Key_Return)) - { - // Ignore Enter key - return true; - } - else if ((keyEvent->key() == Qt::Key_Period) && (keyEvent->modifiers() & Qt::KeypadModifier)) + if ((keyEvent->key() == Qt::Key_Period) && (keyEvent->modifiers() & Qt::KeypadModifier)) { if (qApp->Settings()->GetOsSeparator()) { @@ -1225,8 +1220,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)); + dialog->SetFormula(qApp->TrVars()->TryFormulaFromUser(ui->plainTextEditFormula->toPlainText(), true)); const QString postfix = UnitsToStr(mUnit, true);//Show unit in dialog lable (cm, mm or inch) dialog->setPostfix(postfix); @@ -1650,9 +1644,7 @@ void TMainWindow::SaveMValue() const QTableWidgetItem *nameField = ui->tableWidget->item(row, ColumnName); - // Replace line return character with spaces for calc if exist QString text = ui->plainTextEditFormula->toPlainText(); - text.replace("\n", " "); QTableWidgetItem *formulaField = ui->tableWidget->item(row, ColumnFormula); if (formulaField->text() == text) @@ -2639,7 +2631,6 @@ bool TMainWindow::EvalFormula(const QString &formula, bool fromUser, VContainer { f = formula; } - f.replace("\n", " "); QScopedPointer cal(new Calculator()); qreal result = cal->EvalFormula(data->DataVariables(), f); diff --git a/src/app/valentina/dialogs/dialogfinalmeasurements.cpp b/src/app/valentina/dialogs/dialogfinalmeasurements.cpp index d23995a44..77bc5ce70 100644 --- a/src/app/valentina/dialogs/dialogfinalmeasurements.cpp +++ b/src/app/valentina/dialogs/dialogfinalmeasurements.cpp @@ -392,7 +392,6 @@ void DialogFinalMeasurements::SaveFormula() // Replace line return character with spaces for calc if exist QString text = ui->plainTextEditFormula->toPlainText(); - text.replace("\n", " "); QTableWidgetItem *formulaField = ui->tableWidget->item(row, 2); if (formulaField->text() == text) @@ -479,7 +478,7 @@ void DialogFinalMeasurements::Fx() QScopedPointer dialog(new DialogEditWrongFormula(&m_data, NULL_ID, this)); dialog->setWindowTitle(tr("Edit measurement")); - dialog->SetFormula(qApp->TrVars()->TryFormulaFromUser(ui->plainTextEditFormula->toPlainText().replace("\n", " "), + dialog->SetFormula(qApp->TrVars()->TryFormulaFromUser(ui->plainTextEditFormula->toPlainText(), qApp->Settings()->GetOsSeparator())); const QString postfix = UnitsToStr(qApp->patternUnit(), true); dialog->setPostfix(postfix);//Show unit in dialog lable (cm, mm or inch) @@ -600,7 +599,6 @@ bool DialogFinalMeasurements::EvalUserFormula(const QString &formula, bool fromU { f = formula; } - f.replace("\n", " "); QScopedPointer cal(new Calculator()); const qreal result = cal->EvalFormula(m_data.DataVariables(), f); @@ -719,11 +717,9 @@ qreal DialogFinalMeasurements::EvalFormula(const QString &formula, bool &ok) { try { - QString f = formula; // Replace line return character with spaces for calc if exist - f.replace("\n", " "); QScopedPointer cal(new Calculator()); - result = cal->EvalFormula(m_data.DataVariables(), f); + result = cal->EvalFormula(m_data.DataVariables(), formula); if (qIsInf(result) || qIsNaN(result)) { diff --git a/src/app/valentina/dialogs/dialogincrements.cpp b/src/app/valentina/dialogs/dialogincrements.cpp index 16dc9ee34..c386d343f 100644 --- a/src/app/valentina/dialogs/dialogincrements.cpp +++ b/src/app/valentina/dialogs/dialogincrements.cpp @@ -357,7 +357,6 @@ bool DialogIncrements::EvalIncrementFormula(const QString &formula, bool fromUse { f = formula; } - f.replace("\n", " "); QScopedPointer cal(new Calculator()); const qreal result = cal->EvalFormula(data->DataVariables(), f); @@ -1138,9 +1137,7 @@ void DialogIncrements::SaveIncrFormula() const QTableWidgetItem *nameField = table->item(row, 0); - // Replace line return character with spaces for calc if exist QString text = textEdit->toPlainText(); - text.replace("\n", " "); QTableWidgetItem *formulaField = table->item(row, 2); if (formulaField->text() == text) @@ -1286,7 +1283,7 @@ void DialogIncrements::Fx() dialog->setWindowTitle(tr("Edit increment")); incrementMode ? dialog->SetIncrementsMode() : dialog->SetPreviewCalculationsMode(); - dialog->SetFormula(qApp->TrVars()->TryFormulaFromUser(plainTextEditFormula->toPlainText().replace("\n", " "), + dialog->SetFormula(qApp->TrVars()->TryFormulaFromUser(plainTextEditFormula->toPlainText(), qApp->Settings()->GetOsSeparator())); const QString postfix = UnitsToStr(qApp->patternUnit(), true); dialog->setPostfix(postfix);//Show unit in dialog lable (cm, mm or inch) diff --git a/src/app/valentina/mainwindowsnogui.cpp b/src/app/valentina/mainwindowsnogui.cpp index badfe2046..35ac34fbe 100644 --- a/src/app/valentina/mainwindowsnogui.cpp +++ b/src/app/valentina/mainwindowsnogui.cpp @@ -1654,11 +1654,8 @@ bool MainWindowsNoGUI::ExportFMeasurementsToCSVData(const QString &fileName, boo { try { - QString f = m.formula; - // Replace line return character with spaces for calc if exist - f.replace("\n", " "); QScopedPointer cal(new Calculator()); - const qreal result = cal->EvalFormula(completeData.DataVariables(), f); + const qreal result = cal->EvalFormula(completeData.DataVariables(), m.formula); csv.setText(i, 1, qApp->LocaleToString(result)); // value diff --git a/src/app/valentina/xml/vpattern.cpp b/src/app/valentina/xml/vpattern.cpp index bfc1188ce..7560d77c3 100644 --- a/src/app/valentina/xml/vpattern.cpp +++ b/src/app/valentina/xml/vpattern.cpp @@ -3239,11 +3239,8 @@ qreal VPattern::EvalFormula(VContainer *data, const QString &formula, bool *ok) { try { - // Replace line return character with spaces for calc if exist - QString f = formula; - f.replace("\n", " "); QScopedPointer cal(new Calculator()); - const qreal result = cal->EvalFormula(data->DataVariables(), f); + const qreal result = cal->EvalFormula(data->DataVariables(), formula); (qIsInf(result) || qIsNaN(result)) ? *ok = false : *ok = true; return result; diff --git a/src/libs/ifc/xml/vabstractpattern.cpp b/src/libs/ifc/xml/vabstractpattern.cpp index fa1eea53b..a156cb93a 100644 --- a/src/libs/ifc/xml/vabstractpattern.cpp +++ b/src/libs/ifc/xml/vabstractpattern.cpp @@ -2036,6 +2036,11 @@ bool VAbstractPattern::IsVariable(const QString &token) const } } + if (token.startsWith('#')) + { + return true; + } + return false; } diff --git a/src/libs/qmuparser/qmuparserbase.cpp b/src/libs/qmuparser/qmuparserbase.cpp index 9d35b608a..bc69f66a0 100644 --- a/src/libs/qmuparser/qmuparserbase.cpp +++ b/src/libs/qmuparser/qmuparserbase.cpp @@ -66,11 +66,11 @@ QmuParserBase::QmuParserBase() m_decimalPoint(QLocale::c().decimalPoint()), m_thousandsSeparator(QLocale::c().groupSeparator()), m_FunDef(), + m_pTokenReader(), m_pParseFormula(&QmuParserBase::ParseString), m_vRPN(), m_vStringBuf(), m_vStringVarBuf(), - m_pTokenReader(), m_PostOprtDef(), m_InfixOprtDef(), m_OprtDef(), @@ -102,11 +102,11 @@ QmuParserBase::QmuParserBase(const QmuParserBase &a_Parser) m_decimalPoint(a_Parser.getDecimalPoint()), m_thousandsSeparator(a_Parser.getThousandsSeparator()), m_FunDef(), + m_pTokenReader(), m_pParseFormula(&QmuParserBase::ParseString), m_vRPN(), m_vStringBuf(), m_vStringVarBuf(), - m_pTokenReader(), m_PostOprtDef(), m_InfixOprtDef(), m_OprtDef(), diff --git a/src/libs/qmuparser/qmuparserbase.h b/src/libs/qmuparser/qmuparserbase.h index 6b3d6bbb4..e2f61cb0b 100644 --- a/src/libs/qmuparser/qmuparserbase.h +++ b/src/libs/qmuparser/qmuparserbase.h @@ -134,11 +134,17 @@ public: void setThousandsSeparator(const QChar &c); protected: + /** + * @brief Typedef for the token reader. + */ + typedef QmuParserTokenReader token_reader_type; + static const QStringList c_DefaultOprt; QLocale m_locale;///< The locale used by the parser QChar m_decimalPoint; QChar m_thousandsSeparator; funmap_type m_FunDef; ///< Map of function names and pointers. + std::unique_ptr m_pTokenReader; ///< Managed pointer to the token reader object. static bool g_DbgDumpCmdCode; static bool g_DbgDumpStack; void AddCallback(const QString &a_strName, const QmuParserCallback &a_Callback, funmap_type &a_Storage, @@ -204,11 +210,6 @@ private: */ typedef QVector stringbuf_type; - /** - * @brief Typedef for the token reader. - */ - typedef QmuParserTokenReader token_reader_type; - /** * @brief Type used for parser tokens. */ @@ -229,8 +230,6 @@ private: mutable stringbuf_type m_vStringBuf; ///< String buffer, used for storing string function arguments stringbuf_type m_vStringVarBuf; - std::unique_ptr m_pTokenReader; ///< Managed pointer to the token reader object. - funmap_type m_PostOprtDef; ///< Postfix operator callbacks funmap_type m_InfixOprtDef; ///< unary infix operator. funmap_type m_OprtDef; ///< Binary operator callbacks diff --git a/src/libs/qmuparser/qmuparsertokenreader.cpp b/src/libs/qmuparser/qmuparsertokenreader.cpp index 3c52d57ae..74e9db1bf 100644 --- a/src/libs/qmuparser/qmuparsertokenreader.cpp +++ b/src/libs/qmuparser/qmuparsertokenreader.cpp @@ -932,17 +932,25 @@ bool QmuParserTokenReader::IsUndefVarTok ( token_type &a_Tok ) // If a factory is available implicitely create new variables if ( m_pFactory ) { - qreal *fVar = m_pFactory ( strTok, m_pFactoryData ); - a_Tok.SetVar ( fVar, strTok ); + try + { + qreal *fVar = m_pFactory ( strTok, m_pFactoryData ); + a_Tok.SetVar ( fVar, strTok ); - // Do not use m_pParser->DefineVar( strTok, fVar ); - // in order to define the new variable, it will clear the - // m_UsedVar array which will kill previousely defined variables - // from the list - // This is safe because the new variable can never override an existing one - // because they are checked first! - ( *m_pVarDef ) [strTok] = fVar; - m_UsedVar[strTok] = fVar; // Add variable to used-var-list + // Do not use m_pParser->DefineVar( strTok, fVar ); + // in order to define the new variable, it will clear the + // m_UsedVar array which will kill previousely defined variables + // from the list + // This is safe because the new variable can never override an existing one + // because they are checked first! + ( *m_pVarDef ) [strTok] = fVar; + m_UsedVar[strTok] = fVar; // Add variable to used-var-list + } + catch (const qmu::QmuParserError &e) + { + Q_UNUSED(e) + return false; + } } else { diff --git a/src/libs/qmuparser/qmutokenparser.cpp b/src/libs/qmuparser/qmutokenparser.cpp index df538db5e..82e986b68 100644 --- a/src/libs/qmuparser/qmutokenparser.cpp +++ b/src/libs/qmuparser/qmutokenparser.cpp @@ -83,6 +83,7 @@ QmuTokenParser::QmuTokenParser(const QString &formula, bool osSeparator, SetExpr(formula); //Need run for making tokens. Don't catch exception here, because we want know if formula has error. + m_pTokenReader->IgnoreUndefVar(true); Eval(); } diff --git a/src/libs/vformat/vmeasurements.cpp b/src/libs/vformat/vmeasurements.cpp index 455715a05..f5706771b 100644 --- a/src/libs/vformat/vmeasurements.cpp +++ b/src/libs/vformat/vmeasurements.cpp @@ -881,11 +881,8 @@ qreal VMeasurements::EvalFormula(VContainer *data, const QString &formula, bool { try { - // Replace line return character with spaces for calc if exist - QString f = formula; - f.replace("\n", " "); QScopedPointer cal(new Calculator()); - const qreal result = cal->EvalFormula(data->DataVariables(), f); + const qreal result = cal->EvalFormula(data->DataVariables(), formula); (qIsInf(result) || qIsNaN(result)) ? *ok = false : *ok = true; return result; diff --git a/src/libs/vpatterndb/calculator.cpp b/src/libs/vpatterndb/calculator.cpp index 5f8e8edc4..bcd438c75 100644 --- a/src/libs/vpatterndb/calculator.cpp +++ b/src/libs/vpatterndb/calculator.cpp @@ -53,11 +53,15 @@ * */ Calculator::Calculator() - :QmuFormulaBase() + : QmuFormulaBase(), + m_varsValues(), + m_vars(nullptr) { InitCharSets(); - setAllowSubexpressions(false);//Only one expression per time + // Parser doesn't know any variable on this stage. So, we just use variable factory that for each unknown variable + // set value to 0. + SetVarFactory(VarFactory, this); SetSepForEval(); } @@ -82,71 +86,33 @@ qreal Calculator::EvalFormula(const QHash tokens = this->GetTokens(); - - // Remove "-" from tokens list if exist. If don't do that unary minus operation will broken. - RemoveAll(tokens, QStringLiteral("-")); - - for (int i = 0; i < builInFunctions.size(); ++i) - { - if (tokens.isEmpty()) - { - break; - } - RemoveAll(tokens, builInFunctions.at(i)); - } - - if (tokens.isEmpty()) - { - return result; // We have found only numbers in expression. - } - - // Add variables to parser because we have deal with expression with variables. - InitVariables(vars, tokens, formula); + m_pTokenReader->IgnoreUndefVar(true); return Eval(); } //--------------------------------------------------------------------------------------------------------------------- -/** - * @brief Calculator::InitVariables add variables to parser. - * - * For optimization purpose we try don't add variables that we don't need. - * - * @param vars list of variables. - * @param tokens all tokens (measurements names, variables with lengths) that parser have found in expression. - * @param formula expression, need for throwing better error message. - */ -void Calculator::InitVariables(const QHash > *vars, - const QMap &tokens, const QString &formula) +qreal *Calculator::VarFactory(const QString &a_szName, void *a_pUserData) { - QMap::const_iterator i = tokens.constBegin(); - while (i != tokens.constEnd()) + Q_UNUSED(a_szName) + Calculator *calc = static_cast(a_pUserData); + + if (calc->m_vars != nullptr && calc->m_vars->contains(a_szName)) { - bool found = false; - if (vars->contains(i.value())) - { - DefineVar(i.value(), vars->value(i.value())->GetValue()); - found = true; - } - - if (found == false && builInFunctions.contains(i.value())) - {// We have found built-in function - found = true; - } - - if (found == false) - { - throw qmu::QmuParserError (qmu::ecUNASSIGNABLE_TOKEN, i.value(), formula, i.key()); - } - ++i; + QSharedPointer val(new qreal(*calc->m_vars->value(a_szName)->GetValue())); + calc->m_varsValues.append(val); + return val.data(); } + + if (a_szName.startsWith('#')) + { + QSharedPointer val(new qreal(0)); + calc->m_varsValues.append(val); + return val.data(); + } + + throw qmu::QmuParserError (qmu::ecUNASSIGNABLE_TOKEN); } diff --git a/src/libs/vpatterndb/calculator.h b/src/libs/vpatterndb/calculator.h index ff6e6864d..07180c73f 100644 --- a/src/libs/vpatterndb/calculator.h +++ b/src/libs/vpatterndb/calculator.h @@ -64,11 +64,12 @@ public: virtual ~Calculator() Q_DECL_EQ_DEFAULT; qreal EvalFormula(const QHash > *vars, const QString &formula); +protected: + static qreal* VarFactory(const QString &a_szName, void *a_pUserData); private: Q_DISABLE_COPY(Calculator) - - void InitVariables(const QHash > *vars, const QMap &tokens, - const QString &formula); + QVector> m_varsValues; + const QHash > *m_vars; }; #endif // CALCULATOR_H diff --git a/src/libs/vpatterndb/vformula.cpp b/src/libs/vpatterndb/vformula.cpp index 895c5cf9c..3ee27015b 100644 --- a/src/libs/vpatterndb/vformula.cpp +++ b/src/libs/vpatterndb/vformula.cpp @@ -65,9 +65,7 @@ VFormula::VFormula(const QString &formula, const VContainer *container) postfix(QString()), _error(true), dValue(0) -{ - this->formula.replace("\n", " ");// Replace line return with spaces for calc if exist -} +{} //--------------------------------------------------------------------------------------------------------------------- VFormula &VFormula::operator=(const VFormula &formula) @@ -145,7 +143,6 @@ void VFormula::SetFormula(const QString &value, FormulaType type) { formula = value; } - formula.replace("\n", " ");// Replace line return with spaces for calc if exist } } diff --git a/src/libs/vpatterndb/vpiecenode.cpp b/src/libs/vpatterndb/vpiecenode.cpp index 883a7ef06..66c2ffb4d 100644 --- a/src/libs/vpatterndb/vpiecenode.cpp +++ b/src/libs/vpatterndb/vpiecenode.cpp @@ -47,8 +47,6 @@ qreal EvalFormula(const VContainer *data, QString formula) { try { - // Replace line return character with spaces for calc if exist - formula.replace("\n", " "); QScopedPointer cal(new Calculator()); const qreal result = cal->EvalFormula(data->DataVariables(), formula); diff --git a/src/libs/vpatterndb/vpiecepath.cpp b/src/libs/vpatterndb/vpiecepath.cpp index 05e2fab0b..24fbd649c 100644 --- a/src/libs/vpatterndb/vpiecepath.cpp +++ b/src/libs/vpatterndb/vpiecepath.cpp @@ -800,11 +800,8 @@ bool VPiecePath::IsVisible(const QHash cal(new Calculator()); - const qreal result = cal->EvalFormula(vars, formula); + const qreal result = cal->EvalFormula(vars, GetVisibilityTrigger()); if (qIsInf(result) || qIsNaN(result)) { diff --git a/src/libs/vtools/dialogs/support/dialogeditwrongformula.cpp b/src/libs/vtools/dialogs/support/dialogeditwrongformula.cpp index 5e6ab5d88..160ca363b 100644 --- a/src/libs/vtools/dialogs/support/dialogeditwrongformula.cpp +++ b/src/libs/vtools/dialogs/support/dialogeditwrongformula.cpp @@ -129,7 +129,6 @@ DialogEditWrongFormula::~DialogEditWrongFormula() void DialogEditWrongFormula::DialogAccepted() { formula = ui->plainTextEditFormula->toPlainText(); - formula.replace("\n", " "); emit DialogClosed(QDialog::Accepted); accepted(); } diff --git a/src/libs/vtools/dialogs/tools/dialogalongline.cpp b/src/libs/vtools/dialogs/tools/dialogalongline.cpp index 6e139545e..947552fca 100644 --- a/src/libs/vtools/dialogs/tools/dialogalongline.cpp +++ b/src/libs/vtools/dialogs/tools/dialogalongline.cpp @@ -217,7 +217,6 @@ void DialogAlongLine::SaveData() pointName = ui->lineEditNamePoint->text(); formula = ui->plainTextEditFormula->toPlainText(); - formula.replace("\n", " "); VisToolAlongLine *line = qobject_cast(vis); SCASSERT(line != nullptr) diff --git a/src/libs/vtools/dialogs/tools/dialogarc.cpp b/src/libs/vtools/dialogs/tools/dialogarc.cpp index 4d1c268c8..3a7efcb94 100644 --- a/src/libs/vtools/dialogs/tools/dialogarc.cpp +++ b/src/libs/vtools/dialogs/tools/dialogarc.cpp @@ -277,11 +277,8 @@ void DialogArc::ShowVisualization() void DialogArc::SaveData() { radius = ui->plainTextEditFormula->toPlainText(); - radius.replace("\n", " "); f1 = ui->plainTextEditF1->toPlainText(); - f1.replace("\n", " "); f2 = ui->plainTextEditF2->toPlainText(); - f2.replace("\n", " "); VisToolArc *path = qobject_cast(vis); SCASSERT(path != nullptr) diff --git a/src/libs/vtools/dialogs/tools/dialogarcwithlength.cpp b/src/libs/vtools/dialogs/tools/dialogarcwithlength.cpp index 3d45e1388..6343d4f03 100644 --- a/src/libs/vtools/dialogs/tools/dialogarcwithlength.cpp +++ b/src/libs/vtools/dialogs/tools/dialogarcwithlength.cpp @@ -354,13 +354,8 @@ void DialogArcWithLength::ShowVisualization() void DialogArcWithLength::SaveData() { radius = ui->plainTextEditRadius->toPlainText(); - radius.replace("\n", " "); - f1 = ui->plainTextEditF1->toPlainText(); - f1.replace("\n", " "); - length = ui->plainTextEditLength->toPlainText(); - length.replace("\n", " "); VisToolArcWithLength *path = qobject_cast(vis); SCASSERT(path != nullptr) diff --git a/src/libs/vtools/dialogs/tools/dialogbisector.cpp b/src/libs/vtools/dialogs/tools/dialogbisector.cpp index 0ed0ca1e4..59cbfe281 100644 --- a/src/libs/vtools/dialogs/tools/dialogbisector.cpp +++ b/src/libs/vtools/dialogs/tools/dialogbisector.cpp @@ -319,9 +319,7 @@ void DialogBisector::SetLineColor(const QString &value) void DialogBisector::SaveData() { pointName = ui->lineEditNamePoint->text(); - formula = ui->plainTextEditFormula->toPlainText(); - formula.replace("\n", " "); VisToolBisector *line = qobject_cast(vis); SCASSERT(line != nullptr) diff --git a/src/libs/vtools/dialogs/tools/dialogcurveintersectaxis.cpp b/src/libs/vtools/dialogs/tools/dialogcurveintersectaxis.cpp index 9f42657ce..223370030 100644 --- a/src/libs/vtools/dialogs/tools/dialogcurveintersectaxis.cpp +++ b/src/libs/vtools/dialogs/tools/dialogcurveintersectaxis.cpp @@ -308,9 +308,7 @@ void DialogCurveIntersectAxis::ShowVisualization() void DialogCurveIntersectAxis::SaveData() { pointName = ui->lineEditNamePoint->text(); - formulaAngle = ui->plainTextEditFormula->toPlainText(); - formulaAngle.replace("\n", " "); VisToolCurveIntersectAxis *line = qobject_cast(vis); SCASSERT(line != nullptr) diff --git a/src/libs/vtools/dialogs/tools/dialogcutarc.cpp b/src/libs/vtools/dialogs/tools/dialogcutarc.cpp index c5d6bd7fd..35e24464d 100644 --- a/src/libs/vtools/dialogs/tools/dialogcutarc.cpp +++ b/src/libs/vtools/dialogs/tools/dialogcutarc.cpp @@ -144,7 +144,6 @@ void DialogCutArc::SaveData() { pointName = ui->lineEditNamePoint->text(); formula = ui->plainTextEditFormula->toPlainText(); - formula.replace("\n", " "); VisToolCutArc *path = qobject_cast(vis); SCASSERT(path != nullptr) diff --git a/src/libs/vtools/dialogs/tools/dialogcutspline.cpp b/src/libs/vtools/dialogs/tools/dialogcutspline.cpp index 3dd349ad5..509b0b219 100644 --- a/src/libs/vtools/dialogs/tools/dialogcutspline.cpp +++ b/src/libs/vtools/dialogs/tools/dialogcutspline.cpp @@ -160,7 +160,6 @@ void DialogCutSpline::SaveData() { pointName = ui->lineEditNamePoint->text(); formula = ui->plainTextEditFormula->toPlainText(); - formula.replace("\n", " "); VisToolCutSpline *path = qobject_cast(vis); SCASSERT(path != nullptr) diff --git a/src/libs/vtools/dialogs/tools/dialogcutsplinepath.cpp b/src/libs/vtools/dialogs/tools/dialogcutsplinepath.cpp index 93be086af..a54526d9d 100644 --- a/src/libs/vtools/dialogs/tools/dialogcutsplinepath.cpp +++ b/src/libs/vtools/dialogs/tools/dialogcutsplinepath.cpp @@ -160,7 +160,6 @@ void DialogCutSplinePath::SaveData() { pointName = ui->lineEditNamePoint->text(); formula = ui->plainTextEditFormula->toPlainText(); - formula.replace("\n", " "); VisToolCutSplinePath *path = qobject_cast(vis); SCASSERT(path != nullptr) diff --git a/src/libs/vtools/dialogs/tools/dialogellipticalarc.cpp b/src/libs/vtools/dialogs/tools/dialogellipticalarc.cpp index f3fac738e..5ecd35db2 100644 --- a/src/libs/vtools/dialogs/tools/dialogellipticalarc.cpp +++ b/src/libs/vtools/dialogs/tools/dialogellipticalarc.cpp @@ -612,15 +612,10 @@ void DialogEllipticalArc::ShowVisualization() void DialogEllipticalArc::SaveData() { radius1 = ui->plainTextEditRadius1->toPlainText(); - radius1.replace("\n", " "); radius2 = ui->plainTextEditRadius2->toPlainText(); - radius2.replace("\n", " "); f1 = ui->plainTextEditF1->toPlainText(); - f1.replace("\n", " "); f2 = ui->plainTextEditF2->toPlainText(); - f2.replace("\n", " "); rotationAngle = ui->plainTextEditRotationAngle->toPlainText(); - rotationAngle.replace("\n", " "); VisToolEllipticalArc *path = qobject_cast(vis); SCASSERT(path != nullptr) diff --git a/src/libs/vtools/dialogs/tools/dialogendline.cpp b/src/libs/vtools/dialogs/tools/dialogendline.cpp index 921479fa1..40b05d151 100644 --- a/src/libs/vtools/dialogs/tools/dialogendline.cpp +++ b/src/libs/vtools/dialogs/tools/dialogendline.cpp @@ -344,12 +344,8 @@ void DialogEndLine::ShowVisualization() void DialogEndLine::SaveData() { pointName = ui->lineEditNamePoint->text(); - formulaLength = ui->plainTextEditFormula->toPlainText(); - formulaLength.replace("\n", " "); - formulaAngle = ui->plainTextEditAngle->toPlainText(); - formulaAngle.replace("\n", " "); VisToolEndLine *line = qobject_cast(vis); SCASSERT(line != nullptr) diff --git a/src/libs/vtools/dialogs/tools/dialoglineintersectaxis.cpp b/src/libs/vtools/dialogs/tools/dialoglineintersectaxis.cpp index 0e385b1c1..85da3e08c 100644 --- a/src/libs/vtools/dialogs/tools/dialoglineintersectaxis.cpp +++ b/src/libs/vtools/dialogs/tools/dialoglineintersectaxis.cpp @@ -375,9 +375,7 @@ void DialogLineIntersectAxis::ShowVisualization() void DialogLineIntersectAxis::SaveData() { pointName = ui->lineEditNamePoint->text(); - formulaAngle = ui->plainTextEditFormula->toPlainText(); - formulaAngle.replace("\n", " "); VisToolLineIntersectAxis *line = qobject_cast(vis); SCASSERT(line != nullptr) diff --git a/src/libs/vtools/dialogs/tools/dialogmove.cpp b/src/libs/vtools/dialogs/tools/dialogmove.cpp index 590d3ce5e..4560bb43d 100644 --- a/src/libs/vtools/dialogs/tools/dialogmove.cpp +++ b/src/libs/vtools/dialogs/tools/dialogmove.cpp @@ -513,15 +513,9 @@ void DialogMove::ShowVisualization() void DialogMove::SaveData() { m_suffix = ui->lineEditSuffix->text(); - formulaAngle = ui->plainTextEditAngle->toPlainText(); - formulaAngle.replace("\n", " "); - formulaRotationAngle = ui->plainTextEditRotationAngle->toPlainText(); - formulaRotationAngle.replace("\n", " "); - formulaLength = ui->plainTextEditLength->toPlainText(); - formulaLength.replace("\n", " "); VisToolMove *operation = qobject_cast(vis); SCASSERT(operation != nullptr) diff --git a/src/libs/vtools/dialogs/tools/dialognormal.cpp b/src/libs/vtools/dialogs/tools/dialognormal.cpp index 8bf3d09c6..8037117c1 100644 --- a/src/libs/vtools/dialogs/tools/dialognormal.cpp +++ b/src/libs/vtools/dialogs/tools/dialognormal.cpp @@ -198,7 +198,6 @@ void DialogNormal::SaveData() { pointName = ui->lineEditNamePoint->text(); formula = ui->plainTextEditFormula->toPlainText(); - formula.replace("\n", " "); angle = ui->doubleSpinBoxAngle->value(); VisToolNormal *line = qobject_cast(vis); diff --git a/src/libs/vtools/dialogs/tools/dialogpointfromcircleandtangent.cpp b/src/libs/vtools/dialogs/tools/dialogpointfromcircleandtangent.cpp index 02b8e1a61..a9d5b617a 100644 --- a/src/libs/vtools/dialogs/tools/dialogpointfromcircleandtangent.cpp +++ b/src/libs/vtools/dialogs/tools/dialogpointfromcircleandtangent.cpp @@ -302,15 +302,12 @@ void DialogPointFromCircleAndTangent::SaveData() { pointName = ui->lineEditNamePoint->text(); - QString radius = ui->plainTextEditRadius->toPlainText(); - radius.replace("\n", " "); - VisToolPointFromCircleAndTangent *point = qobject_cast(vis); SCASSERT(point != nullptr) point->setObject1Id(GetTangentPointId()); point->setObject2Id(GetCircleCenterId()); - point->setCRadius(radius); + point->setCRadius(ui->plainTextEditRadius->toPlainText()); point->setCrossPoint(GetCrossCirclesPoint()); point->RefreshGeometry(); } diff --git a/src/libs/vtools/dialogs/tools/dialogpointofcontact.cpp b/src/libs/vtools/dialogs/tools/dialogpointofcontact.cpp index d1298f60a..123274e94 100644 --- a/src/libs/vtools/dialogs/tools/dialogpointofcontact.cpp +++ b/src/libs/vtools/dialogs/tools/dialogpointofcontact.cpp @@ -220,7 +220,6 @@ void DialogPointOfContact::SaveData() { pointName = ui->lineEditNamePoint->text(); radius = ui->plainTextEditFormula->toPlainText(); - radius.replace("\n", " "); VisToolPointOfContact *line = qobject_cast(vis); SCASSERT(line != nullptr) diff --git a/src/libs/vtools/dialogs/tools/dialogpointofintersectioncircles.cpp b/src/libs/vtools/dialogs/tools/dialogpointofintersectioncircles.cpp index ba7e16805..b06a9354d 100644 --- a/src/libs/vtools/dialogs/tools/dialogpointofintersectioncircles.cpp +++ b/src/libs/vtools/dialogs/tools/dialogpointofintersectioncircles.cpp @@ -389,19 +389,13 @@ void DialogPointOfIntersectionCircles::SaveData() { pointName = ui->lineEditNamePoint->text(); - QString c1Radius = ui->plainTextEditCircle2Radius->toPlainText(); - c1Radius.replace("\n", " "); - - QString c2Radius = ui->plainTextEditCircle2Radius->toPlainText(); - c2Radius.replace("\n", " "); - VisToolPointOfIntersectionCircles *point = qobject_cast(vis); SCASSERT(point != nullptr) point->setObject1Id(GetFirstCircleCenterId()); point->setObject2Id(GetSecondCircleCenterId()); - point->setC1Radius(c1Radius); - point->setC2Radius(c2Radius); + point->setC1Radius(ui->plainTextEditCircle2Radius->toPlainText()); + point->setC2Radius(ui->plainTextEditCircle2Radius->toPlainText()); point->setCrossPoint(GetCrossCirclesPoint()); point->RefreshGeometry(); } diff --git a/src/libs/vtools/dialogs/tools/dialogrotation.cpp b/src/libs/vtools/dialogs/tools/dialogrotation.cpp index 151c907a3..c03b11e70 100644 --- a/src/libs/vtools/dialogs/tools/dialogrotation.cpp +++ b/src/libs/vtools/dialogs/tools/dialogrotation.cpp @@ -372,9 +372,7 @@ void DialogRotation::ShowVisualization() void DialogRotation::SaveData() { m_suffix = ui->lineEditSuffix->text(); - formulaAngle = ui->plainTextEditFormula->toPlainText(); - formulaAngle.replace("\n", " "); VisToolRotation *operation = qobject_cast(vis); SCASSERT(operation != nullptr) diff --git a/src/libs/vtools/dialogs/tools/dialogshoulderpoint.cpp b/src/libs/vtools/dialogs/tools/dialogshoulderpoint.cpp index e4e728b5a..783cdc8a4 100644 --- a/src/libs/vtools/dialogs/tools/dialogshoulderpoint.cpp +++ b/src/libs/vtools/dialogs/tools/dialogshoulderpoint.cpp @@ -224,7 +224,6 @@ void DialogShoulderPoint::SaveData() { pointName = ui->lineEditNamePoint->text(); formula = ui->plainTextEditFormula->toPlainText(); - formula.replace("\n", " "); VisToolShoulderPoint *line = qobject_cast(vis); SCASSERT(line != nullptr) diff --git a/src/libs/vtools/dialogs/tools/dialogspline.cpp b/src/libs/vtools/dialogs/tools/dialogspline.cpp index 78373c7bd..62ec79b67 100644 --- a/src/libs/vtools/dialogs/tools/dialogspline.cpp +++ b/src/libs/vtools/dialogs/tools/dialogspline.cpp @@ -444,16 +444,9 @@ void DialogSpline::EvalLength2() VSpline DialogSpline::CurrentSpline() const { QString angle1F = ui->plainTextEditAngle1F->toPlainText(); - angle1F.replace("\n", " "); - QString angle2F = ui->plainTextEditAngle2F->toPlainText(); - angle2F.replace("\n", " "); - QString length1F = ui->plainTextEditLength1F->toPlainText(); - length1F.replace("\n", " "); - QString length2F = ui->plainTextEditLength2F->toPlainText(); - length2F.replace("\n", " "); const QHash > *vars = data->DataVariables(); diff --git a/src/libs/vtools/dialogs/tools/dialogsplinepath.cpp b/src/libs/vtools/dialogs/tools/dialogsplinepath.cpp index 67a3d26da..888be4212 100644 --- a/src/libs/vtools/dialogs/tools/dialogsplinepath.cpp +++ b/src/libs/vtools/dialogs/tools/dialogsplinepath.cpp @@ -306,7 +306,7 @@ void DialogSplinePath::Angle1Changed() SCASSERT(item != nullptr) VSplinePoint p = qvariant_cast(item->data(Qt::UserRole)); - const QString angle1F = ui->plainTextEditAngle1F->toPlainText().replace("\n", " "); + const QString angle1F = ui->plainTextEditAngle1F->toPlainText(); const qreal angle1 = Visualization::FindValFromUser(angle1F, data->DataVariables()); p.SetAngle1(angle1, VTranslateVars::TryFormulaFromUser(angle1F, qApp->Settings()->GetOsSeparator())); @@ -340,7 +340,7 @@ void DialogSplinePath::Angle2Changed() SCASSERT(item != nullptr) VSplinePoint p = qvariant_cast(item->data(Qt::UserRole)); - const QString angle2F = ui->plainTextEditAngle2F->toPlainText().replace("\n", " "); + const QString angle2F = ui->plainTextEditAngle2F->toPlainText(); const qreal angle2 = Visualization::FindValFromUser(angle2F, data->DataVariables()); p.SetAngle2(angle2, VTranslateVars::TryFormulaFromUser(angle2F, qApp->Settings()->GetOsSeparator())); @@ -374,7 +374,7 @@ void DialogSplinePath::Length1Changed() SCASSERT(item != nullptr) VSplinePoint p = qvariant_cast(item->data(Qt::UserRole)); - const QString length1F = ui->plainTextEditLength1F->toPlainText().replace("\n", " "); + const QString length1F = ui->plainTextEditLength1F->toPlainText(); const qreal length1 = Visualization::FindLengthFromUser(length1F, data->DataVariables()); p.SetLength1(length1, VTranslateVars::TryFormulaFromUser(length1F, qApp->Settings()->GetOsSeparator())); @@ -399,7 +399,7 @@ void DialogSplinePath::Length2Changed() SCASSERT(item != nullptr) VSplinePoint p = qvariant_cast(item->data(Qt::UserRole)); - const QString length2F = ui->plainTextEditLength2F->toPlainText().replace("\n", " "); + const QString length2F = ui->plainTextEditLength2F->toPlainText(); const qreal length2 = Visualization::FindLengthFromUser(length2F, data->DataVariables()); p.SetLength2(length2, VTranslateVars::TryFormulaFromUser(length2F, qApp->Settings()->GetOsSeparator())); @@ -415,7 +415,7 @@ void DialogSplinePath::FXAngle1() auto dialog = new DialogEditWrongFormula(data, toolId, this); dialog->setWindowTitle(tr("Edit first control point angle")); - QString angle1F = VTranslateVars::TryFormulaFromUser(ui->plainTextEditAngle1F->toPlainText().replace("\n", " "), + QString angle1F = VTranslateVars::TryFormulaFromUser(ui->plainTextEditAngle1F->toPlainText(), qApp->Settings()->GetOsSeparator()); dialog->SetFormula(angle1F); @@ -440,7 +440,7 @@ void DialogSplinePath::FXAngle2() auto dialog = new DialogEditWrongFormula(data, toolId, this); dialog->setWindowTitle(tr("Edit second control point angle")); - QString angle2F = VTranslateVars::TryFormulaFromUser(ui->plainTextEditAngle2F->toPlainText().replace("\n", " "), + QString angle2F = VTranslateVars::TryFormulaFromUser(ui->plainTextEditAngle2F->toPlainText(), qApp->Settings()->GetOsSeparator()); dialog->SetFormula(angle2F); @@ -465,7 +465,7 @@ void DialogSplinePath::FXLength1() auto dialog = new DialogEditWrongFormula(data, toolId, this); dialog->setWindowTitle(tr("Edit first control point length")); - QString length1F = VTranslateVars::TryFormulaFromUser(ui->plainTextEditLength1F->toPlainText().replace("\n", " "), + QString length1F = VTranslateVars::TryFormulaFromUser(ui->plainTextEditLength1F->toPlainText(), qApp->Settings()->GetOsSeparator()); dialog->SetFormula(length1F); @@ -490,7 +490,7 @@ void DialogSplinePath::FXLength2() auto dialog = new DialogEditWrongFormula(data, toolId, this); dialog->setWindowTitle(tr("Edit second control point length")); - QString length2F = VTranslateVars::TryFormulaFromUser(ui->plainTextEditLength2F->toPlainText().replace("\n", " "), + QString length2F = VTranslateVars::TryFormulaFromUser(ui->plainTextEditLength2F->toPlainText(), qApp->Settings()->GetOsSeparator()); dialog->SetFormula(length2F); diff --git a/src/libs/vtools/dialogs/tools/dialogtool.cpp b/src/libs/vtools/dialogs/tools/dialogtool.cpp index 04a005118..9f175d716 100644 --- a/src/libs/vtools/dialogs/tools/dialogtool.cpp +++ b/src/libs/vtools/dialogs/tools/dialogtool.cpp @@ -77,7 +77,7 @@ template class QSharedPointer; Q_LOGGING_CATEGORY(vDialog, "v.dialog") -#define DIALOG_MAX_FORMULA_HEIGHT 64 +#define DIALOG_MAX_FORMULA_HEIGHT 80 namespace { @@ -401,12 +401,7 @@ bool DialogTool::eventFilter(QObject *object, QEvent *event) if (event->type() == QEvent::KeyPress) { QKeyEvent *keyEvent = static_cast(event); - if ((keyEvent->key() == Qt::Key_Enter) || (keyEvent->key() == Qt::Key_Return)) - { - // Ignore Enter key - return true; - } - else if ((keyEvent->key() == Qt::Key_Period) && (keyEvent->modifiers() & Qt::KeypadModifier)) + if ((keyEvent->key() == Qt::Key_Period) && (keyEvent->modifiers() & Qt::KeypadModifier)) { if (qApp->Settings()->GetOsSeparator()) { @@ -799,11 +794,8 @@ qreal DialogTool::Eval(const QString &text, bool &flag, QLabel *label, const QSt { try { - // Replace line return character with spaces for calc if exist - QString formula = text; - formula.replace("\n", " "); // Translate to internal look. - formula = qApp->TrVars()->FormulaFromUser(formula, qApp->Settings()->GetOsSeparator()); + QString formula = qApp->TrVars()->FormulaFromUser(text, qApp->Settings()->GetOsSeparator()); QScopedPointer cal(new Calculator()); result = cal->EvalFormula(data->DataVariables(), formula); diff --git a/src/libs/vtools/dialogs/tools/piece/dialogpiecepath.cpp b/src/libs/vtools/dialogs/tools/piece/dialogpiecepath.cpp index feb521b54..301e3cfad 100644 --- a/src/libs/vtools/dialogs/tools/piece/dialogpiecepath.cpp +++ b/src/libs/vtools/dialogs/tools/piece/dialogpiecepath.cpp @@ -1201,7 +1201,6 @@ void DialogPiecePath::SetPieceId(quint32 id) QString DialogPiecePath::GetFormulaSAWidth() const { QString width = ui->plainTextEditFormulaWidth->toPlainText(); - width.replace("\n", " "); return qApp->TrVars()->TryFormulaFromUser(width, qApp->Settings()->GetOsSeparator()); } @@ -1305,7 +1304,6 @@ void DialogPiecePath::NewItem(const VPieceNode &node) QString DialogPiecePath::GetFormulaSAWidthBefore() const { QString width = ui->plainTextEditFormulaWidthBefore->toPlainText(); - width.replace("\n", " "); return qApp->TrVars()->TryFormulaFromUser(width, qApp->Settings()->GetOsSeparator()); } @@ -1313,7 +1311,6 @@ QString DialogPiecePath::GetFormulaSAWidthBefore() const QString DialogPiecePath::GetFormulaSAWidthAfter() const { QString width = ui->plainTextEditFormulaWidthAfter->toPlainText(); - width.replace("\n", " "); return qApp->TrVars()->TryFormulaFromUser(width, qApp->Settings()->GetOsSeparator()); } @@ -1321,7 +1318,6 @@ QString DialogPiecePath::GetFormulaSAWidthAfter() const QString DialogPiecePath::GetFormulaVisible() const { QString formula = ui->plainTextEditFormulaVisible->toPlainText(); - formula.replace("\n", " "); return qApp->TrVars()->TryFormulaFromUser(formula, qApp->Settings()->GetOsSeparator()); } diff --git a/src/libs/vtools/dialogs/tools/piece/dialogplacelabel.cpp b/src/libs/vtools/dialogs/tools/piece/dialogplacelabel.cpp index 7c6c6fad0..23fca1019 100644 --- a/src/libs/vtools/dialogs/tools/piece/dialogplacelabel.cpp +++ b/src/libs/vtools/dialogs/tools/piece/dialogplacelabel.cpp @@ -151,7 +151,7 @@ void DialogPlaceLabel::SetLabelType(PlaceLabelType type) //--------------------------------------------------------------------------------------------------------------------- QString DialogPlaceLabel::GetWidth() const { - return qApp->TrVars()->TryFormulaFromUser(ui->plainTextEditFormulaWidth->toPlainText().replace("\n", " "), + return qApp->TrVars()->TryFormulaFromUser(ui->plainTextEditFormulaWidth->toPlainText(), qApp->Settings()->GetOsSeparator()); } @@ -177,7 +177,7 @@ void DialogPlaceLabel::SetWidth(const QString &value) //--------------------------------------------------------------------------------------------------------------------- QString DialogPlaceLabel::GetHeight() const { - return qApp->TrVars()->TryFormulaFromUser(ui->plainTextEditFormulaHeight->toPlainText().replace("\n", " "), + return qApp->TrVars()->TryFormulaFromUser(ui->plainTextEditFormulaHeight->toPlainText(), qApp->Settings()->GetOsSeparator()); } @@ -203,7 +203,7 @@ void DialogPlaceLabel::SetHeight(const QString &value) //--------------------------------------------------------------------------------------------------------------------- QString DialogPlaceLabel::GetAngle() const { - return qApp->TrVars()->TryFormulaFromUser(ui->plainTextEditFormulaAngle->toPlainText().replace("\n", " "), + return qApp->TrVars()->TryFormulaFromUser(ui->plainTextEditFormulaAngle->toPlainText(), qApp->Settings()->GetOsSeparator()); } diff --git a/src/libs/vtools/dialogs/tools/piece/dialogseamallowance.cpp b/src/libs/vtools/dialogs/tools/piece/dialogseamallowance.cpp index f1ee8fe3f..d6ced6f36 100644 --- a/src/libs/vtools/dialogs/tools/piece/dialogseamallowance.cpp +++ b/src/libs/vtools/dialogs/tools/piece/dialogseamallowance.cpp @@ -72,10 +72,7 @@ void EnableDefButton(QPushButton *defButton, const QString &formula) QString GetFormulaFromUser(QPlainTextEdit *textEdit) { SCASSERT(textEdit != nullptr) - - QString formula = textEdit->toPlainText(); - formula.replace("\n", " "); - return qApp->TrVars()->TryFormulaFromUser(formula, qApp->Settings()->GetOsSeparator()); + return qApp->TrVars()->TryFormulaFromUser(textEdit->toPlainText(), qApp->Settings()->GetOsSeparator()); } } @@ -1515,7 +1512,6 @@ void DialogSeamAllowance::UpdateGrainlineValues() QString qsVal; try { - qsFormula.replace("\n", " "); qsFormula = qApp->TrVars()->FormulaFromUser(qsFormula, qApp->Settings()->GetOsSeparator()); Calculator cal; qreal dVal = cal.EvalFormula(data->DataVariables(), qsFormula); @@ -1597,7 +1593,7 @@ void DialogSeamAllowance::UpdateDetailLabelValues() QString qsVal; try { - qsFormula.replace("\n", " "); + qsFormula = qApp->TrVars()->FormulaFromUser(qsFormula, qApp->Settings()->GetOsSeparator()); Calculator cal; qreal dVal = cal.EvalFormula(data->DataVariables(), qsFormula); @@ -1683,7 +1679,6 @@ void DialogSeamAllowance::UpdatePatternLabelValues() QString qsVal; try { - qsFormula.replace("\n", " "); qsFormula = qApp->TrVars()->FormulaFromUser(qsFormula, qApp->Settings()->GetOsSeparator()); Calculator cal; qreal dVal = cal.EvalFormula(data->DataVariables(), qsFormula); @@ -1814,7 +1809,6 @@ void DialogSeamAllowance::EditGrainlineFormula() if (dlg.exec() == QDialog::Accepted) { QString qsFormula = dlg.GetFormula(); - qsFormula.replace("\n", " "); if (sender() == uiTabGrainline->pushButtonLen) { @@ -1871,7 +1865,6 @@ void DialogSeamAllowance::EditDLFormula() if (dlg.exec() == QDialog::Accepted) { QString qsFormula = dlg.GetFormula(); - qsFormula.replace("\n", " "); if (sender() == uiTabLabels->pushButtonDLHeight) { SetDLHeight(qsFormula); @@ -1931,7 +1924,6 @@ void DialogSeamAllowance::EditPLFormula() if (dlg.exec() == QDialog::Accepted) { QString qsFormula = dlg.GetFormula(); - qsFormula.replace("\n", " "); if (sender() == uiTabLabels->pushButtonPLHeight) { SetPLHeight(qsFormula); @@ -2965,7 +2957,6 @@ void DialogSeamAllowance::InitAllPinComboboxes() QString DialogSeamAllowance::GetFormulaSAWidth() const { QString width = uiTabPaths->plainTextEditFormulaWidth->toPlainText(); - width.replace("\n", " "); return qApp->TrVars()->TryFormulaFromUser(width, qApp->Settings()->GetOsSeparator()); } diff --git a/src/libs/vtools/visualization/visualization.cpp b/src/libs/vtools/visualization/visualization.cpp index 020f2c7fa..657b13ce2 100644 --- a/src/libs/vtools/visualization/visualization.cpp +++ b/src/libs/vtools/visualization/visualization.cpp @@ -164,7 +164,6 @@ qreal Visualization::FindValFromUser(const QString &expression, { // Replace line return with spaces for calc if exist QString formula = expression; - formula.replace("\n", " "); if (fromUser) { formula = qApp->TrVars()->FormulaFromUser(formula, qApp->Settings()->GetOsSeparator());