spek

Acoustic spectrum analyser
git clone http://git.hanabi.in/repos/spek.git
Log | Files | Refs | README

commit ce6496cbb40b2cee65737079d195f20ac5b2b6a1
parent 57756a0c52c579f3e4f20c9c7e1ca94c3b09cd5e
Author: Alexander Kojevnikov <alexander@kojevnikov.com>
Date:   Tue, 18 Sep 2012 21:29:01 -0700

Handle keyboard shortcuts changing dynamic range

Diffstat:
Msrc/spek-spectrogram.cc | 24++++++++++++++++++++++--
Msrc/spek-spectrogram.hh | 3++-
2 files changed, 24 insertions(+), 3 deletions(-)

diff --git a/src/spek-spectrogram.cc b/src/spek-spectrogram.cc @@ -32,7 +32,8 @@ extern "C" { #include "spek-spectrogram.hh" -BEGIN_EVENT_TABLE(SpekSpectrogram, wxPanel) +BEGIN_EVENT_TABLE(SpekSpectrogram, wxWindow) + EVT_CHAR(SpekSpectrogram::on_char) EVT_IDLE(SpekSpectrogram::on_idle) EVT_PAINT(SpekSpectrogram::on_paint) EVT_SIZE(SpekSpectrogram::on_size) @@ -56,7 +57,10 @@ enum static wxString trim(wxDC& dc, const wxString& s, int length, bool trim_end); SpekSpectrogram::SpekSpectrogram(wxFrame *parent) : - wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE), + wxWindow( + parent, -1, wxDefaultPosition, wxDefaultSize, + wxFULL_REPAINT_ON_RESIZE | wxWANTS_CHARS + ), pipeline(NULL), duration(0.0), sample_rate(0), @@ -65,6 +69,7 @@ SpekSpectrogram::SpekSpectrogram(wxFrame *parent) : prev_width(-1) { SetBackgroundStyle(wxBG_STYLE_CUSTOM); + SetFocus(); // Pre-draw the palette. for (int y = 0; y < BANDS; y++) { @@ -98,6 +103,21 @@ void SpekSpectrogram::save(const wxString& path) bitmap.SaveFile(path, wxBITMAP_TYPE_PNG); } +void SpekSpectrogram::on_char(wxKeyEvent& evt) +{ + bool C = evt.GetModifiers() == wxMOD_CONTROL; + bool S = evt.GetModifiers() == wxMOD_SHIFT; + bool CS = evt.GetModifiers() == (wxMOD_CONTROL | wxMOD_SHIFT); + bool dn = evt.GetKeyCode() == WXK_DOWN; + bool up = evt.GetKeyCode() == WXK_UP; + + if (C && up) { + } else if (C && dn) { + } else if (CS && up) { + } else if (CS && dn) { + } +} + void SpekSpectrogram::on_idle(wxIdleEvent& evt) { // TODO: remove? diff --git a/src/spek-spectrogram.hh b/src/spek-spectrogram.hh @@ -25,7 +25,7 @@ class SpekHaveSampleEvent; struct spek_audio_properties; struct spek_pipeline; -class SpekSpectrogram : public wxPanel +class SpekSpectrogram : public wxWindow { public: SpekSpectrogram(wxFrame *parent); @@ -34,6 +34,7 @@ public: void save(const wxString& path); private: + void on_char(wxKeyEvent& evt); void on_idle(wxIdleEvent& evt); void on_paint(wxPaintEvent& evt); void on_size(wxSizeEvent& evt);