diff options
| author | Carl Hetherington <cth@carlh.net> | 2012-10-17 13:47:50 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2012-10-17 13:47:50 +0100 |
| commit | 4dfce74792c3ea55ecf2479568f76d7e54b826e0 (patch) | |
| tree | d21aa7e386be12027239c4a1f5a25e6f42d04b8b /src/wx | |
| parent | 91e8c79235abccac95c63952192fd63840727f99 (diff) | |
Basic support for selection of audio / subtitle streams.
Diffstat (limited to 'src/wx')
| -rw-r--r-- | src/wx/film_editor.cc | 49 | ||||
| -rw-r--r-- | src/wx/film_editor.h | 4 |
2 files changed, 52 insertions, 1 deletions
diff --git a/src/wx/film_editor.cc b/src/wx/film_editor.cc index 471ca215f..21cd0acfa 100644 --- a/src/wx/film_editor.cc +++ b/src/wx/film_editor.cc @@ -119,6 +119,10 @@ FilmEditor::FilmEditor (Film* f, wxWindow* parent) _scaler = new wxComboBox (this, wxID_ANY); _sizer->Add (video_control (_scaler), 1); + video_control (add_label_to_sizer (_sizer, this, "Audio Stream")); + _audio_stream = new wxComboBox (this, wxID_ANY); + _sizer->Add (_audio_stream); + { video_control (add_label_to_sizer (_sizer, this, "Audio Gain")); wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL); @@ -143,7 +147,9 @@ FilmEditor::FilmEditor (Film* f, wxWindow* parent) _with_subtitles = new wxCheckBox (this, wxID_ANY, wxT("With Subtitles")); video_control (_with_subtitles); _sizer->Add (_with_subtitles, 1); - _sizer->AddSpacer (0); + + _subtitle_stream = new wxComboBox (this, wxID_ANY); + _sizer->Add (_subtitle_stream); video_control (add_label_to_sizer (_sizer, this, "Subtitle Offset")); _subtitle_offset = new wxSpinCtrl (this); @@ -328,6 +334,7 @@ FilmEditor::content_changed (wxCommandEvent &) setup_visibility (); setup_formats (); setup_subtitle_button (); + setup_streams (); } /** Called when the DCP A/B switch has been toggled */ @@ -404,6 +411,7 @@ FilmEditor::film_changed (Film::Property p) setup_visibility (); setup_formats (); setup_subtitle_button (); + setup_streams (); break; case Film::FORMAT: { @@ -524,6 +532,12 @@ FilmEditor::film_changed (Film::Property p) case Film::DCI_METADATA: _dcp_name->SetLabel (std_to_wx (_film->dcp_name ())); break; + case Film::AUDIO_STREAM: + set_selected_stream (_film->audio_streams(), _film->audio_stream(), _audio_stream); + break; + case Film::SUBTITLE_STREAM: + set_selected_stream (_film->subtitle_streams(), _film->subtitle_stream(), _subtitle_stream); + break; } } @@ -853,3 +867,36 @@ FilmEditor::edit_dci_button_clicked (wxCommandEvent &) d->ShowModal (); d->Destroy (); } + +void +FilmEditor::setup_streams () +{ + _audio_stream->Clear (); + vector<Stream> s = _film->audio_streams (); + for (vector<Stream>::iterator i = s.begin(); i != s.end(); ++i) { + _audio_stream->Append (std_to_wx (i->name)); + } + set_selected_stream (_film->audio_streams(), _film->audio_stream(), _audio_stream); + + _subtitle_stream->Clear (); + s = _film->subtitle_streams (); + for (vector<Stream>::iterator i = s.begin(); i != s.end(); ++i) { + _subtitle_stream->Append (std_to_wx (i->name)); + } + set_selected_stream (_film->subtitle_streams(), _film->subtitle_stream(), _subtitle_stream); +} + +void +FilmEditor::set_selected_stream (vector<Stream> const & streams, int id, wxComboBox* combo) const +{ + if (id == -1) { + return; + } + + size_t n = 0; + while (n < streams.size() && streams[n].id != id) { + ++n; + } + assert (n < streams.size()); + combo->SetSelection (n); +} diff --git a/src/wx/film_editor.h b/src/wx/film_editor.h index 6fb8973bf..9d159d307 100644 --- a/src/wx/film_editor.h +++ b/src/wx/film_editor.h @@ -76,6 +76,8 @@ private: void set_things_sensitive (bool); void setup_formats (); void setup_subtitle_button (); + void setup_streams (); + void set_selected_stream (std::vector<Stream> const & streams, int id, wxComboBox* combo) const; wxControl* video_control (wxControl *); wxControl* still_control (wxControl *); @@ -107,6 +109,7 @@ private: wxButton* _filters_button; /** The Film's scaler */ wxComboBox* _scaler; + wxComboBox* _audio_stream; /** The Film's audio gain */ wxSpinCtrl* _audio_gain; /** A button to open the gain calculation dialogue */ @@ -114,6 +117,7 @@ private: /** The Film's audio delay */ wxSpinCtrl* _audio_delay; wxCheckBox* _with_subtitles; + wxComboBox* _subtitle_stream; wxSpinCtrl* _subtitle_offset; wxSpinCtrl* _subtitle_scale; /** The Film's DCP content type */ |
