Initial global keyboard handler setup
This commit is contained in:
parent
7fb7089bfd
commit
2295b47d69
115
src/AppFrame.cpp
115
src/AppFrame.cpp
|
@ -288,7 +288,7 @@ AppFrame::AppFrame() :
|
||||||
this->SetSizer(vbox);
|
this->SetSizer(vbox);
|
||||||
|
|
||||||
// waterfallCanvas->SetFocusFromKbd();
|
// waterfallCanvas->SetFocusFromKbd();
|
||||||
waterfallCanvas->SetFocus();
|
// waterfallCanvas->SetFocus();
|
||||||
|
|
||||||
// SetIcon(wxICON(sample));
|
// SetIcon(wxICON(sample));
|
||||||
|
|
||||||
|
@ -1196,15 +1196,15 @@ void AppFrame::OnIdle(wxIdleEvent& event) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (demodTuner->getMouseTracker()->mouseInView()) {
|
// if (demodTuner->getMouseTracker()->mouseInView()) {
|
||||||
if (!demodTuner->HasFocus()) {
|
// if (!demodTuner->HasFocus()) {
|
||||||
demodTuner->SetFocus();
|
// demodTuner->SetFocus();
|
||||||
}
|
// }
|
||||||
} else if (!wxGetApp().isDeviceSelectorOpen() && (!modemProps || !modemProps->isMouseInView())) {
|
// } else if (!wxGetApp().isDeviceSelectorOpen() && (!modemProps || !modemProps->isMouseInView())) {
|
||||||
if (!waterfallCanvas->HasFocus()) {
|
// if (!waterfallCanvas->HasFocus()) {
|
||||||
waterfallCanvas->SetFocus();
|
// waterfallCanvas->SetFocus();
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
scopeCanvas->setPPMMode(demodTuner->isAltDown());
|
scopeCanvas->setPPMMode(demodTuner->isAltDown());
|
||||||
|
|
||||||
|
@ -1276,6 +1276,8 @@ void AppFrame::OnIdle(wxIdleEvent& event) {
|
||||||
|
|
||||||
if (!this->IsActive()) {
|
if (!this->IsActive()) {
|
||||||
std::this_thread::sleep_for(std::chrono::milliseconds(25));
|
std::this_thread::sleep_for(std::chrono::milliseconds(25));
|
||||||
|
} else {
|
||||||
|
std::this_thread::sleep_for(std::chrono::milliseconds(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
event.RequestMore();
|
event.RequestMore();
|
||||||
|
@ -1540,3 +1542,96 @@ void AppFrame::setMainWaterfallFFTSize(int fftSize) {
|
||||||
waterfallDataThread->getProcessor()->setFFTSize(fftSize);
|
waterfallDataThread->getProcessor()->setFFTSize(fftSize);
|
||||||
waterfallCanvas->setFFTSize(fftSize);
|
waterfallCanvas->setFFTSize(fftSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int AppFrame::OnGlobalKeyDown(wxKeyEvent &event) {
|
||||||
|
if (!this->IsActive()) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (event.GetKeyCode()) {
|
||||||
|
case WXK_UP:
|
||||||
|
case WXK_NUMPAD_UP:
|
||||||
|
case WXK_DOWN:
|
||||||
|
case WXK_NUMPAD_DOWN:
|
||||||
|
case WXK_LEFT:
|
||||||
|
case WXK_NUMPAD_LEFT:
|
||||||
|
case WXK_RIGHT:
|
||||||
|
case WXK_NUMPAD_RIGHT:
|
||||||
|
waterfallCanvas->OnKeyDown(event);
|
||||||
|
return 0;
|
||||||
|
case 'A':
|
||||||
|
case 'F':
|
||||||
|
case 'L':
|
||||||
|
case 'U':
|
||||||
|
return 0;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (demodTuner->getMouseTracker()->mouseInView()) {
|
||||||
|
demodTuner->OnKeyDown(event);
|
||||||
|
return 0;
|
||||||
|
} else if (waterfallCanvas->getMouseTracker()->mouseInView()) {
|
||||||
|
waterfallCanvas->OnKeyDown(event);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int AppFrame::OnGlobalKeyUp(wxKeyEvent &event) {
|
||||||
|
if (!this->IsActive()) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (event.GetKeyCode()) {
|
||||||
|
case WXK_SPACE:
|
||||||
|
if (!demodTuner->getMouseTracker()->mouseInView()) {
|
||||||
|
wxGetApp().showFrequencyInput();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case WXK_UP:
|
||||||
|
case WXK_NUMPAD_UP:
|
||||||
|
case WXK_DOWN:
|
||||||
|
case WXK_NUMPAD_DOWN:
|
||||||
|
case WXK_LEFT:
|
||||||
|
case WXK_NUMPAD_LEFT:
|
||||||
|
case WXK_RIGHT:
|
||||||
|
case WXK_NUMPAD_RIGHT:
|
||||||
|
waterfallCanvas->OnKeyUp(event);
|
||||||
|
return 0;
|
||||||
|
case 'A':
|
||||||
|
demodModeSelector->setSelection("AM");
|
||||||
|
break;
|
||||||
|
case 'F':
|
||||||
|
if (demodModeSelector->getSelectionLabel() == "FM") {
|
||||||
|
demodModeSelector->setSelection("FMS");
|
||||||
|
} else {
|
||||||
|
demodModeSelector->setSelection("FM");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'L':
|
||||||
|
demodModeSelector->setSelection("LSB");
|
||||||
|
break;
|
||||||
|
case 'U':
|
||||||
|
demodModeSelector->setSelection("USB");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (demodTuner->getMouseTracker()->mouseInView()) {
|
||||||
|
demodTuner->OnKeyUp(event);
|
||||||
|
return 0;
|
||||||
|
} else if (waterfallCanvas->getMouseTracker()->mouseInView()) {
|
||||||
|
waterfallCanvas->OnKeyUp(event);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// TODO: Catch key-ups outside of original target
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -75,6 +75,9 @@ public:
|
||||||
void updateModemProperties(ModemArgInfoList args);
|
void updateModemProperties(ModemArgInfoList args);
|
||||||
void setMainWaterfallFFTSize(int fftSize);
|
void setMainWaterfallFFTSize(int fftSize);
|
||||||
|
|
||||||
|
int OnGlobalKeyDown(wxKeyEvent &event);
|
||||||
|
int OnGlobalKeyUp(wxKeyEvent &event);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void OnMenu(wxCommandEvent& event);
|
void OnMenu(wxCommandEvent& event);
|
||||||
void OnClose(wxCloseEvent& event);
|
void OnClose(wxCloseEvent& event);
|
||||||
|
|
|
@ -749,6 +749,22 @@ std::string CubicSDR::getModulePath() {
|
||||||
return modulePath;
|
return modulePath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int CubicSDR::FilterEvent(wxEvent& event) {
|
||||||
|
if (!appframe) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (event.GetEventType() == wxEVT_KEY_DOWN) {
|
||||||
|
return appframe->OnGlobalKeyDown((wxKeyEvent&)event);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (event.GetEventType() == wxEVT_KEY_UP) {
|
||||||
|
return appframe->OnGlobalKeyUp((wxKeyEvent&)event);
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1; // process normally
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef USE_HAMLIB
|
#ifdef USE_HAMLIB
|
||||||
RigThread *CubicSDR::getRigThread() {
|
RigThread *CubicSDR::getRigThread() {
|
||||||
return rigThread;
|
return rigThread;
|
||||||
|
|
|
@ -161,6 +161,8 @@ public:
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
int FilterEvent(wxEvent& event);
|
||||||
|
|
||||||
AppFrame *appframe;
|
AppFrame *appframe;
|
||||||
AppConfig config;
|
AppConfig config;
|
||||||
PrimaryGLContext *m_glContext;
|
PrimaryGLContext *m_glContext;
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
|
|
||||||
InteractiveCanvas::InteractiveCanvas(wxWindow *parent, int *attribList) :
|
InteractiveCanvas::InteractiveCanvas(wxWindow *parent, int *attribList) :
|
||||||
wxGLCanvas(parent, wxID_ANY, attribList, wxDefaultPosition, wxDefaultSize,
|
wxGLCanvas(parent, wxID_ANY, attribList, wxDefaultPosition, wxDefaultSize,
|
||||||
wxFULL_REPAINT_ON_RESIZE| wxWANTS_CHARS), parent(parent), shiftDown(false), altDown(false), ctrlDown(false), centerFreq(0), bandwidth(0), lastBandwidth(0), isView(
|
wxFULL_REPAINT_ON_RESIZE), parent(parent), shiftDown(false), altDown(false), ctrlDown(false), centerFreq(0), bandwidth(0), lastBandwidth(0), isView(
|
||||||
false) {
|
false) {
|
||||||
mouseTracker.setTarget(this);
|
mouseTracker.setTarget(this);
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,8 +26,8 @@ EVT_RIGHT_UP(TuningCanvas::OnMouseRightReleased)
|
||||||
EVT_LEAVE_WINDOW(TuningCanvas::OnMouseLeftWindow)
|
EVT_LEAVE_WINDOW(TuningCanvas::OnMouseLeftWindow)
|
||||||
EVT_ENTER_WINDOW(TuningCanvas::OnMouseEnterWindow)
|
EVT_ENTER_WINDOW(TuningCanvas::OnMouseEnterWindow)
|
||||||
EVT_MOUSEWHEEL(TuningCanvas::OnMouseWheelMoved)
|
EVT_MOUSEWHEEL(TuningCanvas::OnMouseWheelMoved)
|
||||||
EVT_KEY_DOWN(TuningCanvas::OnKeyDown)
|
//EVT_KEY_DOWN(TuningCanvas::OnKeyDown)
|
||||||
EVT_KEY_UP(TuningCanvas::OnKeyUp)
|
//EVT_KEY_UP(TuningCanvas::OnKeyUp)
|
||||||
wxEND_EVENT_TABLE()
|
wxEND_EVENT_TABLE()
|
||||||
|
|
||||||
TuningCanvas::TuningCanvas(wxWindow *parent, int *attribList) :
|
TuningCanvas::TuningCanvas(wxWindow *parent, int *attribList) :
|
||||||
|
|
|
@ -25,6 +25,8 @@ public:
|
||||||
bool changed();
|
bool changed();
|
||||||
|
|
||||||
void setHalfBand(bool hb);
|
void setHalfBand(bool hb);
|
||||||
|
void OnKeyDown(wxKeyEvent& event);
|
||||||
|
void OnKeyUp(wxKeyEvent& event);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void OnPaint(wxPaintEvent& event);
|
void OnPaint(wxPaintEvent& event);
|
||||||
|
@ -36,8 +38,6 @@ private:
|
||||||
void OnMouseReleased(wxMouseEvent& event);
|
void OnMouseReleased(wxMouseEvent& event);
|
||||||
void OnMouseEnterWindow(wxMouseEvent& event);
|
void OnMouseEnterWindow(wxMouseEvent& event);
|
||||||
void OnMouseLeftWindow(wxMouseEvent& event);
|
void OnMouseLeftWindow(wxMouseEvent& event);
|
||||||
void OnKeyDown(wxKeyEvent& event);
|
|
||||||
void OnKeyUp(wxKeyEvent& event);
|
|
||||||
void OnMouseRightDown(wxMouseEvent& event);
|
void OnMouseRightDown(wxMouseEvent& event);
|
||||||
void OnMouseRightReleased(wxMouseEvent& event);
|
void OnMouseRightReleased(wxMouseEvent& event);
|
||||||
|
|
||||||
|
|
|
@ -19,8 +19,8 @@
|
||||||
|
|
||||||
wxBEGIN_EVENT_TABLE(WaterfallCanvas, wxGLCanvas)
|
wxBEGIN_EVENT_TABLE(WaterfallCanvas, wxGLCanvas)
|
||||||
EVT_PAINT(WaterfallCanvas::OnPaint)
|
EVT_PAINT(WaterfallCanvas::OnPaint)
|
||||||
EVT_KEY_DOWN(WaterfallCanvas::OnKeyDown)
|
//EVT_KEY_DOWN(WaterfallCanvas::OnKeyDown)
|
||||||
EVT_KEY_UP(WaterfallCanvas::OnKeyUp)
|
//EVT_KEY_UP(WaterfallCanvas::OnKeyUp)
|
||||||
EVT_IDLE(WaterfallCanvas::OnIdle)
|
EVT_IDLE(WaterfallCanvas::OnIdle)
|
||||||
EVT_MOTION(WaterfallCanvas::OnMouseMoved)
|
EVT_MOTION(WaterfallCanvas::OnMouseMoved)
|
||||||
EVT_LEFT_DOWN(WaterfallCanvas::OnMouseDown)
|
EVT_LEFT_DOWN(WaterfallCanvas::OnMouseDown)
|
||||||
|
@ -345,7 +345,6 @@ void WaterfallCanvas::OnKeyUp(wxKeyEvent& event) {
|
||||||
altDown = event.AltDown();
|
altDown = event.AltDown();
|
||||||
ctrlDown = event.ControlDown();
|
ctrlDown = event.ControlDown();
|
||||||
switch (event.GetKeyCode()) {
|
switch (event.GetKeyCode()) {
|
||||||
case 'A':
|
|
||||||
case WXK_UP:
|
case WXK_UP:
|
||||||
case WXK_NUMPAD_UP:
|
case WXK_NUMPAD_UP:
|
||||||
scaleMove = 0.0;
|
scaleMove = 0.0;
|
||||||
|
@ -354,7 +353,6 @@ void WaterfallCanvas::OnKeyUp(wxKeyEvent& event) {
|
||||||
mouseZoom = 0.95;
|
mouseZoom = 0.95;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'Z':
|
|
||||||
case WXK_DOWN:
|
case WXK_DOWN:
|
||||||
case WXK_NUMPAD_DOWN:
|
case WXK_NUMPAD_DOWN:
|
||||||
scaleMove = 0.0;
|
scaleMove = 0.0;
|
||||||
|
@ -381,7 +379,6 @@ void WaterfallCanvas::OnKeyDown(wxKeyEvent& event) {
|
||||||
long long freq = originalFreq;
|
long long freq = originalFreq;
|
||||||
|
|
||||||
switch (event.GetKeyCode()) {
|
switch (event.GetKeyCode()) {
|
||||||
case 'A':
|
|
||||||
case WXK_UP:
|
case WXK_UP:
|
||||||
case WXK_NUMPAD_UP:
|
case WXK_NUMPAD_UP:
|
||||||
if (!shiftDown) {
|
if (!shiftDown) {
|
||||||
|
@ -391,7 +388,6 @@ void WaterfallCanvas::OnKeyDown(wxKeyEvent& event) {
|
||||||
scaleMove = 1.0;
|
scaleMove = 1.0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'Z':
|
|
||||||
case WXK_DOWN:
|
case WXK_DOWN:
|
||||||
case WXK_NUMPAD_DOWN:
|
case WXK_NUMPAD_DOWN:
|
||||||
if (!shiftDown) {
|
if (!shiftDown) {
|
||||||
|
|
|
@ -33,11 +33,11 @@ public:
|
||||||
void setLinesPerSecond(int lps);
|
void setLinesPerSecond(int lps);
|
||||||
void setMinBandwidth(int min);
|
void setMinBandwidth(int min);
|
||||||
|
|
||||||
private:
|
|
||||||
void OnPaint(wxPaintEvent& event);
|
|
||||||
void OnKeyDown(wxKeyEvent& event);
|
void OnKeyDown(wxKeyEvent& event);
|
||||||
void OnKeyUp(wxKeyEvent& event);
|
void OnKeyUp(wxKeyEvent& event);
|
||||||
|
|
||||||
|
private:
|
||||||
|
void OnPaint(wxPaintEvent& event);
|
||||||
void OnIdle(wxIdleEvent &event);
|
void OnIdle(wxIdleEvent &event);
|
||||||
|
|
||||||
void OnMouseMoved(wxMouseEvent& event);
|
void OnMouseMoved(wxMouseEvent& event);
|
||||||
|
|
Loading…
Reference in New Issue