diff options
| author | Carl Hetherington <cth@carlh.net> | 2025-09-30 22:13:16 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2025-10-10 21:15:37 +0200 |
| commit | 15ebff851d348eea2a5ae91c6495a787b8d012b2 (patch) | |
| tree | 6de54e8c693754e18d88c08b58d1611861b85437 | |
| parent | 474388e8a89f1bb01df04d1e806f726e66e60cb2 (diff) | |
Cleanup: use signals for seeking on audio graph clicks.
| -rw-r--r-- | src/wx/audio_dialog.cc | 6 | ||||
| -rw-r--r-- | src/wx/audio_dialog.h | 5 | ||||
| -rw-r--r-- | src/wx/audio_panel.cc | 4 | ||||
| -rw-r--r-- | src/wx/audio_plot.cc | 6 | ||||
| -rw-r--r-- | src/wx/audio_plot.h | 7 | ||||
| -rw-r--r-- | src/wx/dcp_panel.cc | 4 |
6 files changed, 19 insertions, 13 deletions
diff --git a/src/wx/audio_dialog.cc b/src/wx/audio_dialog.cc index 795a39a44..cee8993e0 100644 --- a/src/wx/audio_dialog.cc +++ b/src/wx/audio_dialog.cc @@ -58,7 +58,7 @@ using namespace boost::placeholders; * @param film Film we are using. * @param content Content to analyse, or 0 to analyse all of the film's audio. */ -AudioDialog::AudioDialog (wxWindow* parent, shared_ptr<Film> film, FilmViewer& viewer, shared_ptr<Content> content) +AudioDialog::AudioDialog(wxWindow* parent, shared_ptr<Film> film, shared_ptr<Content> content) : wxDialog ( parent, wxID_ANY, @@ -89,7 +89,7 @@ AudioDialog::AudioDialog (wxWindow* parent, shared_ptr<Film> film, FilmViewer& v _cursor = new StaticText(this, char_to_wx("Cursor: none")); left->Add (_cursor, 0, wxTOP, DCPOMATIC_SIZER_Y_GAP); - _plot = new AudioPlot (this, viewer); + _plot = new AudioPlot(this); left->Add (_plot, 1, wxTOP | wxEXPAND, 12); _sample_peak = new StaticText(this, {}); left->Add (_sample_peak, 0, wxTOP, DCPOMATIC_SIZER_Y_GAP); @@ -163,6 +163,8 @@ AudioDialog::AudioDialog (wxWindow* parent, shared_ptr<Film> film, FilmViewer& v overall_sizer->Layout (); overall_sizer->SetSizeHints (this); + _plot->Click.connect(boost::ref(Seek)); + _film_connection = film->Change.connect (boost::bind(&AudioDialog::film_change, this, _1, _2)); _film_content_connection = film->ContentChange.connect(boost::bind(&AudioDialog::content_change, this, _1, _2)); DCPOMATIC_ASSERT (film->directory()); diff --git a/src/wx/audio_dialog.h b/src/wx/audio_dialog.h index 4b55ae344..2085a7220 100644 --- a/src/wx/audio_dialog.h +++ b/src/wx/audio_dialog.h @@ -36,7 +36,6 @@ LIBDCP_ENABLE_WARNINGS class AudioPlot; class CheckBox; -class FilmViewer; class Film; @@ -48,12 +47,14 @@ class Film; class AudioDialog : public wxDialog { public: - AudioDialog(wxWindow* parent, std::shared_ptr<Film> film, FilmViewer& viewer, std::shared_ptr<Content> content = std::shared_ptr<Content>()); + AudioDialog(wxWindow* parent, std::shared_ptr<Film> film, std::shared_ptr<Content> content = std::shared_ptr<Content>()); bool Show (bool show = true) override; void set_cursor (boost::optional<dcpomatic::DCPTime> time, boost::optional<float> db); + boost::signals2::signal<void (dcpomatic::DCPTime)> Seek; + private: void film_change(ChangeType, FilmProperty); void content_change (ChangeType, int); diff --git a/src/wx/audio_panel.cc b/src/wx/audio_panel.cc index e04e65691..5d5478b1a 100644 --- a/src/wx/audio_panel.cc +++ b/src/wx/audio_panel.cc @@ -25,6 +25,7 @@ #include "check_box.h" #include "content_panel.h" #include "dcpomatic_button.h" +#include "film_viewer.h" #include "gain_calculator_dialog.h" #include "static_text.h" #include "wx_util.h" @@ -414,7 +415,8 @@ AudioPanel::show_clicked () return; } - _audio_dialog.reset(this, _parent->film(), _parent->film_viewer(), ac.front()); + _audio_dialog.reset(this, _parent->film(), ac.front()); + _audio_dialog->Seek.connect(boost::bind(&FilmViewer::seek, &_parent->film_viewer(), _1, true)); _audio_dialog->Show (); } diff --git a/src/wx/audio_plot.cc b/src/wx/audio_plot.cc index 3982f9705..37fb78145 100644 --- a/src/wx/audio_plot.cc +++ b/src/wx/audio_plot.cc @@ -20,7 +20,6 @@ #include "audio_plot.h" -#include "film_viewer.h" #include "wx_util.h" #include "lib/audio_decoder.h" #include "lib/audio_analysis.h" @@ -54,9 +53,8 @@ int const AudioPlot::_cursor_size = 8; int const AudioPlot::max_smoothing = 128; -AudioPlot::AudioPlot(wxWindow* parent, FilmViewer& viewer) +AudioPlot::AudioPlot(wxWindow* parent) : wxPanel (parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE) - , _viewer (viewer) , _smoothing (max_smoothing / 2) , _gain_correction (0) { @@ -449,7 +447,7 @@ void AudioPlot::left_down () { if (_cursor) { - _viewer.seek(_cursor->time, true); + Click(_cursor->time); } } diff --git a/src/wx/audio_plot.h b/src/wx/audio_plot.h index f3d80b5e5..aec7edfba 100644 --- a/src/wx/audio_plot.h +++ b/src/wx/audio_plot.h @@ -28,13 +28,14 @@ LIBDCP_ENABLE_WARNINGS #include <boost/signals2.hpp> #include <vector> + struct Metrics; -class FilmViewer; + class AudioPlot : public wxPanel { public: - explicit AudioPlot (wxWindow *, FilmViewer& viewer); + explicit AudioPlot(wxWindow* parent); void set_analysis (std::shared_ptr<AudioAnalysis>); void set_channel_visible (int c, bool v); @@ -46,6 +47,7 @@ public: wxColour colour (int n) const; boost::signals2::signal<void (boost::optional<dcpomatic::DCPTime>, boost::optional<float>)> Cursor; + boost::signals2::signal<void (dcpomatic::DCPTime)> Click; static const int max_smoothing; @@ -78,7 +80,6 @@ private: void mouse_moved (wxMouseEvent& ev); void mouse_leave (wxMouseEvent& ev); - FilmViewer& _viewer; std::shared_ptr<AudioAnalysis> _analysis; bool _channel_visible[MAX_DCP_AUDIO_CHANNELS]; bool _type_visible[AudioPoint::COUNT]; diff --git a/src/wx/dcp_panel.cc b/src/wx/dcp_panel.cc index 80caa4c2c..755ecfbaa 100644 --- a/src/wx/dcp_panel.cc +++ b/src/wx/dcp_panel.cc @@ -27,6 +27,7 @@ #include "dcpomatic_button.h" #include "dcpomatic_choice.h" #include "dcpomatic_spin_ctrl.h" +#include "film_viewer.h" #include "focus_manager.h" #include "interop_metadata_dialog.h" #include "language_tag_dialog.h" @@ -1040,7 +1041,8 @@ DCPPanel::show_audio_clicked() return; } - _audio_dialog.reset(_panel, _film, _viewer); + _audio_dialog.reset(_panel, _film); + _audio_dialog->Seek.connect(boost::bind(&FilmViewer::seek, &_viewer, _1, true)); _audio_dialog->Show(); } |
