From 58392896c9dcbb378050bc7d0c4df989f4265e46 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Mon, 22 Sep 2025 21:04:14 +0200 Subject: FIXME: Support JSON verifier reports (#1823). Needs libdcp version bump. --- cscript | 2 +- src/tools/dcpomatic_verifier.cc | 2 +- src/wx/verify_dcp_result_panel.cc | 34 ++++++++++++++++++++++++++++++++-- src/wx/verify_dcp_result_panel.h | 2 ++ 4 files changed, 36 insertions(+), 4 deletions(-) diff --git a/cscript b/cscript index 458991e78..bdd26c760 100644 --- a/cscript +++ b/cscript @@ -502,7 +502,7 @@ def build_with_cpp17(target): def dependencies(target, options): - deps = [('libdcp', 'v1.10.28', {'c++17': build_with_cpp17(target)})] + deps = [('libdcp', '8c2822db1f40614b78bc4ecbd0498c20e05e021c', {'c++17': build_with_cpp17(target)})] deps.append(('libsub', 'v1.6.53')) deps.append(('leqm-nrt', '30dcaea1373ac62fba050e02ce5b0c1085797a23')) deps.append(('rtaudio', 'f619b76')) diff --git a/src/tools/dcpomatic_verifier.cc b/src/tools/dcpomatic_verifier.cc index 8a509529b..40482e44d 100644 --- a/src/tools/dcpomatic_verifier.cc +++ b/src/tools/dcpomatic_verifier.cc @@ -259,7 +259,7 @@ private: if (_write_log->get()) { for (size_t i = 0; i < _dcp_paths.size(); ++i) { dcp::TextFormatter formatter(_dcp_paths[i] / "REPORT.txt"); - dcp::verify_report({ jobs[i]->result() }, formatter); + dcp::make_formatted_verify_report({ jobs[i]->result() }, formatter); } } diff --git a/src/wx/verify_dcp_result_panel.cc b/src/wx/verify_dcp_result_panel.cc index d65806cf8..4413408ee 100644 --- a/src/wx/verify_dcp_result_panel.cc +++ b/src/wx/verify_dcp_result_panel.cc @@ -24,11 +24,12 @@ #include "verify_dcp_result_panel.h" #include "wx_util.h" #include "lib/verify_dcp_job.h" +#include #include +#include #include #include #include -#include #include LIBDCP_DISABLE_WARNINGS #include @@ -82,6 +83,8 @@ VerifyDCPResultPanel::VerifyDCPResultPanel(wxWindow* parent) save_sizer->Add(_save_html_report, 0, wxALL, DCPOMATIC_SIZER_GAP); _save_pdf_report = new Button(this, _("Save report as PDF...")); save_sizer->Add(_save_pdf_report, 0, wxALL, DCPOMATIC_SIZER_GAP); + _save_json_report = new Button(this, _("Save report as JSON...")); + save_sizer->Add(_save_json_report, 0, wxALL, DCPOMATIC_SIZER_GAP); sizer->Add(save_sizer); SetSizer(sizer); @@ -91,10 +94,12 @@ VerifyDCPResultPanel::VerifyDCPResultPanel(wxWindow* parent) _save_text_report->bind(&VerifyDCPResultPanel::save_text_report, this); _save_html_report->bind(&VerifyDCPResultPanel::save_html_report, this); _save_pdf_report->bind(&VerifyDCPResultPanel::save_pdf_report, this); + _save_json_report->bind(&VerifyDCPResultPanel::save_json_report, this); _save_text_report->Enable(false); _save_html_report->Enable(false); _save_pdf_report->Enable(false); + _save_json_report->Enable(false); } @@ -151,6 +156,7 @@ VerifyDCPResultPanel::add(vector> jobs) _save_text_report->Enable(true); _save_html_report->Enable(true); _save_pdf_report->Enable(true); + _save_json_report->Enable(true); for (auto type: _types) { _pages[type]->ExpandAll(); @@ -721,7 +727,24 @@ void save(wxWindow* parent, wxString filter, vectorresult()); } - dcp::verify_report(results, formatter); + dcp::make_formatted_verify_report(results, formatter); +} + + +static +void +save_json(wxWindow* parent, wxString filter, vector> jobs) +{ + FileDialog dialog(parent, _("Verification report"), filter, wxFD_SAVE | wxFD_OVERWRITE_PROMPT, "SaveVerificationReport"); + if (!dialog.show()) { + return; + } + + auto results = std::vector(); + for (auto job: jobs) { + results.push_back(job->result()); + } + dcp::make_json_verify_report(results, dialog.path()); } @@ -744,3 +767,10 @@ VerifyDCPResultPanel::save_pdf_report() { save(this, char_to_wx("PDF files (*.pdf)|*.pdf"), _jobs); } + + +void +VerifyDCPResultPanel::save_json_report() +{ + save_json(this, char_to_wx("JSON files (*.json)|*.json"), _jobs); +} diff --git a/src/wx/verify_dcp_result_panel.h b/src/wx/verify_dcp_result_panel.h index ff4f29a1a..b8137a660 100644 --- a/src/wx/verify_dcp_result_panel.h +++ b/src/wx/verify_dcp_result_panel.h @@ -42,12 +42,14 @@ private: void save_text_report(); void save_html_report(); void save_pdf_report(); + void save_json_report(); wxStaticText* _summary; std::map _pages; Button* _save_text_report; Button* _save_html_report; Button* _save_pdf_report; + Button* _save_json_report; std::vector> _jobs; -- cgit v1.2.3