diff --git a/src/AppFrame.cpp b/src/AppFrame.cpp index e93f0b0..afecb5d 100644 --- a/src/AppFrame.cpp +++ b/src/AppFrame.cpp @@ -1564,6 +1564,19 @@ int AppFrame::OnGlobalKeyDown(wxKeyEvent &event) { case 'L': case 'U': return 0; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + wxGetApp().showFrequencyInput(FrequencyDialog::FDIALOG_TARGET_DEFAULT, std::to_string(event.GetKeyCode() - '0')); + return 0; + break; default: break; } diff --git a/src/CubicSDR.cpp b/src/CubicSDR.cpp index 4d1517b..1db3ac9 100644 --- a/src/CubicSDR.cpp +++ b/src/CubicSDR.cpp @@ -650,7 +650,7 @@ int CubicSDR::getPPM() { } -void CubicSDR::showFrequencyInput(FrequencyDialog::FrequencyDialogTarget targetMode) { +void CubicSDR::showFrequencyInput(FrequencyDialog::FrequencyDialogTarget targetMode, wxString initString) { const wxString demodTitle("Set Demodulator Frequency"); const wxString freqTitle("Set Center Frequency"); const wxString bwTitle("Set Demodulator Bandwidth"); @@ -668,7 +668,7 @@ void CubicSDR::showFrequencyInput(FrequencyDialog::FrequencyDialogTarget targetM break; } - FrequencyDialog fdialog(appframe, -1, title, demodMgr.getActiveDemodulator(), wxPoint(-100,-100), wxSize(320, 75 ), wxDEFAULT_DIALOG_STYLE, targetMode); + FrequencyDialog fdialog(appframe, -1, title, demodMgr.getActiveDemodulator(), wxPoint(-100,-100), wxSize(320, 75 ), wxDEFAULT_DIALOG_STYLE, targetMode, initString); fdialog.ShowModal(); } diff --git a/src/CubicSDR.h b/src/CubicSDR.h index 83ad557..d15adbc 100644 --- a/src/CubicSDR.h +++ b/src/CubicSDR.h @@ -125,7 +125,7 @@ public: void setPPM(int ppm_in); int getPPM(); - void showFrequencyInput(FrequencyDialog::FrequencyDialogTarget targetMode = FrequencyDialog::FDIALOG_TARGET_DEFAULT); + void showFrequencyInput(FrequencyDialog::FrequencyDialogTarget targetMode = FrequencyDialog::FDIALOG_TARGET_DEFAULT, wxString initString = ""); AppFrame *getAppFrame(); bool areDevicesReady(); diff --git a/src/FrequencyDialog.cpp b/src/FrequencyDialog.cpp index 6d4b848..eda526e 100644 --- a/src/FrequencyDialog.cpp +++ b/src/FrequencyDialog.cpp @@ -9,7 +9,7 @@ EVT_CHAR_HOOK(FrequencyDialog::OnChar) wxEND_EVENT_TABLE() FrequencyDialog::FrequencyDialog(wxWindow * parent, wxWindowID id, const wxString & title, DemodulatorInstance *demod, const wxPoint & position, - const wxSize & size, long style, FrequencyDialogTarget targetMode) : + const wxSize & size, long style, FrequencyDialogTarget targetMode, wxString initString) : wxDialog(parent, id, title, position, size, style) { wxString freqStr; activeDemod = demod; @@ -38,7 +38,13 @@ FrequencyDialog::FrequencyDialog(wxWindow * parent, wxWindowID id, const wxStrin Centre(); - dialogText->SetSelection(-1, -1); + if (initString != "") { + dialogText->SetValue(initString); + dialogText->SetSelection(initString.length(), initString.length()); + dialogText->SetFocus(); + } else { + dialogText->SetSelection(-1, -1); + } } diff --git a/src/FrequencyDialog.h b/src/FrequencyDialog.h index d0c57b0..03859b8 100644 --- a/src/FrequencyDialog.h +++ b/src/FrequencyDialog.h @@ -17,7 +17,8 @@ public: const wxPoint & pos = wxDefaultPosition, const wxSize & size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE, - FrequencyDialogTarget targetMode = FDIALOG_TARGET_DEFAULT); + FrequencyDialogTarget targetMode = FDIALOG_TARGET_DEFAULT, + wxString initString = ""); wxTextCtrl * dialogText;