From 93439dbc6d93dafd88e80d51d6473c8d97aa02c7 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 28 May 2014 23:25:11 +0100 Subject: Modify KDM generation to work with CPLs rather than DCPs, and allow user to specify a particular CPL to use. Tidy up the KDM dialog a bit. --- src/tools/dcpomatic.cc | 19 +++++++++++-------- src/tools/dcpomatic_kdm.cc | 21 +++++++++++---------- 2 files changed, 22 insertions(+), 18 deletions(-) (limited to 'src/tools') diff --git a/src/tools/dcpomatic.cc b/src/tools/dcpomatic.cc index da994796e..0ec2a81a4 100644 --- a/src/tools/dcpomatic.cc +++ b/src/tools/dcpomatic.cc @@ -30,6 +30,7 @@ #include #include #include +#include #include "wx/film_viewer.h" #include "wx/film_editor.h" #include "wx/job_manager_view.h" @@ -161,7 +162,7 @@ load_film (boost::filesystem::path file) #define ALWAYS 0x0 #define NEEDS_FILM 0x1 #define NOT_DURING_DCP_CREATION 0x2 -#define NEEDS_DCP 0x4 +#define NEEDS_CPL 0x4 map menu_items; @@ -181,7 +182,7 @@ set_menu_sensitivity () ++i; } bool const dcp_creation = (i != jobs.end ()) && !(*i)->finished (); - bool const have_dcp = film && !film->dcps().empty (); + bool const have_cpl = film && !film->cpls().empty (); for (map::iterator j = menu_items.begin(); j != menu_items.end(); ++j) { @@ -195,7 +196,7 @@ set_menu_sensitivity () enabled = false; } - if ((j->second & NEEDS_DCP) && !have_dcp) { + if ((j->second & NEEDS_CPL) && !have_cpl) { enabled = false; } @@ -247,9 +248,9 @@ setup_menu (wxMenuBar* m) jobs_menu = new wxMenu; add_item (jobs_menu, _("&Make DCP"), ID_jobs_make_dcp, NEEDS_FILM | NOT_DURING_DCP_CREATION); - add_item (jobs_menu, _("Make &KDMs..."), ID_jobs_make_kdms, NEEDS_FILM | NEEDS_DCP); - add_item (jobs_menu, _("&Send DCP to TMS"), ID_jobs_send_dcp_to_tms, NEEDS_FILM | NOT_DURING_DCP_CREATION | NEEDS_DCP); - add_item (jobs_menu, _("S&how DCP"), ID_jobs_show_dcp, NEEDS_FILM | NOT_DURING_DCP_CREATION | NEEDS_DCP); + add_item (jobs_menu, _("Make &KDMs..."), ID_jobs_make_kdms, NEEDS_FILM); + add_item (jobs_menu, _("&Send DCP to TMS"), ID_jobs_send_dcp_to_tms, NEEDS_FILM | NOT_DURING_DCP_CREATION | NEEDS_CPL); + add_item (jobs_menu, _("S&how DCP"), ID_jobs_show_dcp, NEEDS_FILM | NOT_DURING_DCP_CREATION | NEEDS_CPL); wxMenu* tools = new wxMenu; add_item (tools, _("Hints..."), ID_tools_hints, 0); @@ -494,12 +495,14 @@ private: try { if (d->write_to ()) { - write_kdm_files (film, d->screens (), d->dcp (), d->from (), d->until (), d->directory ()); + write_kdm_files (film, d->screens (), d->cpl (), d->from (), d->until (), d->directory ()); } else { JobManager::instance()->add ( - shared_ptr (new SendKDMEmailJob (film, d->screens (), d->dcp (), d->from (), d->until ())) + shared_ptr (new SendKDMEmailJob (film, d->screens (), d->cpl (), d->from (), d->until ())) ); } + } catch (libdcp::NotEncryptedError& e) { + error_dialog (this, _("CPL's content is not encrypted.")); } catch (exception& e) { error_dialog (this, e.what ()); } catch (...) { diff --git a/src/tools/dcpomatic_kdm.cc b/src/tools/dcpomatic_kdm.cc index 3a2068d2b..041f6c7ef 100644 --- a/src/tools/dcpomatic_kdm.cc +++ b/src/tools/dcpomatic_kdm.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2013 Carl Hetherington + Copyright (C) 2013-2014 Carl Hetherington This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,6 +30,7 @@ using std::stringstream; using std::cout; using std::cerr; using std::list; +using std::vector; using boost::shared_ptr; static string program_name; @@ -219,14 +220,14 @@ int main (int argc, char* argv[]) } /* XXX: allow specification of this */ - list dcps = film->dcps (); - if (dcps.empty ()) { - error ("no DCPs found in film"); - } else if (dcps.size() > 1) { - error ("more than one DCP found in film"); + vector cpls = film->cpls (); + if (cpls.empty ()) { + error ("no CPLs found in film"); + } else if (cpls.size() > 1) { + error ("more than one CPL found in film"); } - boost::filesystem::path dcp = dcps.front (); + boost::filesystem::path cpl = cpls.front().cpl_file; if (cinema_name.empty ()) { @@ -235,7 +236,7 @@ int main (int argc, char* argv[]) } shared_ptr certificate (new libdcp::Certificate (boost::filesystem::path (certificate_file))); - libdcp::KDM kdm = film->make_kdm (certificate, dcp, valid_from.get(), valid_to.get()); + libdcp::KDM kdm = film->make_kdm (certificate, cpl, valid_from.get(), valid_to.get()); kdm.as_xml (output); if (verbose) { cout << "Generated KDM " << output << " for certificate.\n"; @@ -259,12 +260,12 @@ int main (int argc, char* argv[]) try { if (zip) { - write_kdm_zip_files (film, (*i)->screens(), dcp, valid_from.get(), valid_to.get(), output); + write_kdm_zip_files (film, (*i)->screens(), cpl, valid_from.get(), valid_to.get(), output); if (verbose) { cout << "Wrote ZIP files to " << output << "\n"; } } else { - write_kdm_files (film, (*i)->screens(), dcp, valid_from.get(), valid_to.get(), output); + write_kdm_files (film, (*i)->screens(), cpl, valid_from.get(), valid_to.get(), output); if (verbose) { cout << "Wrote KDM files to " << output << "\n"; } -- cgit v1.2.3