Prevent activating calibration without defined calibration standard

This commit is contained in:
Jan Käberich 2022-10-14 12:26:37 +02:00
parent 532702f7fb
commit c5cbc8af20
4 changed files with 29 additions and 8 deletions

View File

@ -1469,6 +1469,9 @@ bool Calibration::canCompute(Calibration::CalType type, double *startFreq, doubl
if(!meas) {
// missing measurement
return false;
} else if (!meas->readyForCalculation()){
// measurement not ready (either not calkit standard definded or no measurements
return false;
} else {
foundMeasurements.push_back(meas);
}

View File

@ -45,6 +45,9 @@ bool CalibrationMeasurement::Base::setStandard(CalStandard::Virtual *standard)
if(supportedStandardTypes().count(standard->getType())) {
// can use this standard
this->standard = standard;
connect(standard, &CalStandard::Virtual::deleted, this, [=](){
setStandard(nullptr);
});
emit standardChanged(standard);
return true;
} else {
@ -53,6 +56,9 @@ bool CalibrationMeasurement::Base::setStandard(CalStandard::Virtual *standard)
}
} else {
// nullptr passed, remove currently used standard
if(this->standard) {
disconnect(this->standard, &CalStandard::Virtual::deleted, this, nullptr);
}
this->standard = nullptr;
emit standardChanged(nullptr);
return true;
@ -117,6 +123,10 @@ QWidget *CalibrationMeasurement::Base::createStandardWidget()
cbStandard->setCurrentText(s->getDescription());
}
}
if(standard == 0 && cbStandard->count() > 0) {
// no standard was selected but no there is one available
setStandard((CalStandard::Virtual*) cbStandard->itemData(0, Qt::UserRole).value<void*>());
}
connect(cbStandard, qOverload<int>(&QComboBox::currentIndexChanged), [=](){
auto s = (CalStandard::Virtual*) cbStandard->itemData(cbStandard->currentIndex(), Qt::UserRole).value<void*>();

View File

@ -38,6 +38,7 @@ public:
virtual double minFreq() = 0;
virtual double maxFreq() = 0;
virtual unsigned int numPoints() = 0;
virtual bool readyForCalculation() {return false;}
static std::vector<Type> availableTypes();
static QString TypeToString(Type type);
@ -79,9 +80,10 @@ public:
virtual double minFreq() override;
virtual double maxFreq() override;
virtual unsigned int numPoints() override {return points.size();}
virtual bool readyForCalculation() override {return standard && points.size() > 0;}
virtual void clearPoints();
virtual void addPoint(const VirtualDevice::VNAMeasurement &m);
virtual void clearPoints() override;
virtual void addPoint(const VirtualDevice::VNAMeasurement &m) override;
virtual QWidget* createSettingsWidget() override;
@ -179,9 +181,10 @@ public:
virtual double minFreq() override;
virtual double maxFreq() override;
virtual unsigned int numPoints() override {return points.size();}
virtual bool readyForCalculation() override {return standard && points.size() > 0;}
virtual void clearPoints();
virtual void addPoint(const VirtualDevice::VNAMeasurement &m);
virtual void clearPoints() override;
virtual void addPoint(const VirtualDevice::VNAMeasurement &m) override;
virtual QWidget* createSettingsWidget() override;
@ -236,9 +239,10 @@ public:
virtual double minFreq() override;
virtual double maxFreq() override;
virtual unsigned int numPoints() override;
virtual bool readyForCalculation() override {return points.size() > 0;}
virtual void clearPoints();
virtual void addPoint(const VirtualDevice::VNAMeasurement &m);
virtual void clearPoints() override;
virtual void addPoint(const VirtualDevice::VNAMeasurement &m) override;
virtual QWidget* createStandardWidget() override;
virtual QWidget* createSettingsWidget() override;

View File

@ -11,11 +11,12 @@
namespace CalStandard
{
class Virtual : public Savable
class Virtual : public QObject, public Savable
{
Q_OBJECT
public:
Virtual(QString name = "");
virtual ~Virtual(){};
virtual ~Virtual(){emit deleted();}
enum class Type {
Open,
@ -48,6 +49,9 @@ public:
QString getName() const;
void setName(const QString &value);
signals:
void deleted();
protected:
QString name;
double minFreq;