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

Wyświetl plik

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