From c9923223b7d62ea0270065f46a773da3df2b5335 Mon Sep 17 00:00:00 2001 From: Juan Manuel Carmona Loaiza <juanmcloaiza@gmail.com> Date: Thu, 20 Sep 2018 17:52:31 +0200 Subject: [PATCH] Added context menu in CsvImportAssistant - preliminary version --- .../ImportDataWidgets/CsvImportAssistant.cpp | 54 +++++++++++++++++++ .../ImportDataWidgets/CsvImportAssistant.h | 5 +- 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/GUI/coregui/Views/ImportDataWidgets/CsvImportAssistant.cpp b/GUI/coregui/Views/ImportDataWidgets/CsvImportAssistant.cpp index 6ec22d96ac9..616842850eb 100644 --- a/GUI/coregui/Views/ImportDataWidgets/CsvImportAssistant.cpp +++ b/GUI/coregui/Views/ImportDataWidgets/CsvImportAssistant.cpp @@ -23,6 +23,7 @@ #include <QVBoxLayout> #include <QFileDialog> #include <QMessageBox> +#include <QMenu> namespace { @@ -91,6 +92,9 @@ QBoxLayout* CsvImportAssistant::createLayout() result->addLayout(preresult); + m_tableWidget->setContextMenuPolicy(Qt::CustomContextMenu); + connect(m_tableWidget, &QTableWidget::cellClicked, this, &CsvImportAssistant::OnColumnClicked); + connect(m_tableWidget, &QTableWidget::customContextMenuRequested, this, &CsvImportAssistant::onColumnRightClick); return result; } @@ -535,3 +539,53 @@ unsigned CsvImportAssistant::lastLine() const{ unsigned CsvImportAssistant::singleColumnImport() const{ return unsigned(m_singleDataColSpinBox->value()); } + +void CsvImportAssistant::OnColumnClicked(int row, int column) +{ + //QMenu menu; + // + if(column <= 0) return; + m_tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); + m_tableWidget->setSelectionMode(QAbstractItemView::SingleSelection); + m_tableWidget->setSelectionBehavior(QAbstractItemView::SelectColumns); + m_tableWidget->selectColumn(column); + m_tableWidget->setSelectionMode(QAbstractItemView::NoSelection); + // + //menu.exec(); +} + +void CsvImportAssistant::onColumnRightClick(const QPoint position) +{ + int row = m_tableWidget->itemAt(position)->row(); + int col = m_tableWidget->itemAt(position)->column(); + OnColumnClicked(row,col); + QMenu menu; + + + menu.addAction( "Set as " + relevantHeaders[_intensity_]); + menu.addAction( "Set as " + relevantHeaders[_theta_]); + menu.addAction( "Set as " + relevantHeaders[_2theta_]); + menu.addAction( "Set as " + relevantHeaders[_q_]); + + connect(menu.actions()[_intensity_],&QAction::triggered, + + [&](){ + QString originalHeader = m_tableWidget->horizontalHeaderItem(col)->text(); + int columnInFile = originalHeader.split(' ').takeLast().toInt(); + m_tableWidget->setHorizontalHeaderItem( col, new QTableWidgetItem( relevantHeaders[_intensity_]) ); + m_singleDataColSpinBox->setValue(columnInFile); + onReloadButton(); + } + ); + connect(menu.actions()[_theta_],&QAction::triggered, + [&](){m_tableWidget->setHorizontalHeaderItem( col, new QTableWidgetItem( relevantHeaders[_theta_]) );} + ); + connect(menu.actions()[_2theta_],&QAction::triggered, + [&](){m_tableWidget->setHorizontalHeaderItem( col, new QTableWidgetItem( relevantHeaders[_2theta_]) );} + ); + connect(menu.actions()[_q_],&QAction::triggered, + [&](){m_tableWidget->setHorizontalHeaderItem( col, new QTableWidgetItem( relevantHeaders[_q_]) );} + ); + + menu.exec(m_tableWidget->mapToGlobal(position)); +} diff --git a/GUI/coregui/Views/ImportDataWidgets/CsvImportAssistant.h b/GUI/coregui/Views/ImportDataWidgets/CsvImportAssistant.h index ea1bbaf7173..3ca0e9b16ce 100644 --- a/GUI/coregui/Views/ImportDataWidgets/CsvImportAssistant.h +++ b/GUI/coregui/Views/ImportDataWidgets/CsvImportAssistant.h @@ -44,13 +44,16 @@ public: unsigned lastLine() const; unsigned singleColumnImport() const; unique_ptr<OutputData<double>> getData(); + QStringList relevantHeaders = {"Intensity","theta","2theta","q"}; + enum relevantColumns {_intensity_,_theta_,_2theta_,_q_}; public slots: void onImportButton(); void onReloadButton(); void onRejectButton(); void onBrowseButton(); - + void OnColumnClicked(int row, int column); + void onColumnRightClick(const QPoint position); private: QBoxLayout* createLayout(); -- GitLab