mode: remove mode handler dependency in child modes

This commit is contained in:
Kiara Navarro 2022-07-14 08:25:33 -05:00
parent 2fbe6e84be
commit 6bd80c5944
No known key found for this signature in database
GPG Key ID: CBA9F2172CE33FBA
5 changed files with 11 additions and 9 deletions

View File

@ -1,5 +1,4 @@
#include "generator.h"
#include "modehandler.h"
#include <QSettings>
@ -56,7 +55,7 @@ void Generator::fromJSON(nlohmann::json j)
void Generator::updateDevice()
{
if(!window->getDevice() || window->getModeHandler()->getActiveMode() != this) {
if(!window->getDevice() || isActive != true) {
// can't update if not connected
return;
}

View File

@ -17,7 +17,6 @@
#include "Device/firmwareupdatedialog.h"
#include "preferences.h"
#include "Generator/signalgenwidget.h"
#include "modehandler.h"
#include <QDockWidget>
#include <QDesktopWidget>
@ -434,7 +433,7 @@ using namespace std;
void SpectrumAnalyzer::NewDatapoint(Protocol::SpectrumAnalyzerResult d)
{
if(window->getModeHandler()->getActiveMode() != this) {
if(isActive != true) {
return;
}
@ -571,7 +570,7 @@ void SpectrumAnalyzer::SettingsChanged()
}
}
if(window->getDevice() && window->getModeHandler()->getActiveMode() == this) {
if(window->getDevice() && isActive) {
window->getDevice()->Configure(settings, [=](Device::TransmissionResult res){
// device received command
changingSettings = false;

View File

@ -22,7 +22,6 @@
#include "Calibration/manualcalibrationdialog.h"
#include "Util/util.h"
#include "Tools/parameters.h"
#include "modehandler.h"
#include <QGridLayout>
#include <QVBoxLayout>
@ -802,7 +801,7 @@ using namespace std;
void VNA::NewDatapoint(Protocol::Datapoint d)
{
if(window->getModeHandler()->getActiveMode() != this) {
if(isActive != true) {
// ignore
return;
}
@ -973,7 +972,7 @@ void VNA::SettingsChanged(bool resetTraces, std::function<void (Device::Transmis
s.cdbm_excitation_stop = stop * 100;
s.logSweep = false;
}
if(window->getDevice() && window->getModeHandler()->getActiveMode() == this) {
if(window->getDevice() && isActive) {
if(s.excitePort1 == 0 && s.excitePort2 == 0) {
// no signal at either port, just set the device to idle
window->getDevice()->SetIdle();
@ -1487,7 +1486,7 @@ void VNA::SetupSCPI()
return ret;
}));
scpi_cal->add(new SCPICommand("MEASure", [=](QStringList params) -> QString {
if(params.size() != 1 || CalibrationMeasurementActive() || !window->getDevice() || window->getModeHandler()->getActiveMode() != this) {
if(params.size() != 1 || CalibrationMeasurementActive() || !window->getDevice() || isActive != true) {
// no measurement specified, still busy or invalid mode
return SCPI::getResultName(SCPI::Result::Error);
} else {

View File

@ -19,6 +19,7 @@ Mode::Mode(AppWindow *window, QString name, QString SCPIname)
: QObject(window),
SCPINode(SCPIname),
window(window),
isActive(false),
name(name),
central(nullptr)
{
@ -40,6 +41,7 @@ Mode::~Mode()
void Mode::activate()
{
isActive = true;
qDebug() << "Activating mode" << name;
// show all mode specific GUI elements
for(auto t : toolbars) {
@ -86,6 +88,7 @@ void Mode::activate()
void Mode::deactivate()
{
isActive = false;
QSettings settings;
// save dock/toolbar visibility
for(auto d : docks) {
@ -110,6 +113,7 @@ void Mode::deactivate()
}
qDebug() << "Deactivated mode" << name;
if(window->getDevice()) {
window->getDevice()->SetIdle();
}

View File

@ -47,6 +47,7 @@ protected:
virtual void activate(); // derived classes must call Mode::activate before doing anything
virtual void deactivate(); // derived classes must call Mode::deactivate before returning
bool isActive;
void setStatusbarMessage(QString msg);
// call once the derived class is fully initialized