summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2012-10-17 17:42:58 +0100
committerCarl Hetherington <cth@carlh.net>2012-10-17 17:42:58 +0100
commit988fa33f7d25f2f3319442ce3c9ed661172e4d56 (patch)
treeaad7e83489c231cfaede43c1d89329fb0e0743ae /src
parent65400c0562fcf23c78c7b7276a79d0aef6b21a8a (diff)
Update stream choices correctly when changed.
Diffstat (limited to 'src')
-rw-r--r--src/lib/film.cc14
-rw-r--r--src/lib/film.h2
-rw-r--r--src/wx/film_editor.cc36
-rw-r--r--src/wx/film_editor.h2
4 files changed, 54 insertions, 0 deletions
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<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;
+}
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);