Merge 1.0 in.
[dcpomatic.git] / src / tools / dcpomatic.cc
index 98501d3bb13d9e4f178a42d2defd02fe803e97ab..f61ef19e2408478e30a1174e00c6cf7d95ef6db4 100644 (file)
@@ -39,6 +39,7 @@
 #include "wx/properties_dialog.h"
 #include "wx/wx_ui_signaller.h"
 #include "wx/about_dialog.h"
+#include "wx/kdm_dialog.h"
 #include "lib/film.h"
 #include "lib/config.h"
 #include "lib/util.h"
@@ -47,6 +48,7 @@
 #include "lib/log.h"
 #include "lib/job_manager.h"
 #include "lib/transcode_job.h"
+#include "lib/exceptions.h"
 
 using std::cout;
 using std::string;
@@ -167,6 +169,7 @@ enum {
        ID_file_save,
        ID_file_properties,
        ID_jobs_make_dcp,
+       ID_jobs_make_kdms,
        ID_jobs_send_dcp_to_tms,
        ID_jobs_show_dcp,
 };
@@ -201,6 +204,7 @@ 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);
 
@@ -236,6 +240,7 @@ public:
                Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::file_exit, this),            wxID_EXIT);
                Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::edit_preferences, this),     wxID_PREFERENCES);
                Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::jobs_make_dcp, this),        ID_jobs_make_dcp);
+               Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::jobs_make_kdms, this),       ID_jobs_make_kdms);
                Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::jobs_send_dcp_to_tms, this), ID_jobs_send_dcp_to_tms);
                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);
@@ -283,7 +288,7 @@ private:
                        return;
                }
 
-               bool const have_dcp = film && film->have_dcp();
+               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);
        }
@@ -407,6 +412,29 @@ private:
        {
                JobWrapper::make_dcp (this, film);
        }
+
+       void jobs_make_kdms ()
+       {
+               if (!film) {
+                       return;
+               }
+               
+               KDMDialog* d = new KDMDialog (this);
+               if (d->ShowModal () == wxID_OK) {
+                       try {
+                               film->make_kdms (
+                                       d->screens (),
+                                       d->from (),
+                                       d->until (),
+                                       d->directory ()
+                                       );
+                       } catch (KDMError& e) {
+                               error_dialog (this, e.what ());
+                       }
+               }
+               
+               d->Destroy ();
+       }
        
        void jobs_send_dcp_to_tms ()
        {