X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Fverify_dcp_dialog.cc;h=c11246d23a5fc9ac89128405e4e477a9fa63c333;hb=40d38c8d011f0863f396f21cd750cdcef803a792;hp=aff4a92f05b55372b15624670faf25df37eab5ac;hpb=2bf2c409730da51e4dde58e3d0918319715db7d7;p=dcpomatic.git diff --git a/src/wx/verify_dcp_dialog.cc b/src/wx/verify_dcp_dialog.cc index aff4a92f0..c11246d23 100644 --- a/src/wx/verify_dcp_dialog.cc +++ b/src/wx/verify_dcp_dialog.cc @@ -20,13 +20,15 @@ #include "verify_dcp_dialog.h" #include "wx_util.h" +#include "lib/verify_dcp_job.h" #include #include #include using std::list; +using boost::shared_ptr; -VerifyDCPDialog::VerifyDCPDialog (wxWindow* parent, list notes) +VerifyDCPDialog::VerifyDCPDialog (wxWindow* parent, shared_ptr job) : wxDialog (parent, wxID_ANY, _("DCP verification")) { wxBoxSizer* sizer = new wxBoxSizer (wxVERTICAL); @@ -44,18 +46,22 @@ VerifyDCPDialog::VerifyDCPDialog (wxWindow* parent, list _text->GetCaret()->Hide (); - if (notes.empty ()) { + if (job->finished_ok() && job->notes().empty()) { _text->BeginStandardBullet (N_("standard/circle"), 1, 50); _text->WriteText (_("DCP validates OK.")); _text->EndStandardBullet (); return; } - BOOST_FOREACH (dcp::VerificationNote i, notes) { + /* We might have an error that did not come from dcp::verify; report it if so */ + if (job->finished_in_error() && job->error_summary() != "") { + _text->BeginSymbolBullet (N_("!"), 1, 50); + _text->WriteText(std_to_wx(job->error_summary())); + _text->Newline(); + } + + BOOST_FOREACH (dcp::VerificationNote i, job->notes()) { switch (i.type()) { - case dcp::VerificationNote::VERIFY_NOTE: - _text->BeginStandardBullet (N_("standard/circle"), 1, 50); - break; case dcp::VerificationNote::VERIFY_WARNING: _text->BeginStandardBullet (N_("standard/diamond"), 1, 50); break; @@ -64,11 +70,73 @@ VerifyDCPDialog::VerifyDCPDialog (wxWindow* parent, list break; } - _text->WriteText (std_to_wx (i.note())); + wxString text; + switch (i.code()) { + case dcp::VerificationNote::GENERAL_READ: + text = std_to_wx(*i.note()); + break; + case dcp::VerificationNote::CPL_HASH_INCORRECT: + text = _("The hash of the CPL in the PKL does not agree with the CPL file. This probably means that the CPL file is corrupt."); + break; + case dcp::VerificationNote::INVALID_PICTURE_FRAME_RATE: + text = _("The picture in a reel has an invalid frame rate"); + break; + case dcp::VerificationNote::PICTURE_HASH_INCORRECT: + text = wxString::Format( + _("The hash of the picture asset %s does not agree with the PKL file. This probably means that the asset file is corrupt."), + std_to_wx(i.file()->filename().string()) + ); + break; + case dcp::VerificationNote::PKL_CPL_PICTURE_HASHES_DISAGREE: + text = _("The PKL and CPL hashes disagree for a picture asset."); + break; + case dcp::VerificationNote::SOUND_HASH_INCORRECT: + text = wxString::Format( + _("The hash of the sound asset %s does not agree with the PKL file. This probably means that the asset file is corrupt."), + std_to_wx(i.file()->filename().string()) + ); + break; + case dcp::VerificationNote::PKL_CPL_SOUND_HASHES_DISAGREE: + text = _("The PKL and CPL hashes disagree for a sound asset."); + break; + case dcp::VerificationNote::EMPTY_ASSET_PATH: + text = _("An asset has an empty path in the ASSETMAP."); + break; + case dcp::VerificationNote::MISSING_ASSET: + text = _("An asset is missing."); + break; + case dcp::VerificationNote::MISMATCHED_STANDARD: + text = _("Parts of the DCP are written according to the Interop standard and parts according to SMPTE."); + break; + case dcp::VerificationNote::XML_VALIDATION_ERROR: + if (i.line()) { + text = wxString::Format( + _("The XML in %s is malformed on line %" PRIu64 "."), + std_to_wx(i.file()->filename().string()), + i.line().get() + ); + } else { + text = wxString::Format( + _("The XML in %s is malformed."), + std_to_wx(i.file()->filename().string()) + ); + } + break; + case dcp::VerificationNote::MISSING_ASSETMAP: + text = _("No ASSETMAP or ASSETMAP.xml file was found."); + break; + case dcp::VerificationNote::INTRINSIC_DURATION_TOO_SMALL: + text = _("An asset has an instrinsic duration of less than 1 second, which is invalid."); + break; + case dcp::VerificationNote::DURATION_TOO_SMALL: + text = _("An asset has a duration of less than 1 second, which is invalid."); + break; + } + + _text->WriteText (text); _text->Newline (); switch (i.type()) { - case dcp::VerificationNote::VERIFY_NOTE: case dcp::VerificationNote::VERIFY_WARNING: _text->EndStandardBullet (); break;