From: Carl Hetherington Date: Wed, 17 Oct 2012 16:42:58 +0000 (+0100) Subject: Update stream choices correctly when changed. X-Git-Tag: v2.0.48~1701 X-Git-Url: https://git.carlh.net/gitweb/?a=commitdiff_plain;h=988fa33f7d25f2f3319442ce3c9ed661172e4d56;p=dcpomatic.git Update stream choices correctly when changed. --- diff --git a/src/lib/film.cc b/src/lib/film.cc index 9e1640d58..e92881dad 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -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); +} diff --git a/src/lib/film.h b/src/lib/film.h index deff4b8a8..14731046a 100644 --- a/src/lib/film.h +++ b/src/lib/film.h @@ -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 { diff --git a/src/wx/film_editor.cc b/src/wx/film_editor.cc index 8a4112630..c687975ba 100644 --- a/src/wx/film_editor.cc +++ b/src/wx/film_editor.cc @@ -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 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 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 s = _film->subtitle_streams (); + assert (n < int (s.size ())); + _film->set_subtitle_stream (s[n].id); + } + _ignore_changes = Film::NONE; +} diff --git a/src/wx/film_editor.h b/src/wx/film_editor.h index 9d159d307..b204385bc 100644 --- a/src/wx/film_editor.h +++ b/src/wx/film_editor.h @@ -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);