From 392b06f0eb649246df810a806d853004e02ab85a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20K=C3=A4berich?= Date: Fri, 21 Jan 2022 22:33:58 +0100 Subject: [PATCH] Show setup/calibration info in statusbar --- Software/PC_Application/VNA/vna.cpp | 17 +++++++++++++++++ Software/PC_Application/VNA/vna.h | 1 + Software/PC_Application/appwindow.cpp | 22 ++++++++++++++++++++++ Software/PC_Application/appwindow.h | 3 +++ Software/PC_Application/mode.cpp | 10 ++++++++++ Software/PC_Application/mode.h | 6 +++++- 6 files changed, 58 insertions(+), 1 deletion(-) diff --git a/Software/PC_Application/VNA/vna.cpp b/Software/PC_Application/VNA/vna.cpp index 3435a49..2479103 100644 --- a/Software/PC_Application/VNA/vna.cpp +++ b/Software/PC_Application/VNA/vna.cpp @@ -127,6 +127,7 @@ VNA::VNA(AppWindow *window) connect(saveCal, &QAction::triggered, [=](){ if(cal.saveToFile()) { calEdited = false; + UpdateStatusbar(); } }); @@ -431,6 +432,8 @@ VNA::VNA(AppWindow *window) }; // Calibration connections + connect(this, &VNA::CalibrationApplied, this, &VNA::UpdateStatusbar); + connect(this, &VNA::CalibrationDisabled, this, &VNA::UpdateStatusbar); connect(cbEnableCal, &QCheckBox::stateChanged, calToolbarLambda); connect(cbType, qOverload(&QComboBox::currentIndexChanged), calToolbarLambda); connect(this, &VNA::CalibrationDisabled, [=](){ @@ -1525,3 +1528,17 @@ VNA::SweepType VNA::SweepTypeFromString(QString s) return SweepType::Last; } + +void VNA::UpdateStatusbar() +{ + if(calValid) { + QFileInfo fi(cal.getCurrentCalibrationFile()); + auto filename = fi.fileName(); + if(filename.isEmpty()) { + filename = "Unsaved"; + } + setStatusbarMessage("Calibration: "+filename); + } else { + setStatusbarMessage("Calibration: -"); + } +} diff --git a/Software/PC_Application/VNA/vna.h b/Software/PC_Application/VNA/vna.h index 34c53f2..ca16036 100644 --- a/Software/PC_Application/VNA/vna.h +++ b/Software/PC_Application/VNA/vna.h @@ -107,6 +107,7 @@ private: void UpdateCalWidget(); private slots: void EnableDeembedding(bool enable); + void UpdateStatusbar(); private: Settings settings; unsigned int averages; diff --git a/Software/PC_Application/appwindow.cpp b/Software/PC_Application/appwindow.cpp index 99add0c..4161e04 100644 --- a/Software/PC_Application/appwindow.cpp +++ b/Software/PC_Application/appwindow.cpp @@ -151,6 +151,8 @@ AppWindow::AppWindow(QWidget *parent) file.open(filename.toStdString()); file << setw(4) << SaveSetup() << endl; file.close(); + QFileInfo fi(filename); + lSetupName.setText("Setup: "+fi.fileName()); }); connect(ui->actionLoad_setup, &QAction::triggered, [=](){ auto filename = QFileDialog::getOpenFileName(nullptr, "Load setup data", "", "Setup files (*.setup)", nullptr, QFileDialog::DontUseNativeDialog); @@ -173,11 +175,20 @@ AppWindow::AppWindow(QWidget *parent) } file.close(); LoadSetup(j); + QFileInfo fi(filename); + lSetupName.setText("Setup: "+fi.fileName()); }); connect(ui->actionSave_image, &QAction::triggered, [=](){ Mode::getActiveMode()->saveSreenshot(); }); + auto setModeStatusbar = [=](QString msg) { + lModeInfo.setText(msg); + }; + connect(vna, &Mode::statusbarMessage, setModeStatusbar); + connect(generator, &Mode::statusbarMessage, setModeStatusbar); + connect(spectrumAnalyzer, &Mode::statusbarMessage, setModeStatusbar); + connect(ui->actionManual_Control, &QAction::triggered, this, &AppWindow::StartManualControl); connect(ui->actionFirmware_Update, &QAction::triggered, this, &AppWindow::StartFirmwareUpdateDialog); connect(ui->actionSource_Calibration, &QAction::triggered, this, &AppWindow::SourceCalibrationDialog); @@ -988,6 +999,16 @@ void AppWindow::SetupStatusBar() ui->statusbar->addWidget(&lDeviceInfo); ui->statusbar->addWidget(new QLabel, 1); + ui->statusbar->addWidget(&lSetupName); + lSetupName.setText("Setup: -"); + auto div2 = new QFrame; + div2->setFrameShape(QFrame::VLine); + ui->statusbar->addWidget(div2); + ui->statusbar->addWidget(&lModeInfo); + auto div3 = new QFrame; + div3->setFrameShape(QFrame::VLine); + ui->statusbar->addWidget(div3); + lADCOverload.setStyleSheet("color : red"); lADCOverload.setText("ADC overload"); lADCOverload.setVisible(false); @@ -1028,4 +1049,5 @@ void AppWindow::UpdateStatusBar(DeviceStatusBar status) break; } + } diff --git a/Software/PC_Application/appwindow.h b/Software/PC_Application/appwindow.h index 7bca700..72e2566 100644 --- a/Software/PC_Application/appwindow.h +++ b/Software/PC_Application/appwindow.h @@ -103,6 +103,9 @@ private: // Status bar widgets QLabel lConnectionStatus; QLabel lDeviceInfo; + + QLabel lModeInfo; + QLabel lSetupName; // Error flag labels QLabel lADCOverload; QLabel lUnlevel; diff --git a/Software/PC_Application/mode.cpp b/Software/PC_Application/mode.cpp index 220e2e8..446503b 100644 --- a/Software/PC_Application/mode.cpp +++ b/Software/PC_Application/mode.cpp @@ -101,6 +101,8 @@ void Mode::activate() if(window->getDevice()) { initializeDevice(); } + + emit statusbarMessage(statusbarMsg); } void Mode::deactivate() @@ -174,6 +176,14 @@ void Mode::finalize(QWidget *centralWidget) } } +void Mode::setStatusbarMessage(QString msg) +{ + statusbarMsg = msg; + if(this == activeMode) { + emit statusbarMessage(msg); + } +} + QString Mode::getName() const { return name; diff --git a/Software/PC_Application/mode.h b/Software/PC_Application/mode.h index 08c2212..b5f91f2 100644 --- a/Software/PC_Application/mode.h +++ b/Software/PC_Application/mode.h @@ -13,6 +13,7 @@ class Mode : public QObject, public Savable { + Q_OBJECT public: Mode(AppWindow *window, QString name); @@ -26,8 +27,10 @@ public: virtual void deviceDisconnected(){}; virtual void saveSreenshot(); - +signals: + void statusbarMessage(QString msg); protected: + void setStatusbarMessage(QString msg); // call once the derived class is fully initialized void finalize(QWidget *centralWidget); AppWindow *window; @@ -40,6 +43,7 @@ private: static QWidget *cornerWidget; static QButtonGroup *modeButtonGroup; const QString name; + QString statusbarMsg; QWidget *central; };