More enum class additions.
[dcpomatic.git] / src / wx / text_panel.cc
index 5b54fa35b8e1acd75944b17e486c71e70e179a0a..dec58f0cd1fc87b3a5ba49b4bd9ce983864b7622 100644 (file)
@@ -43,7 +43,6 @@
 #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;
@@ -66,7 +65,7 @@ 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");
        }
 
@@ -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));
@@ -279,7 +278,7 @@ TextPanel::update_dcp_track_selection ()
 
        optional<DCPTextTrack> selected;
        bool many = false;
-       BOOST_FOREACH (shared_ptr<Content> i, _parent->selected_text()) {
+       for (auto i: _parent->selected_text()) {
                shared_ptr<TextContent> t = i->text_of_original_type(_original_type);
                if (t) {
                        optional<DCPTextTrack> dt = t->dcp_track();
@@ -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)
                */
@@ -339,7 +338,7 @@ TextPanel::dcp_track_changed ()
                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()) {
+               for (auto i: _parent->selected_text()) {
                        shared_ptr<TextContent> t = i->text_of_original_type(_original_type);
-                       if (t && t->type() == TEXT_CLOSED_CAPTION) {
+                       if (t && t->type() == TextType::CLOSED_CAPTION) {
                                t->set_dcp_track(*track);
                        }
                }
@@ -410,10 +409,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:
@@ -464,7 +463,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 +474,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 +495,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());
        }
 }
@@ -510,7 +509,7 @@ TextPanel::setup_sensitivity ()
        /* 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) {
+       for (auto i: sel) {
                /* These are the content types that could include subtitles */
                shared_ptr<const FFmpegContent> fc = std::dynamic_pointer_cast<const FFmpegContent> (i);
                shared_ptr<const StringTextFileContent> sc = std::dynamic_pointer_cast<const StringTextFileContent> (i);
@@ -559,10 +558,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 +574,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 +615,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 +623,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,7 +631,7 @@ TextPanel::y_offset_changed ()
 void
 TextPanel::x_scale_changed ()
 {
-       ContentList c = _parent->selected_text ();
+       auto c = _parent->selected_text ();
        if (c.size() == 1) {
                c.front()->text_of_original_type(_original_type)->set_x_scale (_x_scale->GetValue() / 100.0);
        }
@@ -641,7 +640,7 @@ TextPanel::x_scale_changed ()
 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 +648,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);
        }
 }
@@ -695,10 +694,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 +707,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 +723,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 +759,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 +800,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 +835,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 ();