From 5933da7403e78a238d6652b5d634c0d60e4ce9d7 Mon Sep 17 00:00:00 2001 From: Valentina Zhuravska <none@none> Date: Tue, 17 May 2016 12:25:01 +0300 Subject: [PATCH] Resolved issue #472. Add 'Full Name' column to Formula dialog. --HG-- branch : feature --- .../support/dialogeditwrongformula.cpp | 93 +++++++++++++++---- .../dialogs/support/dialogeditwrongformula.h | 6 +- .../dialogs/support/dialogeditwrongformula.ui | 23 +++-- 3 files changed, 96 insertions(+), 26 deletions(-) diff --git a/src/libs/vtools/dialogs/support/dialogeditwrongformula.cpp b/src/libs/vtools/dialogs/support/dialogeditwrongformula.cpp index 847897656..05aa7d8ef 100644 --- a/src/libs/vtools/dialogs/support/dialogeditwrongformula.cpp +++ b/src/libs/vtools/dialogs/support/dialogeditwrongformula.cpp @@ -31,6 +31,8 @@ #include "../../../vpatterndb/vcontainer.h" #include "../../../vpatterndb/vtranslatevars.h" +enum {ColumnName = 0, ColumnFullName}; + //--------------------------------------------------------------------------------------------------------------------- DialogEditWrongFormula::DialogEditWrongFormula(const VContainer *data, const quint32 &toolId, QWidget *parent) :DialogTool(data, toolId, parent), ui(new Ui::DialogEditWrongFormula), formula(QString()), formulaBaseHeight(0), @@ -47,7 +49,7 @@ DialogEditWrongFormula::DialogEditWrongFormula(const VContainer *data, const qui CheckState(); connect(ui->toolButtonPutHere, &QPushButton::clicked, this, &DialogEditWrongFormula::PutHere); - connect(ui->listWidget, &QListWidget::itemDoubleClicked, this, &DialogEditWrongFormula::PutVal); + connect(ui->tableWidget, &QTableWidget::itemDoubleClicked, this, &DialogEditWrongFormula::PutVal); connect(ui->plainTextEditFormula, &QPlainTextEdit::textChanged, this, &DialogEditWrongFormula::FormulaChanged); connect(ui->pushButtonGrowLength, &QPushButton::clicked, this, &DialogEditWrongFormula::DeployFormulaTextEdit); @@ -63,6 +65,10 @@ DialogEditWrongFormula::DialogEditWrongFormula(const VContainer *data, const qui } } #endif + ui->tableWidget->setColumnCount(2); + ui->tableWidget->setEditTriggers(QTableWidget::NoEditTriggers); + ui->tableWidget->verticalHeader()->hide(); + ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows); } //--------------------------------------------------------------------------------------------------------------------- @@ -109,17 +115,17 @@ void DialogEditWrongFormula::EvalFormula() //--------------------------------------------------------------------------------------------------------------------- /** - * @brief ValChenged show description when current variable changed + * @brief ValChanged show description when current variable changed * @param row number of row */ -void DialogEditWrongFormula::ValChenged(int row) +void DialogEditWrongFormula::ValChanged(int row) { - if (ui->listWidget->count() == 0) + if (ui->tableWidget->rowCount() == 0) { ui->labelDescription->setText(""); return; } - QListWidgetItem *item = ui->listWidget->item( row ); + QTableWidgetItem *item = ui->tableWidget->item( row, ColumnName ); if (ui->radioButtonStandardTable->isChecked()) { const QString name = qApp->TrVars()->VarFromUser(item->text()); @@ -178,11 +184,11 @@ void DialogEditWrongFormula::ValChenged(int row) */ void DialogEditWrongFormula::PutHere() { - const QListWidgetItem *item = ui->listWidget->currentItem(); + const QTableWidgetItem *item = ui->tableWidget->currentItem(); if (item != nullptr) { QTextCursor cursor = ui->plainTextEditFormula->textCursor(); - cursor.insertText(item->text()); + cursor.insertText(ui->tableWidget->item(item->row(), ColumnName)->text()); ui->plainTextEditFormula->setTextCursor(cursor); ui->plainTextEditFormula->setFocus(); } @@ -191,13 +197,13 @@ void DialogEditWrongFormula::PutHere() //--------------------------------------------------------------------------------------------------------------------- /** * @brief PutVal put variable into edit - * @param item chosen item of list widget + * @param item chosen item of table widget */ -void DialogEditWrongFormula::PutVal(QListWidgetItem *item) +void DialogEditWrongFormula::PutVal(QTableWidgetItem *item) { SCASSERT(item != nullptr); QTextCursor cursor = ui->plainTextEditFormula->textCursor(); - cursor.insertText(item->text()); + cursor.insertText(ui->tableWidget->item(item->row(), ColumnName)->text()); ui->plainTextEditFormula->setTextCursor(cursor); } @@ -208,7 +214,7 @@ void DialogEditWrongFormula::PutVal(QListWidgetItem *item) void DialogEditWrongFormula::Measurements() { ui->checkBoxHideEmpty->setEnabled(true); - ShowVariable(data->DataMeasurements()); + ShowMeasurements(data->DataMeasurements()); } //--------------------------------------------------------------------------------------------------------------------- @@ -324,7 +330,7 @@ QString DialogEditWrongFormula::GetFormula() const //--------------------------------------------------------------------------------------------------------------------- void DialogEditWrongFormula::InitVariables() { - connect(ui->listWidget, &QListWidget::currentRowChanged, this, &DialogEditWrongFormula::ValChenged); + connect(ui->tableWidget, &QTableWidget::currentCellChanged, this, &DialogEditWrongFormula::ValChanged); ui->radioButtonStandardTable->setChecked(true); Measurements(); @@ -355,8 +361,10 @@ void DialogEditWrongFormula::SetDescription(const QString &name, qreal value, co template <class key, class val> void DialogEditWrongFormula::ShowVariable(const QMap<key, val> &var) { - ui->listWidget->blockSignals(true); - ui->listWidget->clear(); + ui->tableWidget->blockSignals(true); + ui->tableWidget->clearContents(); + ui->tableWidget->setRowCount(0); + ui->tableWidget->setColumnHidden(ColumnFullName, true); ui->labelDescription->setText(""); QMapIterator<key, val> iMap(var); @@ -369,11 +377,60 @@ void DialogEditWrongFormula::ShowVariable(const QMap<key, val> &var) } if (iMap.value()->Filter(toolId) == false) {// If we create this variable don't show - QListWidgetItem *item = new QListWidgetItem(iMap.key()); + ui->tableWidget->setRowCount(ui->tableWidget->rowCount() + 1); + QTableWidgetItem *item = new QTableWidgetItem(iMap.key()); item->setFont(QFont("Times", 12, QFont::Bold)); - ui->listWidget->addItem(item); + ui->tableWidget->setItem(ui->tableWidget->rowCount()-1, ColumnName, item); } } - ui->listWidget->blockSignals(false); - ui->listWidget->setCurrentRow (0); + ui->tableWidget->blockSignals(false); + ui->tableWidget->selectRow(0); + ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); +} + +//--------------------------------------------------------------------------------------------------------------------- +/** + * @brief ShowMeasurements show measurements in table + * @param var container with measurements + */ +void DialogEditWrongFormula::ShowMeasurements(const QMap<QString, QSharedPointer<VMeasurement> > &var) +{ + ui->tableWidget->blockSignals(true); + ui->tableWidget->clearContents(); + ui->tableWidget->setRowCount(0); + ui->tableWidget->setColumnHidden(ColumnFullName, false); + ui->labelDescription->setText(""); + + QMapIterator<QString, QSharedPointer<VMeasurement>> iMap(var); + while (iMap.hasNext()) + { + iMap.next(); + if (ui->checkBoxHideEmpty->isEnabled() && ui->checkBoxHideEmpty->isChecked() && iMap.value()->IsNotUsed()) + { + continue; //skip this measurement + } + if (iMap.value()->Filter(toolId) == false) + {// If we create this variable don't show + ui->tableWidget->setRowCount(ui->tableWidget->rowCount() + 1); + QTableWidgetItem *itemName = new QTableWidgetItem(iMap.key()); + itemName->setFont(QFont("Times", 12, QFont::Bold)); + + QTableWidgetItem *itemFullName = new QTableWidgetItem(); + itemFullName->setFont(QFont("Times", 12, QFont::Bold)); + if (iMap.value()->IsCustom()) + { + itemFullName->setText(iMap.value()->GetGuiText()); + } + else + { + itemFullName->setText(qApp->TrVars()->GuiText(iMap.value()->GetName())); + } + + ui->tableWidget->setItem(ui->tableWidget->rowCount()-1, ColumnName, itemName); + ui->tableWidget->setItem(ui->tableWidget->rowCount()-1, ColumnFullName, itemFullName); + } + } + ui->tableWidget->blockSignals(false); + ui->tableWidget->selectRow(0); + ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); } diff --git a/src/libs/vtools/dialogs/support/dialogeditwrongformula.h b/src/libs/vtools/dialogs/support/dialogeditwrongformula.h index 96ce62c60..363fbe827 100644 --- a/src/libs/vtools/dialogs/support/dialogeditwrongformula.h +++ b/src/libs/vtools/dialogs/support/dialogeditwrongformula.h @@ -30,6 +30,7 @@ #define DIALOGEDITWRONGFORMULA_H #include "../tools/dialogtool.h" +#include <QTableWidgetItem> namespace Ui { @@ -63,9 +64,9 @@ public slots: */ void DeployFormulaTextEdit(); virtual void EvalFormula() Q_DECL_OVERRIDE; - void ValChenged(int row); + void ValChanged(int row); void PutHere(); - void PutVal(QListWidgetItem * item); + void PutVal(QTableWidgetItem * item); void Measurements(); void LengthLines(); @@ -96,6 +97,7 @@ private: template <class key, class val> void ShowVariable(const QMap<key, val> &var); + void ShowMeasurements(const QMap<QString, QSharedPointer<VMeasurement> > &var); void SetDescription(const QString &name, qreal value, const QString &unit, const QString &description); }; diff --git a/src/libs/vtools/dialogs/support/dialogeditwrongformula.ui b/src/libs/vtools/dialogs/support/dialogeditwrongformula.ui index 835ec161b..c639d559a 100644 --- a/src/libs/vtools/dialogs/support/dialogeditwrongformula.ui +++ b/src/libs/vtools/dialogs/support/dialogeditwrongformula.ui @@ -192,8 +192,7 @@ </property> <property name="icon"> <iconset theme="go-down"> - <normaloff/> - </iconset> + <normaloff>.</normaloff>.</iconset> </property> <property name="iconSize"> <size> @@ -347,10 +346,23 @@ </widget> </item> <item> - <widget class="QListWidget" name="listWidget"> - <property name="toolTip"> - <string>Double click for add to formula</string> + <widget class="QTableWidget" name="tableWidget"> + <property name="minimumSize"> + <size> + <width>0</width> + <height>0</height> + </size> </property> + <column> + <property name="text"> + <string>Name</string> + </property> + </column> + <column> + <property name="text"> + <string>Full name</string> + </property> + </column> </widget> </item> </layout> @@ -389,7 +401,6 @@ <tabstop>radioButtonLengthSpline</tabstop> <tabstop>radioButtonAngleLine</tabstop> <tabstop>checkBoxHideEmpty</tabstop> - <tabstop>listWidget</tabstop> <tabstop>buttonBox</tabstop> </tabstops> <resources>