summaryrefslogtreecommitdiff
path: root/src/tools
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-10-16 22:52:55 +0100
committerCarl Hetherington <cth@carlh.net>2013-10-16 22:52:55 +0100
commite45fe284b7c334d64c2fe105c0564c5015d3747f (patch)
treef98907d190b9d79376f7dc7a601e22c13c42b614 /src/tools
parent4ed8eafd541c2c5867795db56c440e444cc0aeff (diff)
Allow specification of DCP to build KDMs for (#235).
Diffstat (limited to 'src/tools')
-rw-r--r--src/tools/dcpomatic.cc30
-rw-r--r--src/tools/dcpomatic_kdm.cc16
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";
}