From 47c34c6c7c82396b62e101283cb25b8726dbaefd Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Tue, 27 Mar 2018 23:28:27 +0100 Subject: [PATCH] why_not in can_reference can just be a string rather than a list of strings. --- src/lib/dcp_content.cc | 26 +++++++++++++------------- src/lib/dcp_content.h | 10 +++++----- src/wx/audio_panel.cc | 2 +- src/wx/content_sub_panel.cc | 7 ++----- src/wx/content_sub_panel.h | 2 +- src/wx/subtitle_panel.cc | 2 +- src/wx/video_panel.cc | 2 +- test/vf_test.cc | 2 +- 8 files changed, 25 insertions(+), 28 deletions(-) diff --git a/src/lib/dcp_content.cc b/src/lib/dcp_content.cc index ad489917d..c4f73e2b2 100644 --- a/src/lib/dcp_content.cc +++ b/src/lib/dcp_content.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2016 Carl Hetherington + Copyright (C) 2014-2018 Carl Hetherington This file is part of DCP-o-matic. @@ -429,22 +429,22 @@ DCPContent::reel_split_points () const } bool -DCPContent::can_reference (function (shared_ptr)> part, string overlapping, list& why_not) const +DCPContent::can_reference (function (shared_ptr)> part, string overlapping, string& why_not) const { /* We must be using the same standard as the film */ if (_standard) { if (_standard.get() == dcp::INTEROP && !film()->interop()) { - why_not.push_back (_("The film is set to SMPTE and this DCP is Interop.")); + why_not = _("The film is set to SMPTE and this DCP is Interop."); return false; } else if (_standard.get() == dcp::SMPTE && film()->interop()) { - why_not.push_back (_("The film is set to Interop and this DCP is SMPTE.")); + why_not = _("The film is set to Interop and this DCP is SMPTE."); return false; } } /* And the same frame rate */ if (!video_frame_rate() || (lrint(video_frame_rate().get()) != film()->video_frame_rate())) { - why_not.push_back (_("The film has a different frame rate to this DCP.")); + why_not = _("The film has a different frame rate to this DCP."); return false; } @@ -466,14 +466,14 @@ DCPContent::can_reference (function (shared_ptrcontent(), part, position(), end()); if (a.size() != 1 || a.front().get() != this) { - why_not.push_back (overlapping); + why_not = overlapping; return false; } @@ -481,10 +481,10 @@ DCPContent::can_reference (function (shared_ptr& why_not) const +DCPContent::can_reference_video (string& why_not) const { if (film()->frame_size() != video->size()) { - why_not.push_back (_("The video frame size in the film differs from that in the DCP.")); + why_not = _("The video frame size in the film differs from that in the DCP."); return false; } @@ -492,7 +492,7 @@ DCPContent::can_reference_video (list& why_not) const } bool -DCPContent::can_reference_audio (list& why_not) const +DCPContent::can_reference_audio (string& why_not) const { shared_ptr decoder; try { @@ -507,7 +507,7 @@ DCPContent::can_reference_audio (list& why_not) const BOOST_FOREACH (shared_ptr i, decoder->reels()) { if (!i->main_sound()) { - why_not.push_back (_("The DCP does not have sound in all reels.")); + why_not = _("The DCP does not have sound in all reels."); return false; } } @@ -516,7 +516,7 @@ DCPContent::can_reference_audio (list& why_not) const } bool -DCPContent::can_reference_subtitle (list& why_not) const +DCPContent::can_reference_subtitle (string& why_not) const { shared_ptr decoder; try { @@ -531,7 +531,7 @@ DCPContent::can_reference_subtitle (list& why_not) const BOOST_FOREACH (shared_ptr i, decoder->reels()) { if (!i->main_subtitle()) { - why_not.push_back (_("The DCP does not have subtitles in all reels.")); + why_not = _("The DCP does not have subtitles in all reels."); return false; } } diff --git a/src/lib/dcp_content.h b/src/lib/dcp_content.h index 892b6aa73..371ec7fff 100644 --- a/src/lib/dcp_content.h +++ b/src/lib/dcp_content.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2016 Carl Hetherington + Copyright (C) 2014-2018 Carl Hetherington This file is part of DCP-o-matic. @@ -97,7 +97,7 @@ public: return _reference_video; } - bool can_reference_video (std::list &) const; + bool can_reference_video (std::string &) const; void set_reference_audio (bool r); @@ -106,7 +106,7 @@ public: return _reference_audio; } - bool can_reference_audio (std::list &) const; + bool can_reference_audio (std::string &) const; void set_reference_subtitle (bool r); @@ -115,7 +115,7 @@ public: return _reference_subtitle; } - bool can_reference_subtitle (std::list &) const; + bool can_reference_subtitle (std::string &) const; void set_cpl (std::string id); @@ -139,7 +139,7 @@ private: bool can_reference ( boost::function (boost::shared_ptr)>, std::string overlapping, - std::list& why_not + std::string& why_not ) const; std::string _name; diff --git a/src/wx/audio_panel.cc b/src/wx/audio_panel.cc index fd63abf6c..14d8db07e 100644 --- a/src/wx/audio_panel.cc +++ b/src/wx/audio_panel.cc @@ -267,7 +267,7 @@ AudioPanel::setup_sensitivity () dcp = dynamic_pointer_cast (sel.front ()); } - list why_not; + string why_not; bool const can_reference = dcp && dcp->can_reference_audio (why_not); setup_refer_button (_reference, dcp, can_reference, why_not); diff --git a/src/wx/content_sub_panel.cc b/src/wx/content_sub_panel.cc index e0e0cd12b..92eb5a32f 100644 --- a/src/wx/content_sub_panel.cc +++ b/src/wx/content_sub_panel.cc @@ -42,7 +42,7 @@ ContentSubPanel::ContentSubPanel (ContentPanel* p, wxString name) } void -ContentSubPanel::setup_refer_button (wxCheckBox* button, shared_ptr dcp, bool can_reference, list why_not) const +ContentSubPanel::setup_refer_button (wxCheckBox* button, shared_ptr dcp, bool can_reference, string why_not) const { button->Enable (can_reference); @@ -50,10 +50,7 @@ ContentSubPanel::setup_refer_button (wxCheckBox* button, shared_ptr if (!dcp) { s = _("No DCP selected."); } else if (!can_reference) { - s = _("Cannot reference this DCP. "); - BOOST_FOREACH (string i, why_not) { - s += std_to_wx(i) + wxT(" "); - } + s = _("Cannot reference this DCP. ") + std_to_wx(why_not); } button->SetToolTip (s); diff --git a/src/wx/content_sub_panel.h b/src/wx/content_sub_panel.h index 44d5ee1a5..fb22b3a22 100644 --- a/src/wx/content_sub_panel.h +++ b/src/wx/content_sub_panel.h @@ -42,7 +42,7 @@ public: protected: - void setup_refer_button (wxCheckBox* button, boost::shared_ptr dcp, bool can_reference, std::list why_not) const; + void setup_refer_button (wxCheckBox* button, boost::shared_ptr dcp, bool can_reference, std::string why_not) const; ContentPanel* _parent; wxSizer* _sizer; diff --git a/src/wx/subtitle_panel.cc b/src/wx/subtitle_panel.cc index 0b94b335f..5bba1ec2c 100644 --- a/src/wx/subtitle_panel.cc +++ b/src/wx/subtitle_panel.cc @@ -275,7 +275,7 @@ SubtitlePanel::setup_sensitivity () dcp = dynamic_pointer_cast (sel.front ()); } - list why_not; + string why_not; bool const can_reference = dcp && dcp->can_reference_subtitle (why_not); setup_refer_button (_reference, dcp, can_reference, why_not); diff --git a/src/wx/video_panel.cc b/src/wx/video_panel.cc index 294dd00e1..5fbe518c4 100644 --- a/src/wx/video_panel.cc +++ b/src/wx/video_panel.cc @@ -462,7 +462,7 @@ VideoPanel::setup_sensitivity () dcp = dynamic_pointer_cast (sel.front ()); } - list why_not; + string why_not; bool const can_reference = dcp && dcp->can_reference_video (why_not); setup_refer_button (_reference, dcp, can_reference, why_not); diff --git a/test/vf_test.cc b/test/vf_test.cc index 7deb5358b..3b3077242 100644 --- a/test/vf_test.cc +++ b/test/vf_test.cc @@ -54,7 +54,7 @@ BOOST_AUTO_TEST_CASE (vf_test1) /* Multi-reel DCP can't be referenced if we are using a single reel for the project */ film->set_reel_type (REELTYPE_SINGLE); - list why_not; + string why_not; BOOST_CHECK (!dcp->can_reference_video(why_not)); BOOST_CHECK (!dcp->can_reference_audio(why_not)); BOOST_CHECK (!dcp->can_reference_subtitle(why_not)); -- 2.30.2