From 094f29492da9fa048e7b5482cfafae2d87c05466 Mon Sep 17 00:00:00 2001 From: Patrick Proy Date: Sun, 8 Jun 2014 19:56:09 +0200 Subject: [PATCH] DialogBisector Change --HG-- branch : DialogTools --- src/app/dialogs/tools/dialogbisector.cpp | 62 ++++++++++++++++++-- src/app/dialogs/tools/dialogbisector.h | 21 ++++++- src/app/dialogs/tools/dialogbisector.ui | 69 +++++++++++++++++++---- src/app/mainwindow.cpp | 16 +++++- src/app/mainwindow.h | 1 + src/app/tools/drawTools/vtoolbisector.cpp | 14 ++++- src/app/tools/drawTools/vtoolbisector.h | 4 +- 7 files changed, 161 insertions(+), 26 deletions(-) diff --git a/src/app/dialogs/tools/dialogbisector.cpp b/src/app/dialogs/tools/dialogbisector.cpp index e24511c88..774bba5ea 100644 --- a/src/app/dialogs/tools/dialogbisector.cpp +++ b/src/app/dialogs/tools/dialogbisector.cpp @@ -39,9 +39,12 @@ DialogBisector::DialogBisector(const VContainer *data, QWidget *parent) ui->setupUi(this); InitVariables(ui); labelResultCalculation = ui->labelResultCalculation; - lineEditFormula = ui->lineEditFormula; + plainTextEditFormula = ui->plainTextEditFormula; labelEditFormula = ui->labelEditFormula; labelEditNamePoint = ui->labelEditNamePoint; + + this->formulaBaseHeight=ui->plainTextEditFormula->height(); + InitOkCancelApply(ui); flagFormula = false; flagName = false; @@ -57,7 +60,38 @@ DialogBisector::DialogBisector(const VContainer *data, QWidget *parent) connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogBisector::EvalFormula); connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogBisector::NamePointChanged); - connect(ui->lineEditFormula, &QLineEdit::textChanged, this, &DialogBisector::FormulaChanged); + connect(ui->plainTextEditFormula, &QPlainTextEdit::textChanged, this, &DialogBisector::FormulaTextChanged); + connect(ui->pushButtonGrowLength, &QPushButton::clicked, this, &DialogBisector::DeployFormulaTextEdit); + + ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down", + QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png"))); +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogBisector::FormulaTextChanged() +{ + // TODO issue #79 : back to FormulaChanged when full update + // Also remove this function if only one function called here + this->FormulaChanged2(); +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogBisector::DeployFormulaTextEdit() +{ + if (ui->plainTextEditFormula->height() < DIALOGBISECTOR_MAX_FORMULA_HEIGHT) + { + ui->plainTextEditFormula->setFixedHeight(DIALOGBISECTOR_MAX_FORMULA_HEIGHT); + //Set icon from theme (internal for Windows system) + ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-next", + QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-next.png"))); + } + else + { + ui->plainTextEditFormula->setFixedHeight(this->formulaBaseHeight); + //Set icon from theme (internal for Windows system) + ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down", + QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png"))); + } } //--------------------------------------------------------------------------------------------------------------------- @@ -129,7 +163,12 @@ void DialogBisector::setTypeLine(const QString &value) void DialogBisector::setFormula(const QString &value) { formula = qApp->FormulaToUser(value); - ui->lineEditFormula->setText(formula); + // increase height if needed. + if (formula.length() > 80) + { + this->DeployFormulaTextEdit(); + } + ui->plainTextEditFormula->setPlainText(formula); } //--------------------------------------------------------------------------------------------------------------------- @@ -152,12 +191,25 @@ void DialogBisector::setThirdPointId(const quint32 &value, const quint32 &id) //--------------------------------------------------------------------------------------------------------------------- void DialogBisector::DialogAccepted() +{ + this->SaveData(); + emit DialogClosed(QDialog::Accepted); +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogBisector::DialogApply() +{ + this->SaveData(); + emit DialogApplied(); +} +//--------------------------------------------------------------------------------------------------------------------- +void DialogBisector::SaveData() { pointName = ui->lineEditNamePoint->text(); typeLine = GetTypeLine(ui->comboBoxLineType); - formula = ui->lineEditFormula->text(); + formula = ui->plainTextEditFormula->toPlainText(); + formula.replace("\n"," "); firstPointId = getCurrentObjectId(ui->comboBoxFirstPoint); secondPointId = getCurrentObjectId(ui->comboBoxSecondPoint); thirdPointId = getCurrentObjectId(ui->comboBoxThirdPoint); - emit DialogClosed(QDialog::Accepted); } diff --git a/src/app/dialogs/tools/dialogbisector.h b/src/app/dialogs/tools/dialogbisector.h index 948140d98..f1ca2ae3b 100644 --- a/src/app/dialogs/tools/dialogbisector.h +++ b/src/app/dialogs/tools/dialogbisector.h @@ -31,6 +31,7 @@ #include "dialogtool.h" +#define DIALOGBISECTOR_MAX_FORMULA_HEIGHT 64 namespace Ui { class DialogBisector; @@ -124,12 +125,24 @@ public slots: * @brief DialogAccepted save data and emit signal about closed dialog. */ virtual void DialogAccepted(); - /** TODO ISSUE 79 : create real function + /** * @brief DialogApply apply data and emit signal about applied dialog. */ - virtual void DialogApply(){} + virtual void DialogApply(); + /** + * @brief DeployFormulaTextEdit grow or shrink formula input + */ + void DeployFormulaTextEdit(); + /** + * @brief FormulaTextChanged when formula text changes for validation and calc + */ + void FormulaTextChanged(); private: Q_DISABLE_COPY(DialogBisector) + /** + * @brief SaveData Put dialog data in local variables + */ + void SaveData(); /** * @brief ui keeps information about user interface */ @@ -162,6 +175,10 @@ private: * @brief thirdPointId id of third point */ quint32 thirdPointId; + /** + * @brief formulaBaseHeight base height defined by dialogui + */ + int formulaBaseHeight; }; inline QString DialogBisector::getTypeLine() const diff --git a/src/app/dialogs/tools/dialogbisector.ui b/src/app/dialogs/tools/dialogbisector.ui index 1c5221267..5c634c8aa 100644 --- a/src/app/dialogs/tools/dialogbisector.ui +++ b/src/app/dialogs/tools/dialogbisector.ui @@ -71,17 +71,17 @@ - - - - 0 - 0 - + + + Qt::Horizontal - - Calculation of length of bisector by using the formula + + + 40 + 20 + - + @@ -147,6 +147,54 @@ + + + + + + + 16777215 + 24 + + + + + + + + + 18 + 18 + + + + + 0 + 0 + + + + <html><head/><body><p>Show full calculation in message box</p></body></html> + + + + + + + + + + 16 + 16 + + + + true + + + + + @@ -429,14 +477,13 @@ Qt::Horizontal - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok - lineEditFormula lineEditNamePoint comboBoxFirstPoint comboBoxSecondPoint diff --git a/src/app/mainwindow.cpp b/src/app/mainwindow.cpp index 86f0b0e4d..21c50ea62 100644 --- a/src/app/mainwindow.cpp +++ b/src/app/mainwindow.cpp @@ -493,8 +493,18 @@ void MainWindow::ClosedDialogNormal(int result) */ void MainWindow::ToolBisector(bool checked) { - SetToolButton(checked, Valentina::BisectorTool, ":/cursor/bisector_cursor.png", - tr("Select first point of angle"), &MainWindow::ClosedDialogBisector); + SetToolButton2(checked, Valentina::BisectorTool, ":/cursor/bisector_cursor.png", + tr("Select first point of angle"), &MainWindow::ClosedDialogBisector, + &MainWindow::ApplyDialogBisector); +} + +//--------------------------------------------------------------------------------------------------------------------- +/** + * @brief ApplyDialogBisector actions after apply in DialogBisector. + */ +void MainWindow::ApplyDialogBisector() +{ + ApplyDialog(); } //--------------------------------------------------------------------------------------------------------------------- @@ -504,7 +514,7 @@ void MainWindow::ToolBisector(bool checked) */ void MainWindow::ClosedDialogBisector(int result) { - ClosedDialog(result); + ClosedDialog2(result); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/mainwindow.h b/src/app/mainwindow.h index c5bd288b3..8623e07f9 100644 --- a/src/app/mainwindow.h +++ b/src/app/mainwindow.h @@ -110,6 +110,7 @@ public slots: void ClosedDialogShoulderPoint(int result); void ClosedDialogNormal(int result); void ClosedDialogBisector(int result); + void ApplyDialogBisector(); void ClosedDialogLineIntersect(int result); void ClosedDialogSpline(int result); void ClosedDialogArc(int result); diff --git a/src/app/tools/drawTools/vtoolbisector.cpp b/src/app/tools/drawTools/vtoolbisector.cpp index 7aa79e7f0..f4b5b371b 100644 --- a/src/app/tools/drawTools/vtoolbisector.cpp +++ b/src/app/tools/drawTools/vtoolbisector.cpp @@ -87,7 +87,7 @@ void VToolBisector::setDialog() } //--------------------------------------------------------------------------------------------------------------------- -void VToolBisector::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, +VToolBisector* VToolBisector::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data) { SCASSERT(dialog != nullptr); @@ -99,12 +99,18 @@ void VToolBisector::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPatte const quint32 thirdPointId = dialogTool->getThirdPointId(); const QString typeLine = dialogTool->getTypeLine(); const QString pointName = dialogTool->getPointName(); - Create(0, formula, firstPointId, secondPointId, thirdPointId, typeLine, pointName, 5, 10, scene, doc, data, + VToolBisector *point = nullptr; + point=Create(0, formula, firstPointId, secondPointId, thirdPointId, typeLine, pointName, 5, 10, scene, doc, data, Document::FullParse, Valentina::FromGui); + if (point != nullptr) + { + point->dialog=dialogTool; + } + return point; } //--------------------------------------------------------------------------------------------------------------------- -void VToolBisector::Create(const quint32 _id, QString &formula, const quint32 &firstPointId, +VToolBisector* VToolBisector::Create(const quint32 _id, QString &formula, const quint32 &firstPointId, const quint32 &secondPointId, const quint32 &thirdPointId, const QString &typeLine, const QString &pointName, const qreal &mx, const qreal &my, VMainGraphicsScene *scene, VPattern *doc, VContainer *data, @@ -145,7 +151,9 @@ void VToolBisector::Create(const quint32 _id, QString &formula, const quint32 &f doc->IncrementReferens(firstPointId); doc->IncrementReferens(secondPointId); doc->IncrementReferens(thirdPointId); + return point; } + return nullptr; } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/tools/drawTools/vtoolbisector.h b/src/app/tools/drawTools/vtoolbisector.h index f49d6fa5b..1640da520 100644 --- a/src/app/tools/drawTools/vtoolbisector.h +++ b/src/app/tools/drawTools/vtoolbisector.h @@ -75,7 +75,7 @@ public: * @param doc dom document container. * @param data container with variables. */ - static void Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data); + static VToolBisector* Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data); /** * @brief Create help create tool. * @param _id tool id, 0 if tool doesn't exist yet. @@ -93,7 +93,7 @@ public: * @param parse parser file mode. * @param typeCreation way we create this tool. */ - static void Create(const quint32 _id, QString &formula, const quint32 &firstPointId, + static VToolBisector* Create(const quint32 _id, QString &formula, const quint32 &firstPointId, const quint32 &secondPointId, const quint32 &thirdPointId, const QString &typeLine, const QString &pointName, const qreal &mx, const qreal &my, VMainGraphicsScene *scene, VPattern *doc, VContainer *data, const Document::Documents &parse,