X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Fwx%2Fverify_dcp_dialog.cc;h=a61d9bf11a959f19eb37e6ee1520c8d5e3347271;hp=00fb3bdd62ba725a835d04e926b96e0d77b2288f;hb=0a3f387f5d39da2ca38ec90a9593c1b598040dd7;hpb=b294c3a3d248e53af2c9b6ef02722cc1e12584d8 diff --git a/src/wx/verify_dcp_dialog.cc b/src/wx/verify_dcp_dialog.cc index 00fb3bdd6..a61d9bf11 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,31 +46,88 @@ 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; - case dcp::VerificationNote::VERIFY_NOTE: + case dcp::VerificationNote::VERIFY_ERROR: _text->BeginSymbolBullet (N_("!"), 1, 50); 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()).data() + ); + 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()).data() + ); + 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 %d."), + std_to_wx(i.file()->filename().string()).data(), + i.line().get() + ); + } else { + text = wxString::Format( + _("The XML in %s is malformed."), + std_to_wx(i.file()->filename().string()).data() + ); + } + break; + } + + _text->WriteText (text); _text->Newline (); switch (i.type()) { - case dcp::VerificationNote::VERIFY_NOTE: case dcp::VerificationNote::VERIFY_WARNING: _text->EndStandardBullet (); break;