+void
+AudioPanel::setup_description ()
+{
+ ContentList ac = _parent->selected_audio ();
+ if (ac.size () != 1) {
+ checked_set (_description, wxT (""));
+ return;
+ }
+
+ checked_set (_description, ac.front()->audio->processing_description(_parent->film()));
+}
+
+void
+AudioPanel::mapping_changed (AudioMapping m)
+{
+ ContentList c = _parent->selected_audio ();
+ if (c.size() == 1) {
+ c.front()->audio->set_mapping (m);
+ }
+}
+
+void
+AudioPanel::content_selection_changed ()
+{
+ ContentList sel = _parent->selected_audio ();
+
+ _gain->set_content (sel);
+ _delay->set_content (sel);
+
+ film_content_changed (AudioContentProperty::STREAMS);
+ film_content_changed (AudioContentProperty::GAIN);
+ film_content_changed (DCPContentProperty::REFERENCE_AUDIO);
+
+ setup_sensitivity ();
+}
+
+void
+AudioPanel::setup_sensitivity ()
+{
+ ContentList sel = _parent->selected_audio ();
+
+ shared_ptr<DCPContent> dcp;
+ if (sel.size() == 1) {
+ dcp = dynamic_pointer_cast<DCPContent> (sel.front ());
+ }
+
+ string why_not;
+ bool const can_reference = dcp && dcp->can_reference_audio (_parent->film(), why_not);
+ wxString cannot;
+ if (why_not.empty()) {
+ cannot = _("Cannot reference this DCP's audio.");
+ } else {
+ cannot = _("Cannot reference this DCP's audio: ") + std_to_wx(why_not);
+ }
+ setup_refer_button (_reference, _reference_note, dcp, can_reference, cannot);
+
+ if (_reference->GetValue ()) {
+ _gain->wrapped()->Enable (false);
+ _gain_calculate_button->Enable (false);
+ _show->Enable (true);
+ _peak->Enable (false);
+ _delay->wrapped()->Enable (false);
+ _mapping->Enable (false);
+ _description->Enable (false);
+ } else {
+ _gain->wrapped()->Enable (sel.size() == 1);
+ _gain_calculate_button->Enable (sel.size() == 1);
+ _show->Enable (sel.size() == 1);
+ _peak->Enable (sel.size() == 1);
+ _delay->wrapped()->Enable (sel.size() == 1);
+ _mapping->Enable (sel.size() == 1);
+ _description->Enable (sel.size() == 1);
+ }
+}
+