gui: set/get reference type and output regardless combobox index
This commit is contained in:
parent
aec12f7b0b
commit
e0143e9caf
@ -66,6 +66,99 @@ static const QString APP_GIT_HASH = QString(GITHASH);
|
|||||||
|
|
||||||
static bool noGUIset = false;
|
static bool noGUIset = false;
|
||||||
|
|
||||||
|
|
||||||
|
class Reference
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
enum class TypeIn {
|
||||||
|
Internal,
|
||||||
|
External,
|
||||||
|
Auto,
|
||||||
|
None
|
||||||
|
};
|
||||||
|
|
||||||
|
enum class OutFreq {
|
||||||
|
MHZ10,
|
||||||
|
MHZ100,
|
||||||
|
Off,
|
||||||
|
None
|
||||||
|
};
|
||||||
|
|
||||||
|
static QString OutFreqToLabel(Reference::OutFreq t)
|
||||||
|
{
|
||||||
|
switch(t) {
|
||||||
|
case OutFreq::MHZ10: return "10 MHz";
|
||||||
|
case OutFreq::MHZ100: return "100 MHz";
|
||||||
|
case OutFreq::Off: return "Off";
|
||||||
|
default: return "Invalid";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static QString OutFreqToKey(Reference::OutFreq f)
|
||||||
|
{
|
||||||
|
switch(f) {
|
||||||
|
case OutFreq::MHZ10: return "10 MHz";
|
||||||
|
case OutFreq::MHZ100: return "100 MHz";
|
||||||
|
case OutFreq::Off: return "Off";
|
||||||
|
default: return "Invalid";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static Reference::OutFreq KeyToOutFreq(QString key)
|
||||||
|
{
|
||||||
|
for (auto r: Reference::getOutFrequencies()) {
|
||||||
|
if(OutFreqToKey((Reference::OutFreq) r) == key) {
|
||||||
|
return (Reference::OutFreq) r;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// not found
|
||||||
|
return Reference::OutFreq::None;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static QString TypeToLabel(TypeIn t)
|
||||||
|
{
|
||||||
|
switch(t) {
|
||||||
|
case TypeIn::Internal: return "Internal";
|
||||||
|
case TypeIn::External: return "External";
|
||||||
|
case TypeIn::Auto: return "Auto";
|
||||||
|
default: return "Invalid";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static const QString TypeToKey(TypeIn t)
|
||||||
|
{
|
||||||
|
switch(t) {
|
||||||
|
case TypeIn::Internal: return "Int";
|
||||||
|
case TypeIn::External: return "Ext";
|
||||||
|
case TypeIn::Auto: return "Auto";
|
||||||
|
default: return "Invalid";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static TypeIn KeyToType(QString key)
|
||||||
|
{
|
||||||
|
for (auto r: Reference::getReferencesIn()) {
|
||||||
|
if(TypeToKey((TypeIn) r) == key) {
|
||||||
|
return (TypeIn) r;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// not found
|
||||||
|
return TypeIn::None;
|
||||||
|
}
|
||||||
|
|
||||||
|
static std::vector<Reference::TypeIn> getReferencesIn()
|
||||||
|
{
|
||||||
|
return {TypeIn::Internal, TypeIn::External, TypeIn::Auto};
|
||||||
|
}
|
||||||
|
|
||||||
|
static std::vector<Reference::OutFreq> getOutFrequencies()
|
||||||
|
{
|
||||||
|
return {OutFreq::Off, OutFreq::MHZ10, OutFreq::MHZ100};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
AppWindow::AppWindow(QWidget *parent)
|
AppWindow::AppWindow(QWidget *parent)
|
||||||
: QMainWindow(parent)
|
: QMainWindow(parent)
|
||||||
, deviceActionGroup(new QActionGroup(this))
|
, deviceActionGroup(new QActionGroup(this))
|
||||||
@ -368,16 +461,17 @@ void AppWindow::CreateToolbars()
|
|||||||
auto tb_reference = new QToolBar("Reference", this);
|
auto tb_reference = new QToolBar("Reference", this);
|
||||||
tb_reference->addWidget(new QLabel("Ref in:"));
|
tb_reference->addWidget(new QLabel("Ref in:"));
|
||||||
toolbars.reference.type = new QComboBox();
|
toolbars.reference.type = new QComboBox();
|
||||||
toolbars.reference.type->addItem("Int");
|
for (auto r: Reference::getReferencesIn()) {
|
||||||
toolbars.reference.type->addItem("Ext");
|
toolbars.reference.type->addItem(Reference::TypeToLabel(r), (int)r);
|
||||||
toolbars.reference.type->addItem("Auto");
|
}
|
||||||
tb_reference->addWidget(toolbars.reference.type);
|
tb_reference->addWidget(toolbars.reference.type);
|
||||||
tb_reference->addSeparator();
|
tb_reference->addSeparator();
|
||||||
tb_reference->addWidget(new QLabel("Ref out:"));
|
tb_reference->addWidget(new QLabel("Ref out:"));
|
||||||
toolbars.reference.outFreq = new QComboBox();
|
toolbars.reference.outFreq = new QComboBox();
|
||||||
toolbars.reference.outFreq->addItem("Off");
|
for (auto f: Reference::getOutFrequencies()) {
|
||||||
toolbars.reference.outFreq->addItem("10 MHz");
|
|
||||||
toolbars.reference.outFreq->addItem("100 MHz");
|
toolbars.reference.outFreq->addItem(Reference::OutFreqToLabel(f), (int)f);
|
||||||
|
}
|
||||||
tb_reference->addWidget(toolbars.reference.outFreq);
|
tb_reference->addWidget(toolbars.reference.outFreq);
|
||||||
connect(toolbars.reference.type, qOverload<int>(&QComboBox::currentIndexChanged), this, &AppWindow::UpdateReference);
|
connect(toolbars.reference.type, qOverload<int>(&QComboBox::currentIndexChanged), this, &AppWindow::UpdateReference);
|
||||||
connect(toolbars.reference.outFreq, qOverload<int>(&QComboBox::currentIndexChanged), this, &AppWindow::UpdateReference);
|
connect(toolbars.reference.outFreq, qOverload<int>(&QComboBox::currentIndexChanged), this, &AppWindow::UpdateReference);
|
||||||
@ -429,20 +523,24 @@ void AppWindow::SetupSCPI()
|
|||||||
if(params.size() != 1) {
|
if(params.size() != 1) {
|
||||||
return "ERROR";
|
return "ERROR";
|
||||||
} else if(params[0] == "0" || params[0] == "OFF") {
|
} else if(params[0] == "0" || params[0] == "OFF") {
|
||||||
toolbars.reference.outFreq->setCurrentIndex(0);
|
int index = toolbars.reference.outFreq->findData((int)Reference::OutFreq::Off);
|
||||||
|
toolbars.reference.outFreq->setCurrentIndex(index);
|
||||||
} else if(params[0] == "10") {
|
} else if(params[0] == "10") {
|
||||||
toolbars.reference.outFreq->setCurrentIndex(1);
|
int index = toolbars.reference.outFreq->findData((int)Reference::OutFreq::MHZ10);
|
||||||
|
toolbars.reference.outFreq->setCurrentIndex(index);
|
||||||
} else if(params[0] == "100") {
|
} else if(params[0] == "100") {
|
||||||
toolbars.reference.outFreq->setCurrentIndex(2);
|
int index = toolbars.reference.outFreq->findData((int)Reference::OutFreq::MHZ100);
|
||||||
|
toolbars.reference.outFreq->setCurrentIndex(index);
|
||||||
} else {
|
} else {
|
||||||
return "ERROR";
|
return "ERROR";
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
}, [=](QStringList) -> QString {
|
}, [=](QStringList) -> QString {
|
||||||
switch(toolbars.reference.outFreq->currentIndex()) {
|
Reference::OutFreq f = static_cast<Reference::OutFreq>(toolbars.reference.outFreq->currentData().toInt());
|
||||||
case 0: return "OFF";
|
switch(f) {
|
||||||
case 1: return "10";
|
case Reference::OutFreq::Off: return "OFF";
|
||||||
case 2: return "100";
|
case Reference::OutFreq::MHZ10: return "10";
|
||||||
|
case Reference::OutFreq::MHZ100: return "100";
|
||||||
default: return "ERROR";
|
default: return "ERROR";
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
@ -450,11 +548,14 @@ void AppWindow::SetupSCPI()
|
|||||||
if(params.size() != 1) {
|
if(params.size() != 1) {
|
||||||
return "ERROR";
|
return "ERROR";
|
||||||
} else if(params[0] == "INT") {
|
} else if(params[0] == "INT") {
|
||||||
toolbars.reference.type->setCurrentIndex(0);
|
int index = toolbars.reference.type->findData((int)Reference::TypeIn::Internal);
|
||||||
|
toolbars.reference.type->setCurrentIndex(index);
|
||||||
} else if(params[0] == "EXT") {
|
} else if(params[0] == "EXT") {
|
||||||
toolbars.reference.type->setCurrentIndex(1);
|
int index = toolbars.reference.type->findData((int)Reference::TypeIn::External);
|
||||||
|
toolbars.reference.type->setCurrentIndex(index);
|
||||||
} else if(params[0] == "AUTO") {
|
} else if(params[0] == "AUTO") {
|
||||||
toolbars.reference.type->setCurrentIndex(2);
|
int index = toolbars.reference.type->findData((int)Reference::TypeIn::Auto);
|
||||||
|
toolbars.reference.type->setCurrentIndex(index);
|
||||||
} else {
|
} else {
|
||||||
return "ERROR";
|
return "ERROR";
|
||||||
}
|
}
|
||||||
@ -860,20 +961,18 @@ void AppWindow::UpdateReference()
|
|||||||
}
|
}
|
||||||
Protocol::ReferenceSettings s = {};
|
Protocol::ReferenceSettings s = {};
|
||||||
|
|
||||||
QString txt1 = toolbars.reference.type->currentText();
|
Reference::TypeIn t = static_cast<Reference::TypeIn>(toolbars.reference.type->currentData().toInt());
|
||||||
if( (txt1=="Ext") || (txt1=="External") ) {
|
switch (t) {
|
||||||
s.UseExternalRef = 1;
|
case Reference::TypeIn::External: s.UseExternalRef = 1; break;
|
||||||
}
|
case Reference::TypeIn::Auto: s.AutomaticSwitch = 1; break;
|
||||||
if( (txt1=="Auto") || (txt1=="Automatic") ) {
|
default: break;
|
||||||
s.AutomaticSwitch = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QString txt2 = toolbars.reference.outFreq->currentText();
|
Reference::OutFreq f = static_cast<Reference::OutFreq>(toolbars.reference.outFreq->currentData().toInt());
|
||||||
if(txt2=="10 MHz"){
|
switch(f) {
|
||||||
s.ExtRefOuputFreq = 10000000;
|
case Reference::OutFreq::MHZ10: s.ExtRefOuputFreq = 10000000; break;
|
||||||
}
|
case Reference::OutFreq::MHZ100: s.ExtRefOuputFreq = 100000000; break;
|
||||||
if(txt2=="100 MHz"){
|
default: break;
|
||||||
s.ExtRefOuputFreq = 100000000;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Protocol::PacketInfo p;
|
Protocol::PacketInfo p;
|
||||||
@ -977,8 +1076,11 @@ nlohmann::json AppWindow::SaveSetup()
|
|||||||
j["activeMode"] = Mode::getActiveMode()->getName().toStdString();
|
j["activeMode"] = Mode::getActiveMode()->getName().toStdString();
|
||||||
}
|
}
|
||||||
nlohmann::json ref;
|
nlohmann::json ref;
|
||||||
ref["Mode"] = toolbars.reference.type->currentText().toStdString();
|
|
||||||
ref["Output"] = toolbars.reference.outFreq->currentText().toStdString();
|
Reference::TypeIn t = static_cast<Reference::TypeIn>(toolbars.reference.type->currentData().toInt());
|
||||||
|
ref["Mode"] = Reference::TypeToKey(t).toStdString();
|
||||||
|
Reference::OutFreq f = static_cast<Reference::OutFreq>(toolbars.reference.outFreq->currentData().toInt());
|
||||||
|
ref["Output"] = Reference::OutFreqToKey(f).toStdString();
|
||||||
j["Reference"] = ref;
|
j["Reference"] = ref;
|
||||||
return j;
|
return j;
|
||||||
}
|
}
|
||||||
@ -1009,7 +1111,10 @@ void AppWindow::LoadSetup(nlohmann::json j)
|
|||||||
// auto d = new JSONPickerDialog(j);
|
// auto d = new JSONPickerDialog(j);
|
||||||
// d->exec();
|
// d->exec();
|
||||||
if(j.contains("Reference")) {
|
if(j.contains("Reference")) {
|
||||||
toolbars.reference.type->setCurrentText(QString::fromStdString(j["Reference"].value("Mode", "Int")));
|
QString fallback = Reference::TypeToKey(Reference::TypeIn::Internal);
|
||||||
|
auto mode = QString::fromStdString(j["Reference"].value("Mode",fallback.toStdString()));
|
||||||
|
auto index = toolbars.reference.type->findData((int)Reference::KeyToType(mode));
|
||||||
|
toolbars.reference.type->setCurrentIndex(index);
|
||||||
toolbars.reference.outFreq->setCurrentText(QString::fromStdString(j["Reference"].value("Output", "Off")));
|
toolbars.reference.outFreq->setCurrentText(QString::fromStdString(j["Reference"].value("Output", "Off")));
|
||||||
}
|
}
|
||||||
while(Mode::getModes().size() > 0) {
|
while(Mode::getModes().size() > 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user