Make markers dialog non modal

pull/1462/head
f4exb 2022-09-29 15:25:04 +02:00
rodzic 3e54c92a7e
commit 44b0ef63c8
2 zmienionych plików z 26 dodań i 11 usunięć

Wyświetl plik

@ -49,7 +49,8 @@ GLSpectrumGUI::GLSpectrumGUI(QWidget* parent) :
m_spectrumVis(nullptr),
m_glSpectrum(nullptr),
m_doApplySettings(true),
m_calibrationShiftdB(0.0)
m_calibrationShiftdB(0.0),
m_markersDialog(nullptr)
{
ui->setupUi(this);
@ -99,6 +100,10 @@ GLSpectrumGUI::GLSpectrumGUI(QWidget* parent) :
GLSpectrumGUI::~GLSpectrumGUI()
{
if (m_markersDialog) {
delete m_markersDialog;
}
delete ui;
}
@ -447,11 +452,11 @@ void GLSpectrumGUI::on_markers_clicked(bool checked)
{
(void) checked;
if (!m_glSpectrum) {
if (!m_glSpectrum || m_markersDialog) {
return;
}
SpectrumMarkersDialog markersDialog(
m_markersDialog = new SpectrumMarkersDialog(
m_glSpectrum->getHistogramMarkers(),
m_glSpectrum->getWaterfallMarkers(),
m_glSpectrum->getAnnotationMarkers(),
@ -460,17 +465,21 @@ void GLSpectrumGUI::on_markers_clicked(bool checked)
this
);
markersDialog.setCenterFrequency(m_glSpectrum->getCenterFrequency());
markersDialog.setPower(m_glSpectrum->getPowerMax() / 2.0f);
markersDialog.setTime(m_glSpectrum->getTimeMax() / 2.0f);
m_markersDialog->setCenterFrequency(m_glSpectrum->getCenterFrequency());
m_markersDialog->setPower(m_glSpectrum->getPowerMax() / 2.0f);
m_markersDialog->setTime(m_glSpectrum->getTimeMax() / 2.0f);
connect(&markersDialog, SIGNAL(updateHistogram()), this, SLOT(updateHistogramMarkers()));
connect(&markersDialog, SIGNAL(updateWaterfall()), this, SLOT(updateWaterfallMarkers()));
connect(&markersDialog, SIGNAL(updateAnnotations()), this, SLOT(updateAnnotationMarkers()));
connect(&markersDialog, SIGNAL(updateMarkersDisplay()), this, SLOT(updateMarkersDisplay()));
connect(m_markersDialog, SIGNAL(updateHistogram()), this, SLOT(updateHistogramMarkers()));
connect(m_markersDialog, SIGNAL(updateWaterfall()), this, SLOT(updateWaterfallMarkers()));
connect(m_markersDialog, SIGNAL(updateAnnotations()), this, SLOT(updateAnnotationMarkers()));
connect(m_markersDialog, SIGNAL(updateMarkersDisplay()), this, SLOT(updateMarkersDisplay()));
connect(m_markersDialog, SIGNAL(finished(int)), this, SLOT(closeMarkersDialog()));
markersDialog.exec();
m_markersDialog->show();
}
void GLSpectrumGUI::closeMarkersDialog()
{
m_settings.m_histogramMarkers = m_glSpectrum->getHistogramMarkers();
m_settings.m_waterfallMarkers = m_glSpectrum->getWaterfallMarkers();
m_settings.m_annoationMarkers = m_glSpectrum->getAnnotationMarkers();
@ -478,6 +487,9 @@ void GLSpectrumGUI::on_markers_clicked(bool checked)
displayGotoMarkers();
applySettings();
delete m_markersDialog;
m_markersDialog = nullptr;
}
// Save spectrum data to a CSV file

Wyświetl plik

@ -36,6 +36,7 @@ namespace Ui {
class SpectrumVis;
class GLSpectrum;
class SpectrumMarkersDialog;
class SDRGUI_API GLSpectrumGUI : public QWidget, public Serializable {
Q_OBJECT
@ -72,6 +73,7 @@ private:
bool m_doApplySettings;
Real m_calibrationShiftdB;
static const int m_fpsMs[];
SpectrumMarkersDialog *m_markersDialog;
void blockApplySettings(bool block);
void applySettings();
@ -135,6 +137,7 @@ private slots:
void updateMarkersDisplay();
void updateCalibrationPoints();
void updateMeasurements();
void closeMarkersDialog();
signals:
// Emitted when user selects an annotation marker