Can now tune by dragging middle spectrum view
This commit is contained in:
parent
5977fb144b
commit
4900ce7f17
|
@ -59,6 +59,9 @@ AppFrame::AppFrame() :
|
||||||
Show();
|
Show();
|
||||||
|
|
||||||
|
|
||||||
|
GetStatusBar()->SetStatusText(wxString::Format(wxT("Set center frequency: %i"),DEFAULT_FREQ));
|
||||||
|
|
||||||
|
|
||||||
// static const int attribs[] = { WX_GL_RGBA, WX_GL_DOUBLEBUFFER, 0 };
|
// static const int attribs[] = { WX_GL_RGBA, WX_GL_DOUBLEBUFFER, 0 };
|
||||||
// wxLogStatus("Double-buffered display %s supported", wxGLCanvas::IsDisplaySupported(attribs) ? "is" : "not");
|
// wxLogStatus("Double-buffered display %s supported", wxGLCanvas::IsDisplaySupported(attribs) ? "is" : "not");
|
||||||
// ShowFullScreen(true);
|
// ShowFullScreen(true);
|
||||||
|
|
|
@ -57,11 +57,13 @@ void ScopeCanvas::OnKeyDown(wxKeyEvent& event) {
|
||||||
freq = wxGetApp().getFrequency();
|
freq = wxGetApp().getFrequency();
|
||||||
freq += 100000;
|
freq += 100000;
|
||||||
wxGetApp().setFrequency(freq);
|
wxGetApp().setFrequency(freq);
|
||||||
|
((wxFrame*)parent)->GetStatusBar()->SetStatusText(wxString::Format(wxT("Set center frequency: %i"),freq));
|
||||||
break;
|
break;
|
||||||
case WXK_LEFT:
|
case WXK_LEFT:
|
||||||
freq = wxGetApp().getFrequency();
|
freq = wxGetApp().getFrequency();
|
||||||
freq -= 100000;
|
freq -= 100000;
|
||||||
wxGetApp().setFrequency(freq);
|
wxGetApp().setFrequency(freq);
|
||||||
|
((wxFrame*)parent)->GetStatusBar()->SetStatusText(wxString::Format(wxT("Set center frequency: %i"),freq));
|
||||||
break;
|
break;
|
||||||
case WXK_DOWN:
|
case WXK_DOWN:
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -14,15 +14,22 @@
|
||||||
#include "CubicSDRDefs.h"
|
#include "CubicSDRDefs.h"
|
||||||
#include "AppFrame.h"
|
#include "AppFrame.h"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
#include <wx/numformatter.h>
|
||||||
|
|
||||||
wxBEGIN_EVENT_TABLE(SpectrumCanvas, wxGLCanvas) EVT_PAINT(SpectrumCanvas::OnPaint)
|
wxBEGIN_EVENT_TABLE(SpectrumCanvas, wxGLCanvas) EVT_PAINT(SpectrumCanvas::OnPaint)
|
||||||
EVT_KEY_DOWN(SpectrumCanvas::OnKeyDown)
|
EVT_KEY_DOWN(SpectrumCanvas::OnKeyDown)
|
||||||
EVT_IDLE(SpectrumCanvas::OnIdle)
|
EVT_IDLE(SpectrumCanvas::OnIdle)
|
||||||
|
EVT_MOTION(SpectrumCanvas::mouseMoved)
|
||||||
|
EVT_LEFT_DOWN(SpectrumCanvas::mouseDown)
|
||||||
|
EVT_LEFT_UP(SpectrumCanvas::mouseReleased)
|
||||||
|
//EVT_RIGHT_DOWN(SpectrumCanvas::rightClick)
|
||||||
|
EVT_LEAVE_WINDOW(SpectrumCanvas::mouseLeftWindow)
|
||||||
|
EVT_MOUSEWHEEL(SpectrumCanvas::mouseWheelMoved)
|
||||||
wxEND_EVENT_TABLE()
|
wxEND_EVENT_TABLE()
|
||||||
|
|
||||||
SpectrumCanvas::SpectrumCanvas(wxWindow *parent, int *attribList) :
|
SpectrumCanvas::SpectrumCanvas(wxWindow *parent, int *attribList) :
|
||||||
wxGLCanvas(parent, wxID_ANY, attribList, wxDefaultPosition, wxDefaultSize,
|
wxGLCanvas(parent, wxID_ANY, attribList, wxDefaultPosition, wxDefaultSize,
|
||||||
wxFULL_REPAINT_ON_RESIZE), parent(parent), frameTimer(0) {
|
wxFULL_REPAINT_ON_RESIZE), parent(parent), frameTimer(0), isMouseDown(false) {
|
||||||
|
|
||||||
int in_block_size = BUF_SIZE / 2;
|
int in_block_size = BUF_SIZE / 2;
|
||||||
int out_block_size = FFT_SIZE;
|
int out_block_size = FFT_SIZE;
|
||||||
|
@ -36,6 +43,8 @@ SpectrumCanvas::SpectrumCanvas(wxWindow *parent, int *attribList) :
|
||||||
|
|
||||||
glContext = new SpectrumContext(this, &wxGetApp().GetContext(this));
|
glContext = new SpectrumContext(this, &wxGetApp().GetContext(this));
|
||||||
timer.start();
|
timer.start();
|
||||||
|
|
||||||
|
SetCursor(wxCURSOR_SIZEWE);
|
||||||
}
|
}
|
||||||
|
|
||||||
SpectrumCanvas::~SpectrumCanvas() {
|
SpectrumCanvas::~SpectrumCanvas() {
|
||||||
|
@ -63,11 +72,13 @@ void SpectrumCanvas::OnKeyDown(wxKeyEvent& event) {
|
||||||
freq = wxGetApp().getFrequency();
|
freq = wxGetApp().getFrequency();
|
||||||
freq += 100000;
|
freq += 100000;
|
||||||
wxGetApp().setFrequency(freq);
|
wxGetApp().setFrequency(freq);
|
||||||
|
((wxFrame*)parent)->GetStatusBar()->SetStatusText(wxString::Format(wxT("Set center frequency: %i"),freq));
|
||||||
break;
|
break;
|
||||||
case WXK_LEFT:
|
case WXK_LEFT:
|
||||||
freq = wxGetApp().getFrequency();
|
freq = wxGetApp().getFrequency();
|
||||||
freq -= 100000;
|
freq -= 100000;
|
||||||
wxGetApp().setFrequency(freq);
|
wxGetApp().setFrequency(freq);
|
||||||
|
((wxFrame*)parent)->GetStatusBar()->SetStatusText(wxString::Format(wxT("Set center frequency: %i"),freq));
|
||||||
break;
|
break;
|
||||||
case WXK_DOWN:
|
case WXK_DOWN:
|
||||||
break;
|
break;
|
||||||
|
@ -160,3 +171,62 @@ void SpectrumCanvas::OnIdle(wxIdleEvent &event) {
|
||||||
// frameTimer = 0;
|
// frameTimer = 0;
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void SpectrumCanvas::mouseMoved(wxMouseEvent& event) {
|
||||||
|
if (isMouseDown) {
|
||||||
|
const wxSize ClientSize = GetClientSize();
|
||||||
|
float mouseX = (float)event.m_x/(float)ClientSize.x;
|
||||||
|
float mouseY = (float)event.m_y/(float)ClientSize.y;
|
||||||
|
|
||||||
|
|
||||||
|
deltaMouseX = mouseX-lastMouseX;
|
||||||
|
deltaMouseY = mouseY-lastMouseY;
|
||||||
|
|
||||||
|
lastMouseX = mouseX;
|
||||||
|
// lastMouseY = mouseY;
|
||||||
|
|
||||||
|
int freqChange = deltaMouseX*SRATE;
|
||||||
|
|
||||||
|
int freq = wxGetApp().getFrequency();
|
||||||
|
freq -= freqChange;
|
||||||
|
wxGetApp().setFrequency(freq);
|
||||||
|
|
||||||
|
((wxFrame*)parent)->GetStatusBar()->SetStatusText(wxString::Format(wxT("Set center frequency: %s"),wxNumberFormatter::ToString((long)freq,wxNumberFormatter::Style_WithThousandsSep)));
|
||||||
|
|
||||||
|
if (mouseY != lastMouseY) {
|
||||||
|
WarpPointer(event.m_x,lastMouseY*ClientSize.y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void SpectrumCanvas::mouseDown(wxMouseEvent& event) {
|
||||||
|
const wxSize ClientSize = GetClientSize();
|
||||||
|
lastMouseX = (float)event.m_x/(float)ClientSize.x;
|
||||||
|
lastMouseY = (float)event.m_y/(float)ClientSize.y;
|
||||||
|
|
||||||
|
isMouseDown = true;
|
||||||
|
SetCursor(wxCURSOR_CROSS);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SpectrumCanvas::mouseWheelMoved(wxMouseEvent& event) {
|
||||||
|
std::cout << "wheel?" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SpectrumCanvas::mouseReleased(wxMouseEvent& event) {
|
||||||
|
isMouseDown = false;
|
||||||
|
SetCursor(wxCURSOR_SIZEWE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SpectrumCanvas::mouseLeftWindow(wxMouseEvent& event) {
|
||||||
|
isMouseDown = false;
|
||||||
|
SetCursor(wxCURSOR_SIZEWE);
|
||||||
|
}
|
||||||
|
|
||||||
|
//void SpectrumCanvas::rightClick(wxMouseEvent& event) {}
|
||||||
|
//void SpectrumCanvas::keyPressed(wxKeyEvent& event) {}
|
||||||
|
//void SpectrumCanvas::keyReleased(wxKeyEvent& event) {}
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,14 @@ private:
|
||||||
|
|
||||||
void OnIdle(wxIdleEvent &event);
|
void OnIdle(wxIdleEvent &event);
|
||||||
|
|
||||||
|
void mouseMoved(wxMouseEvent& event);
|
||||||
|
void mouseDown(wxMouseEvent& event);
|
||||||
|
void mouseWheelMoved(wxMouseEvent& event);
|
||||||
|
void mouseReleased(wxMouseEvent& event);
|
||||||
|
|
||||||
|
// void rightClick(wxMouseEvent& event);
|
||||||
|
void mouseLeftWindow(wxMouseEvent& event);
|
||||||
|
|
||||||
wxWindow *parent;
|
wxWindow *parent;
|
||||||
std::vector<float> spectrum_points;
|
std::vector<float> spectrum_points;
|
||||||
|
|
||||||
|
@ -39,6 +47,10 @@ private:
|
||||||
SpectrumContext *glContext;
|
SpectrumContext *glContext;
|
||||||
Timer timer;
|
Timer timer;
|
||||||
float frameTimer;
|
float frameTimer;
|
||||||
|
|
||||||
|
float lastMouseX, lastMouseY;
|
||||||
|
float deltaMouseX, deltaMouseY;
|
||||||
|
bool isMouseDown;
|
||||||
// event table
|
// event table
|
||||||
wxDECLARE_EVENT_TABLE();
|
wxDECLARE_EVENT_TABLE();
|
||||||
};
|
};
|
||||||
|
|
|
@ -36,6 +36,8 @@ WaterfallCanvas::WaterfallCanvas(wxWindow *parent, int *attribList) :
|
||||||
|
|
||||||
glContext = new WaterfallContext(this, &wxGetApp().GetContext(this));
|
glContext = new WaterfallContext(this, &wxGetApp().GetContext(this));
|
||||||
timer.start();
|
timer.start();
|
||||||
|
|
||||||
|
SetCursor(wxCURSOR_CROSS);
|
||||||
}
|
}
|
||||||
|
|
||||||
WaterfallCanvas::~WaterfallCanvas() {
|
WaterfallCanvas::~WaterfallCanvas() {
|
||||||
|
@ -63,11 +65,13 @@ void WaterfallCanvas::OnKeyDown(wxKeyEvent& event) {
|
||||||
freq = wxGetApp().getFrequency();
|
freq = wxGetApp().getFrequency();
|
||||||
freq += 100000;
|
freq += 100000;
|
||||||
wxGetApp().setFrequency(freq);
|
wxGetApp().setFrequency(freq);
|
||||||
|
((wxFrame*)parent)->GetStatusBar()->SetStatusText(wxString::Format(wxT("Set center frequency: %i"),freq));
|
||||||
break;
|
break;
|
||||||
case WXK_LEFT:
|
case WXK_LEFT:
|
||||||
freq = wxGetApp().getFrequency();
|
freq = wxGetApp().getFrequency();
|
||||||
freq -= 100000;
|
freq -= 100000;
|
||||||
wxGetApp().setFrequency(freq);
|
wxGetApp().setFrequency(freq);
|
||||||
|
((wxFrame*)parent)->GetStatusBar()->SetStatusText(wxString::Format(wxT("Set center frequency: %i"),freq));
|
||||||
break;
|
break;
|
||||||
case WXK_DOWN:
|
case WXK_DOWN:
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue