Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 42 additions & 10 deletions SDDSaps/sddseditor/SDDSEditor.cc
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,9 @@ SDDSEditor::SDDSEditor(QWidget *parent)
columnView->horizontalHeader()->setContextMenuPolicy(Qt::CustomContextMenu);
connect(columnView->horizontalHeader(), &QHeaderView::customContextMenuRequested,
this, &SDDSEditor::columnHeaderMenuRequested);
columnView->setContextMenuPolicy(Qt::CustomContextMenu);
connect(columnView, &QTableView::customContextMenuRequested,
this, &SDDSEditor::columnCellMenuRequested);
connect(colBox, &QGroupBox::toggled, columnView, &QWidget::setVisible);
colLayout->addWidget(columnView);
dataSplitter->addWidget(colBox);
Expand Down Expand Up @@ -230,6 +233,9 @@ SDDSEditor::SDDSEditor(QWidget *parent)
arrayView->horizontalHeader()->setContextMenuPolicy(Qt::CustomContextMenu);
connect(arrayView->horizontalHeader(), &QHeaderView::customContextMenuRequested,
this, &SDDSEditor::arrayHeaderMenuRequested);
arrayView->setContextMenuPolicy(Qt::CustomContextMenu);
connect(arrayView, &QTableView::customContextMenuRequested,
this, &SDDSEditor::arrayCellMenuRequested);
connect(arrayBox, &QGroupBox::toggled, arrayView, &QWidget::setVisible);
arrayLayout->addWidget(arrayView);
dataSplitter->addWidget(arrayBox);
Expand Down Expand Up @@ -1169,17 +1175,16 @@ void SDDSEditor::changeColumnType(int column) {
markDirty();
}

void SDDSEditor::columnHeaderMenuRequested(const QPoint &pos) {
int column = columnView->horizontalHeader()->logicalIndexAt(pos);
void SDDSEditor::showColumnMenu(QTableView *view, int column,
const QPoint &globalPos) {
if (column < 0 || column >= dataset.layout.n_columns)
return;
QMenu menu(this);
QMenu menu(view);
QAction *plotAct = menu.addAction(tr("Plot from file"));
QAction *ascAct = menu.addAction(tr("Sort ascending"));
QAction *descAct = menu.addAction(tr("Sort descending"));
QAction *searchAct = menu.addAction(tr("Search"));
QAction *chosen =
menu.exec(columnView->horizontalHeader()->mapToGlobal(pos));
QAction *chosen = menu.exec(globalPos);
if (chosen == plotAct)
plotColumn(column);
else if (chosen == ascAct)
Expand All @@ -1190,18 +1195,45 @@ void SDDSEditor::columnHeaderMenuRequested(const QPoint &pos) {
searchColumn(column);
}

void SDDSEditor::arrayHeaderMenuRequested(const QPoint &pos) {
int column = arrayView->horizontalHeader()->logicalIndexAt(pos);
void SDDSEditor::columnHeaderMenuRequested(const QPoint &pos) {
int column = columnView->horizontalHeader()->logicalIndexAt(pos);
showColumnMenu(columnView, column,
columnView->horizontalHeader()->mapToGlobal(pos));
}

void SDDSEditor::columnCellMenuRequested(const QPoint &pos) {
QModelIndex idx = columnView->indexAt(pos);
if (!idx.isValid())
return;
showColumnMenu(columnView, idx.column(),
columnView->viewport()->mapToGlobal(pos));
}

void SDDSEditor::showArrayMenu(QTableView *view, int column,
const QPoint &globalPos) {
if (column < 0 || column >= dataset.layout.n_arrays)
return;
QMenu menu(this);
QMenu menu(view);
QAction *searchAct = menu.addAction(tr("Search"));
QAction *chosen =
menu.exec(arrayView->horizontalHeader()->mapToGlobal(pos));
QAction *chosen = menu.exec(globalPos);
if (chosen == searchAct)
searchArray(column);
}

void SDDSEditor::arrayHeaderMenuRequested(const QPoint &pos) {
int column = arrayView->horizontalHeader()->logicalIndexAt(pos);
showArrayMenu(arrayView, column,
arrayView->horizontalHeader()->mapToGlobal(pos));
}

void SDDSEditor::arrayCellMenuRequested(const QPoint &pos) {
QModelIndex idx = arrayView->indexAt(pos);
if (!idx.isValid())
return;
showArrayMenu(arrayView, idx.column(),
arrayView->viewport()->mapToGlobal(pos));
}

void SDDSEditor::plotColumn(int column) {
if (!datasetLoaded || currentFilename.isEmpty())
return;
Expand Down
4 changes: 4 additions & 0 deletions SDDSaps/sddseditor/SDDSEditor.h
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,9 @@ private slots:
void insertColumnRows();
void deleteColumnRows();
void columnHeaderMenuRequested(const QPoint &pos);
void columnCellMenuRequested(const QPoint &pos);
void arrayHeaderMenuRequested(const QPoint &pos);
void arrayCellMenuRequested(const QPoint &pos);
void plotColumn(int column);

private:
Expand All @@ -78,6 +80,8 @@ private slots:
void changeParameterType(int row);
void changeColumnType(int column);
void changeArrayType(int column);
void showColumnMenu(QTableView *view, int column, const QPoint &globalPos);
void showArrayMenu(QTableView *view, int column, const QPoint &globalPos);
void sortColumn(int column, Qt::SortOrder order);
void searchColumn(int column);
void searchArray(int column);
Expand Down