From: Carl Hetherington Date: Fri, 26 Aug 2016 10:19:34 +0000 (+0100) Subject: Confirm sending of KDM emails. X-Git-Tag: v2.9.18~8^2~2 X-Git-Url: https://git.carlh.net/gitweb/?a=commitdiff_plain;h=cb2546eaf5e2f109ca5309f3dc04e6c17b8037e5;p=dcpomatic.git Confirm sending of KDM emails. --- diff --git a/src/lib/config.cc b/src/lib/config.cc index 872900a73..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 ()); 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 _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/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 + + 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 . + +*/ + +#include "confirm_kdm_email_dialog.h" +#include "wx_util.h" +#include "lib/config.h" +#include "lib/cinema_kdms.h" +#include + +using std::list; +using std::string; + +ConfirmKDMEmailDialog::ConfirmKDMEmailDialog (wxWindow* parent, list 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 + + 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 . + +*/ + +#include +#include + +class ConfirmKDMEmailDialog : public wxDialog +{ +public: + ConfirmKDMEmailDialog (wxWindow* parent, std::list 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 #include #include @@ -148,15 +151,36 @@ KDMDialog::make_clicked () } if (_output->email ()) { - JobManager::instance()->add ( - shared_ptr (new SendKDMEmailJob ( - CinemaKDMs::collect (screen_kdms), - _output->name_format(), - name_values, - film->dcp_name(), - film->log() - )) - ); + + list const cinema_kdms = CinemaKDMs::collect (screen_kdms); + + bool ok = true; + + if (Config::instance()->confirm_kdm_email ()) { + list 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 (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