From b2ed1242404a0d74483e4f7fdf4ffaafb13cd543 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20K=C3=A4berich?= Date: Sat, 29 Jan 2022 23:31:58 +0100 Subject: [PATCH] Add setup file as default startup configuration --- Software/PC_Application/appwindow.cpp | 45 ++++++++++++-------- Software/PC_Application/appwindow.h | 1 + Software/PC_Application/preferences.cpp | 17 ++++++++ Software/PC_Application/preferences.h | 4 ++ Software/PC_Application/preferencesdialog.ui | 40 +++++++++++++++-- 5 files changed, 85 insertions(+), 22 deletions(-) diff --git a/Software/PC_Application/appwindow.cpp b/Software/PC_Application/appwindow.cpp index 845584c..aa1cec8 100644 --- a/Software/PC_Application/appwindow.cpp +++ b/Software/PC_Application/appwindow.cpp @@ -160,23 +160,7 @@ AppWindow::AppWindow(QWidget *parent) // aborted selection return; } - ifstream file; - file.open(filename.toStdString()); - if(!file.is_open()) { - qWarning() << "Unable to open file:" << filename; - return; - } - nlohmann::json j; - try { - file >> j; - } catch (exception &e) { - InformationBox::ShowError("Error", "Failed to parse the setup file (" + QString(e.what()) + ")"); - qWarning() << "Parsing of setup file failed: " << e.what(); - } - file.close(); - LoadSetup(j); - QFileInfo fi(filename); - lSetupName.setText("Setup: "+fi.fileName()); + LoadSetup(filename); }); connect(ui->actionSave_image, &QAction::triggered, [=](){ Mode::getActiveMode()->saveSreenshot(); @@ -261,7 +245,8 @@ AppWindow::AppWindow(QWidget *parent) // List available devices UpdateDeviceList(); - if(Preferences::getInstance().Startup.ConnectToFirstDevice) { + auto pref = Preferences::getInstance(); + if(pref.Startup.ConnectToFirstDevice) { // at least one device available ConnectToDevice(); } @@ -272,6 +257,9 @@ AppWindow::AppWindow(QWidget *parent) } else { InformationBox::setGUI(false); } + if(pref.Startup.UseSetupFile) { + LoadSetup(pref.Startup.SetupFile); + } } AppWindow::~AppWindow() @@ -948,6 +936,27 @@ nlohmann::json AppWindow::SaveSetup() return j; } +void AppWindow::LoadSetup(QString filename) +{ + ifstream file; + file.open(filename.toStdString()); + if(!file.is_open()) { + qWarning() << "Unable to open file:" << filename; + return; + } + nlohmann::json j; + try { + file >> j; + } catch (exception &e) { + InformationBox::ShowError("Error", "Failed to parse the setup file (" + QString(e.what()) + ")"); + qWarning() << "Parsing of setup file failed: " << e.what(); + } + file.close(); + LoadSetup(j); + QFileInfo fi(filename); + lSetupName.setText("Setup: "+fi.fileName()); +} + void AppWindow::LoadSetup(nlohmann::json j) { // auto d = new JSONPickerDialog(j); diff --git a/Software/PC_Application/appwindow.h b/Software/PC_Application/appwindow.h index 72e2566..3caa04b 100644 --- a/Software/PC_Application/appwindow.h +++ b/Software/PC_Application/appwindow.h @@ -61,6 +61,7 @@ private slots: void ReceiverCalibrationDialog(); void FrequencyCalibrationDialog(); nlohmann::json SaveSetup(); + void LoadSetup(QString filename); void LoadSetup(nlohmann::json j); private: diff --git a/Software/PC_Application/preferences.cpp b/Software/PC_Application/preferences.cpp index 3b806af..f4290c8 100644 --- a/Software/PC_Application/preferences.cpp +++ b/Software/PC_Application/preferences.cpp @@ -50,9 +50,21 @@ PreferencesDialog::PreferencesDialog(Preferences *pref, QWidget *parent) : // Startup page connect(ui->StartupSweepLastUsed, &QPushButton::clicked, [=](){ setDefaultSettingsEnabled(false); + ui->StartupSetupFile->setEnabled(false); + ui->StartupBrowse->setEnabled(false); }); connect(ui->StartupSweepDefault, &QPushButton::clicked, [=](){ setDefaultSettingsEnabled(true); + ui->StartupSetupFile->setEnabled(false); + ui->StartupBrowse->setEnabled(false); + }); + connect(ui->StartupUseSetupFile, &QPushButton::clicked, [=](){ + setDefaultSettingsEnabled(false); + ui->StartupSetupFile->setEnabled(true); + ui->StartupBrowse->setEnabled(true); + }); + connect(ui->StartupBrowse, &QPushButton::clicked, [=](){ + ui->StartupSetupFile->setText(QFileDialog::getOpenFileName(nullptr, "Select startup setup file", "", "Setup files (*.setup)", nullptr, QFileDialog::DontUseNativeDialog)); }); ui->StartupSweepStart->setUnit("Hz"); ui->StartupSweepStart->setPrefixes(" kMG"); @@ -186,9 +198,12 @@ void PreferencesDialog::setInitialGUIState() ui->StartupAutoconnect->setChecked(p->Startup.ConnectToFirstDevice); if(p->Startup.RememberSweepSettings) { ui->StartupSweepLastUsed->click(); + } if(p->Startup.UseSetupFile) { + ui->StartupUseSetupFile->click(); } else { ui->StartupSweepDefault->click(); } + ui->StartupSetupFile->setText(p->Startup.SetupFile); ui->StartupSweepType->setCurrentText(p->Startup.DefaultSweep.type); ui->StartupSweepStart->setValueQuiet(p->Startup.DefaultSweep.f_start); ui->StartupSweepStop->setValueQuiet(p->Startup.DefaultSweep.f_stop); @@ -246,6 +261,8 @@ void PreferencesDialog::updateFromGUI() { p->Startup.ConnectToFirstDevice = ui->StartupAutoconnect->isChecked(); p->Startup.RememberSweepSettings = ui->StartupSweepLastUsed->isChecked(); + p->Startup.UseSetupFile = ui->StartupUseSetupFile->isChecked(); + p->Startup.SetupFile = ui->StartupSetupFile->text(); p->Startup.DefaultSweep.type = ui->StartupSweepType->currentText(); p->Startup.DefaultSweep.f_start = ui->StartupSweepStart->value(); p->Startup.DefaultSweep.f_stop = ui->StartupSweepStop->value(); diff --git a/Software/PC_Application/preferences.h b/Software/PC_Application/preferences.h index 1e05839..3c78e4a 100644 --- a/Software/PC_Application/preferences.h +++ b/Software/PC_Application/preferences.h @@ -32,6 +32,8 @@ public: struct { bool ConnectToFirstDevice; bool RememberSweepSettings; + bool UseSetupFile; + QString SetupFile; struct { QString type; double f_start; @@ -117,6 +119,8 @@ private: const std::vector descr = {{ {&Startup.ConnectToFirstDevice, "Startup.ConnectToFirstDevice", true}, {&Startup.RememberSweepSettings, "Startup.RememberSweepSettings", false}, + {&Startup.UseSetupFile, "Startup.UseSetupFile", false}, + {&Startup.SetupFile, "Startup.SetupFile", ""}, {&Startup.DefaultSweep.type, "Startup.DefaultSweep.type", "Frequency"}, {&Startup.DefaultSweep.f_start, "Startup.DefaultSweep.start", 1000000.0}, {&Startup.DefaultSweep.f_stop, "Startup.DefaultSweep.stop", 6000000000.0}, diff --git a/Software/PC_Application/preferencesdialog.ui b/Software/PC_Application/preferencesdialog.ui index 1fea81e..1ee3a30 100644 --- a/Software/PC_Application/preferencesdialog.ui +++ b/Software/PC_Application/preferencesdialog.ui @@ -6,8 +6,8 @@ 0 0 - 919 - 876 + 957 + 891 @@ -83,7 +83,7 @@ - 1 + 0 @@ -112,7 +112,7 @@ - + @@ -133,6 +133,38 @@ + + + + Use setup file: + + + StartupSweepGroup + + + + + + + + + + + 0 + 0 + + + + + 20 + 16777215 + + + + ... + + +