2020-09-12 05:07:15 +08:00
|
|
|
#ifndef PREFERENCESDIALOG_H
|
|
|
|
#define PREFERENCESDIALOG_H
|
|
|
|
|
2021-10-21 19:00:34 +08:00
|
|
|
#include "Util/qpointervariant.h"
|
|
|
|
|
2020-09-12 05:07:15 +08:00
|
|
|
#include <QDialog>
|
|
|
|
#include <QVariant>
|
|
|
|
#include <exception>
|
|
|
|
|
2021-07-10 19:12:30 +08:00
|
|
|
enum GraphDomainChangeBehavior {
|
|
|
|
RemoveChangedTraces = 0,
|
|
|
|
AdjustGraphs = 1,
|
|
|
|
AdjustGrahpsIfOnlyTrace = 2,
|
|
|
|
};
|
|
|
|
|
|
|
|
Q_DECLARE_METATYPE(GraphDomainChangeBehavior);
|
|
|
|
|
|
|
|
|
2020-09-12 05:07:15 +08:00
|
|
|
class Preferences {
|
|
|
|
public:
|
2020-10-23 03:12:33 +08:00
|
|
|
static Preferences& getInstance() {
|
|
|
|
return instance;
|
|
|
|
}
|
2020-09-12 05:07:15 +08:00
|
|
|
void load();
|
|
|
|
void store();
|
|
|
|
void edit();
|
|
|
|
void setDefault();
|
|
|
|
|
2021-04-11 18:33:37 +08:00
|
|
|
void manualTCPport() { TCPoverride = true; }
|
|
|
|
|
2020-09-12 05:07:15 +08:00
|
|
|
struct {
|
|
|
|
bool ConnectToFirstDevice;
|
|
|
|
bool RememberSweepSettings;
|
|
|
|
struct {
|
2021-07-10 04:26:44 +08:00
|
|
|
QString type;
|
|
|
|
double f_start;
|
|
|
|
double f_stop;
|
|
|
|
double f_excitation;
|
|
|
|
|
|
|
|
double dbm_start;
|
|
|
|
double dbm_stop;
|
|
|
|
double dbm_freq;
|
|
|
|
|
2020-09-12 05:07:15 +08:00
|
|
|
int points;
|
|
|
|
double bandwidth;
|
2020-10-23 17:39:07 +08:00
|
|
|
int averaging;
|
2020-09-12 05:07:15 +08:00
|
|
|
} DefaultSweep;
|
2020-10-22 23:13:36 +08:00
|
|
|
struct {
|
|
|
|
double frequency;
|
|
|
|
double level;
|
|
|
|
} Generator;
|
|
|
|
struct {
|
|
|
|
double start;
|
|
|
|
double stop;
|
|
|
|
double RBW;
|
|
|
|
int window;
|
|
|
|
int detector;
|
2020-10-23 17:39:07 +08:00
|
|
|
int averaging;
|
2020-10-22 23:13:36 +08:00
|
|
|
bool signalID;
|
|
|
|
} SA;
|
2020-09-12 05:07:15 +08:00
|
|
|
} Startup;
|
2020-09-16 05:22:08 +08:00
|
|
|
struct {
|
|
|
|
bool alwaysExciteBothPorts;
|
2020-09-20 16:13:06 +08:00
|
|
|
bool suppressPeaks;
|
2021-07-10 04:26:44 +08:00
|
|
|
bool adjustPowerLevel;
|
2020-12-18 22:03:01 +08:00
|
|
|
bool harmonicMixing;
|
2020-11-07 20:22:10 +08:00
|
|
|
bool useDFTinSAmode;
|
|
|
|
double RBWLimitForDFT;
|
2021-12-02 05:11:50 +08:00
|
|
|
bool useMedianAveraging;
|
2020-09-16 05:22:08 +08:00
|
|
|
} Acquisition;
|
2020-10-23 03:12:33 +08:00
|
|
|
struct {
|
2021-12-27 23:13:03 +08:00
|
|
|
bool showUnits;
|
2020-10-23 03:12:33 +08:00
|
|
|
struct {
|
|
|
|
QColor background;
|
|
|
|
QColor axis;
|
2021-10-18 06:37:40 +08:00
|
|
|
struct {
|
|
|
|
QColor divisions;
|
|
|
|
struct {
|
|
|
|
bool enabled;
|
|
|
|
QColor background;
|
|
|
|
} Background;
|
|
|
|
} Ticks;
|
2021-07-10 19:12:30 +08:00
|
|
|
} Color;
|
|
|
|
GraphDomainChangeBehavior domainChangeBehavior;
|
2021-05-15 02:34:23 +08:00
|
|
|
struct {
|
|
|
|
bool showDataOnGraphs;
|
|
|
|
bool showAllData;
|
2021-07-10 19:12:30 +08:00
|
|
|
} markerBehavior;
|
2021-12-06 01:26:32 +08:00
|
|
|
double lineWidth;
|
2021-07-10 19:12:30 +08:00
|
|
|
} Graphs;
|
|
|
|
struct {
|
|
|
|
bool enabled;
|
|
|
|
int port;
|
|
|
|
} SCPIServer;
|
2021-04-11 18:33:37 +08:00
|
|
|
|
|
|
|
bool TCPoverride; // in case of manual port specification via command line
|
2020-09-12 05:07:15 +08:00
|
|
|
private:
|
2021-04-11 18:33:37 +08:00
|
|
|
Preferences() :
|
|
|
|
TCPoverride(false) {};
|
2020-10-23 03:12:33 +08:00
|
|
|
static Preferences instance;
|
2020-09-12 05:07:15 +08:00
|
|
|
using SettingDescription = struct {
|
|
|
|
QPointerVariant var;
|
|
|
|
QString name;
|
|
|
|
QVariant def;
|
|
|
|
};
|
2021-12-27 23:13:03 +08:00
|
|
|
const std::array<SettingDescription, 40> descr = {{
|
2020-09-12 05:07:15 +08:00
|
|
|
{&Startup.ConnectToFirstDevice, "Startup.ConnectToFirstDevice", true},
|
|
|
|
{&Startup.RememberSweepSettings, "Startup.RememberSweepSettings", false},
|
2021-07-10 04:26:44 +08:00
|
|
|
{&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},
|
|
|
|
{&Startup.DefaultSweep.f_excitation, "Startup.DefaultSweep.excitation", -10.00},
|
|
|
|
{&Startup.DefaultSweep.dbm_start, "Startup.DefaultSweep.dbm_start", -30.00},
|
|
|
|
{&Startup.DefaultSweep.dbm_stop, "Startup.DefaultSweep.dbm_stop", -10.0},
|
|
|
|
{&Startup.DefaultSweep.dbm_freq, "Startup.DefaultSweep.dbm_freq", 1000000000.0},
|
2020-09-12 05:07:15 +08:00
|
|
|
{&Startup.DefaultSweep.points, "Startup.DefaultSweep.points", 501},
|
|
|
|
{&Startup.DefaultSweep.bandwidth, "Startup.DefaultSweep.bandwidth", 1000.0},
|
2020-10-23 17:39:07 +08:00
|
|
|
{&Startup.DefaultSweep.averaging, "Startup.DefaultSweep.averaging", 1},
|
2020-10-22 23:13:36 +08:00
|
|
|
{&Startup.Generator.frequency, "Startup.Generator.frequency", 1000000000.0},
|
|
|
|
{&Startup.Generator.level, "Startup.Generator.level", -10.00},
|
|
|
|
{&Startup.SA.start, "Startup.SA.start", 950000000.0},
|
|
|
|
{&Startup.SA.stop, "Startup.SA.stop", 1050000000.0},
|
|
|
|
{&Startup.SA.RBW, "Startup.SA.RBW", 10000.0},
|
|
|
|
{&Startup.SA.window, "Startup.SA.window", 1},
|
|
|
|
{&Startup.SA.detector, "Startup.SA.detector", 0},
|
2020-10-23 17:39:07 +08:00
|
|
|
{&Startup.SA.averaging, "Startup.SA.averaging", 1},
|
2020-10-22 23:13:36 +08:00
|
|
|
{&Startup.SA.signalID, "Startup.SA.signalID", true},
|
2020-09-16 22:13:06 +08:00
|
|
|
{&Acquisition.alwaysExciteBothPorts, "Acquisition.alwaysExciteBothPorts", true},
|
2020-10-23 03:12:33 +08:00
|
|
|
{&Acquisition.suppressPeaks, "Acquisition.suppressPeaks", true},
|
2021-07-10 04:26:44 +08:00
|
|
|
{&Acquisition.adjustPowerLevel, "Acquisition.adjustPowerLevel", false},
|
2020-12-18 22:03:01 +08:00
|
|
|
{&Acquisition.harmonicMixing, "Acquisition.harmonicMixing", false},
|
2020-11-07 20:22:10 +08:00
|
|
|
{&Acquisition.useDFTinSAmode, "Acquisition.useDFTinSAmode", true},
|
|
|
|
{&Acquisition.RBWLimitForDFT, "Acquisition.RBWLimitForDFT", 3000.0},
|
2021-12-02 05:11:50 +08:00
|
|
|
{&Acquisition.useMedianAveraging, "Acquisition.useMedianAveraging", false},
|
2021-12-27 23:13:03 +08:00
|
|
|
{&Graphs.showUnits, "Graphs.showUnits", true},
|
2021-07-10 19:12:30 +08:00
|
|
|
{&Graphs.Color.background, "Graphs.Color.background", QColor(Qt::black)},
|
|
|
|
{&Graphs.Color.axis, "Graphs.Color.axis", QColor(Qt::white)},
|
2021-10-18 06:37:40 +08:00
|
|
|
{&Graphs.Color.Ticks.Background.enabled, "Graphs.Color.Ticks.Background.enabled", true},
|
2021-10-26 02:41:58 +08:00
|
|
|
{&Graphs.Color.Ticks.Background.background, "Graphs.Color.Ticks.Background.background", QColor(20, 20, 20)},
|
2021-10-18 06:37:40 +08:00
|
|
|
{&Graphs.Color.Ticks.divisions, "Graphs.Color.Ticks.divisions", QColor(Qt::gray)},
|
2021-07-10 19:12:30 +08:00
|
|
|
{&Graphs.domainChangeBehavior, "Graphs.domainChangeBehavior", GraphDomainChangeBehavior::AdjustGraphs},
|
|
|
|
{&Graphs.markerBehavior.showDataOnGraphs, "Graphs.markerBehavior.ShowDataOnGraphs", true},
|
|
|
|
{&Graphs.markerBehavior.showAllData, "Graphs.markerBehavior.ShowAllData", false},
|
2021-12-06 01:26:32 +08:00
|
|
|
{&Graphs.lineWidth, "Graphs.lineWidth", 1.0},
|
2021-07-10 19:12:30 +08:00
|
|
|
{&SCPIServer.enabled, "SCPIServer.enabled", true},
|
|
|
|
{&SCPIServer.port, "SCPIServer.port", 19542},
|
2020-09-12 05:07:15 +08:00
|
|
|
}};
|
|
|
|
};
|
|
|
|
|
|
|
|
namespace Ui {
|
|
|
|
class PreferencesDialog;
|
|
|
|
}
|
|
|
|
|
|
|
|
class PreferencesDialog : public QDialog
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
explicit PreferencesDialog(Preferences *pref, QWidget *parent = nullptr);
|
|
|
|
~PreferencesDialog();
|
|
|
|
|
|
|
|
private:
|
|
|
|
void setInitialGUIState();
|
|
|
|
Ui::PreferencesDialog *ui;
|
|
|
|
Preferences *p;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // PREFERENCESDIALOG_H
|