From 373e6dbda5d27df648fcfac92cdf29b397126c8e Mon Sep 17 00:00:00 2001 From: Kevin Matz Date: Sun, 16 Apr 2023 14:57:28 -0400 Subject: [PATCH] inspect DMX data --- example/widgetExplorer/devicewindow.cpp | 32 +++++++++++++++++++++++++ example/widgetExplorer/devicewindow.h | 3 +++ 2 files changed, 35 insertions(+) diff --git a/example/widgetExplorer/devicewindow.cpp b/example/widgetExplorer/devicewindow.cpp index 38f3be5..eab2caa 100644 --- a/example/widgetExplorer/devicewindow.cpp +++ b/example/widgetExplorer/devicewindow.cpp @@ -44,6 +44,13 @@ DeviceWindow::DeviceWindow(QWidget *parent) if (selected.isValid()) selected.data(Qt::EditRole).value()->close(); }); + connect(ui->actionDMX, &QAction::triggered, + this, [this]() { + auto selected = ui->widgetView->currentIndex(); + if (!selected.isValid()) + return; + openDmxWindow(selected); + }); connect(ui->actionParameter, &QAction::triggered, this, [this]() { auto selected = ui->widgetView->currentIndex(); @@ -90,6 +97,7 @@ DeviceWindow::DeviceWindow(QWidget *parent) DeviceWindow::~DeviceWindow() { + qDeleteAll(inspectors_); delete ui; } @@ -121,3 +129,27 @@ void DeviceWindow::selectionChanged(const QModelIndex ¤t, const QModelInde ui->actionFirmware->setEnabled(false); } + +/** + * @brief DeviceWindow::openDmxWindow + * @param index + */ +void DeviceWindow::openDmxWindow(const QModelIndex &index) +{ + auto wdgt = index.data(Qt::EditRole).value>(); + auto univ = std::static_pointer_cast(wdgt); + + foreach (const auto & inspector, inspectors_) + if (inspector->universe() == univ) + return inspector->show(); + auto view = new UniverseWindow(nullptr, univ); + inspectors_.insert(view); + connect(view, &QObject::destroyed, this, [this, view]() { + inspectors_.remove(view); + }); + view->setWindowTitle(QString("%1 '%2'").arg( + wdgt->isEditable() ? tr("Editing") : tr("Viewing"), + wdgt->portName())); + view->setAttribute(Qt::WA_DeleteOnClose, true); + view->show(); +} diff --git a/example/widgetExplorer/devicewindow.h b/example/widgetExplorer/devicewindow.h index 500a989..45528e6 100644 --- a/example/widgetExplorer/devicewindow.h +++ b/example/widgetExplorer/devicewindow.h @@ -2,6 +2,7 @@ #include #include +#include #include namespace Ui { @@ -18,10 +19,12 @@ public: private slots: void selectionChanged(const QModelIndex ¤t, const QModelIndex &previous); + void openDmxWindow(const QModelIndex &index); private: Ui::DeviceWindow *ui; WidgetModel *model; QSortFilterProxyModel *sortProxy; + QSet inspectors_; };