Merge master.
[dcpomatic.git] / src / tools / dcpomatic.cc
index f2aff9359a35412684f4262bbfe7afdd9c6aa110..23c1e500512a750f17468445a2cfcfd1cd78f7de 100644 (file)
@@ -30,6 +30,7 @@
 #include <wx/stdpaths.h>
 #include <wx/cmdline.h>
 #include <wx/preferences.h>
+#include <libdcp/exceptions.h>
 #include "wx/film_viewer.h"
 #include "wx/film_editor.h"
 #include "wx/job_manager_view.h"
@@ -74,7 +75,6 @@ using boost::dynamic_pointer_cast;
 static FilmEditor* film_editor = 0;
 static FilmViewer* film_viewer = 0;
 static shared_ptr<Film> film;
-static std::string log_level;
 static std::string film_to_load;
 static std::string film_to_create;
 static std::string content_to_add;
@@ -157,13 +157,12 @@ load_film (boost::filesystem::path file)
        for (list<string>::const_iterator i = notes.begin(); i != notes.end(); ++i) {
                error_dialog (0, std_to_wx (*i));
        }
-       film->log()->set_level (log_level);
 }
 
 #define ALWAYS                  0x0
 #define NEEDS_FILM              0x1
 #define NOT_DURING_DCP_CREATION 0x2
-#define NEEDS_DCP               0x4
+#define NEEDS_CPL               0x4
 
 map<wxMenuItem*, int> menu_items;
        
@@ -183,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<wxMenuItem*, int>::iterator j = menu_items.begin(); j != menu_items.end(); ++j) {
 
@@ -197,7 +196,7 @@ set_menu_sensitivity ()
                        enabled = false;
                }
 
-               if ((j->second & NEEDS_DCP) && !have_dcp) {
+               if ((j->second & NEEDS_CPL) && !have_cpl) {
                        enabled = false;
                }
                
@@ -249,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);
@@ -401,7 +400,6 @@ private:
                        maybe_save_then_delete_film ();
                        film.reset (new Film (d->get_path ()));
                        film->write_metadata ();
-                       film->log()->set_level (log_level);
                        film->set_name (boost::filesystem::path (d->get_path()).filename().generic_string());
                        set_film ();
                }
@@ -497,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<Job> (new SendKDMEmailJob (film, d->screens (), d->dcp (), d->from (), d->until ()))
+                                       shared_ptr<Job> (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 (...) {
@@ -609,7 +609,6 @@ private:
 };
 
 static const wxCmdLineEntryDesc command_line_description[] = {
-       { wxCMD_LINE_OPTION, "l", "log", "set log level (silent, verbose or timing)", wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL },
        { wxCMD_LINE_SWITCH, "n", "new", "create new film", wxCMD_LINE_VAL_NONE, wxCMD_LINE_PARAM_OPTIONAL },
        { wxCMD_LINE_OPTION, "c", "content", "add content file", wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL },
        { wxCMD_LINE_PARAM, 0, 0, "film to load or create", wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL },
@@ -671,7 +670,6 @@ class App : public wxApp
                if (!film_to_create.empty ()) {
                        film.reset (new Film (film_to_create));
                        film->write_metadata ();
-                       film->log()->set_level (log_level);
                        film->set_name (boost::filesystem::path (film_to_create).filename().generic_string ());
                }
 
@@ -729,11 +727,6 @@ class App : public wxApp
                        content_to_add = wx_to_std (content);
                }
 
-               wxString log;
-               if (parser.Found (wxT ("log"), &log)) {
-                       log_level = wx_to_std (log);
-               }
-
                return true;
        }