C++11 tidying.
[dcpomatic.git] / src / wx / text_panel.cc
index b21d33ce57f1b1f0c5bfe844dc5bc5c4037f1749..ec4904afd608abafbe0c1e4a30d99b369175563a 100644 (file)
 #include "lib/analyse_subtitles_job.h"
 #include "lib/subtitle_analysis.h"
 #include <wx/spinctrl.h>
-#include <boost/foreach.hpp>
 
 using std::vector;
 using std::string;
 using std::list;
 using std::cout;
-using boost::shared_ptr;
+using std::shared_ptr;
 using boost::optional;
-using boost::dynamic_pointer_cast;
+using std::dynamic_pointer_cast;
 using boost::bind;
 
 /** @param t Original text type of the content, if known */
@@ -66,14 +65,14 @@ TextPanel::TextPanel (ContentPanel* p, TextType t)
        , _loading_analysis (false)
 {
        wxString refer = _("Use this DCP's subtitle as OV and make VF");
-       if (t == TEXT_CLOSED_CAPTION) {
+       if (t == TextType::CLOSED_CAPTION) {
                refer = _("Use this DCP's closed caption as OV and make VF");
        }
 
        _reference = new CheckBox (this, refer);
        _reference_note = new StaticText (this, wxT(""));
        _reference_note->Wrap (200);
-       wxFont font = _reference_note->GetFont();
+       auto font = _reference_note->GetFont();
        font.SetStyle(wxFONTSTYLE_ITALIC);
        font.SetPointSize(font.GetPointSize() - 1);
        _reference_note->SetFont(font);
@@ -146,7 +145,7 @@ void
 TextPanel::setup_visibility ()
 {
        switch (current_type()) {
-       case TEXT_OPEN_SUBTITLE:
+       case TextType::OPEN_SUBTITLE:
                if (_dcp_track_label) {
                        _dcp_track_label->Destroy ();
                        _dcp_track_label = 0;
@@ -162,7 +161,7 @@ TextPanel::setup_visibility ()
                }
 
                break;
-       case TEXT_CLOSED_CAPTION:
+       case TextType::CLOSED_CAPTION:
                if (!_dcp_track_label) {
                        _dcp_track_label = create_label (this, _("CCAP track"), true);
                        add_label_to_sizer (_grid, _dcp_track_label, true, wxGBPosition(_ccap_track_row, 0));
@@ -192,13 +191,13 @@ TextPanel::add_to_grid ()
 {
        int r = 0;
 
-       wxBoxSizer* reference_sizer = new wxBoxSizer (wxVERTICAL);
+       auto reference_sizer = new wxBoxSizer (wxVERTICAL);
        reference_sizer->Add (_reference, 0);
        reference_sizer->Add (_reference_note, 0);
        _grid->Add (reference_sizer, wxGBPosition(r, 0), wxGBSpan(1, 4));
        ++r;
 
-       wxBoxSizer* use = new wxBoxSizer (wxHORIZONTAL);
+       auto use = new wxBoxSizer (wxHORIZONTAL);
        use->Add (_use, 0, wxEXPAND | wxRIGHT, DCPOMATIC_SIZER_GAP);
        use->Add (_type, 1, wxEXPAND, 0);
        _grid->Add (use, wxGBPosition (r, 0), wxGBSpan (1, 2));
@@ -211,7 +210,7 @@ TextPanel::add_to_grid ()
        ++r;
 
        add_label_to_sizer (_grid, _offset_label, true, wxGBPosition (r, 0));
-       wxBoxSizer* offset = new wxBoxSizer (wxHORIZONTAL);
+       auto offset = new wxBoxSizer (wxHORIZONTAL);
        add_label_to_sizer (offset, _x_offset_label, true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTER_VERTICAL);
        offset->Add (_x_offset, 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, DCPOMATIC_SIZER_X_GAP);
        offset->Add (_x_offset_pc_label, 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, DCPOMATIC_SIZER_X_GAP * 2);
@@ -227,7 +226,7 @@ TextPanel::add_to_grid ()
        ++r;
 
        add_label_to_sizer (_grid, _scale_label, true, wxGBPosition (r, 0));
-       wxBoxSizer* scale = new wxBoxSizer (wxHORIZONTAL);
+       auto scale = new wxBoxSizer (wxHORIZONTAL);
        add_label_to_sizer (scale, _x_scale_label, true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTER_VERTICAL);
        scale->Add (_x_scale, 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, DCPOMATIC_SIZER_X_GAP);
        scale->Add (_x_scale_pc_label, 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, DCPOMATIC_SIZER_X_GAP * 2);
@@ -259,7 +258,7 @@ TextPanel::add_to_grid ()
        ++r;
 
        {
-               wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL);
+               auto s = new wxBoxSizer (wxHORIZONTAL);
 
                s->Add (_text_view_button, 1, wxALL, DCPOMATIC_SIZER_GAP);
                s->Add (_fonts_dialog_button, 1, wxALL, DCPOMATIC_SIZER_GAP);
@@ -279,10 +278,10 @@ TextPanel::update_dcp_track_selection ()
 
        optional<DCPTextTrack> selected;
        bool many = false;
-       BOOST_FOREACH (shared_ptr<Content> i, _parent->selected_text()) {
-               shared_ptr<TextContent> t = i->text_of_original_type(_original_type);
+       for (auto i: _parent->selected_text()) {
+               auto t = i->text_of_original_type(_original_type);
                if (t) {
-                       optional<DCPTextTrack> dt = t->dcp_track();
+                       auto dt = t->dcp_track();
                        if (dt && selected && *dt != *selected) {
                                many = true;
                        } else if (!selected) {
@@ -292,7 +291,7 @@ TextPanel::update_dcp_track_selection ()
        }
 
        int n = 0;
-       BOOST_FOREACH (DCPTextTrack i, _parent->film()->closed_caption_tracks()) {
+       for (auto i: _parent->film()->closed_caption_tracks()) {
                if (!many && selected && *selected == i) {
                        _dcp_track->SetSelection (n);
                }
@@ -310,7 +309,7 @@ TextPanel::update_dcp_tracks ()
        DCPOMATIC_ASSERT (_dcp_track);
 
        _dcp_track->Clear ();
-       BOOST_FOREACH (DCPTextTrack i, _parent->film()->closed_caption_tracks()) {
+       for (auto i: _parent->film()->closed_caption_tracks()) {
                /* XXX: don't display the "magic" track which has empty name and language;
                   this is a nasty hack (see also Film::closed_caption_tracks)
                */
@@ -332,14 +331,14 @@ TextPanel::dcp_track_changed ()
        optional<DCPTextTrack> track;
 
        if (_dcp_track->GetSelection() == int(_dcp_track->GetCount()) - 1) {
-               DCPTextTrackDialog* d = new DCPTextTrackDialog (this);
+               auto d = new DCPTextTrackDialog (this);
                if (d->ShowModal() == wxID_OK) {
                        track = d->get();
                }
                d->Destroy ();
        } else {
                /* Find the DCPTextTrack that was selected */
-               BOOST_FOREACH (DCPTextTrack i, _parent->film()->closed_caption_tracks()) {
+               for (auto i: _parent->film()->closed_caption_tracks()) {
                        if (i.summary() == wx_to_std(_dcp_track->GetStringSelection())) {
                                track = i;
                        }
@@ -347,9 +346,9 @@ TextPanel::dcp_track_changed ()
        }
 
        if (track) {
-               BOOST_FOREACH (shared_ptr<Content> i, _parent->selected_text()) {
-                       shared_ptr<TextContent> t = i->text_of_original_type(_original_type);
-                       if (t && t->type() == TEXT_CLOSED_CAPTION) {
+               for (auto i: _parent->selected_text()) {
+                       auto t = i->text_of_original_type(_original_type);
+                       if (t && t->type() == TextType::CLOSED_CAPTION) {
                                t->set_dcp_track(*track);
                        }
                }
@@ -361,7 +360,7 @@ TextPanel::dcp_track_changed ()
 void
 TextPanel::film_changed (Film::Property property)
 {
-       if (property == Film::CONTENT || property == Film::REEL_TYPE || property == Film::INTEROP) {
+       if (property == Film::Property::CONTENT || property == Film::Property::REEL_TYPE || property == Film::Property::INTEROP) {
                setup_sensitivity ();
        }
 }
@@ -369,8 +368,8 @@ TextPanel::film_changed (Film::Property property)
 void
 TextPanel::film_content_changed (int property)
 {
-       FFmpegContentList fc = _parent->selected_ffmpeg ();
-       ContentList sc = _parent->selected_text ();
+       auto fc = _parent->selected_ffmpeg ();
+       auto sc = _parent->selected_text ();
 
        shared_ptr<FFmpegContent> fcs;
        if (fc.size() == 1) {
@@ -390,9 +389,8 @@ TextPanel::film_content_changed (int property)
        if (property == FFmpegContentProperty::SUBTITLE_STREAMS) {
                _stream->Clear ();
                if (fcs) {
-                       vector<shared_ptr<FFmpegSubtitleStream> > s = fcs->subtitle_streams ();
-                       for (vector<shared_ptr<FFmpegSubtitleStream> >::iterator i = s.begin(); i != s.end(); ++i) {
-                               _stream->Append (std_to_wx ((*i)->name), new wxStringClientData (std_to_wx ((*i)->identifier ())));
+                       for (auto i: fcs->subtitle_streams()) {
+                               _stream->Append (std_to_wx(i->name), new wxStringClientData(std_to_wx(i->identifier())));
                        }
 
                        if (fcs->subtitle_stream()) {
@@ -410,10 +408,10 @@ TextPanel::film_content_changed (int property)
        } else if (property == TextContentProperty::TYPE) {
                if (text) {
                        switch (text->type()) {
-                       case TEXT_OPEN_SUBTITLE:
+                       case TextType::OPEN_SUBTITLE:
                                _type->SetSelection (0);
                                break;
-                       case TEXT_CLOSED_CAPTION:
+                       case TextType::CLOSED_CAPTION:
                                _type->SetSelection (1);
                                break;
                        default:
@@ -447,7 +445,7 @@ TextPanel::film_content_changed (int property)
                }
        } else if (property == DCPContentProperty::REFERENCE_TEXT) {
                if (scs) {
-                       shared_ptr<DCPContent> dcp = dynamic_pointer_cast<DCPContent> (scs);
+                       auto dcp = dynamic_pointer_cast<DCPContent> (scs);
                        checked_set (_reference, dcp ? dcp->reference_text(_original_type) : false);
                } else {
                        checked_set (_reference, false);
@@ -464,7 +462,7 @@ TextPanel::film_content_changed (int property)
 void
 TextPanel::use_toggled ()
 {
-       BOOST_FOREACH (shared_ptr<Content> i, _parent->selected_text()) {
+       for (auto i: _parent->selected_text()) {
                i->text_of_original_type(_original_type)->set_use (_use->GetValue());
        }
 }
@@ -475,18 +473,18 @@ TextPanel::current_type () const
 {
        switch (_type->GetSelection()) {
        case 0:
-               return TEXT_OPEN_SUBTITLE;
+               return TextType::OPEN_SUBTITLE;
        case 1:
-               return TEXT_CLOSED_CAPTION;
+               return TextType::CLOSED_CAPTION;
        }
 
-       return TEXT_UNKNOWN;
+       return TextType::UNKNOWN;
 }
 
 void
 TextPanel::type_changed ()
 {
-       BOOST_FOREACH (shared_ptr<Content> i, _parent->selected_text()) {
+       for (auto i: _parent->selected_text()) {
                i->text_of_original_type(_original_type)->set_type (current_type ());
        }
 
@@ -496,7 +494,7 @@ TextPanel::type_changed ()
 void
 TextPanel::burn_toggled ()
 {
-       BOOST_FOREACH (shared_ptr<Content> i, _parent->selected_text ()) {
+       for (auto i: _parent->selected_text ()) {
                i->text_of_original_type(_original_type)->set_burn (_burn->GetValue());
        }
 }
@@ -509,13 +507,13 @@ TextPanel::setup_sensitivity ()
        int ffmpeg_subs = 0;
        /* DCP subs can't have their line spacing changed */
        int dcp_subs = 0;
-       ContentList sel = _parent->selected_text ();
-       BOOST_FOREACH (shared_ptr<Content> i, sel) {
+       auto sel = _parent->selected_text ();
+       for (auto i: sel) {
                /* These are the content types that could include subtitles */
-               shared_ptr<const FFmpegContent> fc = boost::dynamic_pointer_cast<const FFmpegContent> (i);
-               shared_ptr<const StringTextFileContent> sc = boost::dynamic_pointer_cast<const StringTextFileContent> (i);
-               shared_ptr<const DCPContent> dc = boost::dynamic_pointer_cast<const DCPContent> (i);
-               shared_ptr<const DCPSubtitleContent> dsc = boost::dynamic_pointer_cast<const DCPSubtitleContent> (i);
+               auto fc = std::dynamic_pointer_cast<const FFmpegContent> (i);
+               auto sc = std::dynamic_pointer_cast<const StringTextFileContent> (i);
+               auto dc = std::dynamic_pointer_cast<const DCPContent> (i);
+               auto dsc = std::dynamic_pointer_cast<const DCPSubtitleContent> (i);
                if (fc) {
                        if (!fc->text.empty()) {
                                ++ffmpeg_subs;
@@ -559,10 +557,10 @@ TextPanel::setup_sensitivity ()
        }
 
        switch (type) {
-       case TEXT_OPEN_SUBTITLE:
+       case TextType::OPEN_SUBTITLE:
                _type->SetSelection (0);
                break;
-       case TEXT_CLOSED_CAPTION:
+       case TextType::CLOSED_CAPTION:
                if (_type->GetCount() > 1) {
                        _type->SetSelection (1);
                }
@@ -575,35 +573,35 @@ TextPanel::setup_sensitivity ()
        _use->Enable (!reference && any_subs > 0);
        bool const use = _use->GetValue ();
        if (_outline_subtitles) {
-               _outline_subtitles->Enable (!_loading_analysis && any_subs && use && type == TEXT_OPEN_SUBTITLE);
+               _outline_subtitles->Enable (!_loading_analysis && any_subs && use && type == TextType::OPEN_SUBTITLE);
        }
        _type->Enable (!reference && any_subs > 0 && use);
-       _burn->Enable (!reference && any_subs > 0 && use && type == TEXT_OPEN_SUBTITLE);
-       _x_offset->Enable (!reference && any_subs > 0 && use && type == TEXT_OPEN_SUBTITLE);
-       _y_offset->Enable (!reference && any_subs > 0 && use && type == TEXT_OPEN_SUBTITLE);
-       _x_scale->Enable (!reference && any_subs > 0 && use && type == TEXT_OPEN_SUBTITLE);
-       _y_scale->Enable (!reference && any_subs > 0 && use && type == TEXT_OPEN_SUBTITLE);
-       _line_spacing->Enable (!reference && use && type == TEXT_OPEN_SUBTITLE && dcp_subs < any_subs);
+       _burn->Enable (!reference && any_subs > 0 && use && type == TextType::OPEN_SUBTITLE);
+       _x_offset->Enable (!reference && any_subs > 0 && use && type == TextType::OPEN_SUBTITLE);
+       _y_offset->Enable (!reference && any_subs > 0 && use && type == TextType::OPEN_SUBTITLE);
+       _x_scale->Enable (!reference && any_subs > 0 && use && type == TextType::OPEN_SUBTITLE);
+       _y_scale->Enable (!reference && any_subs > 0 && use && type == TextType::OPEN_SUBTITLE);
+       _line_spacing->Enable (!reference && use && type == TextType::OPEN_SUBTITLE && dcp_subs < any_subs);
        _stream->Enable (!reference && ffmpeg_subs == 1);
        /* Ideally we would check here to see if the FFmpeg content has "string" subs (i.e. not bitmaps) */
        _text_view_button->Enable (!reference && any_subs > 0 && ffmpeg_subs == 0);
-       _fonts_dialog_button->Enable (!reference && any_subs > 0 && ffmpeg_subs == 0 && type == TEXT_OPEN_SUBTITLE);
-       _appearance_dialog_button->Enable (!reference && any_subs > 0 && use && type == TEXT_OPEN_SUBTITLE);
+       _fonts_dialog_button->Enable (!reference && any_subs > 0 && ffmpeg_subs == 0 && type == TextType::OPEN_SUBTITLE);
+       _appearance_dialog_button->Enable (!reference && any_subs > 0 && use && type == TextType::OPEN_SUBTITLE);
 }
 
 void
 TextPanel::stream_changed ()
 {
-       FFmpegContentList fc = _parent->selected_ffmpeg ();
+       auto fc = _parent->selected_ffmpeg ();
        if (fc.size() != 1) {
                return;
        }
 
-       shared_ptr<FFmpegContent> fcs = fc.front ();
+       auto fcs = fc.front ();
 
-       vector<shared_ptr<FFmpegSubtitleStream> > a = fcs->subtitle_streams ();
-       vector<shared_ptr<FFmpegSubtitleStream> >::iterator i = a.begin ();
-       string const s = string_client_data (_stream->GetClientObject (_stream->GetSelection ()));
+       auto a = fcs->subtitle_streams ();
+       auto i = a.begin ();
+       auto const s = string_client_data (_stream->GetClientObject (_stream->GetSelection ()));
        while (i != a.end() && (*i)->identifier () != s) {
                ++i;
        }
@@ -616,7 +614,7 @@ TextPanel::stream_changed ()
 void
 TextPanel::x_offset_changed ()
 {
-       BOOST_FOREACH (shared_ptr<Content> i, _parent->selected_text ()) {
+       for (auto i: _parent->selected_text ()) {
                i->text_of_original_type(_original_type)->set_x_offset (_x_offset->GetValue() / 100.0);
        }
 }
@@ -624,7 +622,7 @@ TextPanel::x_offset_changed ()
 void
 TextPanel::y_offset_changed ()
 {
-       BOOST_FOREACH (shared_ptr<Content> i, _parent->selected_text ()) {
+       for (auto i: _parent->selected_text ()) {
                i->text_of_original_type(_original_type)->set_y_offset (_y_offset->GetValue() / 100.0);
        }
 }
@@ -632,16 +630,15 @@ TextPanel::y_offset_changed ()
 void
 TextPanel::x_scale_changed ()
 {
-       ContentList c = _parent->selected_text ();
-       if (c.size() == 1) {
-               c.front()->text_of_original_type(_original_type)->set_x_scale (_x_scale->GetValue() / 100.0);
+       for (auto i: _parent->selected_text ()) {
+               i->text_of_original_type(_original_type)->set_x_scale (_x_scale->GetValue() / 100.0);
        }
 }
 
 void
 TextPanel::y_scale_changed ()
 {
-       BOOST_FOREACH (shared_ptr<Content> i, _parent->selected_text ()) {
+       for (auto i: _parent->selected_text ()) {
                i->text_of_original_type(_original_type)->set_y_scale (_y_scale->GetValue() / 100.0);
        }
 }
@@ -649,7 +646,7 @@ TextPanel::y_scale_changed ()
 void
 TextPanel::line_spacing_changed ()
 {
-       BOOST_FOREACH (shared_ptr<Content> i, _parent->selected_text ()) {
+       for (auto i: _parent->selected_text ()) {
                i->text_of_original_type(_original_type)->set_line_spacing (_line_spacing->GetValue() / 100.0);
        }
 }
@@ -679,10 +676,10 @@ TextPanel::text_view_clicked ()
                _text_view = 0;
        }
 
-       ContentList c = _parent->selected_text ();
+       auto c = _parent->selected_text ();
        DCPOMATIC_ASSERT (c.size() == 1);
 
-       shared_ptr<Decoder> decoder = decoder_factory (_parent->film(), c.front(), false, false, shared_ptr<Decoder>());
+       auto decoder = decoder_factory (_parent->film(), c.front(), false, false, shared_ptr<Decoder>());
 
        if (decoder) {
                _text_view = new TextView (this, _parent->film(), c.front(), c.front()->text_of_original_type(_original_type), decoder, _parent->film_viewer());
@@ -695,10 +692,10 @@ TextPanel::fonts_dialog_clicked ()
 {
        if (_fonts_dialog) {
                _fonts_dialog->Destroy ();
-               _fonts_dialog = 0;
+               _fonts_dialog = nullptr;
        }
 
-       ContentList c = _parent->selected_text ();
+       auto c = _parent->selected_text ();
        DCPOMATIC_ASSERT (c.size() == 1);
 
        _fonts_dialog = new FontsDialog (this, c.front(), c.front()->text_of_original_type(_original_type));
@@ -708,12 +705,12 @@ TextPanel::fonts_dialog_clicked ()
 void
 TextPanel::reference_clicked ()
 {
-       ContentList c = _parent->selected ();
+       auto c = _parent->selected ();
        if (c.size() != 1) {
                return;
        }
 
-       shared_ptr<DCPContent> d = dynamic_pointer_cast<DCPContent> (c.front ());
+       auto d = dynamic_pointer_cast<DCPContent> (c.front ());
        if (!d) {
                return;
        }
@@ -724,10 +721,10 @@ TextPanel::reference_clicked ()
 void
 TextPanel::appearance_dialog_clicked ()
 {
-       ContentList c = _parent->selected_text ();
+       auto c = _parent->selected_text ();
        DCPOMATIC_ASSERT (c.size() == 1);
 
-       SubtitleAppearanceDialog* d = new SubtitleAppearanceDialog (this, _parent->film(), c.front(), c.front()->text_of_original_type(_original_type));
+       auto d = new SubtitleAppearanceDialog (this, _parent->film(), c.front(), c.front()->text_of_original_type(_original_type));
        if (d->ShowModal () == wxID_OK) {
                d->apply ();
        }
@@ -760,17 +757,17 @@ TextPanel::try_to_load_analysis ()
        setup_sensitivity ();
        _analysis.reset ();
 
-       shared_ptr<Content> content = _analysis_content.lock ();
+       auto content = _analysis_content.lock ();
        if (!content) {
                _loading_analysis = false;
                setup_sensitivity ();
                return;
        }
 
-       boost::filesystem::path const path = _parent->film()->subtitle_analysis_path(content);
+       auto const path = _parent->film()->subtitle_analysis_path(content);
 
        if (!boost::filesystem::exists(path)) {
-               BOOST_FOREACH (shared_ptr<Job> i, JobManager::instance()->get()) {
+               for (auto i: JobManager::instance()->get()) {
                        if (dynamic_pointer_cast<AnalyseSubtitlesJob>(i)) {
                                i->cancel ();
                        }
@@ -801,15 +798,15 @@ TextPanel::try_to_load_analysis ()
 void
 TextPanel::update_outline_subtitles_in_viewer ()
 {
-       shared_ptr<FilmViewer> fv = _parent->film_viewer().lock();
+       auto fv = _parent->film_viewer().lock();
        if (!fv) {
                return;
        }
 
        if (_analysis) {
-               optional<dcpomatic::Rect<double> > rect = _analysis->bounding_box ();
+               auto rect = _analysis->bounding_box ();
                if (rect) {
-                       shared_ptr<Content> content = _analysis_content.lock ();
+                       auto content = _analysis_content.lock ();
                        DCPOMATIC_ASSERT (content);
                        rect->x += content->text.front()->x_offset();
                        rect->y += content->text.front()->y_offset();
@@ -836,7 +833,7 @@ TextPanel::clear_outline_subtitles ()
 void
 TextPanel::analysis_finished ()
 {
-       shared_ptr<Content> content = _analysis_content.lock ();
+       auto content = _analysis_content.lock ();
        if (!content) {
                _loading_analysis = false;
                setup_sensitivity ();