Update stream choices correctly when changed.
authorCarl Hetherington <cth@carlh.net>
Wed, 17 Oct 2012 16:42:58 +0000 (17:42 +0100)
committerCarl Hetherington <cth@carlh.net>
Wed, 17 Oct 2012 16:42:58 +0000 (17:42 +0100)
src/lib/film.cc
src/lib/film.h
src/wx/film_editor.cc
src/wx/film_editor.h

index 9e1640d58661828d2c0d51134beb2c287ec66b8f..e92881dada138c7566235356f4096022dfd22e6e 100644 (file)
@@ -751,3 +751,17 @@ Film::set_use_dci_name (bool v)
        _state.use_dci_name = v;
        signal_changed (USE_DCI_NAME);
 }
+
+void
+Film::set_audio_stream (int id)
+{
+       _state.audio_stream = id;
+       signal_changed (AUDIO_STREAM);
+}
+
+void
+Film::set_subtitle_stream (int id)
+{
+       _state.subtitle_stream = id;
+       signal_changed (SUBTITLE_STREAM);
+}
index deff4b8a839c39084b15505ca626e546bcc18e0a..14731046a1ca01e7787adfa2f3e3b5d1175a17c2 100644 (file)
@@ -204,6 +204,8 @@ public:
        void set_studio (std::string);
        void set_facility (std::string);
        void set_package_type (std::string);
+       void set_audio_stream (int id);
+       void set_subtitle_stream (int id);
 
        /** @return size, in pixels, of the source (ignoring cropping) */
        Size size () const {
index 8a41126303ce7d1430c0aeef31c3cf3b822dbc33..c687975bae07c660c2cb6ccd8ee563fd8911643a 100644 (file)
@@ -258,6 +258,8 @@ FilmEditor::FilmEditor (Film* f, wxWindow* parent)
        _with_subtitles->Connect (wxID_ANY, wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler (FilmEditor::with_subtitles_toggled), 0, this);
        _subtitle_offset->Connect (wxID_ANY, wxEVT_COMMAND_SPINCTRL_UPDATED, wxCommandEventHandler (FilmEditor::subtitle_offset_changed), 0, this);
        _subtitle_scale->Connect (wxID_ANY, wxEVT_COMMAND_SPINCTRL_UPDATED, wxCommandEventHandler (FilmEditor::subtitle_scale_changed), 0, this);
+       _audio_stream->Connect (wxID_ANY, wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler (FilmEditor::audio_stream_changed), 0, this);
+       _subtitle_stream->Connect (wxID_ANY, wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler (FilmEditor::subtitle_stream_changed), 0, this);
 
        setup_visibility ();
        setup_formats ();
@@ -903,3 +905,37 @@ FilmEditor::set_selected_stream (vector<Stream> const & streams, int id, wxCombo
        assert (n < streams.size());
        combo->SetSelection (n);
 }
+
+void
+FilmEditor::audio_stream_changed (wxCommandEvent &)
+{
+       if (!_film) {
+               return;
+       }
+
+       _ignore_changes = Film::AUDIO_STREAM;
+       int const n = _audio_stream->GetSelection ();
+       if (n >= 0) {
+               vector<Stream> s = _film->audio_streams ();
+               assert (n < int (s.size ()));
+               _film->set_audio_stream (s[n].id);
+       }
+       _ignore_changes = Film::NONE;
+}
+
+void
+FilmEditor::subtitle_stream_changed (wxCommandEvent &)
+{
+       if (!_film) {
+               return;
+       }
+
+       _ignore_changes = Film::SUBTITLE_STREAM;
+       int const n = _subtitle_stream->GetSelection ();
+       if (n >= 0) {
+               vector<Stream> s = _film->subtitle_streams ();
+               assert (n < int (s.size ()));
+               _film->set_subtitle_stream (s[n].id);
+       }
+       _ignore_changes = Film::NONE;
+}
index 9d159d307875bdf93de12b787394dc58e1fe54a8..b204385bc34a868d054f5fd93b6895c64062576c 100644 (file)
@@ -65,6 +65,8 @@ private:
        void subtitle_offset_changed (wxCommandEvent &);
        void subtitle_scale_changed (wxCommandEvent &);
        void still_duration_changed (wxCommandEvent &);
+       void audio_stream_changed (wxCommandEvent &);
+       void subtitle_stream_changed (wxCommandEvent &);
 
        /* Handle changes to the model */
        void film_changed (Film::Property);