summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2014-06-03 15:24:30 +0100
committerCarl Hetherington <cth@carlh.net>2014-06-03 15:24:30 +0100
commita39067b125ecfb58906a1d022f807f0a22824007 (patch)
tree30c30c952495b0091efc3349c096e11baf5d463e /src
parent974c5553244616ba92caf70a67d42725c6224b97 (diff)
Update audio plot window when audio mapping is changed.
Diffstat (limited to 'src')
-rw-r--r--src/wx/audio_dialog.cc27
-rw-r--r--src/wx/audio_plot.cc11
2 files changed, 26 insertions, 12 deletions
diff --git a/src/wx/audio_dialog.cc b/src/wx/audio_dialog.cc
index 0e1316cf3..1f882e61f 100644
--- a/src/wx/audio_dialog.cc
+++ b/src/wx/audio_dialog.cc
@@ -106,6 +106,7 @@ AudioDialog::try_to_load_analysis ()
}
if (!boost::filesystem::exists (_content->audio_analysis_path())) {
+ _plot->set_analysis (shared_ptr<AudioAnalysis> ());
_analysis_finished_connection = _content->analyse_audio (bind (&AudioDialog::analysis_finished, this));
return;
}
@@ -115,14 +116,28 @@ AudioDialog::try_to_load_analysis ()
a.reset (new AudioAnalysis (_content->audio_analysis_path ()));
_plot->set_analysis (a);
- if (_channel_checkbox[0]) {
+ /* Set up some defaults if no check boxes are checked */
+
+ int i = 0;
+ while (i < MAX_DCP_AUDIO_CHANNELS && (!_channel_checkbox[i] || !_channel_checkbox[i]->GetValue ())) {
+ ++i;
+ }
+
+ if (i == MAX_DCP_AUDIO_CHANNELS && _channel_checkbox[0]) {
_channel_checkbox[0]->SetValue (true);
+ _plot->set_channel_visible (0, true);
}
- _plot->set_channel_visible (0, true);
- for (int i = 0; i < AudioPoint::COUNT; ++i) {
- _type_checkbox[i]->SetValue (true);
- _plot->set_type_visible (i, true);
+ i = 0;
+ while (i < AudioPoint::COUNT && !_type_checkbox[i]->GetValue ()) {
+ i++;
+ }
+
+ if (i == AudioPoint::COUNT) {
+ for (int i = 0; i < AudioPoint::COUNT; ++i) {
+ _type_checkbox[i]->SetValue (true);
+ _plot->set_type_visible (i, true);
+ }
}
}
@@ -158,6 +173,8 @@ AudioDialog::content_changed (int p)
{
if (p == AudioContentProperty::AUDIO_GAIN) {
_plot->set_gain (_content->audio_gain ());
+ } else if (p == AudioContentProperty::AUDIO_MAPPING) {
+ try_to_load_analysis ();
}
}
diff --git a/src/wx/audio_plot.cc b/src/wx/audio_plot.cc
index 69faf127e..c4e5d992f 100644
--- a/src/wx/audio_plot.cc
+++ b/src/wx/audio_plot.cc
@@ -40,7 +40,6 @@ AudioPlot::AudioPlot (wxWindow* parent)
: wxPanel (parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE)
, _gain (0)
, _smoothing (max_smoothing / 2)
- , _message (_("Please wait; audio is being analysed..."))
{
#ifndef __WXOSX__
SetDoubleBuffered (true);
@@ -67,6 +66,8 @@ AudioPlot::AudioPlot (wxWindow* parent)
_colours.push_back (wxColour (255, 0, 139));
_colours.push_back (wxColour (139, 0, 255));
+ set_analysis (shared_ptr<AudioAnalysis> ());
+
#if MAX_DCP_AUDIO_CHANNELS != 12
#warning AudioPlot::AudioPlot is expecting the wrong MAX_DCP_AUDIO_CHANNELS
#endif
@@ -81,14 +82,10 @@ AudioPlot::set_analysis (shared_ptr<AudioAnalysis> a)
{
_analysis = a;
- for (int i = 0; i < MAX_DCP_AUDIO_CHANNELS; ++i) {
- _channel_visible[i] = false;
+ if (!a) {
+ _message = _("Please wait; audio is being analysed...");
}
- for (int i = 0; i < AudioPoint::COUNT; ++i) {
- _type_visible[i] = false;
- }
-
Refresh ();
}