summaryrefslogtreecommitdiff
path: root/src/wx/audio_panel.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/wx/audio_panel.cc')
-rw-r--r--src/wx/audio_panel.cc65
1 files changed, 59 insertions, 6 deletions
diff --git a/src/wx/audio_panel.cc b/src/wx/audio_panel.cc
index b89cbb01f..a4976b8c1 100644
--- a/src/wx/audio_panel.cc
+++ b/src/wx/audio_panel.cc
@@ -27,6 +27,7 @@
#include "lib/ffmpeg_content.h"
#include "lib/cinema_sound_processor.h"
#include "lib/job_manager.h"
+#include "lib/dcp_content.h"
#include <wx/spinctrl.h>
#include <boost/lexical_cast.hpp>
#include <boost/foreach.hpp>
@@ -51,6 +52,10 @@ AudioPanel::AudioPanel (ContentPanel* p)
int r = 0;
+ _reference = new wxCheckBox (this, wxID_ANY, _("Refer to existing DCP"));
+ grid->Add (_reference, wxGBPosition (r, 0), wxGBSpan (1, 2));
+ ++r;
+
{
wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL);
_show = new wxButton (this, wxID_ANY, _("Show graph of audio levels..."));
@@ -107,8 +112,9 @@ AudioPanel::AudioPanel (ContentPanel* p)
_gain->wrapped()->SetIncrement (0.5);
_delay->wrapped()->SetRange (-1000, 1000);
- _show->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&AudioPanel::show_clicked, this));
- _gain_calculate_button->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&AudioPanel::gain_calculate_button_clicked, this));
+ _reference->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&AudioPanel::reference_clicked, this));
+ _show->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&AudioPanel::show_clicked, this));
+ _gain_calculate_button->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&AudioPanel::gain_calculate_button_clicked, this));
_mapping_connection = _mapping->Changed.connect (boost::bind (&AudioPanel::mapping_changed, this, _1));
@@ -143,8 +149,8 @@ AudioPanel::film_changed (Film::Property property)
void
AudioPanel::film_content_changed (int property)
{
+ AudioContentList ac = _parent->selected_audio ();
if (property == AudioContentProperty::AUDIO_STREAMS) {
- AudioContentList ac = _parent->selected_audio ();
if (ac.size() == 1) {
_mapping->set (ac.front()->audio_mapping());
_mapping->set_input_channels (ac.front()->audio_channel_names ());
@@ -156,6 +162,15 @@ AudioPanel::film_content_changed (int property)
_sizer->Layout ();
} else if (property == AudioContentProperty::AUDIO_GAIN) {
setup_peak ();
+ } else if (property == DCPContentProperty::REFERENCE_AUDIO) {
+ if (ac.size() == 1) {
+ shared_ptr<DCPContent> dcp = dynamic_pointer_cast<DCPContent> (ac.front ());
+ checked_set (_reference, dcp ? dcp->reference_audio () : false);
+ } else {
+ checked_set (_reference, false);
+ }
+
+ setup_sensitivity ();
}
}
@@ -214,10 +229,32 @@ AudioPanel::content_selection_changed ()
_gain->set_content (sel);
_delay->set_content (sel);
- _gain_calculate_button->Enable (sel.size() == 1);
- _mapping->Enable (sel.size() == 1);
-
film_content_changed (AudioContentProperty::AUDIO_STREAMS);
+
+ setup_sensitivity ();
+}
+
+void
+AudioPanel::setup_sensitivity ()
+{
+ AudioContentList sel = _parent->selected_audio ();
+ _reference->Enable (sel.size() == 1 && dynamic_pointer_cast<DCPContent> (sel.front ()));
+
+ if (_reference->GetValue ()) {
+ _gain->wrapped()->Enable (false);
+ _gain_calculate_button->Enable (false);
+ _peak->Enable (false);
+ _delay->wrapped()->Enable (false);
+ _mapping->Enable (false);
+ _description->Enable (false);
+ } else {
+ _gain->wrapped()->Enable (true);
+ _gain_calculate_button->Enable (sel.size() == 1);
+ _peak->Enable (true);
+ _delay->wrapped()->Enable (true);
+ _mapping->Enable (sel.size() == 1);
+ _description->Enable (true);
+ }
}
void
@@ -280,3 +317,19 @@ AudioPanel::active_jobs_changed (optional<string> j)
setup_peak ();
}
}
+
+void
+AudioPanel::reference_clicked ()
+{
+ ContentList c = _parent->selected ();
+ if (c.size() != 1) {
+ return;
+ }
+
+ shared_ptr<DCPContent> d = dynamic_pointer_cast<DCPContent> (c.front ());
+ if (!d) {
+ return;
+ }
+
+ d->set_reference_audio (_reference->GetValue ());
+}