Merge master.
[dcpomatic.git] / src / wx / film_editor.cc
index de215a0d294298a484f6407715ef7d9bb9b55933..5b4f6e8fe75c38a86c1dbc2b514629d1136f40f1 100644 (file)
@@ -155,6 +155,10 @@ FilmEditor::make_dcp_panel ()
        }
        ++r;
 
+       _burn_subtitles = new wxCheckBox (_dcp_panel, wxID_ANY, _("Burn subtitles into image"));
+       grid->Add (_burn_subtitles, wxGBPosition (r, 0), wxGBSpan (1, 2));
+       ++r;
+
        _signed = new wxCheckBox (_dcp_panel, wxID_ANY, _("Signed"));
        grid->Add (_signed, wxGBPosition (r, 0), wxGBSpan (1, 2));
        ++r;
@@ -249,6 +253,7 @@ FilmEditor::connect_to_widgets ()
        _frame_rate_choice->Bind(wxEVT_COMMAND_CHOICE_SELECTED,       boost::bind (&FilmEditor::frame_rate_choice_changed, this));
        _frame_rate_spin->Bind  (wxEVT_COMMAND_SPINCTRL_UPDATED,      boost::bind (&FilmEditor::frame_rate_spin_changed, this));
        _best_frame_rate->Bind  (wxEVT_COMMAND_BUTTON_CLICKED,        boost::bind (&FilmEditor::best_frame_rate_clicked, this));
+       _burn_subtitles->Bind   (wxEVT_COMMAND_CHECKBOX_CLICKED,      boost::bind (&FilmEditor::burn_subtitles_toggled, this));
        _signed->Bind           (wxEVT_COMMAND_CHECKBOX_CLICKED,      boost::bind (&FilmEditor::signed_toggled, this));
        _encrypted->Bind        (wxEVT_COMMAND_CHECKBOX_CLICKED,      boost::bind (&FilmEditor::encrypted_toggled, this));
        _audio_channels->Bind   (wxEVT_COMMAND_SPINCTRL_UPDATED,      boost::bind (&FilmEditor::audio_channels_changed, this));
@@ -341,6 +346,16 @@ FilmEditor::signed_toggled ()
        _film->set_signed (_signed->GetValue ());
 }
 
+void
+FilmEditor::burn_subtitles_toggled ()
+{
+       if (!_film) {
+               return;
+       }
+
+       _film->set_burn_subtitles (_burn_subtitles->GetValue ());
+}
+
 void
 FilmEditor::encrypted_toggled ()
 {
@@ -439,9 +454,6 @@ FilmEditor::film_changed (Film::Property p)
                checked_set (_name, _film->name());
                setup_dcp_name ();
                break;
-       case Film::WITH_SUBTITLES:
-               setup_dcp_name ();
-               break;
        case Film::DCP_CONTENT_TYPE:
                checked_set (_dcp_content_type, DCPContentType::as_index (_film->dcp_content_type ()));
                setup_dcp_name ();
@@ -449,6 +461,9 @@ FilmEditor::film_changed (Film::Property p)
        case Film::SCALER:
                checked_set (_scaler, Scaler::as_index (_film->scaler ()));
                break;
+       case Film::BURN_SUBTITLES:
+               checked_set (_burn_subtitles, _film->burn_subtitles ());
+               break;
        case Film::SIGNED:
                checked_set (_signed, _film->is_signed ());
                break;
@@ -528,7 +543,7 @@ FilmEditor::film_content_changed (int property)
                (*i)->film_content_changed (property);
        }
 
-       if (property == FFmpegContentProperty::AUDIO_STREAM) {
+       if (property == FFmpegContentProperty::AUDIO_STREAM || property == SubtitleContentProperty::SUBTITLE_USE) {
                setup_dcp_name ();
        } else if (property == ContentProperty::PATH) {
                setup_content ();
@@ -617,8 +632,8 @@ FilmEditor::set_film (shared_ptr<Film> f)
        film_changed (Film::CONTAINER);
        film_changed (Film::RESOLUTION);
        film_changed (Film::SCALER);
-       film_changed (Film::WITH_SUBTITLES);
        film_changed (Film::SIGNED);
+       film_changed (Film::BURN_SUBTITLES);
        film_changed (Film::ENCRYPTED);
        film_changed (Film::J2K_BANDWIDTH);
        film_changed (Film::ISDCF_METADATA);
@@ -657,6 +672,7 @@ FilmEditor::set_general_sensitivity (bool s)
        if (_film && _film->encrypted ()) {
                si = false;
        }
+       _burn_subtitles->Enable (s);
        _signed->Enable (si);
        
        _encrypted->Enable (s);
@@ -871,7 +887,7 @@ FilmEditor::setup_content_sensitivity ()
 
        _video_panel->Enable    (video_selection.size() > 0 && _generally_sensitive);
        _audio_panel->Enable    (audio_selection.size() > 0 && _generally_sensitive);
-       _subtitle_panel->Enable (selection.size() == 1 && dynamic_pointer_cast<FFmpegContent> (selection.front()) && _generally_sensitive);
+       _subtitle_panel->Enable (selection.size() == 1 && dynamic_pointer_cast<SubtitleContent> (selection.front()) && _generally_sensitive);
        _timing_panel->Enable   (selection.size() == 1 && _generally_sensitive);
 }
 
@@ -880,7 +896,7 @@ FilmEditor::selected_content ()
 {
        ContentList sel;
        long int s = -1;
-       while (1) {
+       while (true) {
                s = _content->GetNextItem (s, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
                if (s == -1) {
                        break;