Rename show-audio button to something which is (hopefully) clearer.
[dcpomatic.git] / src / wx / audio_panel.cc
index 436e6db4ca2a309a5e3197017998e3b62b8a2839..4b6167bf7fba781f5bdc40f42df9d755c5cd1c32 100644 (file)
 #include "lib/config.h"
 #include "lib/ffmpeg_content.h"
 #include "lib/cinema_sound_processor.h"
-#include "audio_dialog.h"
 #include "audio_panel.h"
 #include "audio_mapping_view.h"
 #include "wx_util.h"
 #include "gain_calculator_dialog.h"
 #include "content_panel.h"
+#include "audio_dialog.h"
 #include <wx/spinctrl.h>
 #include <boost/lexical_cast.hpp>
 #include <boost/foreach.hpp>
@@ -48,8 +48,8 @@ AudioPanel::AudioPanel (ContentPanel* p)
 
        int r = 0;
 
-       _show = new wxButton (this, wxID_ANY, _("Show Audio..."));
-       grid->Add (_show, wxGBPosition (r, 0));
+       _show = new wxButton (this, wxID_ANY, _("Show graph of audio levels..."));
+       grid->Add (_show, wxGBPosition (r, 0), wxGBSpan (1, 2));
        ++r;
 
        add_label_to_grid_bag_sizer (grid, this, _("Gain"), true, wxGBPosition (r, 0));
@@ -60,7 +60,7 @@ AudioPanel::AudioPanel (ContentPanel* p)
                boost::mem_fn (&AudioContent::audio_gain),
                boost::mem_fn (&AudioContent::set_audio_gain)
                );
-       
+
        _gain->add (grid, wxGBPosition (r, 1));
        add_label_to_grid_bag_sizer (grid, this, _("dB"), false, wxGBPosition (r, 2));
        _gain_calculate_button = new wxButton (this, wxID_ANY, _("Calculate..."));
@@ -75,7 +75,7 @@ AudioPanel::AudioPanel (ContentPanel* p)
                boost::mem_fn (&AudioContent::audio_delay),
                boost::mem_fn (&AudioContent::set_audio_delay)
                );
-       
+
        _delay->add (grid, wxGBPosition (r, 1));
        /// TRANSLATORS: this is an abbreviation for milliseconds, the unit of time
        add_label_to_grid_bag_sizer (grid, this, _("ms"), false, wxGBPosition (r, 2));
@@ -98,12 +98,19 @@ 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));
+       _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));
 }
 
+AudioPanel::~AudioPanel ()
+{
+       if (_audio_dialog) {
+               _audio_dialog->Destroy ();
+               _audio_dialog = 0;
+       }
+}
 
 void
 AudioPanel::film_changed (Film::Property property)
@@ -133,6 +140,7 @@ AudioPanel::film_content_changed (int property)
                        _mapping->set (AudioMapping ());
                }
                setup_description ();
+               _sizer->Layout ();
        }
 }
 
@@ -146,7 +154,7 @@ AudioPanel::gain_calculate_button_clicked ()
                d->Destroy ();
                return;
        }
-       
+
        _gain->wrapped()->SetValue (
                Config::instance()->cinema_sound_processor()->db_for_fader_change (
                        d->wanted_fader (),
@@ -158,26 +166,8 @@ AudioPanel::gain_calculate_button_clicked ()
           I think.
        */
        _gain->view_changed ();
-       
-       d->Destroy ();
-}
 
-void
-AudioPanel::show_clicked ()
-{
-       if (_audio_dialog) {
-               _audio_dialog->Destroy ();
-               _audio_dialog = 0;
-       }
-
-       AudioContentList ac = _parent->selected_audio ();
-       if (ac.size() != 1) {
-               return;
-       }
-       
-       _audio_dialog = new AudioDialog (this, _parent->film ());
-       _audio_dialog->Show ();
-       _audio_dialog->set_content (ac.front ());
+       d->Destroy ();
 }
 
 void
@@ -206,16 +196,28 @@ AudioPanel::content_selection_changed ()
 {
        AudioContentList sel = _parent->selected_audio ();
 
-       if (_audio_dialog && sel.size() == 1) {
-               _audio_dialog->set_content (sel.front ());
-       }
-       
        _gain->set_content (sel);
        _delay->set_content (sel);
 
        _gain_calculate_button->Enable (sel.size() == 1);
-       _show->Enable (sel.size() == 1);
        _mapping->Enable (sel.size() == 1);
 
        film_content_changed (AudioContentProperty::AUDIO_STREAMS);
 }
+
+void
+AudioPanel::show_clicked ()
+{
+       if (_audio_dialog) {
+               _audio_dialog->Destroy ();
+               _audio_dialog = 0;
+       }
+
+       AudioContentList ac = _parent->selected_audio ();
+       if (ac.size() != 1) {
+               return;
+       }
+
+       _audio_dialog = new AudioDialog (this, _parent->film (), ac.front ());
+       _audio_dialog->Show ();
+}