X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Ftext_panel.cc;h=ec4904afd608abafbe0c1e4a30d99b369175563a;hb=449be30bcb75e136d0985f68f3d942d2059e1802;hp=b21d33ce57f1b1f0c5bfe844dc5bc5c4037f1749;hpb=67bd4a37f5836ef34d9b5752744061d4be07e6e1;p=dcpomatic.git diff --git a/src/wx/text_panel.cc b/src/wx/text_panel.cc index b21d33ce5..ec4904afd 100644 --- a/src/wx/text_panel.cc +++ b/src/wx/text_panel.cc @@ -43,15 +43,14 @@ #include "lib/analyse_subtitles_job.h" #include "lib/subtitle_analysis.h" #include -#include 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 selected; bool many = false; - BOOST_FOREACH (shared_ptr i, _parent->selected_text()) { - shared_ptr 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 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 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 i, _parent->selected_text()) { - shared_ptr 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 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 > s = fcs->subtitle_streams (); - for (vector >::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 dcp = dynamic_pointer_cast (scs); + auto dcp = dynamic_pointer_cast (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 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 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 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 i, sel) { + auto sel = _parent->selected_text (); + for (auto i: sel) { /* These are the content types that could include subtitles */ - shared_ptr fc = boost::dynamic_pointer_cast (i); - shared_ptr sc = boost::dynamic_pointer_cast (i); - shared_ptr dc = boost::dynamic_pointer_cast (i); - shared_ptr dsc = boost::dynamic_pointer_cast (i); + auto fc = std::dynamic_pointer_cast (i); + auto sc = std::dynamic_pointer_cast (i); + auto dc = std::dynamic_pointer_cast (i); + auto dsc = std::dynamic_pointer_cast (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 fcs = fc.front (); + auto fcs = fc.front (); - vector > a = fcs->subtitle_streams (); - vector >::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 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 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 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 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_factory (_parent->film(), c.front(), false, false, shared_ptr()); + auto decoder = decoder_factory (_parent->film(), c.front(), false, false, shared_ptr()); 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 d = dynamic_pointer_cast (c.front ()); + auto d = dynamic_pointer_cast (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 = _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 i, JobManager::instance()->get()) { + for (auto i: JobManager::instance()->get()) { if (dynamic_pointer_cast(i)) { i->cancel (); } @@ -801,15 +798,15 @@ TextPanel::try_to_load_analysis () void TextPanel::update_outline_subtitles_in_viewer () { - shared_ptr fv = _parent->film_viewer().lock(); + auto fv = _parent->film_viewer().lock(); if (!fv) { return; } if (_analysis) { - optional > rect = _analysis->bounding_box (); + auto rect = _analysis->bounding_box (); if (rect) { - shared_ptr 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 = _analysis_content.lock (); + auto content = _analysis_content.lock (); if (!content) { _loading_analysis = false; setup_sensitivity ();