summaryrefslogtreecommitdiff
path: root/src/wx
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2012-10-17 13:47:50 +0100
committerCarl Hetherington <cth@carlh.net>2012-10-17 13:47:50 +0100
commit4dfce74792c3ea55ecf2479568f76d7e54b826e0 (patch)
treed21aa7e386be12027239c4a1f5a25e6f42d04b8b /src/wx
parent91e8c79235abccac95c63952192fd63840727f99 (diff)
Basic support for selection of audio / subtitle streams.
Diffstat (limited to 'src/wx')
-rw-r--r--src/wx/film_editor.cc49
-rw-r--r--src/wx/film_editor.h4
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 */