Disable show audio button when there is no audio (#73).
authorCarl Hetherington <cth@carlh.net>
Fri, 8 Mar 2013 20:04:05 +0000 (20:04 +0000)
committerCarl Hetherington <cth@carlh.net>
Fri, 8 Mar 2013 20:04:05 +0000 (20:04 +0000)
src/lib/film.cc
src/lib/film.h
src/wx/film_editor.cc
src/wx/film_editor.h

index 8f545952b336f512e363a9f87d8d00f4a29faade..20e08c0377551af253ad2347285a401a415ecca4 100644 (file)
@@ -1434,3 +1434,21 @@ Film::have_dcp () const
 
        return true;
 }
+
+bool
+Film::has_audio () const
+{
+       if (use_content_audio()) {
+               return audio_stream();
+       }
+
+       vector<string> const e = external_audio ();
+       for (vector<string>::const_iterator i = e.begin(); i != e.end(); ++i) {
+               if (!i->empty ()) {
+                       return true;
+               }
+       }
+
+       return false;
+}
+
index 9921acbb45415835f87db6fcfe1f3f03a58ac6a0..88f6fbcd7cac889542608b7d7e564024a42ee611 100644 (file)
@@ -327,7 +327,7 @@ public:
        }
 
        boost::shared_ptr<AudioStream> audio_stream () const;
-
+       bool has_audio () const;
        
        /* SET */
 
index b9a4012e3648c7cd96187f03478cf2158c3b846b..dcd18c97f4d0385a95830f3bd673e4bc8cba2e0d 100644 (file)
@@ -617,6 +617,7 @@ FilmEditor::film_changed (Film::Property p)
                setup_formats ();
                setup_subtitle_control_sensitivity ();
                setup_streams ();
+               setup_show_audio_sensitivity ();
                break;
        case Film::TRUST_CONTENT_HEADER:
                checked_set (_trust_content_header, _film->trust_content_header ());
@@ -627,6 +628,7 @@ FilmEditor::film_changed (Film::Property p)
                break;
        case Film::CONTENT_AUDIO_STREAMS:
                setup_streams ();
+               setup_show_audio_sensitivity ();
                break;
        case Film::FORMAT:
        {
@@ -754,6 +756,7 @@ FilmEditor::film_changed (Film::Property p)
                setup_dcp_name ();
                setup_audio_details ();
                setup_audio_control_sensitivity ();
+               setup_show_audio_sensitivity ();
                break;
        case Film::USE_CONTENT_AUDIO:
                checked_set (_use_content_audio, _film->use_content_audio());
@@ -761,6 +764,7 @@ FilmEditor::film_changed (Film::Property p)
                setup_dcp_name ();
                setup_audio_details ();
                setup_audio_control_sensitivity ();
+               setup_show_audio_sensitivity ();
                break;
        case Film::SUBTITLE_STREAM:
                if (_film->subtitle_stream()) {
@@ -774,6 +778,7 @@ FilmEditor::film_changed (Film::Property p)
                        checked_set (_external_audio[i], a[i]);
                }
                setup_audio_details ();
+               setup_show_audio_sensitivity ();
                break;
        }
        case Film::DCP_FRAME_RATE:
@@ -915,6 +920,7 @@ FilmEditor::set_things_sensitive (bool s)
 
        setup_subtitle_control_sensitivity ();
        setup_audio_control_sensitivity ();
+       setup_show_audio_sensitivity ();
 }
 
 /** Called when the `Edit filters' button has been clicked */
@@ -1289,3 +1295,9 @@ FilmEditor::best_dcp_frame_rate_clicked (wxCommandEvent &)
        
        _film->set_dcp_frame_rate (best_dcp_frame_rate (_film->source_frame_rate ()));
 }
+
+void
+FilmEditor::setup_show_audio_sensitivity ()
+{
+       _show_audio->Enable (_film && _film->has_audio ());
+}
index 29b453b8b2e729cceba95d568dc23754adc44072..e5b6198868a5535ad9cff40e9fd0d67128883c38 100644 (file)
@@ -98,6 +98,7 @@ private:
        void setup_streams ();
        void setup_audio_details ();
        void setup_dcp_name ();
+       void setup_show_audio_sensitivity ();
        
        wxControl* video_control (wxControl *);
        wxControl* still_control (wxControl *);