From 98c90ee5fe582f51e2a7e15f7cd4235b86169e44 Mon Sep 17 00:00:00 2001 From: dismine Date: Fri, 30 May 2014 22:03:17 +0300 Subject: [PATCH] Use native QString method for replacing strings. Fix bug with InitOkCancel method. Still continue crash. --HG-- branch : DialogTools --- src/app/dialogs/tools/dialogalongline.cpp | 2 +- src/app/dialogs/tools/dialogarc.cpp | 2 +- src/app/dialogs/tools/dialogbisector.cpp | 2 +- src/app/dialogs/tools/dialogcutarc.cpp | 2 +- src/app/dialogs/tools/dialogcutspline.cpp | 2 +- src/app/dialogs/tools/dialogcutsplinepath.cpp | 2 +- src/app/dialogs/tools/dialogendline.cpp | 2 +- src/app/dialogs/tools/dialogheight.cpp | 2 +- src/app/dialogs/tools/dialogline.cpp | 2 +- src/app/dialogs/tools/dialoglineintersect.cpp | 2 +- src/app/dialogs/tools/dialognormal.cpp | 2 +- .../tools/dialogpointofintersection.cpp | 2 +- src/app/dialogs/tools/dialogshoulderpoint.cpp | 2 +- src/app/dialogs/tools/dialogsinglepoint.cpp | 2 +- src/app/dialogs/tools/dialogspline.cpp | 2 +- src/app/dialogs/tools/dialogsplinepath.cpp | 2 +- src/app/dialogs/tools/dialogtool.cpp | 21 +++++++-- src/app/dialogs/tools/dialogtool.h | 14 ++++-- src/app/dialogs/tools/dialogtriangle.cpp | 2 +- src/app/dialogs/tools/dialoguniondetails.cpp | 2 +- src/app/tools/drawTools/vdrawtool.cpp | 6 +-- src/app/tools/drawTools/vtoolendline.cpp | 8 ++-- src/libs/qmuparser/qmuparsererror.cpp | 44 ++++--------------- src/libs/qmuparser/qmuparsererror.h | 4 -- 24 files changed, 60 insertions(+), 73 deletions(-) diff --git a/src/app/dialogs/tools/dialogalongline.cpp b/src/app/dialogs/tools/dialogalongline.cpp index f7d8cfad6..2d69e0f79 100644 --- a/src/app/dialogs/tools/dialogalongline.cpp +++ b/src/app/dialogs/tools/dialogalongline.cpp @@ -43,7 +43,7 @@ DialogAlongLine::DialogAlongLine(const VContainer *data, QWidget *parent) flagFormula = false; flagName = false; - InitOkCancel(ui); + InitOkCancelApply(ui); CheckState(); FillComboBoxTypeLine(ui->comboBoxLineType); diff --git a/src/app/dialogs/tools/dialogarc.cpp b/src/app/dialogs/tools/dialogarc.cpp index 7a79c6448..aacb45a5c 100644 --- a/src/app/dialogs/tools/dialogarc.cpp +++ b/src/app/dialogs/tools/dialogarc.cpp @@ -48,7 +48,7 @@ DialogArc::DialogArc(const VContainer *data, QWidget *parent) timerF2 = new QTimer(this); connect(timerF2, &QTimer::timeout, this, &DialogArc::EvalF2); - InitOkCancel(ui); + InitOkCancelApply(ui); FillComboBoxPoints(ui->comboBoxBasePoint); diff --git a/src/app/dialogs/tools/dialogbisector.cpp b/src/app/dialogs/tools/dialogbisector.cpp index 9308ee7bb..e24511c88 100644 --- a/src/app/dialogs/tools/dialogbisector.cpp +++ b/src/app/dialogs/tools/dialogbisector.cpp @@ -42,7 +42,7 @@ DialogBisector::DialogBisector(const VContainer *data, QWidget *parent) lineEditFormula = ui->lineEditFormula; labelEditFormula = ui->labelEditFormula; labelEditNamePoint = ui->labelEditNamePoint; - InitOkCancel(ui); + InitOkCancelApply(ui); flagFormula = false; flagName = false; CheckState(); diff --git a/src/app/dialogs/tools/dialogcutarc.cpp b/src/app/dialogs/tools/dialogcutarc.cpp index d4a306bbc..1bdd471c2 100644 --- a/src/app/dialogs/tools/dialogcutarc.cpp +++ b/src/app/dialogs/tools/dialogcutarc.cpp @@ -45,7 +45,7 @@ DialogCutArc::DialogCutArc(const VContainer *data, QWidget *parent) : labelEditFormula = ui->labelEditFormula; labelEditNamePoint = ui->labelEditNamePoint; - InitOkCancel(ui); + InitOkCancelApply(ui); flagFormula = false; flagName = false; CheckState(); diff --git a/src/app/dialogs/tools/dialogcutspline.cpp b/src/app/dialogs/tools/dialogcutspline.cpp index d21bf80d1..aa5b6ce56 100644 --- a/src/app/dialogs/tools/dialogcutspline.cpp +++ b/src/app/dialogs/tools/dialogcutspline.cpp @@ -39,7 +39,7 @@ DialogCutSpline::DialogCutSpline(const VContainer *data, QWidget *parent) lineEditFormula = ui->lineEditFormula; labelEditFormula = ui->labelEditFormula; labelEditNamePoint = ui->labelEditNamePoint; - InitOkCancel(ui); + InitOkCancelApply(ui); flagFormula = false; flagName = false; diff --git a/src/app/dialogs/tools/dialogcutsplinepath.cpp b/src/app/dialogs/tools/dialogcutsplinepath.cpp index cf1d3d5ed..bea8089c0 100644 --- a/src/app/dialogs/tools/dialogcutsplinepath.cpp +++ b/src/app/dialogs/tools/dialogcutsplinepath.cpp @@ -41,7 +41,7 @@ DialogCutSplinePath::DialogCutSplinePath(const VContainer *data, QWidget *parent labelEditFormula = ui->labelEditFormula; labelEditNamePoint = ui->labelEditNamePoint; - InitOkCancel(ui); + InitOkCancelApply(ui); flagFormula = false; flagName = false; CheckState(); diff --git a/src/app/dialogs/tools/dialogendline.cpp b/src/app/dialogs/tools/dialogendline.cpp index 37b61b49e..f0d47c3ed 100644 --- a/src/app/dialogs/tools/dialogendline.cpp +++ b/src/app/dialogs/tools/dialogendline.cpp @@ -46,7 +46,7 @@ DialogEndLine::DialogEndLine(const VContainer *data, QWidget *parent) // TODO : auto extend height on first value length. this->formulaBaseHeight=ui->plainTextEditFormula->height(); - InitOkCancel(ui); + InitOkCancelApply(ui); flagFormula = false; flagName = false; CheckState(); diff --git a/src/app/dialogs/tools/dialogheight.cpp b/src/app/dialogs/tools/dialogheight.cpp index a07e09a11..f9b03c0a2 100644 --- a/src/app/dialogs/tools/dialogheight.cpp +++ b/src/app/dialogs/tools/dialogheight.cpp @@ -38,7 +38,7 @@ DialogHeight::DialogHeight(const VContainer *data, QWidget *parent) { ui->setupUi(this); labelEditNamePoint = ui->labelEditNamePoint; - InitOkCancel(ui); + InitOkCancelApply(ui); flagName = false; CheckState(); diff --git a/src/app/dialogs/tools/dialogline.cpp b/src/app/dialogs/tools/dialogline.cpp index 0e7512024..7e15ab494 100644 --- a/src/app/dialogs/tools/dialogline.cpp +++ b/src/app/dialogs/tools/dialogline.cpp @@ -36,7 +36,7 @@ DialogLine::DialogLine(const VContainer *data, QWidget *parent) :DialogTool(data, parent), ui(new Ui::DialogLine), number(0), firstPoint(0), secondPoint(0), typeLine(QString()) { ui->setupUi(this); - InitOkCancel(ui); + InitOkCancelApply(ui); FillComboBoxPoints(ui->comboBoxFirstPoint); FillComboBoxPoints(ui->comboBoxSecondPoint); diff --git a/src/app/dialogs/tools/dialoglineintersect.cpp b/src/app/dialogs/tools/dialoglineintersect.cpp index a28468175..971b696ff 100644 --- a/src/app/dialogs/tools/dialoglineintersect.cpp +++ b/src/app/dialogs/tools/dialoglineintersect.cpp @@ -38,7 +38,7 @@ DialogLineIntersect::DialogLineIntersect(const VContainer *data, QWidget *parent { ui->setupUi(this); number = 0; - InitOkCancel(ui); + InitOkCancelApply(ui); labelEditNamePoint = ui->labelEditNamePoint; flagName = false; diff --git a/src/app/dialogs/tools/dialognormal.cpp b/src/app/dialogs/tools/dialognormal.cpp index 708b97d56..ba20c3755 100644 --- a/src/app/dialogs/tools/dialognormal.cpp +++ b/src/app/dialogs/tools/dialognormal.cpp @@ -42,7 +42,7 @@ DialogNormal::DialogNormal(const VContainer *data, QWidget *parent) lineEditFormula = ui->lineEditFormula; labelEditFormula = ui->labelEditFormula; labelEditNamePoint = ui->labelEditNamePoint; - InitOkCancel(ui); + InitOkCancelApply(ui); flagFormula = false; flagName = false; diff --git a/src/app/dialogs/tools/dialogpointofintersection.cpp b/src/app/dialogs/tools/dialogpointofintersection.cpp index a5e09ef40..34a736aa1 100644 --- a/src/app/dialogs/tools/dialogpointofintersection.cpp +++ b/src/app/dialogs/tools/dialogpointofintersection.cpp @@ -38,7 +38,7 @@ DialogPointOfIntersection::DialogPointOfIntersection(const VContainer *data, QWi { ui->setupUi(this); labelEditNamePoint = ui->labelEditNamePoint; - InitOkCancel(ui); + InitOkCancelApply(ui); flagName = false; CheckState(); diff --git a/src/app/dialogs/tools/dialogshoulderpoint.cpp b/src/app/dialogs/tools/dialogshoulderpoint.cpp index c4a4bef38..663424ff0 100644 --- a/src/app/dialogs/tools/dialogshoulderpoint.cpp +++ b/src/app/dialogs/tools/dialogshoulderpoint.cpp @@ -43,7 +43,7 @@ DialogShoulderPoint::DialogShoulderPoint(const VContainer *data, QWidget *parent lineEditFormula = ui->lineEditFormula; labelEditFormula = ui->labelEditFormula; labelEditNamePoint = ui->labelEditNamePoint; - InitOkCancel(ui); + InitOkCancelApply(ui); flagFormula = false; flagName = false; diff --git a/src/app/dialogs/tools/dialogsinglepoint.cpp b/src/app/dialogs/tools/dialogsinglepoint.cpp index 6e929ee23..f65840db2 100644 --- a/src/app/dialogs/tools/dialogsinglepoint.cpp +++ b/src/app/dialogs/tools/dialogsinglepoint.cpp @@ -40,7 +40,7 @@ DialogSinglePoint::DialogSinglePoint(const VContainer *data, QWidget *parent) ui->doubleSpinBoxX->setRange(0, qApp->fromPixel(SceneSize)); ui->doubleSpinBoxY->setRange(0, qApp->fromPixel(SceneSize)); labelEditNamePoint = ui->labelEditName; - InitOkCancel(ui); + InitOkCancelApply(ui); flagName = false; CheckState(); diff --git a/src/app/dialogs/tools/dialogspline.cpp b/src/app/dialogs/tools/dialogspline.cpp index b76e06f3b..193a5db87 100644 --- a/src/app/dialogs/tools/dialogspline.cpp +++ b/src/app/dialogs/tools/dialogspline.cpp @@ -37,7 +37,7 @@ DialogSpline::DialogSpline(const VContainer *data, QWidget *parent) kAsm1(1), kAsm2(1), kCurve(1) { ui->setupUi(this); - InitOkCancel(ui); + InitOkCancelApply(ui); FillComboBoxPoints(ui->comboBoxP1); FillComboBoxPoints(ui->comboBoxP4); diff --git a/src/app/dialogs/tools/dialogsplinepath.cpp b/src/app/dialogs/tools/dialogsplinepath.cpp index 9ac242a42..6b9958646 100644 --- a/src/app/dialogs/tools/dialogsplinepath.cpp +++ b/src/app/dialogs/tools/dialogsplinepath.cpp @@ -37,7 +37,7 @@ DialogSplinePath::DialogSplinePath(const VContainer *data, QWidget *parent) :DialogTool(data, parent), ui(new Ui::DialogSplinePath), path(VSplinePath()) { ui->setupUi(this); - InitOkCancel(ui); + InitOkCancelApply(ui); bOk->setEnabled(false); FillComboBoxPoints(ui->comboBoxPoint); diff --git a/src/app/dialogs/tools/dialogtool.cpp b/src/app/dialogs/tools/dialogtool.cpp index 58d57f4c2..785539bb0 100644 --- a/src/app/dialogs/tools/dialogtool.cpp +++ b/src/app/dialogs/tools/dialogtool.cpp @@ -435,11 +435,24 @@ void DialogTool::Eval(QPlainTextEdit *edit, bool &flag, QTimer *timer, QLabel *l QString formula = edit->toPlainText(); formula.replace("\n"," "); formula = qApp->FormulaFromUser(formula); - Calculator cal(data); - const qreal result = cal.EvalFormula(formula); + Calculator *cal = new Calculator(data); + const qreal result = cal->EvalFormula(formula); + delete cal; - QLocale loc = QLocale::system(); - label->setText(loc.toString(result)); + QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), + QApplication::applicationName()); + bool osSeparatorValue = settings.value("configuration/osSeparator", 1).toBool(); + + if (osSeparatorValue) + { + QLocale loc = QLocale::system(); + label->setText(loc.toString(result)); + } + else + { + QLocale loc = QLocale(QLocale::C); + label->setText(loc.toString(result)); + } flag = true; palette.setColor(labelEditFormula->foregroundRole(), QColor(76, 76, 76)); emit ToolTip(""); diff --git a/src/app/dialogs/tools/dialogtool.h b/src/app/dialogs/tools/dialogtool.h index 050701cc8..581fa8d6e 100644 --- a/src/app/dialogs/tools/dialogtool.h +++ b/src/app/dialogs/tools/dialogtool.h @@ -475,6 +475,16 @@ protected: connect(radioButtonLengthCurve, &QRadioButton::clicked, this, &DialogTool::LengthCurves); } template + void InitOkCancelApply(T *ui) + { + InitOkCancel(ui); + // TODO issue #79 + bApply = ui->buttonBox->button(QDialogButtonBox::Apply); + Q_CHECK_PTR(bApply); + connect(bApply, &QPushButton::clicked, this, &DialogTool::DialogApply); + } + //Left this method for dialog what do not need apply button + template void InitOkCancel(T *ui) { bOk = ui->buttonBox->button(QDialogButtonBox::Ok); @@ -484,10 +494,6 @@ protected: QPushButton *bCancel = ui->buttonBox->button(QDialogButtonBox::Cancel); Q_CHECK_PTR(bCancel); connect(bCancel, &QPushButton::clicked, this, &DialogTool::DialogRejected); - // TODO issue #79 - bApply = ui->buttonBox->button(QDialogButtonBox::Apply); - Q_CHECK_PTR(bApply); - connect(bApply, &QPushButton::clicked, this, &DialogTool::DialogApply); } /** * @brief associatedTool vdrawtool associated with opened dialog. diff --git a/src/app/dialogs/tools/dialogtriangle.cpp b/src/app/dialogs/tools/dialogtriangle.cpp index 63da15c19..ea011f33e 100644 --- a/src/app/dialogs/tools/dialogtriangle.cpp +++ b/src/app/dialogs/tools/dialogtriangle.cpp @@ -38,7 +38,7 @@ DialogTriangle::DialogTriangle(const VContainer *data, QWidget *parent) { ui->setupUi(this); labelEditNamePoint = ui->labelEditNamePoint; - InitOkCancel(ui); + InitOkCancelApply(ui); flagName = false; CheckState(); diff --git a/src/app/dialogs/tools/dialoguniondetails.cpp b/src/app/dialogs/tools/dialoguniondetails.cpp index 7c430437f..b9e0a2566 100644 --- a/src/app/dialogs/tools/dialoguniondetails.cpp +++ b/src/app/dialogs/tools/dialoguniondetails.cpp @@ -35,7 +35,7 @@ DialogUnionDetails::DialogUnionDetails(const VContainer *data, QWidget *parent) numberP(0), p1(0), p2(0) { ui->setupUi(this); - InitOkCancel(ui); + InitOkCancelApply(ui); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/tools/drawTools/vdrawtool.cpp b/src/app/tools/drawTools/vdrawtool.cpp index e0f98abec..57a54d815 100644 --- a/src/app/tools/drawTools/vdrawtool.cpp +++ b/src/app/tools/drawTools/vdrawtool.cpp @@ -190,9 +190,9 @@ qreal VDrawTool::CheckFormula(QString &formula, VContainer *data) //Need delete dialog here because parser in dialog don't allow use correct separator for parsing here. //Don't know why. delete dialog; - Calculator *cal = new Calculator(data); - result = cal->EvalFormula(formula); - delete cal;//Here can be memory leak, but dialog already check this formula and probability very low. + Calculator *cal1 = new Calculator(data); + result = cal1->EvalFormula(formula); + delete cal1;//Here can be memory leak, but dialog already check this formula and probability very low. } else { diff --git a/src/app/tools/drawTools/vtoolendline.cpp b/src/app/tools/drawTools/vtoolendline.cpp index dbc613bd4..57ecda28b 100644 --- a/src/app/tools/drawTools/vtoolendline.cpp +++ b/src/app/tools/drawTools/vtoolendline.cpp @@ -80,8 +80,8 @@ VToolEndLine* VToolEndLine::Create(DialogTool *dialog, VMainGraphicsScene *scene VToolEndLine *point = nullptr; point=Create(0, pointName, typeLine, formula, angle, basePointId, 5, 10, scene, doc, data, Document::FullParse, Valentina::FromGui); - if (point != nullptr) - { + if (point != nullptr) + { point->dialog=dialogTool; } return point; @@ -123,9 +123,9 @@ VToolEndLine* VToolEndLine::Create(const quint32 _id, const QString &pointName, connect(scene, &VMainGraphicsScene::NewFactor, point, &VToolPoint::SetFactor); doc->AddTool(id, point); doc->IncrementReferens(basePointId); - return point; + return point; } - return nullptr; + return nullptr; } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/qmuparser/qmuparsererror.cpp b/src/libs/qmuparser/qmuparsererror.cpp index e0bed1887..6d81239b3 100644 --- a/src/libs/qmuparser/qmuparsererror.cpp +++ b/src/libs/qmuparser/qmuparsererror.cpp @@ -111,8 +111,8 @@ QmuParserError::QmuParserError ( EErrorCodes a_iErrc ) m_ErrMsg ( QmuParserErrorMsg::Instance() ) { m_sMsg = m_ErrMsg[m_iErrc]; - ReplaceSubString ( m_sMsg, "$POS$", QString().setNum ( m_iPos ) ); - ReplaceSubString ( m_sMsg, "$TOK$", m_sTok ); + m_sMsg.replace("$POS$", QString().setNum ( m_iPos )); + m_sMsg.replace("$TOK$", m_sTok ); } //--------------------------------------------------------------------------------------------------------------------- @@ -137,8 +137,8 @@ QmuParserError::QmuParserError ( EErrorCodes iErrc, const QString &sTok, const Q m_ErrMsg ( QmuParserErrorMsg::Instance() ) { m_sMsg = m_ErrMsg[m_iErrc]; - ReplaceSubString ( m_sMsg, "$POS$", QString().setNum ( m_iPos ) ); - ReplaceSubString ( m_sMsg, "$TOK$", m_sTok ); + m_sMsg.replace("$POS$", QString().setNum ( m_iPos )); + m_sMsg.replace("$TOK$", m_sTok ); } //--------------------------------------------------------------------------------------------------------------------- @@ -153,8 +153,8 @@ QmuParserError::QmuParserError ( EErrorCodes a_iErrc, int a_iPos, const QString m_ErrMsg ( QmuParserErrorMsg::Instance() ) { m_sMsg = m_ErrMsg[m_iErrc]; - ReplaceSubString ( m_sMsg, "$POS$", QString().setNum ( m_iPos ) ); - ReplaceSubString ( m_sMsg, "$TOK$", m_sTok ); + m_sMsg.replace("$POS$", QString().setNum ( m_iPos )); + m_sMsg.replace("$TOK$", m_sTok ); } //--------------------------------------------------------------------------------------------------------------------- @@ -167,8 +167,8 @@ QmuParserError::QmuParserError ( const QString &szMsg, int iPos, const QString & : QException(), m_sMsg ( szMsg ), m_sExpr(), m_sTok ( sTok ), m_iPos ( iPos ), m_iErrc ( ecGENERIC ), m_ErrMsg ( QmuParserErrorMsg::Instance() ) { - ReplaceSubString ( m_sMsg, "$POS$", QString().setNum ( m_iPos ) ); - ReplaceSubString ( m_sMsg, "$TOK$", m_sTok ); + m_sMsg.replace("$POS$", QString().setNum ( m_iPos )); + m_sMsg.replace("$TOK$", m_sTok ); } //--------------------------------------------------------------------------------------------------------------------- @@ -197,34 +197,6 @@ QmuParserError& QmuParserError::operator= ( const QmuParserError &a_Obj ) return *this; } -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief Replace all ocuurences of a substring with another string. - * @param strFind The string that shall be replaced. - * @param strReplaceWith The string that should be inserted instead of strFind - */ -void QmuParserError::ReplaceSubString ( QString &strSource, const QString &strFind, const QString &strReplaceWith ) -{ - QString strResult; - int iPos ( 0 ); - - for ( ;; ) - { - int iNext = strSource.indexOf ( strFind, iPos ); - strResult.append ( strSource.mid ( iPos, iNext - iPos ) ); - - if ( iNext == -1 ) - { - break; - } - - strResult.append ( strReplaceWith ); - iPos = iNext + strFind.length(); - } - - strSource.swap ( strResult ); -} - //--------------------------------------------------------------------------------------------------------------------- /** * @brief Reset the erro object. diff --git a/src/libs/qmuparser/qmuparsererror.h b/src/libs/qmuparser/qmuparsererror.h index 0231a0e79..bcaeb015f 100644 --- a/src/libs/qmuparser/qmuparsererror.h +++ b/src/libs/qmuparser/qmuparsererror.h @@ -156,10 +156,6 @@ private: int m_iPos; ///< Formula position related to the error EErrorCodes m_iErrc; ///< Error code const QmuParserErrorMsg &m_ErrMsg; - /** - * @brief Replace all ocuurences of a substring with another string. - */ - static void ReplaceSubString ( QString &strSource, const QString &strFind, const QString &strReplaceWith ); void Reset(); };