diff --git a/src/AppFrame.cpp b/src/AppFrame.cpp index bc79dcd..b1a8711 100644 --- a/src/AppFrame.cpp +++ b/src/AppFrame.cpp @@ -1193,11 +1193,12 @@ bool AppFrame::loadSession(std::string fileName) { std::string output_device = demod->hasAnother("output_device") ? string(*(demod->getNext("output_device"))) : ""; float gain = demod->hasAnother("gain") ? (float) *demod->getNext("gain") : 1.0; - std::string type = demod->hasAnother("type") ? string(*demod->getNext("type")) : "FM"; - std::istringstream typeCheck(type); + std::string type = "FM"; + + DataNode *demodTypeNode = demod->hasAnother("type")?demod->getNext("type"):nullptr; - int legacyType = 0; - if (!(typeCheck >> legacyType).fail()) { + if (demodTypeNode->element()->getDataType() == DATA_INT) { + int legacyType = *demodTypeNode; int legacyStereo = demod->hasAnother("stereo") ? (int) *demod->getNext("stereo") : 0; switch (legacyType) { // legacy demod ID case 1: type = legacyStereo?"FMS":"FM"; break; @@ -1218,9 +1219,10 @@ bool AppFrame::loadSession(std::string fileName) { case 16: type = "I/Q"; break; default: type = "FM"; break; } + } else if (demodTypeNode->element()->getDataType() == DATA_STRING) { + demodTypeNode->element()->get(type); } - ModemSettings mSettings; if (demod->hasAnother("settings")) { diff --git a/src/visual/ModeSelectorCanvas.cpp b/src/visual/ModeSelectorCanvas.cpp index d89be48..7f57c56 100644 --- a/src/visual/ModeSelectorCanvas.cpp +++ b/src/visual/ModeSelectorCanvas.cpp @@ -159,6 +159,7 @@ void ModeSelectorCanvas::setSelection(std::string label) { for (int i = 0; i < numChoices; i++) { if (selections[i].label == label) { currentSelection = i; + Refresh(); return; } }