diff --git a/src/libs/vpatterndb/floatItemData/vpatternlabeldata.cpp b/src/libs/vpatterndb/floatItemData/vpatternlabeldata.cpp index e87f06ddd..a6015cee8 100644 --- a/src/libs/vpatterndb/floatItemData/vpatternlabeldata.cpp +++ b/src/libs/vpatterndb/floatItemData/vpatternlabeldata.cpp @@ -106,6 +106,18 @@ void VPatternLabelData::SetRotation(qreal dRot) d->m_dRotation = dRot; } +//--------------------------------------------------------------------------------------------------------------------- +quint32 VPatternLabelData::CenterPin() const +{ + return d->m_centerPin; +} + +//--------------------------------------------------------------------------------------------------------------------- +void VPatternLabelData::SetCenterPin(const quint32 ¢erPin) +{ + d->m_centerPin = centerPin; +} + //--------------------------------------------------------------------------------------------------------------------- quint32 VPatternLabelData::TopLeftPin() const { diff --git a/src/libs/vpatterndb/floatItemData/vpatternlabeldata.h b/src/libs/vpatterndb/floatItemData/vpatternlabeldata.h index 29cdeffc3..efbc7624e 100644 --- a/src/libs/vpatterndb/floatItemData/vpatternlabeldata.h +++ b/src/libs/vpatterndb/floatItemData/vpatternlabeldata.h @@ -59,6 +59,9 @@ public: qreal GetRotation() const; void SetRotation(qreal dRot); + quint32 CenterPin() const; + void SetCenterPin(const quint32 ¢erPin); + quint32 TopLeftPin() const; void SetTopLeftPin(const quint32 &topLeftPin); diff --git a/src/libs/vpatterndb/floatItemData/vpatternlabeldata_p.h b/src/libs/vpatterndb/floatItemData/vpatternlabeldata_p.h index 783addb83..2ec73a71b 100644 --- a/src/libs/vpatterndb/floatItemData/vpatternlabeldata_p.h +++ b/src/libs/vpatterndb/floatItemData/vpatternlabeldata_p.h @@ -46,6 +46,7 @@ public: m_dLabelHeight(0), m_iFontSize(0), m_dRotation(0), + m_centerPin(NULL_ID), m_topLeftPin(NULL_ID), m_bottomRightPin(NULL_ID) {} @@ -56,6 +57,7 @@ public: m_dLabelHeight(data.m_dLabelHeight), m_iFontSize(data.m_iFontSize), m_dRotation(data.m_dRotation), + m_centerPin(data.m_centerPin), m_topLeftPin(data.m_topLeftPin), m_bottomRightPin(data.m_bottomRightPin) {} @@ -70,6 +72,8 @@ public: int m_iFontSize; /** @brief m_dRotation label rotation */ qreal m_dRotation; + /** @brief m_centerPin center pin id */ + quint32 m_centerPin; /** @brief m_topLeftPin top left corner pin id */ quint32 m_topLeftPin; /** @brief m_bottomRightPin bottom right corner pin id */ diff --git a/src/libs/vtools/dialogs/tools/dialogseamallowance.cpp b/src/libs/vtools/dialogs/tools/dialogseamallowance.cpp index 1fd14657f..4c7cb7619 100644 --- a/src/libs/vtools/dialogs/tools/dialogseamallowance.cpp +++ b/src/libs/vtools/dialogs/tools/dialogseamallowance.cpp @@ -74,6 +74,10 @@ DialogSeamAllowance::DialogSeamAllowance(const VContainer *data, const quint32 & flagDPin(true), flagPPin(true), flagGFormulas(false), + flagDLAngle(false), + flagDLFormulas(false), + flagPLAngle(false), + flagPLFormulas(false), m_bAddMode(true), m_mx(0), m_my(0), @@ -87,6 +91,12 @@ DialogSeamAllowance::DialogSeamAllowance(const VContainer *data, const quint32 & m_oldGrainline(), m_iRotBaseHeight(0), m_iLenBaseHeight(0), + m_DLWidthBaseHeight(0), + m_DLHeightBaseHeight(0), + m_DLAngleBaseHeight(0), + m_PLWidthBaseHeight(0), + m_PLHeightBaseHeight(0), + m_PLAngleBaseHeight(0), m_formulaBaseWidth(0), m_formulaBaseWidthBefore(0), m_formulaBaseWidthAfter(0), @@ -104,6 +114,7 @@ DialogSeamAllowance::DialogSeamAllowance(const VContainer *data, const quint32 & InitSeamAllowanceTab(); InitInternalPathsTab(); InitPatternPieceDataTab(); + InitLabelsTab(); InitGrainlineTab(); InitPinsTab(); @@ -214,17 +225,19 @@ void DialogSeamAllowance::SetPiece(const VPiece &piece) UpdateList(); ui->groupBoxGrainline->setChecked(piece.GetGrainlineGeometry().IsVisible()); - SetGrainlineAngle(piece.GetGrainlineGeometry()); - SetGrainlineLength(piece.GetGrainlineGeometry()); + SetGrainlineAngle(piece.GetGrainlineGeometry().GetRotation()); + SetGrainlineLength(piece.GetGrainlineGeometry().GetLength()); ui->comboBoxArrow->setCurrentIndex(int(piece.GetGrainlineGeometry().GetArrowType())); m_oldData = piece.GetPatternPieceData(); - ChangeCurrentData(ui->comboBoxDetailLabelTopLeftPin, m_oldData.TopLeftPin()); - ChangeCurrentData(ui->comboBoxDetailLabelBottomRightPin, m_oldData.BottomRightPin()); + ChangeCurrentData(ui->comboBoxDLCenterPin, m_oldData.CenterPin()); + ChangeCurrentData(ui->comboBoxDLTopLeftPin, m_oldData.TopLeftPin()); + ChangeCurrentData(ui->comboBoxDLBottomRightPin, m_oldData.BottomRightPin()); m_oldGeom = piece.GetPatternInfo(); - ChangeCurrentData(ui->comboBoxPatternLabelTopLeftPin, m_oldGeom.TopLeftPin()); - ChangeCurrentData(ui->comboBoxPatternLabelBottomRightPin, m_oldGeom.BottomRightPin()); + ChangeCurrentData(ui->comboBoxPLCenterPin, m_oldGeom.CenterPin()); + ChangeCurrentData(ui->comboBoxPLTopLeftPin, m_oldGeom.TopLeftPin()); + ChangeCurrentData(ui->comboBoxPLBottomRightPin, m_oldGeom.BottomRightPin()); m_oldGrainline = piece.GetGrainlineGeometry(); ChangeCurrentData(ui->comboBoxGrainlineCenterPin, m_oldGrainline.CenterPin()); @@ -232,7 +245,9 @@ void DialogSeamAllowance::SetPiece(const VPiece &piece) ChangeCurrentData(ui->comboBoxGrainlineBottomPin, m_oldGrainline.BottomPin()); ValidObjects(MainPathIsValid()); - EnableGrainlineRotation(); + EnabledGrainline(); + EnabledDetailLabel(); + EnabledPatternLabel(); ListChanged(); } @@ -348,7 +363,8 @@ void DialogSeamAllowance::SaveData() void DialogSeamAllowance::CheckState() { SCASSERT(bOk != nullptr); - bOk->setEnabled(flagName && flagError && flagFormula && flagDPin && flagPPin && (flagGFormulas || flagGPin)); + bOk->setEnabled(flagName && flagError && flagFormula && flagDPin && flagPPin && (flagGFormulas || flagGPin) + && flagDLAngle && (flagDLFormulas || flagGPin) && flagPLAngle && (flagPLFormulas || flagPPin)); // In case dialog hasn't apply button if ( bApply != nullptr && applyAllowed) { @@ -949,7 +965,7 @@ void DialogSeamAllowance::TabChanged(int index) } //--------------------------------------------------------------------------------------------------------------------- -void DialogSeamAllowance::UpdateValues() +void DialogSeamAllowance::UpdateGrainlineValues() { QPlainTextEdit* apleSender[2]; apleSender[0] = ui->lineEditRotFormula; @@ -1021,7 +1037,195 @@ void DialogSeamAllowance::UpdateValues() } else { - ResetWarning(); + ResetGrainlineWarning(); + } + CheckState(); +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogSeamAllowance::UpdateDetailLabelValues() +{ + QPlainTextEdit* apleSender[3]; + apleSender[0] = ui->lineEditDLWidthFormula; + apleSender[1] = ui->lineEditDLHeightFormula; + apleSender[2] = ui->lineEditDLAngleFormula; + bool bFormulasOK = true; + bool angleFormulaOk = true; + + for (int i = 0; i < 3; ++i) + { + QLabel* plbVal; + QLabel* plbText; + QString qsUnit; + if (i == 0) + { + plbVal = ui->labelDLWidth; + plbText = ui->labelEditDLWidth; + qsUnit = QLatin1String(" ") + VDomDocument::UnitsToStr(qApp->patternUnit()); + } + else if (i == 1) + { + plbVal = ui->labelDLHeight; + plbText = ui->labelEditDLHeight; + qsUnit = QLatin1String(" ") + VDomDocument::UnitsToStr(qApp->patternUnit()); + } + else + { + plbVal = ui->labelDLAngle; + plbText = ui->labelEditDLAngle; + qsUnit = degreeSymbol; + } + + plbVal->setToolTip(tr("Value")); + + QString qsFormula = apleSender[i]->toPlainText().simplified(); + QString qsVal; + try + { + qsFormula.replace("\n", " "); + qsFormula = qApp->TrVars()->FormulaFromUser(qsFormula, qApp->Settings()->GetOsSeparator()); + Calculator cal; + qreal dVal = cal.EvalFormula(data->PlainVariables(), qsFormula); + if (qIsInf(dVal) == true || qIsNaN(dVal) == true) + { + throw qmu::QmuParserError(tr("Infinite/undefined result")); + } + else if ((i == 0 || i == 1) && dVal <= 0.0) + { + throw qmu::QmuParserError(tr("Length should be positive")); + } + else + { + qsVal.setNum(dVal, 'f', 2); + ChangeColor(plbText, okColor); + } + } + catch (qmu::QmuParserError &e) + { + qsVal.clear(); + ChangeColor(plbText, Qt::red); + if (i == 3) + { + angleFormulaOk = false; + } + else + { + bFormulasOK = false; + } + plbVal->setToolTip(tr("Parser error: %1").arg(e.GetMsg())); + } + + if (qsVal.isEmpty() == false) + { + qsVal += qsUnit; + } + plbVal->setText(qsVal); + } + + flagDLAngle = angleFormulaOk; + flagDLFormulas = bFormulasOK; + if (not flagDLAngle && not flagDLFormulas && not flagDPin && not flagPLAngle && not flagPLFormulas && not flagPPin) + { + QIcon icon(":/icons/win.icon.theme/16x16/status/dialog-warning.png"); + ui->tabWidget->setTabIcon(ui->tabWidget->indexOf(ui->tabLabels), icon); + } + else + { + ResetLabelsWarning(); + } + CheckState(); +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogSeamAllowance::UpdatePatternLabelValues() +{ + QPlainTextEdit* apleSender[3]; + apleSender[0] = ui->lineEditPLWidthFormula; + apleSender[1] = ui->lineEditPLHeightFormula; + apleSender[2] = ui->lineEditPLAngleFormula; + bool bFormulasOK = true; + bool angleFormulaOk = true; + + for (int i = 0; i < 3; ++i) + { + QLabel* plbVal; + QLabel* plbText; + QString qsUnit; + if (i == 0) + { + plbVal = ui->labelPLWidth; + plbText = ui->labelEditPLWidth; + qsUnit = QLatin1String(" ") + VDomDocument::UnitsToStr(qApp->patternUnit()); + } + else if (i == 1) + { + plbVal = ui->labelPLHeight; + plbText = ui->labelEditPLHeight; + qsUnit = QLatin1String(" ") + VDomDocument::UnitsToStr(qApp->patternUnit()); + } + else + { + plbVal = ui->labelPLAngle; + plbText = ui->labelEditPLAngle; + qsUnit = degreeSymbol; + } + + plbVal->setToolTip(tr("Value")); + + QString qsFormula = apleSender[i]->toPlainText().simplified(); + QString qsVal; + try + { + qsFormula.replace("\n", " "); + qsFormula = qApp->TrVars()->FormulaFromUser(qsFormula, qApp->Settings()->GetOsSeparator()); + Calculator cal; + qreal dVal = cal.EvalFormula(data->PlainVariables(), qsFormula); + if (qIsInf(dVal) == true || qIsNaN(dVal) == true) + { + throw qmu::QmuParserError(tr("Infinite/undefined result")); + } + else if ((i == 0 || i == 1) && dVal <= 0.0) + { + throw qmu::QmuParserError(tr("Length should be positive")); + } + else + { + qsVal.setNum(dVal, 'f', 2); + ChangeColor(plbText, okColor); + } + } + catch (qmu::QmuParserError &e) + { + qsVal.clear(); + ChangeColor(plbText, Qt::red); + if (i == 3) + { + angleFormulaOk = false; + } + else + { + bFormulasOK = false; + } + plbVal->setToolTip(tr("Parser error: %1").arg(e.GetMsg())); + } + + if (qsVal.isEmpty() == false) + { + qsVal += qsUnit; + } + plbVal->setText(qsVal); + } + + flagPLAngle = angleFormulaOk; + flagPLFormulas = bFormulasOK; + if (not flagDLAngle && not flagDLFormulas && not flagDPin && not flagPLAngle && not flagPLFormulas && not flagPPin) + { + QIcon icon(":/icons/win.icon.theme/16x16/status/dialog-warning.png"); + ui->tabWidget->setTabIcon(ui->tabWidget->indexOf(ui->tabLabels), icon); + } + else + { + ResetLabelsWarning(); } CheckState(); } @@ -1074,35 +1278,70 @@ void DialogSeamAllowance::SetEditMode() } //--------------------------------------------------------------------------------------------------------------------- -void DialogSeamAllowance::EnableGrainlineRotation() +void DialogSeamAllowance::EnabledGrainline() { if (ui->groupBoxGrainline->isChecked() == true) { - UpdateValues(); + UpdateGrainlineValues(); GrainlinePinPointChanged(); } else { flagGFormulas = true; - ResetWarning(); + ResetGrainlineWarning(); } } //--------------------------------------------------------------------------------------------------------------------- -void DialogSeamAllowance::EditFormula() +void DialogSeamAllowance::EnabledDetailLabel() +{ + if (ui->groupBoxDetailLabel->isChecked() == true) + { + UpdateDetailLabelValues(); + DetailPinPointChanged(); + } + else + { + flagDLAngle = true; + flagDLFormulas = true; + ResetLabelsWarning(); + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogSeamAllowance::EnabledPatternLabel() +{ + if (ui->groupBoxPatternLabel->isChecked() == true) + { + UpdatePatternLabelValues(); + PatternPinPointChanged(); + } + else + { + flagPLAngle = true; + flagPLFormulas = true; + ResetLabelsWarning(); + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogSeamAllowance::EditGrainlineFormula() { QPlainTextEdit* pleFormula; bool bCheckZero; + QString title; if (sender() == ui->pushButtonLen) { pleFormula = ui->lineEditLenFormula; bCheckZero = true; + title = tr("Edit length"); } else if (sender() == ui->pushButtonRot) { pleFormula = ui->lineEditRotFormula; bCheckZero = false; + title = tr("Edit angle"); } else { @@ -1111,31 +1350,201 @@ void DialogSeamAllowance::EditFormula() } DialogEditWrongFormula dlg(data, NULL_ID, this); - dlg.SetFormula(pleFormula->toPlainText()); + dlg.setWindowTitle(title); + dlg.SetFormula(qApp->TrVars()->TryFormulaFromUser(pleFormula->toPlainText(), qApp->Settings()->GetOsSeparator())); dlg.setCheckZero(bCheckZero); if (dlg.exec() == QDialog::Accepted) { QString qsFormula = dlg.GetFormula(); qsFormula.replace("\n", " "); - pleFormula->setPlainText(qsFormula); - UpdateValues(); + + if (sender() == ui->pushButtonLen) + { + SetGrainlineLength(qsFormula); + } + else if (sender() == ui->pushButtonRot) + { + SetGrainlineAngle(qsFormula); + } + else + { + // should not get here! + pleFormula->setPlainText(qsFormula); + } + UpdateGrainlineValues(); } } //--------------------------------------------------------------------------------------------------------------------- -void DialogSeamAllowance::DeployRotation() +void DialogSeamAllowance::EditDLFormula() +{ + QPlainTextEdit* pleFormula; + bool bCheckZero; + QString title; + + if (sender() == ui->pushButtonDLHeight) + { + pleFormula = ui->lineEditDLHeightFormula; + bCheckZero = true; + title = tr("Edit height"); + } + else if (sender() == ui->pushButtonDLWidth) + { + pleFormula = ui->lineEditDLWidthFormula; + bCheckZero = true; + title = tr("Edit width"); + } + else if (sender() == ui->pushButtonDLAngle) + { + pleFormula = ui->lineEditDLAngleFormula; + bCheckZero = false; + title = tr("Edit angle"); + } + else + { + // should not get here! + return; + } + + DialogEditWrongFormula dlg(data, NULL_ID, this); + dlg.setWindowTitle(title); + dlg.SetFormula(qApp->TrVars()->TryFormulaFromUser(pleFormula->toPlainText(), qApp->Settings()->GetOsSeparator())); + dlg.setCheckZero(bCheckZero); + if (dlg.exec() == QDialog::Accepted) + { + QString qsFormula = dlg.GetFormula(); + qsFormula.replace("\n", " "); + if (sender() == ui->pushButtonDLHeight) + { + SetDLHeight(qsFormula); + } + else if (sender() == ui->pushButtonDLWidth) + { + SetDLWidth(qsFormula); + } + else if (sender() == ui->pushButtonDLAngle) + { + SetDLAngle(qsFormula); + } + else + { + // should not get here! + pleFormula->setPlainText(qsFormula); + } + UpdateDetailLabelValues(); + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogSeamAllowance::EditPLFormula() +{ + QPlainTextEdit* pleFormula; + bool bCheckZero; + QString title; + + if (sender() == ui->pushButtonPLHeight) + { + pleFormula = ui->lineEditPLHeightFormula; + bCheckZero = true; + title = tr("Edit height"); + } + else if (sender() == ui->pushButtonPLWidth) + { + pleFormula = ui->lineEditPLWidthFormula; + bCheckZero = true; + title = tr("Edit width"); + } + else if (sender() == ui->pushButtonPLAngle) + { + pleFormula = ui->lineEditPLAngleFormula; + bCheckZero = false; + title = tr("Edit angle"); + } + else + { + // should not get here! + return; + } + + DialogEditWrongFormula dlg(data, NULL_ID, this); + dlg.setWindowTitle(title); + dlg.SetFormula(qApp->TrVars()->TryFormulaFromUser(pleFormula->toPlainText(), qApp->Settings()->GetOsSeparator())); + dlg.setCheckZero(bCheckZero); + if (dlg.exec() == QDialog::Accepted) + { + QString qsFormula = dlg.GetFormula(); + qsFormula.replace("\n", " "); + if (sender() == ui->pushButtonPLHeight) + { + SetPLHeight(qsFormula); + } + else if (sender() == ui->pushButtonPLWidth) + { + SetPLWidth(qsFormula); + } + else if (sender() == ui->pushButtonPLAngle) + { + SetPLAngle(qsFormula); + } + else + { + // should not get here! + pleFormula->setPlainText(qsFormula); + } + UpdatePatternLabelValues(); + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogSeamAllowance::DeployGrainlineRotation() { DeployFormula(ui->lineEditRotFormula, ui->pushButtonShowRot, m_iRotBaseHeight); } //--------------------------------------------------------------------------------------------------------------------- -void DialogSeamAllowance::DeployLength() +void DialogSeamAllowance::DeployGrainlineLength() { DeployFormula(ui->lineEditLenFormula, ui->pushButtonShowLen, m_iLenBaseHeight); } //--------------------------------------------------------------------------------------------------------------------- -void DialogSeamAllowance::ResetWarning() +void DialogSeamAllowance::DeployDLWidth() +{ + DeployFormula(ui->lineEditDLWidthFormula, ui->pushButtonShowDLWidth, m_DLWidthBaseHeight); +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogSeamAllowance::DeployDLHeight() +{ + DeployFormula(ui->lineEditDLHeightFormula, ui->pushButtonShowDLHeight, m_DLHeightBaseHeight); +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogSeamAllowance::DeployDLAngle() +{ + DeployFormula(ui->lineEditDLAngleFormula, ui->pushButtonShowDLAngle, m_DLAngleBaseHeight); +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogSeamAllowance::DeployPLWidth() +{ + DeployFormula(ui->lineEditPLWidthFormula, ui->pushButtonShowPLWidth, m_PLWidthBaseHeight); +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogSeamAllowance::DeployPLHeight() +{ + DeployFormula(ui->lineEditPLHeightFormula, ui->pushButtonShowPLHeight, m_PLHeightBaseHeight); +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogSeamAllowance::DeployPLAngle() +{ + DeployFormula(ui->lineEditPLAngleFormula, ui->pushButtonShowPLAngle, m_PLAngleBaseHeight); +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogSeamAllowance::ResetGrainlineWarning() { if (flagGFormulas || flagGPin) { @@ -1143,6 +1552,15 @@ void DialogSeamAllowance::ResetWarning() } } +//--------------------------------------------------------------------------------------------------------------------- +void DialogSeamAllowance::ResetLabelsWarning() +{ + if (flagDLAngle && (flagDLFormulas || flagDPin) && flagPLAngle && (flagPLFormulas || flagPPin)) + { + ui->tabWidget->setTabIcon(ui->tabWidget->indexOf(ui->tabLabels), QIcon()); + } +} + //--------------------------------------------------------------------------------------------------------------------- void DialogSeamAllowance::EvalWidth() { @@ -1295,7 +1713,7 @@ void DialogSeamAllowance::GrainlinePinPointChanged() flagGPin = true; color = okColor; - ResetWarning(); + ResetGrainlineWarning(); } else { @@ -1317,8 +1735,8 @@ void DialogSeamAllowance::GrainlinePinPointChanged() void DialogSeamAllowance::DetailPinPointChanged() { QColor color = okColor; - const quint32 topPinId = getCurrentObjectId(ui->comboBoxDetailLabelTopLeftPin); - const quint32 bottomPinId = getCurrentObjectId(ui->comboBoxDetailLabelBottomRightPin); + const quint32 topPinId = getCurrentObjectId(ui->comboBoxDLTopLeftPin); + const quint32 bottomPinId = getCurrentObjectId(ui->comboBoxDLBottomRightPin); if ((topPinId == NULL_ID && bottomPinId == NULL_ID) || (topPinId != NULL_ID && bottomPinId != NULL_ID && topPinId != bottomPinId)) { @@ -1338,8 +1756,8 @@ void DialogSeamAllowance::DetailPinPointChanged() QIcon icon(":/icons/win.icon.theme/16x16/status/dialog-warning.png"); ui->tabWidget->setTabIcon(ui->tabWidget->indexOf(ui->tabLabels), icon); } - ChangeColor(ui->labelDetailLabelTopLeftPin, color); - ChangeColor(ui->labelDetailLabelBottomRightPin, color); + ChangeColor(ui->labelDLTopLeftPin, color); + ChangeColor(ui->labelDLBottomRightPin, color); CheckState(); } @@ -1347,8 +1765,8 @@ void DialogSeamAllowance::DetailPinPointChanged() void DialogSeamAllowance::PatternPinPointChanged() { QColor color = okColor; - const quint32 topPinId = getCurrentObjectId(ui->comboBoxPatternLabelTopLeftPin); - const quint32 bottomPinId = getCurrentObjectId(ui->comboBoxPatternLabelBottomRightPin); + const quint32 topPinId = getCurrentObjectId(ui->comboBoxPLTopLeftPin); + const quint32 bottomPinId = getCurrentObjectId(ui->comboBoxPLBottomRightPin); if ((topPinId == NULL_ID && bottomPinId == NULL_ID) || (topPinId != NULL_ID && bottomPinId != NULL_ID && topPinId != bottomPinId)) { @@ -1368,8 +1786,8 @@ void DialogSeamAllowance::PatternPinPointChanged() QIcon icon(":/icons/win.icon.theme/16x16/status/dialog-warning.png"); ui->tabWidget->setTabIcon(ui->tabWidget->indexOf(ui->tabLabels), icon); } - ChangeColor(ui->labelPatternLabelTopLeftPin, color); - ChangeColor(ui->labelPatternLabelBottomRightPin, color); + ChangeColor(ui->labelPLTopLeftPin, color); + ChangeColor(ui->labelPLBottomRightPin, color); CheckState(); } @@ -1400,13 +1818,15 @@ VPiece DialogSeamAllowance::CreatePiece() const piece.GetPatternPieceData().SetFontSize(m_oldData.GetFontSize()); piece.GetPatternPieceData().SetRotation(m_oldData.GetRotation()); piece.GetPatternPieceData().SetVisible(ui->groupBoxDetailLabel->isChecked()); - piece.GetPatternPieceData().SetTopLeftPin(getCurrentObjectId(ui->comboBoxDetailLabelTopLeftPin)); - piece.GetPatternPieceData().SetBottomRightPin(getCurrentObjectId(ui->comboBoxDetailLabelBottomRightPin)); + piece.GetPatternPieceData().SetCenterPin(getCurrentObjectId(ui->comboBoxDLCenterPin)); + piece.GetPatternPieceData().SetTopLeftPin(getCurrentObjectId(ui->comboBoxDLTopLeftPin)); + piece.GetPatternPieceData().SetBottomRightPin(getCurrentObjectId(ui->comboBoxDLBottomRightPin)); piece.GetPatternInfo() = m_oldGeom; piece.GetPatternInfo().SetVisible(ui->groupBoxPatternLabel->isChecked()); - piece.GetPatternInfo().SetTopLeftPin(getCurrentObjectId(ui->comboBoxPatternLabelTopLeftPin)); - piece.GetPatternInfo().SetBottomRightPin(getCurrentObjectId(ui->comboBoxPatternLabelBottomRightPin)); + piece.GetPatternInfo().SetCenterPin(getCurrentObjectId(ui->comboBoxPLCenterPin)); + piece.GetPatternInfo().SetTopLeftPin(getCurrentObjectId(ui->comboBoxPLTopLeftPin)); + piece.GetPatternInfo().SetBottomRightPin(getCurrentObjectId(ui->comboBoxPLBottomRightPin)); piece.GetGrainlineGeometry() = m_oldGrainline; piece.GetGrainlineGeometry().SetVisible(ui->groupBoxGrainline->isChecked()); @@ -1814,26 +2234,6 @@ void DialogSeamAllowance::InitPatternPieceDataTab() ui->lineEditLetter->setClearButtonEnabled(true); #endif - InitPinPoint(ui->comboBoxDetailLabelTopLeftPin); - InitPinPoint(ui->comboBoxDetailLabelBottomRightPin); - - connect(ui->comboBoxDetailLabelTopLeftPin, - static_cast(&QComboBox::currentIndexChanged), - this, &DialogSeamAllowance::DetailPinPointChanged); - connect(ui->comboBoxDetailLabelBottomRightPin, - static_cast(&QComboBox::currentIndexChanged), - this, &DialogSeamAllowance::DetailPinPointChanged); - - InitPinPoint(ui->comboBoxPatternLabelTopLeftPin); - InitPinPoint(ui->comboBoxPatternLabelBottomRightPin); - - connect(ui->comboBoxPatternLabelTopLeftPin, - static_cast(&QComboBox::currentIndexChanged), - this, &DialogSeamAllowance::PatternPinPointChanged); - connect(ui->comboBoxPatternLabelBottomRightPin, - static_cast(&QComboBox::currentIndexChanged), - this, &DialogSeamAllowance::PatternPinPointChanged); - connect(ui->lineEditName, &QLineEdit::textChanged, this, &DialogSeamAllowance::NameDetailChanged); m_qslMaterials << QApplication::translate("Detail", "Fabric", 0) @@ -1854,30 +2254,99 @@ void DialogSeamAllowance::InitPatternPieceDataTab() m_qslPlacements << tr("None") << tr("Cut on fold"); ui->comboBoxPlacement->addItems(m_qslPlacements); - ui->pushButtonRot->setIcon(QIcon("://icon/16x16/fx.png")); - ui->pushButtonLen->setIcon(QIcon("://icon/16x16/fx.png")); connect(ui->pushButtonAdd, &QPushButton::clicked, this, &DialogSeamAllowance::AddUpdate); connect(ui->pushButtonCancel, &QPushButton::clicked, this, &DialogSeamAllowance::Cancel); connect(ui->pushButtonRemove, &QPushButton::clicked, this, &DialogSeamAllowance::Remove); connect(ui->listWidgetMCP, &QListWidget::itemClicked, this, &DialogSeamAllowance::SetEditMode); connect(ui->comboBoxMaterial, &QComboBox::currentTextChanged, this, &DialogSeamAllowance::MaterialChanged); + + SetAddMode(); +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogSeamAllowance::InitLabelsTab() +{ + m_DLWidthBaseHeight = ui->lineEditDLWidthFormula->height(); + m_DLHeightBaseHeight = ui->lineEditDLHeightFormula->height(); + m_DLAngleBaseHeight = ui->lineEditDLAngleFormula->height(); + + connect(ui->groupBoxDetailLabel, &QGroupBox::toggled, this, &DialogSeamAllowance::EnabledDetailLabel); + InitPinPoint(ui->comboBoxDLCenterPin); + InitPinPoint(ui->comboBoxDLTopLeftPin); + InitPinPoint(ui->comboBoxDLBottomRightPin); + + connect(ui->comboBoxDLTopLeftPin, + static_cast(&QComboBox::currentIndexChanged), + this, &DialogSeamAllowance::DetailPinPointChanged); + connect(ui->comboBoxDLBottomRightPin, + static_cast(&QComboBox::currentIndexChanged), + this, &DialogSeamAllowance::DetailPinPointChanged); + + connect(ui->pushButtonDLWidth, &QPushButton::clicked, this, &DialogSeamAllowance::EditDLFormula); + connect(ui->pushButtonDLHeight, &QPushButton::clicked, this, &DialogSeamAllowance::EditDLFormula); + connect(ui->pushButtonDLAngle, &QPushButton::clicked, this, &DialogSeamAllowance::EditDLFormula); + + connect(ui->lineEditDLWidthFormula, &QPlainTextEdit::textChanged, this, + &DialogSeamAllowance::UpdateDetailLabelValues); + connect(ui->lineEditDLHeightFormula, &QPlainTextEdit::textChanged, this, + &DialogSeamAllowance::UpdateDetailLabelValues); + connect(ui->lineEditDLAngleFormula, &QPlainTextEdit::textChanged, this, + &DialogSeamAllowance::UpdateDetailLabelValues); + + connect(ui->pushButtonShowDLWidth, &QPushButton::clicked, this, &DialogSeamAllowance::DeployDLWidth); + connect(ui->pushButtonShowDLHeight, &QPushButton::clicked, this, &DialogSeamAllowance::DeployDLHeight); + connect(ui->pushButtonShowDLAngle, &QPushButton::clicked, this, &DialogSeamAllowance::DeployDLAngle); + + EnabledDetailLabel(); + + m_PLWidthBaseHeight = ui->lineEditPLWidthFormula->height(); + m_PLHeightBaseHeight = ui->lineEditPLHeightFormula->height(); + m_PLAngleBaseHeight = ui->lineEditPLAngleFormula->height(); + + connect(ui->groupBoxPatternLabel, &QGroupBox::toggled, this, &DialogSeamAllowance::EnabledPatternLabel); + InitPinPoint(ui->comboBoxPLCenterPin); + InitPinPoint(ui->comboBoxPLTopLeftPin); + InitPinPoint(ui->comboBoxPLBottomRightPin); + + connect(ui->comboBoxPLTopLeftPin, + static_cast(&QComboBox::currentIndexChanged), + this, &DialogSeamAllowance::PatternPinPointChanged); + connect(ui->comboBoxPLBottomRightPin, + static_cast(&QComboBox::currentIndexChanged), + this, &DialogSeamAllowance::PatternPinPointChanged); + + connect(ui->pushButtonPLWidth, &QPushButton::clicked, this, &DialogSeamAllowance::EditPLFormula); + connect(ui->pushButtonPLHeight, &QPushButton::clicked, this, &DialogSeamAllowance::EditPLFormula); + connect(ui->pushButtonPLAngle, &QPushButton::clicked, this, &DialogSeamAllowance::EditPLFormula); + + connect(ui->lineEditPLWidthFormula, &QPlainTextEdit::textChanged, this, + &DialogSeamAllowance::UpdatePatternLabelValues); + connect(ui->lineEditPLHeightFormula, &QPlainTextEdit::textChanged, this, + &DialogSeamAllowance::UpdatePatternLabelValues); + connect(ui->lineEditPLAngleFormula, &QPlainTextEdit::textChanged, this, + &DialogSeamAllowance::UpdatePatternLabelValues); + + connect(ui->pushButtonShowPLWidth, &QPushButton::clicked, this, &DialogSeamAllowance::DeployPLWidth); + connect(ui->pushButtonShowPLHeight, &QPushButton::clicked, this, &DialogSeamAllowance::DeployPLHeight); + connect(ui->pushButtonShowPLAngle, &QPushButton::clicked, this, &DialogSeamAllowance::DeployPLAngle); + + EnabledPatternLabel(); } //--------------------------------------------------------------------------------------------------------------------- void DialogSeamAllowance::InitGrainlineTab() { - connect(ui->groupBoxGrainline, &QGroupBox::toggled, this, &DialogSeamAllowance::EnableGrainlineRotation); - connect(ui->pushButtonRot, &QPushButton::clicked, this, &DialogSeamAllowance::EditFormula); - connect(ui->pushButtonLen, &QPushButton::clicked, this, &DialogSeamAllowance::EditFormula); - connect(ui->lineEditLenFormula, &QPlainTextEdit::textChanged, this, &DialogSeamAllowance::UpdateValues); - connect(ui->lineEditRotFormula, &QPlainTextEdit::textChanged, this, &DialogSeamAllowance::UpdateValues); + connect(ui->groupBoxGrainline, &QGroupBox::toggled, this, &DialogSeamAllowance::EnabledGrainline); + connect(ui->pushButtonRot, &QPushButton::clicked, this, &DialogSeamAllowance::EditGrainlineFormula); + connect(ui->pushButtonLen, &QPushButton::clicked, this, &DialogSeamAllowance::EditGrainlineFormula); + connect(ui->lineEditLenFormula, &QPlainTextEdit::textChanged, this, &DialogSeamAllowance::UpdateGrainlineValues); + connect(ui->lineEditRotFormula, &QPlainTextEdit::textChanged, this, &DialogSeamAllowance::UpdateGrainlineValues); - connect(ui->pushButtonShowRot, &QPushButton::clicked, this, &DialogSeamAllowance::DeployRotation); - connect(ui->pushButtonShowLen, &QPushButton::clicked, this, &DialogSeamAllowance::DeployLength); + connect(ui->pushButtonShowRot, &QPushButton::clicked, this, &DialogSeamAllowance::DeployGrainlineRotation); + connect(ui->pushButtonShowLen, &QPushButton::clicked, this, &DialogSeamAllowance::DeployGrainlineLength); - SetAddMode(); - EnableGrainlineRotation(); + EnabledGrainline(); ui->comboBoxArrow->addItem(tr("Both")); ui->comboBoxArrow->addItem(tr("Just front")); @@ -1913,10 +2382,13 @@ void DialogSeamAllowance::InitAllPinComboboxes() InitPinPoint(ui->comboBoxGrainlineTopPin); InitPinPoint(ui->comboBoxGrainlineBottomPin); - InitPinPoint(ui->comboBoxDetailLabelTopLeftPin); - InitPinPoint(ui->comboBoxDetailLabelBottomRightPin); - InitPinPoint(ui->comboBoxPatternLabelTopLeftPin); - InitPinPoint(ui->comboBoxPatternLabelBottomRightPin); + InitPinPoint(ui->comboBoxDLCenterPin); + InitPinPoint(ui->comboBoxDLTopLeftPin); + InitPinPoint(ui->comboBoxDLBottomRightPin); + + InitPinPoint(ui->comboBoxPLCenterPin); + InitPinPoint(ui->comboBoxPLTopLeftPin); + InitPinPoint(ui->comboBoxPLBottomRightPin); } //--------------------------------------------------------------------------------------------------------------------- @@ -1999,13 +2471,13 @@ QVector DialogSeamAllowance::GetPieceInternals(const QListWidget *list) const } //--------------------------------------------------------------------------------------------------------------------- -void DialogSeamAllowance::SetGrainlineAngle(const VGrainlineData &data) +void DialogSeamAllowance::SetGrainlineAngle(const QString &angleFormula) { - const QString formula = qApp->TrVars()->FormulaToUser(data.GetRotation(), qApp->Settings()->GetOsSeparator()); + const QString formula = qApp->TrVars()->FormulaToUser(angleFormula, qApp->Settings()->GetOsSeparator()); // increase height if needed. if (formula.length() > 80) { - this->DeployRotation(); + this->DeployGrainlineRotation(); } ui->lineEditRotFormula->setPlainText(formula); @@ -2013,15 +2485,99 @@ void DialogSeamAllowance::SetGrainlineAngle(const VGrainlineData &data) } //--------------------------------------------------------------------------------------------------------------------- -void DialogSeamAllowance::SetGrainlineLength(const VGrainlineData &data) +void DialogSeamAllowance::SetGrainlineLength(const QString &lengthFormula) { - const QString formula = qApp->TrVars()->FormulaToUser(data.GetLength(), qApp->Settings()->GetOsSeparator()); + const QString formula = qApp->TrVars()->FormulaToUser(lengthFormula, qApp->Settings()->GetOsSeparator()); // increase height if needed. if (formula.length() > 80) { - this->DeployLength(); + this->DeployGrainlineLength(); } ui->lineEditLenFormula->setPlainText(formula); MoveCursorToEnd(ui->lineEditLenFormula); } + +//--------------------------------------------------------------------------------------------------------------------- +void DialogSeamAllowance::SetDLWidth(const QString &widthFormula) +{ + const QString formula = qApp->TrVars()->FormulaToUser(widthFormula, qApp->Settings()->GetOsSeparator()); + // increase height if needed. + if (formula.length() > 80) + { + this->DeployDLWidth(); + } + ui->lineEditDLWidthFormula->setPlainText(formula); + + MoveCursorToEnd(ui->lineEditDLWidthFormula); +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogSeamAllowance::SetDLHeight(const QString &heightFormula) +{ + const QString formula = qApp->TrVars()->FormulaToUser(heightFormula, qApp->Settings()->GetOsSeparator()); + // increase height if needed. + if (formula.length() > 80) + { + this->DeployDLHeight(); + } + ui->lineEditDLHeightFormula->setPlainText(formula); + + MoveCursorToEnd(ui->lineEditDLHeightFormula); +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogSeamAllowance::SetDLAngle(const QString &angleFormula) +{ + const QString formula = qApp->TrVars()->FormulaToUser(angleFormula, qApp->Settings()->GetOsSeparator()); + // increase height if needed. + if (formula.length() > 80) + { + this->DeployDLAngle(); + } + ui->lineEditDLAngleFormula->setPlainText(formula); + + MoveCursorToEnd(ui->lineEditDLAngleFormula); +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogSeamAllowance::SetPLWidth(const QString &widthFormula) +{ + const QString formula = qApp->TrVars()->FormulaToUser(widthFormula, qApp->Settings()->GetOsSeparator()); + // increase height if needed. + if (formula.length() > 80) + { + this->DeployPLWidth(); + } + ui->lineEditPLWidthFormula->setPlainText(formula); + + MoveCursorToEnd(ui->lineEditPLWidthFormula); +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogSeamAllowance::SetPLHeight(const QString &heightFormula) +{ + const QString formula = qApp->TrVars()->FormulaToUser(heightFormula, qApp->Settings()->GetOsSeparator()); + // increase height if needed. + if (formula.length() > 80) + { + this->DeployPLHeight(); + } + ui->lineEditPLHeightFormula->setPlainText(formula); + + MoveCursorToEnd(ui->lineEditPLHeightFormula); +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogSeamAllowance::SetPLAngle(const QString &angleFormula) +{ + const QString formula = qApp->TrVars()->FormulaToUser(angleFormula, qApp->Settings()->GetOsSeparator()); + // increase height if needed. + if (formula.length() > 80) + { + this->DeployPLAngle(); + } + ui->lineEditPLAngleFormula->setPlainText(formula); + + MoveCursorToEnd(ui->lineEditPLAngleFormula); +} diff --git a/src/libs/vtools/dialogs/tools/dialogseamallowance.h b/src/libs/vtools/dialogs/tools/dialogseamallowance.h index 0bcb47371..14302ff5f 100644 --- a/src/libs/vtools/dialogs/tools/dialogseamallowance.h +++ b/src/libs/vtools/dialogs/tools/dialogseamallowance.h @@ -94,14 +94,34 @@ private slots: void PathDialogClosed(int result); void TabChanged(int index); - void UpdateValues(); + void UpdateGrainlineValues(); + void UpdateDetailLabelValues(); + void UpdatePatternLabelValues(); + void SetAddMode(); void SetEditMode(); - void EnableGrainlineRotation(); - void EditFormula(); - void DeployRotation(); - void DeployLength(); - void ResetWarning(); + + void EditGrainlineFormula(); + void EditDLFormula(); + void EditPLFormula(); + + void DeployGrainlineRotation(); + void DeployGrainlineLength(); + + void DeployDLWidth(); + void DeployDLHeight(); + void DeployDLAngle(); + + void DeployPLWidth(); + void DeployPLHeight(); + void DeployPLAngle(); + + void ResetGrainlineWarning(); + void ResetLabelsWarning(); + + void EnabledGrainline(); + void EnabledDetailLabel(); + void EnabledPatternLabel(); void EvalWidth(); void EvalWidthBefore(); @@ -132,6 +152,10 @@ private: bool flagDPin; bool flagPPin; bool flagGFormulas; + bool flagDLAngle; + bool flagDLFormulas; + bool flagPLAngle; + bool flagPLFormulas; bool m_bAddMode; qreal m_mx; qreal m_my; @@ -149,6 +173,12 @@ private: VGrainlineData m_oldGrainline; int m_iRotBaseHeight; int m_iLenBaseHeight; + int m_DLWidthBaseHeight; + int m_DLHeightBaseHeight; + int m_DLAngleBaseHeight; + int m_PLWidthBaseHeight; + int m_PLHeightBaseHeight; + int m_PLAngleBaseHeight; int m_formulaBaseWidth; int m_formulaBaseWidthBefore; int m_formulaBaseWidthAfter; @@ -190,6 +220,7 @@ private: void InitSAIncludeType(); void InitInternalPathsTab(); void InitPatternPieceDataTab(); + void InitLabelsTab(); void InitGrainlineTab(); void InitPinsTab(); void InitAllPinComboboxes(); @@ -198,8 +229,17 @@ private: template QVector GetPieceInternals(const QListWidget *list) const; - void SetGrainlineAngle(const VGrainlineData &data); - void SetGrainlineLength(const VGrainlineData &data); + + void SetGrainlineAngle(const QString &angleFormula); + void SetGrainlineLength(const QString &lengthFormula); + + void SetDLWidth(const QString &widthFormula); + void SetDLHeight(const QString &heightFormula); + void SetDLAngle(const QString &angleFormula); + + void SetPLWidth(const QString &widthFormula); + void SetPLHeight(const QString &heightFormula); + void SetPLAngle(const QString &angleFormula); }; #endif // DIALOGSEAMALLOWANCE_H diff --git a/src/libs/vtools/dialogs/tools/dialogseamallowance.ui b/src/libs/vtools/dialogs/tools/dialogseamallowance.ui index 649d9382a..c558d46ab 100644 --- a/src/libs/vtools/dialogs/tools/dialogseamallowance.ui +++ b/src/libs/vtools/dialogs/tools/dialogseamallowance.ui @@ -6,8 +6,8 @@ 0 0 - 639 - 680 + 532 + 611 @@ -20,6 +20,9 @@ + + 4 + Main path @@ -1057,97 +1060,1430 @@ Labels - - - - 30 - 40 - 234 - 96 - - - - Detail label visible - - - true - - - true - - - false - - - - QFormLayout::ExpandingFieldsGrow - - - - - Top left pin: + + + + + Qt::Horizontal + + + + true - - - - - - - - - Bottom right pin: + + Detail label visible - - - - - - - - - - - 30 - 240 - 234 - 198 - - - - Pattern label visible - - - true - - - false - - - - QFormLayout::ExpandingFieldsGrow - - - - - Top left pin: + + true - - - - - - - - - Bottom right pin: + + true + + false + + + + + + + + + 0 + 0 + + + + + + + + + 255 + 0 + 0 + + + + + + + + + 255 + 0 + 0 + + + + + + + + + 159 + 158 + 158 + + + + + + + + Width: + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Formula wizard + + + ... + + + + :/icon/24x24/fx.png:/icon/24x24/fx.png + + + + 24 + 24 + + + + + + + + + + + :/icon/24x24/equal.png + + + + + + + + 0 + 0 + + + + + 87 + 0 + + + + + 0 + 0 + + + + Value + + + _ + + + + + + + + + + + + 0 + 0 + + + + + 16777215 + 28 + + + + Calculation + + + true + + + 1 + + + + + + + + 18 + 18 + + + + + 0 + 0 + + + + <html><head/><body><p>Show full calculation in message box</p></body></html> + + + + + + + .. + + + + 16 + 16 + + + + true + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + 0 + 0 + + + + + + + + + 255 + 0 + 0 + + + + + + + + + 255 + 0 + 0 + + + + + + + + + 159 + 158 + 158 + + + + + + + + Height: + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Formula wizard + + + ... + + + + :/icon/24x24/fx.png:/icon/24x24/fx.png + + + + 24 + 24 + + + + + + + + + + + :/icon/24x24/equal.png + + + + + + + + 0 + 0 + + + + + 87 + 0 + + + + + 0 + 0 + + + + Value + + + _ + + + + + + + + + + + + 0 + 0 + + + + + 16777215 + 28 + + + + Calculation + + + true + + + 1 + + + + + + + + 18 + 18 + + + + + 0 + 0 + + + + <html><head/><body><p>Show full calculation in message box</p></body></html> + + + + + + + .. + + + + 16 + 16 + + + + true + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + QFormLayout::ExpandingFieldsGrow + + + + + Center pin: + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Qt::Horizontal + + + + + + + QFormLayout::ExpandingFieldsGrow + + + + + Top left pin: + + + + + + + + + + Bottom right pin: + + + + + + + + + + + + Qt::Horizontal + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + 0 + 0 + + + + + + + + + 255 + 0 + 0 + + + + + + + + + 255 + 0 + 0 + + + + + + + + + 159 + 158 + 158 + + + + + + + + Angle: + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Formula wizard + + + ... + + + + :/icon/24x24/fx.png:/icon/24x24/fx.png + + + + 24 + 24 + + + + + + + + + + + :/icon/24x24/equal.png + + + + + + + + 0 + 0 + + + + + 87 + 0 + + + + + 0 + 0 + + + + Value + + + _ + + + + + + + + + + + + 0 + 0 + + + + + 16777215 + 28 + + + + Calculation + + + true + + + 0 + + + + + + + + 18 + 18 + + + + + 0 + 0 + + + + <html><head/><body><p>Show full calculation in message box</p></body></html> + + + + + + + .. + + + + 16 + 16 + + + + true + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + - - - - - - + + + true + + + Pattern label visible + + + true + + + false + + + + + + + + + 0 + 0 + + + + + + + + + 255 + 0 + 0 + + + + + + + + + 255 + 0 + 0 + + + + + + + + + 159 + 158 + 158 + + + + + + + + Width: + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Formula wizard + + + ... + + + + :/icon/24x24/fx.png:/icon/24x24/fx.png + + + + 24 + 24 + + + + + + + + + + + :/icon/24x24/equal.png + + + + + + + + 0 + 0 + + + + + 87 + 0 + + + + + 0 + 0 + + + + Value + + + _ + + + + + + + + + + + + 0 + 0 + + + + + 16777215 + 28 + + + + Calculation + + + true + + + 1 + + + + + + + + 18 + 18 + + + + + 0 + 0 + + + + <html><head/><body><p>Show full calculation in message box</p></body></html> + + + + + + + .. + + + + 16 + 16 + + + + true + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + 0 + 0 + + + + + + + + + 255 + 0 + 0 + + + + + + + + + 255 + 0 + 0 + + + + + + + + + 159 + 158 + 158 + + + + + + + + Height: + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Formula wizard + + + ... + + + + :/icon/24x24/fx.png:/icon/24x24/fx.png + + + + 24 + 24 + + + + + + + + + + + :/icon/24x24/equal.png + + + + + + + + 0 + 0 + + + + + 87 + 0 + + + + + 0 + 0 + + + + Value + + + _ + + + + + + + + + + + + 0 + 0 + + + + + 16777215 + 28 + + + + Calculation + + + true + + + 1 + + + + + + + + 18 + 18 + + + + + 0 + 0 + + + + <html><head/><body><p>Show full calculation in message box</p></body></html> + + + + + + + .. + + + + 16 + 16 + + + + true + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + QFormLayout::ExpandingFieldsGrow + + + + + Center pin: + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Qt::Horizontal + + + + + + + QFormLayout::ExpandingFieldsGrow + + + + + Top left pin: + + + + + + + + + + Bottom right pin: + + + + + + + + + + + + Qt::Horizontal + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + 0 + 0 + + + + + + + + + 255 + 0 + 0 + + + + + + + + + 255 + 0 + 0 + + + + + + + + + 159 + 158 + 158 + + + + + + + + Angle: + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Formula wizard + + + ... + + + + :/icon/24x24/fx.png:/icon/24x24/fx.png + + + + 24 + 24 + + + + + + + + + + + :/icon/24x24/equal.png + + + + + + + + 0 + 0 + + + + + 87 + 0 + + + + + 0 + 0 + + + + Value + + + _ + + + + + + + + + + + + 0 + 0 + + + + + 16777215 + 28 + + + + Calculation + + + true + + + 0 + + + + + + + + 18 + 18 + + + + + 0 + 0 + + + + <html><head/><body><p>Show full calculation in message box</p></body></html> + + + + + + + .. + + + + 16 + 16 + + + + true + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + +