mirror of
https://github.com/cjcliffe/CubicSDR.git
synced 2026-06-27 14:03:15 -04:00
Dynamic input rate menu values from SoapySDR
This commit is contained in:
@@ -2,7 +2,6 @@
|
||||
|
||||
#include "wx/clipbrd.h"
|
||||
#include <sstream>
|
||||
#include <iomanip>
|
||||
#include "CubicSDR.h"
|
||||
|
||||
wxBEGIN_EVENT_TABLE(FrequencyDialog, wxDialog)
|
||||
@@ -37,75 +36,6 @@ FrequencyDialog::FrequencyDialog(wxWindow * parent, wxWindowID id, const wxStrin
|
||||
dialogText->SetSelection(-1, -1);
|
||||
}
|
||||
|
||||
std::string& FrequencyDialog::filterChars(std::string& s, const std::string& allowed) {
|
||||
s.erase(remove_if(s.begin(), s.end(), [&allowed](const char& c) {
|
||||
return allowed.find(c) == std::string::npos;
|
||||
}), s.end());
|
||||
return s;
|
||||
}
|
||||
|
||||
std::string FrequencyDialog::frequencyToStr(long long freq) {
|
||||
long double freqTemp;
|
||||
|
||||
freqTemp = freq;
|
||||
std::string suffix("");
|
||||
std::stringstream freqStr;
|
||||
|
||||
if (freqTemp >= 1.0e9) {
|
||||
freqTemp /= 1.0e9;
|
||||
freqStr << std::setprecision(10);
|
||||
suffix = std::string("GHz");
|
||||
} else if (freqTemp >= 1.0e6) {
|
||||
freqTemp /= 1.0e6;
|
||||
freqStr << std::setprecision(7);
|
||||
suffix = std::string("MHz");
|
||||
} else if (freqTemp >= 1.0e3) {
|
||||
freqTemp /= 1.0e3;
|
||||
freqStr << std::setprecision(4);
|
||||
suffix = std::string("KHz");
|
||||
}
|
||||
|
||||
freqStr << freqTemp;
|
||||
freqStr << suffix;
|
||||
|
||||
return freqStr.str();
|
||||
}
|
||||
|
||||
long long FrequencyDialog::strToFrequency(std::string freqStr) {
|
||||
std::string filterStr = filterChars(freqStr, std::string("0123456789.MKGHmkgh"));
|
||||
|
||||
int numLen = filterStr.find_first_not_of("0123456789.");
|
||||
|
||||
if (numLen == std::string::npos) {
|
||||
numLen = freqStr.length();
|
||||
}
|
||||
|
||||
std::string numPartStr = freqStr.substr(0, numLen);
|
||||
std::string suffixStr = freqStr.substr(numLen);
|
||||
|
||||
std::stringstream numPartStream;
|
||||
numPartStream.str(numPartStr);
|
||||
|
||||
long double freqTemp = 0;
|
||||
|
||||
numPartStream >> freqTemp;
|
||||
|
||||
if (suffixStr.length()) {
|
||||
if (suffixStr.find_first_of("Gg") != std::string::npos) {
|
||||
freqTemp *= 1.0e9;
|
||||
} else if (suffixStr.find_first_of("Mm") != std::string::npos) {
|
||||
freqTemp *= 1.0e6;
|
||||
} else if (suffixStr.find_first_of("Kk") != std::string::npos) {
|
||||
freqTemp *= 1.0e3;
|
||||
} else if (suffixStr.find_first_of("Hh") != std::string::npos) {
|
||||
// ...
|
||||
}
|
||||
} else if (numPartStr.find_first_of(".") != std::string::npos || freqTemp <= 3000) {
|
||||
freqTemp *= 1.0e6;
|
||||
}
|
||||
|
||||
return (long long) freqTemp;
|
||||
}
|
||||
|
||||
void FrequencyDialog::OnChar(wxKeyEvent& event) {
|
||||
int c = event.GetKeyCode();
|
||||
|
||||
Reference in New Issue
Block a user