diff options
| author | Carl Hetherington <cth@carlh.net> | 2013-10-16 22:52:55 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2013-10-16 22:52:55 +0100 |
| commit | e45fe284b7c334d64c2fe105c0564c5015d3747f (patch) | |
| tree | f98907d190b9d79376f7dc7a601e22c13c42b614 /src/tools | |
| parent | 4ed8eafd541c2c5867795db56c440e444cc0aeff (diff) | |
Allow specification of DCP to build KDMs for (#235).
Diffstat (limited to 'src/tools')
| -rw-r--r-- | src/tools/dcpomatic.cc | 30 | ||||
| -rw-r--r-- | src/tools/dcpomatic_kdm.cc | 16 |
2 files changed, 25 insertions, 21 deletions
diff --git a/src/tools/dcpomatic.cc b/src/tools/dcpomatic.cc index d4faac815..26b4898de 100644 --- a/src/tools/dcpomatic.cc +++ b/src/tools/dcpomatic.cc @@ -129,6 +129,7 @@ maybe_save_then_delete_film () #define ALWAYS 0x0 #define NEEDS_FILM 0x1 #define NOT_DURING_DCP_CREATION 0x2 +#define NEEDS_DCP 0x4 map<wxMenuItem*, int> menu_items; @@ -148,6 +149,7 @@ set_menu_sensitivity () ++i; } bool const dcp_creation = (i != jobs.end ()); + bool const have_dcp = !film->dcps().empty (); for (map<wxMenuItem*, int>::iterator j = menu_items.begin(); j != menu_items.end(); ++j) { @@ -160,6 +162,10 @@ set_menu_sensitivity () if ((j->second & NOT_DURING_DCP_CREATION) && dcp_creation) { enabled = false; } + + if ((j->second & NEEDS_DCP) && !have_dcp) { + enabled = false; + } j->first->Enable (enabled); } @@ -206,9 +212,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); - add_item (jobs_menu, _("&Send DCP to TMS"), ID_jobs_send_dcp_to_tms, NEEDS_FILM | NOT_DURING_DCP_CREATION); - add_item (jobs_menu, _("S&how DCP"), ID_jobs_show_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); wxMenu* help = new wxMenu; #ifdef __WXOSX__ @@ -247,7 +253,6 @@ public: Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::jobs_show_dcp, this), ID_jobs_show_dcp); Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::help_about, this), wxID_ABOUT); - Bind (wxEVT_MENU_OPEN, boost::bind (&Frame::menu_opened, this, _1)); Bind (wxEVT_CLOSE_WINDOW, boost::bind (&Frame::close, this, _1)); /* Use a panel as the only child of the Frame so that we avoid @@ -284,17 +289,6 @@ public: private: - void menu_opened (wxMenuEvent& ev) - { - if (ev.GetMenu() != jobs_menu) { - return; - } - - bool const have_dcp = false;//film && film->have_dcp(); - jobs_menu->Enable (ID_jobs_send_dcp_to_tms, have_dcp); - jobs_menu->Enable (ID_jobs_show_dcp, have_dcp); - } - void set_film () { film_viewer->set_film (film); @@ -421,7 +415,7 @@ private: return; } - KDMDialog* d = new KDMDialog (this); + KDMDialog* d = new KDMDialog (this, film); if (d->ShowModal () != wxID_OK) { d->Destroy (); return; @@ -429,9 +423,9 @@ private: try { if (d->write_to ()) { - write_kdm_files (film, d->screens (), d->from (), d->until (), d->directory ()); + write_kdm_files (film, d->screens (), d->dcp (), d->from (), d->until (), d->directory ()); } else { - email_kdms (film, d->screens (), d->from (), d->until ()); + email_kdms (film, d->screens (), d->dcp (), d->from (), d->until ()); } } catch (KDMError& e) { error_dialog (this, e.what ()); diff --git a/src/tools/dcpomatic_kdm.cc b/src/tools/dcpomatic_kdm.cc index d3891c67c..7027b7378 100644 --- a/src/tools/dcpomatic_kdm.cc +++ b/src/tools/dcpomatic_kdm.cc @@ -218,6 +218,16 @@ int main (int argc, char* argv[]) cout << "Making KDMs valid from " << valid_from.get() << " to " << valid_to.get() << "\n"; } + /* XXX: allow specification of this */ + list<boost::filesystem::path> 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"); + } + + boost::filesystem::path dcp = dcps.front (); + if (cinema_name.empty ()) { if (output.empty ()) { @@ -225,7 +235,7 @@ int main (int argc, char* argv[]) } shared_ptr<libdcp::Certificate> certificate (new libdcp::Certificate (boost::filesystem::path (certificate_file))); - libdcp::KDM kdm = film->make_kdm (certificate, valid_from.get(), valid_to.get()); + libdcp::KDM kdm = film->make_kdm (certificate, dcp, valid_from.get(), valid_to.get()); kdm.as_xml (output); if (verbose) { cout << "Generated KDM " << output << " for certificate.\n"; @@ -249,12 +259,12 @@ int main (int argc, char* argv[]) try { if (zip) { - write_kdm_zip_files (film, (*i)->screens(), valid_from.get(), valid_to.get(), output); + write_kdm_zip_files (film, (*i)->screens(), dcp, valid_from.get(), valid_to.get(), output); if (verbose) { cout << "Wrote ZIP files to " << output << "\n"; } } else { - write_kdm_files (film, (*i)->screens(), valid_from.get(), valid_to.get(), output); + write_kdm_files (film, (*i)->screens(), dcp, valid_from.get(), valid_to.get(), output); if (verbose) { cout << "Wrote KDM files to " << output << "\n"; } |
