Skip to content

Commit d5aaf45

Browse files
DSCaskeyslspencer
authored andcommitted
enhance fx dialog
add value column and additional fx insert toolbuttons
1 parent e5100dd commit d5aaf45

File tree

3 files changed

+354
-46
lines changed

3 files changed

+354
-46
lines changed

‎src/libs/vtools/dialogs/support/edit_formula_dialog.cpp‎

Lines changed: 130 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@
103103

104104
template <class T> class QSharedPointer;
105105

106-
enum {ColumnNumber = 0, ColumnName, ColumnFullName};
106+
enum {ColumnNumber = 0, ColumnName, ColumnValue, ColumnFullName};
107107

108108
//---------------------------------------------------------------------------------------------------------------------
109109
EditFormulaDialog::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
//---------------------------------------------------------------------------------------------------------------------
387414
void 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
//---------------------------------------------------------------------------------------------------------------------
396425
void 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
//---------------------------------------------------------------------------------------------------------------------
405436
void 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
//---------------------------------------------------------------------------------------------------------------------
423458
void 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
//---------------------------------------------------------------------------------------------------------------------
450491
void 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
//---------------------------------------------------------------------------------------------------------------------
459502
void 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
//---------------------------------------------------------------------------------------------------------------------

‎src/libs/vtools/dialogs/support/edit_formula_dialog.h‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,7 @@ public slots:
102102
virtual void EvalFormula() Q_DECL_OVERRIDE;
103103
void valueChanged(int row);
104104
void tabChanged(int row);
105-
void insertVariable();
106-
void insertValue(QTableWidgetItem *item);
105+
void insertVariable(const QString &rotation);
107106
void measurements();
108107
void lineLengths();
109108
void arcRadii();
@@ -141,6 +140,8 @@ private slots:
141140
void showVariable(const QMap<key, val> &var);
142141
void showMeasurements(const QMap<QString, QSharedPointer<MeasurementVariable> > &var);
143142
void showFunctions();
143+
void showInsertionButtons(const bool &visible);
144+
void showHeaderUnits(QTableWidget *table, const QString &unit);
144145

145146
void setDescription(const QString &name, qreal value, const QString &unit,
146147
const QString &type, const QString &description);

0 commit comments

Comments
 (0)