Change DialogEndLine formula to multiline
--HG-- branch : DialogTools
This commit is contained in:
parent
95e32b1e44
commit
43fe3e1371
|
@ -39,10 +39,13 @@ DialogEndLine::DialogEndLine(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;
|
||||
|
||||
// TODO : auto extend height on first value length.
|
||||
this->formulaBaseHeight=ui->plainTextEditFormula->height();
|
||||
|
||||
InitOkCansel(ui);
|
||||
flagFormula = false;
|
||||
flagName = false;
|
||||
|
@ -57,7 +60,29 @@ DialogEndLine::DialogEndLine(const VContainer *data, QWidget *parent)
|
|||
connect(ui->listWidget, &QListWidget::itemDoubleClicked, this, &DialogEndLine::PutVal);
|
||||
connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogEndLine::EvalFormula);
|
||||
connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogEndLine::NamePointChanged);
|
||||
connect(ui->lineEditFormula, &QLineEdit::textChanged, this, &DialogEndLine::FormulaChanged);
|
||||
connect(ui->plainTextEditFormula, &QPlainTextEdit::textChanged, this, &DialogEndLine::FormulaTextChanged);
|
||||
connect(ui->pushButtonGrowLength, &QPushButton::clicked, this, &DialogEndLine::DeployFormulaTextEdit);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogEndLine::FormulaTextChanged()
|
||||
{
|
||||
// TODO issue #79 : back to FormulaChanged when full update
|
||||
// Also remove this function if only one function called here
|
||||
this->FormulaChanged2();
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogEndLine::DeployFormulaTextEdit()
|
||||
{
|
||||
if (ui->plainTextEditFormula->height() < 64)
|
||||
{
|
||||
ui->plainTextEditFormula->setFixedHeight(64);
|
||||
}
|
||||
else
|
||||
{
|
||||
ui->plainTextEditFormula->setFixedHeight(this->formulaBaseHeight);
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
|
@ -90,7 +115,10 @@ void DialogEndLine::setTypeLine(const QString &value)
|
|||
void DialogEndLine::setFormula(const QString &value)
|
||||
{
|
||||
formula = value;
|
||||
ui->lineEditFormula->setText(formula);
|
||||
ui->plainTextEditFormula->setPlainText(value);
|
||||
//QTextCursor cursor = ui->plainTextEditFormula->textCursor();
|
||||
//cursor.insertText(value);
|
||||
//ui->plainTextEditFormula->setCursor(cursor);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
|
@ -111,7 +139,8 @@ void DialogEndLine::DialogAccepted()
|
|||
{
|
||||
pointName = ui->lineEditNamePoint->text();
|
||||
typeLine = GetTypeLine(ui->comboBoxLineType);
|
||||
formula = ui->lineEditFormula->text();
|
||||
formula = ui->plainTextEditFormula->toPlainText();
|
||||
formula.replace("\n"," ");
|
||||
angle = ui->doubleSpinBoxAngle->value();
|
||||
basePointId = getCurrentObjectId(ui->comboBoxBasePoint);
|
||||
emit DialogClosed(QDialog::Accepted);
|
||||
|
|
|
@ -112,6 +112,14 @@ public slots:
|
|||
* @brief DialogAccepted save data and emit signal about closed dialog.
|
||||
*/
|
||||
virtual void DialogAccepted();
|
||||
/**
|
||||
* @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(DialogEndLine)
|
||||
/**
|
||||
|
@ -138,6 +146,10 @@ private:
|
|||
* @brief basePointId id base point of line
|
||||
*/
|
||||
quint32 basePointId;
|
||||
/**
|
||||
* @brief formulaBaseHeight base height defined by dialogui
|
||||
*/
|
||||
int formulaBaseHeight;
|
||||
};
|
||||
|
||||
inline QString DialogEndLine::getPointName() const
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>539</width>
|
||||
<height>559</height>
|
||||
<width>486</width>
|
||||
<height>522</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
|
@ -74,17 +74,17 @@
|
|||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="lineEditFormula">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Formula for calculation of length of line</string>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="toolButtonPutHere">
|
||||
|
@ -147,6 +147,56 @@
|
|||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_8">
|
||||
<item>
|
||||
<widget class="QPlainTextEdit" name="plainTextEditFormula">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>24</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="baseSize">
|
||||
<size>
|
||||
<width>4</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButtonGrowLength">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16</width>
|
||||
<height>16</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Show full calculation in message box</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../../share/resources/icon.qrc">
|
||||
<normaloff>:/icon/16x16/go-down.png</normaloff>
|
||||
<activeoff>:/icon/16x16/go-next.png</activeoff>:/icon/16x16/go-down.png</iconset>
|
||||
</property>
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>16</width>
|
||||
<height>16</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="flat">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<item>
|
||||
|
@ -550,7 +600,6 @@
|
|||
</layout>
|
||||
</widget>
|
||||
<tabstops>
|
||||
<tabstop>lineEditFormula</tabstop>
|
||||
<tabstop>comboBoxBasePoint</tabstop>
|
||||
<tabstop>lineEditNamePoint</tabstop>
|
||||
<tabstop>doubleSpinBoxAngle</tabstop>
|
||||
|
|
|
@ -33,10 +33,15 @@
|
|||
|
||||
#include <QtWidgets>
|
||||
|
||||
// TODO : for issue #79
|
||||
// replace lineEditFormula -> plainTextEditFormula
|
||||
// delete lineEditFormala everywhrer
|
||||
// delete PutValHere and eval overloaded functions
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
DialogTool::DialogTool(const VContainer *data, QWidget *parent)
|
||||
:QDialog(parent), data(data), isInitialized(false), flagName(true), flagFormula(true), timerFormula(nullptr),
|
||||
bOk(nullptr), spinBoxAngle(nullptr), lineEditFormula(nullptr), listWidget(nullptr),
|
||||
bOk(nullptr), spinBoxAngle(nullptr), lineEditFormula(nullptr), plainTextEditFormula(nullptr), listWidget(nullptr),
|
||||
labelResultCalculation(nullptr), labelDescription(nullptr), labelEditNamePoint(nullptr),
|
||||
labelEditFormula(nullptr), radioButtonSizeGrowth(nullptr), radioButtonStandardTable(nullptr),
|
||||
radioButtonIncrements(nullptr), radioButtonLengthLine(nullptr), radioButtonLengthArc(nullptr),
|
||||
|
@ -283,22 +288,42 @@ void DialogTool::ChangeCurrentData(QComboBox *box, const quint32 &value) const
|
|||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogTool::PutValHere(QLineEdit *lineEdit, QListWidget *listWidget)
|
||||
{
|
||||
{ // TODO issue #79 : erase this function after all tools updated to plainTextEdit
|
||||
Q_CHECK_PTR(lineEdit);
|
||||
Q_CHECK_PTR(listWidget);
|
||||
QListWidgetItem *item = listWidget->currentItem();
|
||||
Q_CHECK_PTR(item);
|
||||
|
||||
int pos = lineEdit->cursorPosition();
|
||||
lineEdit->setText(lineEdit->text().insert(lineEdit->cursorPosition(), item->text()));
|
||||
lineEdit->setFocus();
|
||||
lineEdit->setCursorPosition(pos + item->text().size());
|
||||
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogTool::PutValHere(QPlainTextEdit *plainTextEdit, QListWidget *listWidget)
|
||||
{
|
||||
Q_CHECK_PTR(plainTextEdit);
|
||||
Q_CHECK_PTR(listWidget);
|
||||
QListWidgetItem *item = listWidget->currentItem();
|
||||
Q_CHECK_PTR(item);
|
||||
|
||||
QTextCursor cursor = plainTextEdit->textCursor();
|
||||
cursor.insertText(item->text());
|
||||
plainTextEdit->setTextCursor(cursor);
|
||||
/*
|
||||
int pos = lineEdit->cursorPosition();
|
||||
lineEdit->setText(lineEdit->text().insert(lineEdit->cursorPosition(), item->text()));
|
||||
lineEdit->setFocus();
|
||||
lineEdit->setCursorPosition(pos + item->text().size());
|
||||
*/
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogTool::ValFormulaChanged(bool &flag, QLineEdit *edit, QTimer *timer)
|
||||
{
|
||||
{// TODO issue #79 : erase this function after all tools updated to plainTextEdit
|
||||
Q_CHECK_PTR(edit);
|
||||
Q_CHECK_PTR(timer);
|
||||
Q_CHECK_PTR(labelEditFormula);
|
||||
|
@ -313,10 +338,26 @@ void DialogTool::ValFormulaChanged(bool &flag, QLineEdit *edit, QTimer *timer)
|
|||
}
|
||||
timer->start(1000);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogTool::Eval(QLineEdit *edit, bool &flag, QTimer *timer, QLabel *label)
|
||||
void DialogTool::ValFormulaChanged(bool &flag, QPlainTextEdit *edit, QTimer *timer)
|
||||
{
|
||||
Q_CHECK_PTR(edit);
|
||||
Q_CHECK_PTR(timer);
|
||||
Q_CHECK_PTR(labelEditFormula);
|
||||
if (edit->toPlainText().isEmpty())
|
||||
{
|
||||
flag = false;
|
||||
CheckState();
|
||||
QPalette palette = labelEditFormula->palette();
|
||||
palette.setColor(labelEditFormula->foregroundRole(), Qt::red);
|
||||
labelEditFormula->setPalette(palette);
|
||||
return;
|
||||
}
|
||||
timer->start(1000);
|
||||
}
|
||||
|
||||
void DialogTool::Eval(QLineEdit *edit, bool &flag, QTimer *timer, QLabel *label)
|
||||
{ // TODO issue #79 : erase this function after all tools updated to plainTextEdit
|
||||
Q_CHECK_PTR(edit);
|
||||
Q_CHECK_PTR(timer);
|
||||
Q_CHECK_PTR(label);
|
||||
|
@ -350,6 +391,45 @@ void DialogTool::Eval(QLineEdit *edit, bool &flag, QTimer *timer, QLabel *label)
|
|||
labelEditFormula->setPalette(palette);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogTool::Eval(QPlainTextEdit *edit, bool &flag, QTimer *timer, QLabel *label)
|
||||
{
|
||||
Q_CHECK_PTR(edit);
|
||||
Q_CHECK_PTR(timer);
|
||||
Q_CHECK_PTR(label);
|
||||
Q_CHECK_PTR(labelEditFormula);
|
||||
QPalette palette = labelEditFormula->palette();
|
||||
if (edit->toPlainText().isEmpty())
|
||||
{
|
||||
flag = false;
|
||||
palette.setColor(labelEditFormula->foregroundRole(), Qt::red);
|
||||
}
|
||||
else
|
||||
{
|
||||
Calculator cal(data);
|
||||
QString errorMsg;
|
||||
// Replace line return with spaces for calc
|
||||
QString formula = edit->toPlainText();
|
||||
formula.replace("\n"," ");
|
||||
qreal result = cal.eval(formula, &errorMsg);
|
||||
if (errorMsg.isEmpty() == false)
|
||||
{
|
||||
label->setText(tr("Error"));
|
||||
flag = false;
|
||||
palette.setColor(labelEditFormula->foregroundRole(), Qt::red);
|
||||
}
|
||||
else
|
||||
{
|
||||
label->setText(QString().setNum(result));
|
||||
flag = true;
|
||||
palette.setColor(labelEditFormula->foregroundRole(), QColor(76, 76, 76));
|
||||
}
|
||||
}
|
||||
CheckState();
|
||||
timer->stop();
|
||||
labelEditFormula->setPalette(palette);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogTool::setCurrentPointId(QComboBox *box, quint32 &pointId, const quint32 &value, const quint32 &id) const
|
||||
{
|
||||
|
@ -489,13 +569,22 @@ void DialogTool::DialogRejected()
|
|||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogTool::FormulaChanged()
|
||||
{
|
||||
{ // TODO issue #79 : erase after full update of tools.
|
||||
QLineEdit* edit = qobject_cast<QLineEdit*>(sender());
|
||||
if (edit)
|
||||
{
|
||||
ValFormulaChanged(flagFormula, edit, timerFormula);
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogTool::FormulaChanged2()
|
||||
{
|
||||
QPlainTextEdit* edit = qobject_cast<QPlainTextEdit*>(sender());
|
||||
if (edit)
|
||||
{
|
||||
ValFormulaChanged(flagFormula, edit, timerFormula);
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogTool::ArrowUp()
|
||||
|
@ -556,9 +645,9 @@ void DialogTool::ArrowRightDown()
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogTool::EvalFormula()
|
||||
{
|
||||
Q_CHECK_PTR(lineEditFormula);
|
||||
Q_CHECK_PTR(plainTextEditFormula);
|
||||
Q_CHECK_PTR(labelResultCalculation);
|
||||
Eval(lineEditFormula, flagFormula, timerFormula, labelResultCalculation);
|
||||
Eval(plainTextEditFormula, flagFormula, timerFormula, labelResultCalculation);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
|
@ -615,19 +704,23 @@ void DialogTool::Increments()
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogTool::PutHere()
|
||||
{
|
||||
PutValHere(lineEditFormula, listWidget);
|
||||
PutValHere(plainTextEditFormula, listWidget);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogTool::PutVal(QListWidgetItem *item)
|
||||
{
|
||||
Q_CHECK_PTR(lineEditFormula);
|
||||
Q_CHECK_PTR(plainTextEditFormula);
|
||||
Q_CHECK_PTR(item);
|
||||
int pos = lineEditFormula->cursorPosition();
|
||||
QTextCursor cursor = plainTextEditFormula->textCursor();
|
||||
cursor.insertText(item->text());
|
||||
plainTextEditFormula->setTextCursor(cursor);
|
||||
/*int pos = plainTextEditFormula->cursorPosition();
|
||||
lineEditFormula->setText(lineEditFormula->text().insert(lineEditFormula->cursorPosition(),
|
||||
item->text()));
|
||||
lineEditFormula->setFocus();
|
||||
lineEditFormula->setCursorPosition(pos + item->text().size());
|
||||
*/
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
#include <QRadioButton>
|
||||
#include <QDialogButtonBox>
|
||||
#include <QPushButton>
|
||||
#include <QPlainTextEdit>
|
||||
#include "../../container/vcontainer.h"
|
||||
#include "../../widgets/vapplication.h"
|
||||
|
||||
|
@ -102,6 +103,7 @@ public slots:
|
|||
* @brief formula check formula
|
||||
*/
|
||||
void FormulaChanged();
|
||||
void FormulaChanged2();
|
||||
/**
|
||||
* @brief ArrowUp set angle value 90 degree
|
||||
*/
|
||||
|
@ -214,6 +216,7 @@ protected:
|
|||
* @brief lineEditFormula linEdit for formula
|
||||
*/
|
||||
QLineEdit *lineEditFormula;
|
||||
QPlainTextEdit *plainTextEditFormula;
|
||||
/**
|
||||
* @brief listWidget listWidget with variables
|
||||
*/
|
||||
|
@ -341,6 +344,7 @@ protected:
|
|||
* @param listWidget listWidget
|
||||
*/
|
||||
void PutValHere(QLineEdit *lineEdit, QListWidget *listWidget);
|
||||
void PutValHere(QPlainTextEdit *plainTextEdit, QListWidget *listWidget);
|
||||
/**
|
||||
* @brief ValFormulaChanged handle change formula
|
||||
* @param flag flag state of formula
|
||||
|
@ -348,6 +352,7 @@ protected:
|
|||
* @param timer timer of formula
|
||||
*/
|
||||
void ValFormulaChanged(bool &flag, QLineEdit *edit, QTimer * timer);
|
||||
void ValFormulaChanged(bool &flag, QPlainTextEdit *edit, QTimer * timer);
|
||||
/**
|
||||
* @brief Eval evaluate formula and show result
|
||||
* @param edit lineEdit of formula
|
||||
|
@ -355,6 +360,7 @@ protected:
|
|||
* @param timer timer of formula
|
||||
* @param label label for signal error
|
||||
*/
|
||||
void Eval(QPlainTextEdit *edit, bool &flag, QTimer *timer, QLabel *label);
|
||||
void Eval(QLineEdit *edit, bool &flag, QTimer *timer, QLabel *label);
|
||||
/**
|
||||
* @brief setCurrentPointId set current point id in combobox
|
||||
|
|
|
@ -52,5 +52,7 @@
|
|||
<file>icon/flags/uk.png</file>
|
||||
<file>icon/Graduation.png</file>
|
||||
<file>icon/individual.png</file>
|
||||
<file>icon/16x16/go-down.png</file>
|
||||
<file>icon/16x16/go-next.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
|
BIN
src/app/share/resources/icon/16x16/go-down.png
Normal file
BIN
src/app/share/resources/icon/16x16/go-down.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 756 B |
BIN
src/app/share/resources/icon/16x16/go-next.png
Normal file
BIN
src/app/share/resources/icon/16x16/go-next.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 829 B |
Loading…
Reference in New Issue
Block a user