diff options
| author | Carl Hetherington <cth@carlh.net> | 2016-08-27 20:28:18 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2016-08-27 20:28:18 +0100 |
| commit | 65a73ce59aeb4b452f55a87c001acb3cf177e99f (patch) | |
| tree | 3421211f5573f877e14d3b090e762abf49629fc0 /src | |
| parent | c0d2b454ea1e8c9b047907343c902d72101ef6dd (diff) | |
| parent | 9ce33a007d305cec0ebb91dc4839d0d2a05837ab (diff) | |
Merge branch 'master' of ssh://git.carlh.net/home/carl/git/dcpomatic
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/config.cc | 7 | ||||
| -rw-r--r-- | src/lib/config.h | 9 | ||||
| -rw-r--r-- | src/lib/dcp_decoder.cc | 8 | ||||
| -rw-r--r-- | src/wx/about_dialog.cc | 1 | ||||
| -rw-r--r-- | src/wx/confirm_kdm_email_dialog.cc | 62 | ||||
| -rw-r--r-- | src/wx/confirm_kdm_email_dialog.h | 31 | ||||
| -rw-r--r-- | src/wx/kdm_dialog.cc | 42 | ||||
| -rw-r--r-- | src/wx/wscript | 1 |
8 files changed, 151 insertions, 10 deletions
diff --git a/src/lib/config.cc b/src/lib/config.cc index 1d9cce64e..a009edda8 100644 --- a/src/lib/config.cc +++ b/src/lib/config.cc @@ -111,6 +111,7 @@ Config::set_defaults () #endif _cinemas_file = path ("cinemas.xml"); _show_hints_before_make_dcp = true; + _confirm_kdm_email = true; _kdm_filename_format = dcp::NameFormat ("KDM %f %c %s"); _dcp_metadata_filename_format = dcp::NameFormat ("%t"); _dcp_asset_filename_format = dcp::NameFormat ("%t"); @@ -296,6 +297,7 @@ try _cinemas_file = f.optional_string_child("CinemasFile").get_value_or (path ("cinemas.xml").string ()); _show_hints_before_make_dcp = f.optional_bool_child("ShowHintsBeforeMakeDCP").get_value_or (true); + _confirm_kdm_email = f.optional_bool_child("ConfirmKDMEmail").get_value_or (true); _kdm_filename_format = dcp::NameFormat (f.optional_string_child("KDMFilenameFormat").get_value_or ("KDM %f %c %s")); _dcp_metadata_filename_format = dcp::NameFormat (f.optional_string_child("DCPMetadataFilenameFormat").get_value_or ("%t")); _dcp_asset_filename_format = dcp::NameFormat (f.optional_string_child("DCPAssetFilenameFormat").get_value_or ("%t")); @@ -456,6 +458,7 @@ Config::write_config_xml () const root->add_child("CinemasFile")->add_child_text (_cinemas_file.string()); root->add_child("ShowHintsBeforeMakeDCP")->add_child_text (_show_hints_before_make_dcp ? "1" : "0"); + root->add_child("ConfirmKDMEmail")->add_child_text (_confirm_kdm_email ? "1" : "0"); root->add_child("KDMFilenameFormat")->add_child_text (_kdm_filename_format.specification ()); root->add_child("DCPMetadataFilenameFormat")->add_child_text (_dcp_metadata_filename_format.specification ()); root->add_child("DCPAssetFilenameFormat")->add_child_text (_dcp_asset_filename_format.specification ()); @@ -599,6 +602,10 @@ Config::save_template (shared_ptr<const Film> film, string name) const list<string> Config::templates () const { + if (!boost::filesystem::exists (path ("templates"))) { + return list<string> (); + } + list<string> n; for (boost::filesystem::directory_iterator i (path("templates")); i != boost::filesystem::directory_iterator(); ++i) { n.push_back (i->path().filename().string()); diff --git a/src/lib/config.h b/src/lib/config.h index e18cd3312..a38fb129c 100644 --- a/src/lib/config.h +++ b/src/lib/config.h @@ -268,6 +268,10 @@ public: return _show_hints_before_make_dcp; } + bool confirm_kdm_email () const { + return _confirm_kdm_email; + } + dcp::NameFormat kdm_filename_format () const { return _kdm_filename_format; } @@ -487,6 +491,10 @@ public: maybe_set (_show_hints_before_make_dcp, s); } + void set_confirm_kdm_email (bool s) { + maybe_set (_confirm_kdm_email, s); + } + void set_kdm_filename_format (dcp::NameFormat n) { maybe_set (_kdm_filename_format, n); } @@ -617,6 +625,7 @@ private: std::vector<dcp::EncryptedKDM> _dkdms; boost::filesystem::path _cinemas_file; bool _show_hints_before_make_dcp; + bool _confirm_kdm_email; dcp::NameFormat _kdm_filename_format; dcp::NameFormat _dcp_metadata_filename_format; dcp::NameFormat _dcp_asset_filename_format; diff --git a/src/lib/dcp_decoder.cc b/src/lib/dcp_decoder.cc index 2e3ed374a..156fba101 100644 --- a/src/lib/dcp_decoder.cc +++ b/src/lib/dcp_decoder.cc @@ -73,7 +73,13 @@ DCPDecoder::DCPDecoder (shared_ptr<const DCPContent> c, shared_ptr<Log> log) } } - DCPOMATIC_ASSERT (cpl); + if (!cpl) { + /* No CPL found; probably an old file that doesn't specify it; + just use the first one. + */ + cpl = cpls().front (); + } + _reels = cpl->reels (); _reel = _reels.begin (); diff --git a/src/wx/about_dialog.cc b/src/wx/about_dialog.cc index 46231d242..e29844693 100644 --- a/src/wx/about_dialog.cc +++ b/src/wx/about_dialog.cc @@ -148,6 +148,7 @@ AboutDialog::AboutDialog (wxWindow* parent) supported_by.Add (wxT ("Nathan Carpenter")); supported_by.Add (wxT ("Matt Carter")); supported_by.Add (wxT ("Frank Cianciolo")); + supported_by.Add (wxT ("Central Cinema")); supported_by.Add (wxT ("Cinema Clarici")); supported_by.Add (wxT ("Adam Colt")); supported_by.Add (wxT ("Adam Cousins")); diff --git a/src/wx/confirm_kdm_email_dialog.cc b/src/wx/confirm_kdm_email_dialog.cc new file mode 100644 index 000000000..69ee7feec --- /dev/null +++ b/src/wx/confirm_kdm_email_dialog.cc @@ -0,0 +1,62 @@ +/* + Copyright (C) 2016 Carl Hetherington <cth@carlh.net> + + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + DCP-o-matic is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with DCP-o-matic. If not, see <http://www.gnu.org/licenses/>. + +*/ + +#include "confirm_kdm_email_dialog.h" +#include "wx_util.h" +#include "lib/config.h" +#include "lib/cinema_kdms.h" +#include <boost/foreach.hpp> + +using std::list; +using std::string; + +ConfirmKDMEmailDialog::ConfirmKDMEmailDialog (wxWindow* parent, list<string> emails) + : wxDialog (parent, wxID_ANY, _("Confirm KDM email")) +{ + wxBoxSizer* sizer = new wxBoxSizer (wxVERTICAL); + + wxString message = _("Are you sure you want to send emails to the following addresses?\n\n"); + BOOST_FOREACH (string i, emails) { + message += "\t" + std_to_wx (i) + "\n"; + } + + sizer->Add (new wxStaticText (this, wxID_ANY, message), 1, wxEXPAND | wxALL, DCPOMATIC_DIALOG_BORDER); + + wxCheckBox* shut_up = new wxCheckBox (this, wxID_ANY, _("Don't ask this again")); + sizer->Add (shut_up, 0, wxALL, DCPOMATIC_DIALOG_BORDER); + + shut_up->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, bind (&ConfirmKDMEmailDialog::shut_up, this, _1)); + + wxStdDialogButtonSizer* buttons = CreateStdDialogButtonSizer (0); + sizer->Add (CreateSeparatedSizer(buttons), wxSizerFlags().Expand().DoubleBorder()); + buttons->SetAffirmativeButton (new wxButton (this, wxID_OK, _("Send emails"))); + buttons->SetNegativeButton (new wxButton (this, wxID_CANCEL, _("Don't send emails"))); + buttons->Realize (); + + SetSizer (sizer); + sizer->Layout (); + sizer->SetSizeHints (this); +} + +void +ConfirmKDMEmailDialog::shut_up (wxCommandEvent& ev) +{ + Config::instance()->set_confirm_kdm_email (!ev.IsChecked ()); +} diff --git a/src/wx/confirm_kdm_email_dialog.h b/src/wx/confirm_kdm_email_dialog.h new file mode 100644 index 000000000..84182ad93 --- /dev/null +++ b/src/wx/confirm_kdm_email_dialog.h @@ -0,0 +1,31 @@ +/* + Copyright (C) 2016 Carl Hetherington <cth@carlh.net> + + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + DCP-o-matic is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with DCP-o-matic. If not, see <http://www.gnu.org/licenses/>. + +*/ + +#include <wx/wx.h> +#include <list> + +class ConfirmKDMEmailDialog : public wxDialog +{ +public: + ConfirmKDMEmailDialog (wxWindow* parent, std::list<std::string> addresses); + +private: + void shut_up (wxCommandEvent& ev); +}; diff --git a/src/wx/kdm_dialog.cc b/src/wx/kdm_dialog.cc index b5ebd1e96..40efc5411 100644 --- a/src/wx/kdm_dialog.cc +++ b/src/wx/kdm_dialog.cc @@ -24,12 +24,15 @@ #include "kdm_timing_panel.h" #include "kdm_output_panel.h" #include "kdm_cpl_panel.h" +#include "confirm_kdm_email_dialog.h" #include "lib/film.h" #include "lib/screen.h" #include "lib/screen_kdm.h" #include "lib/send_kdm_email_job.h" #include "lib/job_manager.h" #include "lib/cinema_kdms.h" +#include "lib/config.h" +#include "lib/cinema.h" #include <libcxml/cxml.h> #include <dcp/exceptions.h> #include <wx/treectrl.h> @@ -148,15 +151,36 @@ KDMDialog::make_clicked () } if (_output->email ()) { - JobManager::instance()->add ( - shared_ptr<Job> (new SendKDMEmailJob ( - CinemaKDMs::collect (screen_kdms), - _output->name_format(), - name_values, - film->dcp_name(), - film->log() - )) - ); + + list<CinemaKDMs> const cinema_kdms = CinemaKDMs::collect (screen_kdms); + + bool ok = true; + + if (Config::instance()->confirm_kdm_email ()) { + list<string> emails; + BOOST_FOREACH (CinemaKDMs i, cinema_kdms) { + BOOST_FOREACH (string j, i.cinema->emails) { + emails.push_back (j); + } + } + + ConfirmKDMEmailDialog* d = new ConfirmKDMEmailDialog (this, emails); + if (d->ShowModal() == wxID_CANCEL) { + ok = false; + } + } + + if (ok) { + JobManager::instance()->add ( + shared_ptr<Job> (new SendKDMEmailJob ( + cinema_kdms, + _output->name_format(), + name_values, + film->dcp_name(), + film->log() + )) + ); + } } } catch (dcp::NotEncryptedError& e) { error_dialog (this, _("CPL's content is not encrypted.")); diff --git a/src/wx/wscript b/src/wx/wscript index f89b60c40..e001c51b7 100644 --- a/src/wx/wscript +++ b/src/wx/wscript @@ -34,6 +34,7 @@ sources = """ cinema_dialog.cc colour_conversion_editor.cc config_dialog.cc + confirm_kdm_email_dialog.cc content_colour_conversion_dialog.cc content_menu.cc content_panel.cc |
