103103
104104template <class T > class QSharedPointer ;
105105
106- enum {ColumnNumber = 0 , ColumnName, ColumnFullName};
106+ enum {ColumnNumber = 0 , ColumnName, ColumnValue, ColumnFullName};
107107
108108// ---------------------------------------------------------------------------------------------------------------------
109109EditFormulaDialog::EditFormulaDialog (const VContainer *data, const quint32 &toolId, const quint16 &source,
@@ -145,11 +145,34 @@ EditFormulaDialog::EditFormulaDialog(const VContainer *data, const quint32 &tool
145145 flagFormula = false ;
146146 CheckState ();
147147
148- connect (ui->insert_PushButton , &QPushButton::clicked, this , &EditFormulaDialog::insertVariable);
149- connect (ui->clear_PushButton , &QPushButton::clicked, this , &EditFormulaDialog::clearFormula);
150- connect (ui->undo_PushButton , &QPushButton::clicked, this , &EditFormulaDialog::undoFormula);
151- connect (ui->tableWidget , &QTableWidget::itemDoubleClicked, this , &EditFormulaDialog::insertValue);
152- connect (ui->plainTextEditFormula , &QPlainTextEdit::textChanged, this , &EditFormulaDialog::FormulaChanged);
148+ connect (ui->insert_PushButton , &QPushButton::clicked,
149+ this , [this , rotation = QString (" " )]() {insertVariable (rotation);});
150+
151+ connect (ui->fx_minus_45_PushButton , &QPushButton::clicked,
152+ this , [this , rotation = QString (" - 45" )]() {insertVariable (rotation);});
153+
154+ connect (ui->fx_plus_45_PushButton , &QPushButton::clicked,
155+ this , [this , rotation = QString (" + 45" )]() {insertVariable (rotation);});
156+
157+ connect (ui->fx_minus_90_PushButton , &QPushButton::clicked,
158+ this , [this , rotation = QString (" - 90" )]() {insertVariable (rotation);});
159+
160+ connect (ui->fx_plus_90_PushButton , &QPushButton::clicked,
161+ this , [this , rotation = QString (" + 90" )]() {insertVariable (rotation);});
162+
163+ connect (ui->fx_minus_180_PushButton , &QPushButton::clicked,
164+ this , [this , rotation = QString (" - 180" )]() {insertVariable (rotation);});
165+
166+ connect (ui->fx_plus_180_PushButton , &QPushButton::clicked,
167+ this , [this , rotation = QString (" + 180" )]() {insertVariable (rotation);});
168+
169+ connect (ui->tableWidget ,&QTableWidget::itemDoubleClicked,
170+ this , [this , rotation = QString (" " )]() {insertVariable (rotation);});
171+
172+ connect (ui->clear_PushButton , &QPushButton::clicked, this , &EditFormulaDialog::clearFormula);
173+ connect (ui->undo_PushButton , &QPushButton::clicked, this , &EditFormulaDialog::undoFormula);
174+
175+ connect (ui->plainTextEditFormula , &QPlainTextEdit::textChanged, this , &EditFormulaDialog::FormulaChanged);
153176
154177 // Disable Qt::WaitCursor
155178#ifndef QT_NO_CURSOR
@@ -163,7 +186,7 @@ EditFormulaDialog::EditFormulaDialog(const VContainer *data, const quint32 &tool
163186 }
164187#endif
165188
166- ui->tableWidget ->setColumnCount (3 );
189+ ui->tableWidget ->setColumnCount (4 );
167190 ui->tableWidget ->setEditTriggers (QTableWidget::NoEditTriggers);
168191 ui->tableWidget ->verticalHeader ()->hide ();
169192 ui->tableWidget ->setSelectionBehavior (QAbstractItemView::SelectRows);
@@ -301,10 +324,10 @@ void EditFormulaDialog::tabChanged(int row)
301324 break ;
302325 }
303326 case VariableTab::LineLengths:
304- {
305- lineLengths ();
306- break ;
307- }
327+ {
328+ lineLengths ();
329+ break ;
330+ }
308331 case VariableTab::LineAngles:
309332 {
310333 lineAngles ();
@@ -340,19 +363,15 @@ void EditFormulaDialog::tabChanged(int row)
340363}
341364
342365// ---------------------------------------------------------------------------------------------------------------------
343- // / @brief insertVariable insert variable into line edit
344- // ---------------------------------------------------------------------------------------------------------------------
345- void EditFormulaDialog::insertVariable ()
346- {
347- insertValue (ui->tableWidget ->currentItem ());
348- }
349-
350- // ---------------------------------------------------------------------------------------------------------------------
351- // / @brief insertValue insert variable into line edit
352- // / @param item chosen item of table widget
366+ // / @brief insertVariable insert variable from table into formula
367+ // /
368+ // / This method inserts the current table item variable string into the formula string.
369+ // /
370+ // / @param rotation additional string used to insert +- 90 or 180 degs from an angle variable string.
353371// ---------------------------------------------------------------------------------------------------------------------
354- void EditFormulaDialog::insertValue (QTableWidgetItem *item )
372+ void EditFormulaDialog::insertVariable ( const QString &rotation )
355373{
374+ QTableWidgetItem *item = ui->tableWidget ->currentItem ();
356375 if (item != nullptr )
357376 {
358377 QTextCursor cursor = ui->plainTextEditFormula ->textCursor ();
@@ -374,7 +393,15 @@ void EditFormulaDialog::insertValue(QTableWidgetItem *item)
374393 }
375394 else
376395 {
377- cursor.insertText (ui->tableWidget ->item (item->row (), ColumnName)->text ());
396+ if (rotation.isEmpty ())
397+ {
398+ cursor.insertText (ui->tableWidget ->item (item->row (), ColumnName)->text ());
399+ }
400+ else
401+ {
402+ cursor.insertText (QStringLiteral (" (" ) + ui->tableWidget ->item (item->row (), ColumnName)->text () +
403+ rotation + QStringLiteral (" )" ));
404+ }
378405 }
379406 ui->plainTextEditFormula ->setTextCursor (cursor);
380407 ui->plainTextEditFormula ->setFocus ();
@@ -386,7 +413,9 @@ void EditFormulaDialog::insertValue(QTableWidgetItem *item)
386413// ---------------------------------------------------------------------------------------------------------------------
387414void EditFormulaDialog::measurements ()
388415{
389- ui->checkBoxHideEmpty ->setEnabled (true );
416+ ui->checkBoxHideEmpty ->setVisible (true );
417+ showHeaderUnits (ui->tableWidget , UnitsToStr (qApp->patternUnit ()));
418+ showInsertionButtons (false );
390419 showMeasurements (data->DataMeasurements ());
391420}
392421
@@ -395,7 +424,9 @@ void EditFormulaDialog::measurements()
395424// ---------------------------------------------------------------------------------------------------------------------
396425void EditFormulaDialog::lineLengths ()
397426{
398- ui->checkBoxHideEmpty ->setEnabled (false );
427+ ui->checkBoxHideEmpty ->setVisible (false );
428+ showHeaderUnits (ui->tableWidget , UnitsToStr (qApp->patternUnit ()));
429+ showInsertionButtons (false );
399430 showVariable (data->lineLengthsData ());
400431}
401432
@@ -404,7 +435,9 @@ void EditFormulaDialog::lineLengths()
404435// ---------------------------------------------------------------------------------------------------------------------
405436void EditFormulaDialog::arcRadii ()
406437{
407- ui->checkBoxHideEmpty ->setEnabled (false );
438+ ui->checkBoxHideEmpty ->setVisible (false );
439+ showHeaderUnits (ui->tableWidget , UnitsToStr (qApp->patternUnit ()));
440+ showInsertionButtons (false );
408441 showVariable (data->arcRadiusesData ());
409442}
410443
@@ -413,7 +446,9 @@ void EditFormulaDialog::arcRadii()
413446// ---------------------------------------------------------------------------------------------------------------------
414447 void EditFormulaDialog::curveAngles ()
415448{
416- ui->checkBoxHideEmpty ->setEnabled (false );
449+ ui->checkBoxHideEmpty ->setVisible (false );
450+ showHeaderUnits (ui->tableWidget , degreeSymbol);
451+ showInsertionButtons (true );
417452 showVariable (data->curveAnglesData ());
418453}
419454
@@ -422,7 +457,9 @@ void EditFormulaDialog::arcRadii()
422457// ---------------------------------------------------------------------------------------------------------------------
423458void EditFormulaDialog::curveLengths ()
424459{
425- ui->checkBoxHideEmpty ->setEnabled (false );
460+ ui->checkBoxHideEmpty ->setVisible (false );
461+ showHeaderUnits (ui->tableWidget , UnitsToStr (qApp->patternUnit ()));
462+ showInsertionButtons (false );
426463 showVariable (data->curveLengthsData ());
427464}
428465
@@ -431,7 +468,9 @@ void EditFormulaDialog::curveLengths()
431468// ---------------------------------------------------------------------------------------------------------------------
432469 void EditFormulaDialog::controlPointLengths ()
433470{
434- ui->checkBoxHideEmpty ->setEnabled (false );
471+ ui->checkBoxHideEmpty ->setVisible (false );
472+ showHeaderUnits (ui->tableWidget , UnitsToStr (qApp->patternUnit ()));
473+ showInsertionButtons (false );
435474 showVariable (data->controlPointLengthsData ());
436475}
437476
@@ -440,7 +479,9 @@ void EditFormulaDialog::curveLengths()
440479// ---------------------------------------------------------------------------------------------------------------------
441480 void EditFormulaDialog::lineAngles ()
442481{
443- ui->checkBoxHideEmpty ->setEnabled (false );
482+ ui->checkBoxHideEmpty ->setVisible (false );
483+ showHeaderUnits (ui->tableWidget , degreeSymbol);
484+ showInsertionButtons (true );
444485 showVariable (data->lineAnglesData ());
445486}
446487
@@ -449,7 +490,9 @@ void EditFormulaDialog::curveLengths()
449490// ---------------------------------------------------------------------------------------------------------------------
450491void EditFormulaDialog::customVariables ()
451492{
452- ui->checkBoxHideEmpty ->setEnabled (false );
493+ ui->checkBoxHideEmpty ->setVisible (false );
494+ showHeaderUnits (ui->tableWidget , UnitsToStr (qApp->patternUnit ()));
495+ showInsertionButtons (false );
453496 showVariable (data->variablesData ());
454497}
455498
@@ -458,7 +501,8 @@ void EditFormulaDialog::customVariables()
458501// ---------------------------------------------------------------------------------------------------------------------
459502void EditFormulaDialog::functions ()
460503{
461- ui->checkBoxHideEmpty ->setEnabled (false );
504+ ui->checkBoxHideEmpty ->setVisible (false );
505+ showInsertionButtons (false );
462506 showFunctions ();
463507}
464508
@@ -571,6 +615,8 @@ void EditFormulaDialog::showVariable(const QMap<key, val> &var)
571615 ui->tableWidget ->blockSignals (true );
572616 ui->tableWidget ->clearContents ();
573617 ui->tableWidget ->setRowCount (0 );
618+ ui->tableWidget ->setColumnHidden (ColumnName, false );
619+ ui->tableWidget ->setColumnHidden (ColumnValue, false );
574620 ui->tableWidget ->setColumnHidden (ColumnNumber, true );
575621 ui->tableWidget ->setColumnHidden (ColumnFullName, true );
576622 ui->description_Label ->setText (" " );
@@ -588,11 +634,18 @@ void EditFormulaDialog::showVariable(const QMap<key, val> &var)
588634 ui->tableWidget ->setRowCount (ui->tableWidget ->rowCount () + 1 );
589635 QTableWidgetItem *item = new QTableWidgetItem (iMap.key ());
590636 ui->tableWidget ->setItem (ui->tableWidget ->rowCount ()-1 , ColumnName, item);
637+
638+ qreal length = *iMap.value ()->GetValue ();
639+ QTableWidgetItem *itemValue = new QTableWidgetItem (qApp->LocaleToString (length));
640+ itemValue->setSizeHint (QSize (70 , 20 ));
641+ itemValue->setTextAlignment (Qt::AlignHCenter | Qt::AlignVCenter);
642+ ui->tableWidget ->setItem (ui->tableWidget ->rowCount ()-1 , ColumnValue, itemValue);
591643 }
592644 }
593645 ui->tableWidget ->blockSignals (false );
594646 ui->tableWidget ->selectRow (0 );
595- ui->tableWidget ->horizontalHeader ()->setSectionResizeMode (QHeaderView::Stretch);
647+ ui->tableWidget ->resizeColumnsToContents ();
648+ ui->tableWidget ->horizontalHeader ()->setStretchLastSection (false );
596649}
597650
598651// ---------------------------------------------------------------------------------------------------------------------
@@ -605,6 +658,8 @@ void EditFormulaDialog::showMeasurements(const QMap<QString, QSharedPointer<Meas
605658 ui->tableWidget ->clearContents ();
606659 ui->tableWidget ->setRowCount (0 );
607660 ui->tableWidget ->setColumnHidden (ColumnNumber, false );
661+ ui->tableWidget ->setColumnHidden (ColumnName, false );
662+ ui->tableWidget ->setColumnHidden (ColumnValue, false );
608663 ui->tableWidget ->setColumnHidden (ColumnFullName, false );
609664 ui->description_Label ->setText (" " );
610665
@@ -620,12 +675,21 @@ void EditFormulaDialog::showMeasurements(const QMap<QString, QSharedPointer<Meas
620675 {// If we create this variable don't show
621676 ui->tableWidget ->setRowCount (ui->tableWidget ->rowCount () + 1 );
622677 QTableWidgetItem *itemName = new QTableWidgetItem (iMap.key ());
678+ itemName->setSizeHint (QSize (70 , 20 ));
623679 itemName->setToolTip (itemName->text ());
624680
681+ qreal length = *iMap.value ()->GetValue ();
682+ QTableWidgetItem *itemValue = new QTableWidgetItem (qApp->LocaleToString (length));
683+ itemValue->setSizeHint (QSize (70 , 20 ));
684+ itemValue->setTextAlignment (Qt::AlignHCenter | Qt::AlignVCenter);
685+
625686 QTableWidgetItem *itemNumber = new QTableWidgetItem ();
626687 itemNumber->setSizeHint (QSize (70 , 20 ));
627688 itemNumber->setTextAlignment (Qt::AlignHCenter | Qt::AlignVCenter);
689+
628690 QTableWidgetItem *itemFullName = new QTableWidgetItem ();
691+
692+
629693 QString number =tr (" Custom" );
630694 QString imgUrl = QString (" :/diagrams/custom.svg" );
631695 if (iMap.value ()->isCustom ())
@@ -648,6 +712,7 @@ void EditFormulaDialog::showMeasurements(const QMap<QString, QSharedPointer<Meas
648712
649713 ui->tableWidget ->setItem (ui->tableWidget ->rowCount ()-1 , ColumnNumber, itemNumber);
650714 ui->tableWidget ->setItem (ui->tableWidget ->rowCount ()-1 , ColumnName, itemName);
715+ ui->tableWidget ->setItem (ui->tableWidget ->rowCount ()-1 , ColumnValue, itemValue);
651716 ui->tableWidget ->setItem (ui->tableWidget ->rowCount ()-1 , ColumnFullName, itemFullName);
652717 }
653718 }
@@ -666,6 +731,8 @@ void EditFormulaDialog::showFunctions()
666731 ui->tableWidget ->clearContents ();
667732 ui->tableWidget ->setRowCount (0 );
668733 ui->tableWidget ->setColumnHidden (ColumnNumber, true );
734+ ui->tableWidget ->setColumnHidden (ColumnName, false );
735+ ui->tableWidget ->setColumnHidden (ColumnValue, true );
669736 ui->tableWidget ->setColumnHidden (ColumnFullName, true );
670737 ui->description_Label ->setText (" " );
671738
@@ -680,8 +747,37 @@ void EditFormulaDialog::showFunctions()
680747 }
681748
682749 ui->tableWidget ->blockSignals (false );
750+ ui->tableWidget ->resizeColumnsToContents ();
683751 ui->tableWidget ->selectRow (0 );
684- ui->tableWidget ->horizontalHeader ()->setSectionResizeMode (QHeaderView::Stretch);
752+ ui->tableWidget ->horizontalHeader ()->setStretchLastSection (false );
753+ }
754+
755+ // / @brief showInsertionButtons Show or hide the fx insertion pushbuttons
756+ // /
757+ // / This method sets the visibility of the enhanced fx insertion pushbuttons.
758+ // /
759+ // / @param visible bool state whether the button is visible or not.
760+ void EditFormulaDialog::showInsertionButtons (const bool &visible)
761+ {
762+ ui->fx_minus_45_PushButton ->setVisible (visible);
763+ ui->fx_plus_45_PushButton ->setVisible (visible);
764+ ui->fx_minus_90_PushButton ->setVisible (visible);
765+ ui->fx_plus_90_PushButton ->setVisible (visible);
766+ ui->fx_minus_180_PushButton ->setVisible (visible);
767+ ui->fx_plus_180_PushButton ->setVisible (visible);
768+ }
769+
770+ // / @brief showHeaderUnits Show the variable units in the header
771+ // /
772+ // / This method sets and shows the variables'unit type for the Value header column.
773+ // /
774+ // / @param table Table widget of variable data.
775+ // / @param unit Unit type to set in the Value header.
776+ void EditFormulaDialog::showHeaderUnits (QTableWidget *table, const QString &unit)
777+ {
778+ SCASSERT (table != nullptr )
779+
780+ table->horizontalHeaderItem (ColumnValue)->setText (QString (" Value (%1)" ).arg (unit));
685781}
686782
687783// ---------------------------------------------------------------------------------------------------------------------
0 commit comments