VariableInspectorWidget.cpp
57 lines
| 1.9 KiB
| text/x-c
|
CppLexer
Alexandre Leroux
|
r143 | #include <Variable/VariableController.h> | ||
Alexandre Leroux
|
r105 | #include <Variable/VariableInspectorWidget.h> | ||
Alexandre Leroux
|
r143 | #include <Variable/VariableModel.h> | ||
Alexandre Leroux
|
r105 | |||
#include <ui_VariableInspectorWidget.h> | ||||
Alexandre Leroux
|
r143 | #include <QSortFilterProxyModel> | ||
#include <SqpApplication.h> | ||||
Alexandre Leroux
|
r234 | Q_LOGGING_CATEGORY(LOG_VariableInspectorWidget, "VariableInspectorWidget") | ||
Alexandre Leroux
|
r105 | VariableInspectorWidget::VariableInspectorWidget(QWidget *parent) | ||
: QWidget{parent}, ui{new Ui::VariableInspectorWidget} | ||||
{ | ||||
ui->setupUi(this); | ||||
Alexandre Leroux
|
r143 | |||
// Sets model for table | ||||
auto sortFilterModel = new QSortFilterProxyModel{this}; | ||||
sortFilterModel->setSourceModel(sqpApp->variableController().variableModel()); | ||||
ui->tableView->setModel(sortFilterModel); | ||||
Alexandre Leroux
|
r228 | |||
// Connection to show a menu when right clicking on the tree | ||||
ui->tableView->setContextMenuPolicy(Qt::CustomContextMenu); | ||||
connect(ui->tableView, &QTableView::customContextMenuRequested, this, | ||||
&VariableInspectorWidget::onTableMenuRequested); | ||||
Alexandre Leroux
|
r105 | } | ||
VariableInspectorWidget::~VariableInspectorWidget() | ||||
{ | ||||
delete ui; | ||||
} | ||||
Alexandre Leroux
|
r228 | |||
void VariableInspectorWidget::onTableMenuRequested(const QPoint &pos) noexcept | ||||
{ | ||||
Alexandre Leroux
|
r229 | auto selectedIndex = ui->tableView->indexAt(pos); | ||
if (selectedIndex.isValid()) { | ||||
// Gets the model to retrieve the underlying selected variable | ||||
auto model = sqpApp->variableController().variableModel(); | ||||
if (auto selectedVariable = model->variable(selectedIndex.row())) { | ||||
QMenu tableMenu{}; | ||||
Alexandre Leroux
|
r230 | // Emit a signal so that potential receivers can populate the menu before displaying it | ||
emit tableMenuAboutToBeDisplayed(&tableMenu, selectedVariable); | ||||
Alexandre Leroux
|
r229 | |||
if (!tableMenu.isEmpty()) { | ||||
tableMenu.exec(mapToGlobal(pos)); | ||||
} | ||||
} | ||||
} | ||||
Alexandre Leroux
|
r234 | else { | ||
qCCritical(LOG_VariableInspectorWidget()) | ||||
<< tr("Can't display menu : invalid index (%1;%2)") | ||||
.arg(selectedIndex.row(), selectedIndex.column()); | ||||
} | ||||
Alexandre Leroux
|
r228 | } | ||