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);
|
||||
|
||||
// waterfallCanvas->SetFocusFromKbd();
|
||||
waterfallCanvas->SetFocus();
|
||||
// waterfallCanvas->SetFocus();
|
||||
|
||||
// SetIcon(wxICON(sample));
|
||||
|
||||
|
@ -1196,15 +1196,15 @@ void AppFrame::OnIdle(wxIdleEvent& event) {
|
|||
}
|
||||
}
|
||||
|
||||
if (demodTuner->getMouseTracker()->mouseInView()) {
|
||||
if (!demodTuner->HasFocus()) {
|
||||
demodTuner->SetFocus();
|
||||
}
|
||||
} else if (!wxGetApp().isDeviceSelectorOpen() && (!modemProps || !modemProps->isMouseInView())) {
|
||||
if (!waterfallCanvas->HasFocus()) {
|
||||
waterfallCanvas->SetFocus();
|
||||
}
|
||||
}
|
||||
// if (demodTuner->getMouseTracker()->mouseInView()) {
|
||||
// if (!demodTuner->HasFocus()) {
|
||||
// demodTuner->SetFocus();
|
||||
// }
|
||||
// } else if (!wxGetApp().isDeviceSelectorOpen() && (!modemProps || !modemProps->isMouseInView())) {
|
||||
// if (!waterfallCanvas->HasFocus()) {
|
||||
// waterfallCanvas->SetFocus();
|
||||
// }
|
||||
// }
|
||||
|
||||
scopeCanvas->setPPMMode(demodTuner->isAltDown());
|
||||
|
||||
|
@ -1276,6 +1276,8 @@ void AppFrame::OnIdle(wxIdleEvent& event) {
|
|||
|
||||
if (!this->IsActive()) {
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(25));
|
||||
} else {
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(1));
|
||||
}
|
||||
|
||||
event.RequestMore();
|
||||
|
@ -1540,3 +1542,96 @@ void AppFrame::setMainWaterfallFFTSize(int fftSize) {
|
|||
waterfallDataThread->getProcessor()->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 setMainWaterfallFFTSize(int fftSize);
|
||||
|
||||
int OnGlobalKeyDown(wxKeyEvent &event);
|
||||
int OnGlobalKeyUp(wxKeyEvent &event);
|
||||
|
||||
private:
|
||||
void OnMenu(wxCommandEvent& event);
|
||||
void OnClose(wxCloseEvent& event);
|
||||
|
|
|
@ -749,6 +749,22 @@ std::string CubicSDR::getModulePath() {
|
|||
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
|
||||
RigThread *CubicSDR::getRigThread() {
|
||||
return rigThread;
|
||||
|
|
|
@ -161,6 +161,8 @@ public:
|
|||
#endif
|
||||
|
||||
private:
|
||||
int FilterEvent(wxEvent& event);
|
||||
|
||||
AppFrame *appframe;
|
||||
AppConfig config;
|
||||
PrimaryGLContext *m_glContext;
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
InteractiveCanvas::InteractiveCanvas(wxWindow *parent, int *attribList) :
|
||||
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) {
|
||||
mouseTracker.setTarget(this);
|
||||
}
|
||||
|
|
|
@ -26,8 +26,8 @@ EVT_RIGHT_UP(TuningCanvas::OnMouseRightReleased)
|
|||
EVT_LEAVE_WINDOW(TuningCanvas::OnMouseLeftWindow)
|
||||
EVT_ENTER_WINDOW(TuningCanvas::OnMouseEnterWindow)
|
||||
EVT_MOUSEWHEEL(TuningCanvas::OnMouseWheelMoved)
|
||||
EVT_KEY_DOWN(TuningCanvas::OnKeyDown)
|
||||
EVT_KEY_UP(TuningCanvas::OnKeyUp)
|
||||
//EVT_KEY_DOWN(TuningCanvas::OnKeyDown)
|
||||
//EVT_KEY_UP(TuningCanvas::OnKeyUp)
|
||||
wxEND_EVENT_TABLE()
|
||||
|
||||
TuningCanvas::TuningCanvas(wxWindow *parent, int *attribList) :
|
||||
|
|
|
@ -25,6 +25,8 @@ public:
|
|||
bool changed();
|
||||
|
||||
void setHalfBand(bool hb);
|
||||
void OnKeyDown(wxKeyEvent& event);
|
||||
void OnKeyUp(wxKeyEvent& event);
|
||||
|
||||
private:
|
||||
void OnPaint(wxPaintEvent& event);
|
||||
|
@ -36,8 +38,6 @@ private:
|
|||
void OnMouseReleased(wxMouseEvent& event);
|
||||
void OnMouseEnterWindow(wxMouseEvent& event);
|
||||
void OnMouseLeftWindow(wxMouseEvent& event);
|
||||
void OnKeyDown(wxKeyEvent& event);
|
||||
void OnKeyUp(wxKeyEvent& event);
|
||||
void OnMouseRightDown(wxMouseEvent& event);
|
||||
void OnMouseRightReleased(wxMouseEvent& event);
|
||||
|
||||
|
|
|
@ -19,8 +19,8 @@
|
|||
|
||||
wxBEGIN_EVENT_TABLE(WaterfallCanvas, wxGLCanvas)
|
||||
EVT_PAINT(WaterfallCanvas::OnPaint)
|
||||
EVT_KEY_DOWN(WaterfallCanvas::OnKeyDown)
|
||||
EVT_KEY_UP(WaterfallCanvas::OnKeyUp)
|
||||
//EVT_KEY_DOWN(WaterfallCanvas::OnKeyDown)
|
||||
//EVT_KEY_UP(WaterfallCanvas::OnKeyUp)
|
||||
EVT_IDLE(WaterfallCanvas::OnIdle)
|
||||
EVT_MOTION(WaterfallCanvas::OnMouseMoved)
|
||||
EVT_LEFT_DOWN(WaterfallCanvas::OnMouseDown)
|
||||
|
@ -345,7 +345,6 @@ void WaterfallCanvas::OnKeyUp(wxKeyEvent& event) {
|
|||
altDown = event.AltDown();
|
||||
ctrlDown = event.ControlDown();
|
||||
switch (event.GetKeyCode()) {
|
||||
case 'A':
|
||||
case WXK_UP:
|
||||
case WXK_NUMPAD_UP:
|
||||
scaleMove = 0.0;
|
||||
|
@ -354,7 +353,6 @@ void WaterfallCanvas::OnKeyUp(wxKeyEvent& event) {
|
|||
mouseZoom = 0.95;
|
||||
}
|
||||
break;
|
||||
case 'Z':
|
||||
case WXK_DOWN:
|
||||
case WXK_NUMPAD_DOWN:
|
||||
scaleMove = 0.0;
|
||||
|
@ -381,7 +379,6 @@ void WaterfallCanvas::OnKeyDown(wxKeyEvent& event) {
|
|||
long long freq = originalFreq;
|
||||
|
||||
switch (event.GetKeyCode()) {
|
||||
case 'A':
|
||||
case WXK_UP:
|
||||
case WXK_NUMPAD_UP:
|
||||
if (!shiftDown) {
|
||||
|
@ -391,7 +388,6 @@ void WaterfallCanvas::OnKeyDown(wxKeyEvent& event) {
|
|||
scaleMove = 1.0;
|
||||
}
|
||||
break;
|
||||
case 'Z':
|
||||
case WXK_DOWN:
|
||||
case WXK_NUMPAD_DOWN:
|
||||
if (!shiftDown) {
|
||||
|
|
|
@ -33,11 +33,11 @@ public:
|
|||
void setLinesPerSecond(int lps);
|
||||
void setMinBandwidth(int min);
|
||||
|
||||
private:
|
||||
void OnPaint(wxPaintEvent& event);
|
||||
void OnKeyDown(wxKeyEvent& event);
|
||||
void OnKeyUp(wxKeyEvent& event);
|
||||
|
||||
private:
|
||||
void OnPaint(wxPaintEvent& event);
|
||||
void OnIdle(wxIdleEvent &event);
|
||||
|
||||
void OnMouseMoved(wxMouseEvent& event);
|
||||
|
|
Loading…
Reference in New Issue