swaroop: set controls to 'stopped' when a playlist finishes.
[dcpomatic.git] / src / wx / audio_panel.cc
index 34292620b48a9d7561fca29cf0d47ec3bb3313fa..ccdb579079dc166ef79acc1269760de64ae2f0ea 100644 (file)
@@ -26,6 +26,7 @@
 #include "audio_dialog.h"
 #include "static_text.h"
 #include "check_box.h"
+#include "dcpomatic_button.h"
 #include "lib/config.h"
 #include "lib/ffmpeg_audio_stream.h"
 #include "lib/ffmpeg_content.h"
@@ -58,7 +59,7 @@ AudioPanel::AudioPanel (ContentPanel* p)
        font.SetPointSize(font.GetPointSize() - 1);
        _reference_note->SetFont(font);
 
-       _show = new wxButton (this, wxID_ANY, _("Show graph of audio levels..."));
+       _show = new Button (this, _("Show graph of audio levels..."));
        _peak = new StaticText (this, wxT (""));
 
        _gain_label = create_label (this, _("Gain"), true);
@@ -72,7 +73,7 @@ AudioPanel::AudioPanel (ContentPanel* p)
                );
 
        _gain_db_label = create_label (this, _("dB"), false);
-       _gain_calculate_button = new wxButton (this, wxID_ANY, _("Calculate..."));
+       _gain_calculate_button = new Button (this, _("Calculate..."));
 
        _delay_label = create_label (this, _("Delay"), true);
        _delay = new ContentSpinCtrl<AudioContent> (
@@ -117,14 +118,14 @@ AudioPanel::AudioPanel (ContentPanel* p)
 void
 AudioPanel::add_to_grid ()
 {
-       Config::Interface const interface = Config::instance()->interface_complexity();
+       bool const full = Config::instance()->interface_complexity() == Config::INTERFACE_FULL;
 
        int r = 0;
 
-       _reference->Show (interface == Config::INTERFACE_FULL);
-       _reference_note->Show (interface == Config::INTERFACE_FULL);
+       _reference->Show (full);
+       _reference_note->Show (full);
 
-       if (interface == Config::INTERFACE_FULL) {
+       if (full) {
                wxBoxSizer* reference_sizer = new wxBoxSizer (wxVERTICAL);
                reference_sizer->Add (_reference, 0);
                reference_sizer->Add (_reference_note, 0);
@@ -143,18 +144,26 @@ AudioPanel::add_to_grid ()
                s->Add (_gain_db_label, 0, wxALIGN_CENTER_VERTICAL);
                _grid->Add (s, wxGBPosition(r, 1));
        }
-       _grid->Add (_gain_calculate_button, wxGBPosition(r, 2), wxDefaultSpan, wxALIGN_CENTER_VERTICAL);
 
-       ++r;
+       _gain_calculate_button->Show (full);
 
-       add_label_to_sizer (_grid, _delay_label, true, wxGBPosition(r, 0));
-       {
+       if (full) {
+               _grid->Add (_gain_calculate_button, wxGBPosition(r, 2), wxDefaultSpan, wxALIGN_CENTER_VERTICAL);
+               ++r;
+       }
+
+       _delay_label->Show (full);
+       _delay->show (full);
+       _delay_ms_label->Show (full);
+
+       if (full) {
+               add_label_to_sizer (_grid, _delay_label, true, wxGBPosition(r, 0));
                wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL);
                s->Add (_delay->wrapped(), 1, wxALIGN_CENTER_VERTICAL | wxTOP | wxBOTTOM | wxRIGHT, 6);
                s->Add (_delay_ms_label, 0, wxALIGN_CENTER_VERTICAL);
                _grid->Add (s, wxGBPosition(r, 1));
+               ++r;
        }
-       ++r;
 }
 
 AudioPanel::~AudioPanel ()
@@ -168,6 +177,10 @@ AudioPanel::~AudioPanel ()
 void
 AudioPanel::film_changed (Film::Property property)
 {
+       if (!_parent->film()) {
+               return;
+       }
+
        switch (property) {
        case Film::AUDIO_CHANNELS:
        case Film::AUDIO_PROCESSOR: