diff options
| author | Carl Hetherington <cth@carlh.net> | 2018-07-06 20:33:04 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2018-07-06 20:33:04 +0100 |
| commit | 6654f028571db33d1e203ff36f85619d03a9f9fb (patch) | |
| tree | e4cf16388a8515f699d02e726a178c9f1f64f1f0 /src | |
| parent | 9ec7cefdc6738fc3e03d9bea01a567e64ec03a87 (diff) | |
Add advanced KDM options button containing switches for forensic marking.
Diffstat (limited to 'src')
| -rw-r--r-- | src/tools/dcpomatic_kdm.cc | 3 | ||||
| -rw-r--r-- | src/wx/kdm_advanced_dialog.cc | 48 | ||||
| -rw-r--r-- | src/wx/kdm_advanced_dialog.h | 34 | ||||
| -rw-r--r-- | src/wx/kdm_dialog.cc | 3 | ||||
| -rw-r--r-- | src/wx/kdm_output_panel.cc | 23 | ||||
| -rw-r--r-- | src/wx/kdm_output_panel.h | 9 | ||||
| -rw-r--r-- | src/wx/wscript | 1 |
7 files changed, 117 insertions, 4 deletions
diff --git a/src/tools/dcpomatic_kdm.cc b/src/tools/dcpomatic_kdm.cc index 65326efb3..184319a5f 100644 --- a/src/tools/dcpomatic_kdm.cc +++ b/src/tools/dcpomatic_kdm.cc @@ -332,7 +332,8 @@ private: ScreenKDM ( i, kdm.encrypt ( - signer, i->recipient.get(), i->trusted_devices, _output->formulation(), true, 0 + signer, i->recipient.get(), i->trusted_devices, _output->formulation(), + !_output->forensic_mark_video(), _output->forensic_mark_audio() ? boost::optional<int>() : 0 ) ) ); diff --git a/src/wx/kdm_advanced_dialog.cc b/src/wx/kdm_advanced_dialog.cc new file mode 100644 index 000000000..9c35f506a --- /dev/null +++ b/src/wx/kdm_advanced_dialog.cc @@ -0,0 +1,48 @@ +/* + Copyright (C) 2018 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 "kdm_advanced_dialog.h" + +KDMAdvancedDialog::KDMAdvancedDialog (wxWindow* parent, bool forensic_mark_video, bool forensic_mark_audio) + : TableDialog (parent, _("Advanced KDM options"), 2, 1, false) +{ + _forensic_mark_video = new wxCheckBox (this, wxID_ANY, _("Forensically mark video")); + _forensic_mark_video->SetValue (forensic_mark_video); + add (_forensic_mark_video); + add_spacer (); + _forensic_mark_audio = new wxCheckBox (this, wxID_ANY, _("Forensically mark audio")); + _forensic_mark_audio->SetValue (forensic_mark_audio); + add (_forensic_mark_audio); + add_spacer (); + + layout (); +} + +bool +KDMAdvancedDialog::forensic_mark_video () const +{ + return _forensic_mark_video->GetValue (); +} + +bool +KDMAdvancedDialog::forensic_mark_audio () const +{ + return _forensic_mark_audio->GetValue (); +} diff --git a/src/wx/kdm_advanced_dialog.h b/src/wx/kdm_advanced_dialog.h new file mode 100644 index 000000000..590c16137 --- /dev/null +++ b/src/wx/kdm_advanced_dialog.h @@ -0,0 +1,34 @@ +/* + Copyright (C) 2018 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 "table_dialog.h" + +class KDMAdvancedDialog : public TableDialog +{ +public: + KDMAdvancedDialog (wxWindow* parent, bool forensic_mark_video, bool forensic_mark_audio); + + bool forensic_mark_video () const; + bool forensic_mark_audio () const; + +private: + wxCheckBox* _forensic_mark_video; + wxCheckBox* _forensic_mark_audio; +}; diff --git a/src/wx/kdm_dialog.cc b/src/wx/kdm_dialog.cc index 64987a121..be7e25065 100644 --- a/src/wx/kdm_dialog.cc +++ b/src/wx/kdm_dialog.cc @@ -140,7 +140,8 @@ KDMDialog::make_clicked () DCPOMATIC_ASSERT (film); list<ScreenKDM> screen_kdms = film->make_kdms ( - _screens->screens(), _cpl->cpl(), _timing->from(), _timing->until(), _output->formulation(), true, 0 + _screens->screens(), _cpl->cpl(), _timing->from(), _timing->until(), _output->formulation(), + !_output->forensic_mark_video(), _output->forensic_mark_audio() ? boost::optional<int>() : 0 ); pair<shared_ptr<Job>, int> result = _output->make (screen_kdms, film->name(), _timing, bind (&KDMDialog::confirm_overwrite, this, _1), film->log()); diff --git a/src/wx/kdm_output_panel.cc b/src/wx/kdm_output_panel.cc index 6d741cf5e..07bbce2d2 100644 --- a/src/wx/kdm_output_panel.cc +++ b/src/wx/kdm_output_panel.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2015-2017 Carl Hetherington <cth@carlh.net> + Copyright (C) 2015-2018 Carl Hetherington <cth@carlh.net> This file is part of DCP-o-matic. @@ -26,6 +26,7 @@ #include "kdm_timing_panel.h" #include "confirm_kdm_email_dialog.h" #include "wx_util.h" +#include "kdm_advanced_dialog.h" #include "name_format_editor.h" #include <dcp/exceptions.h> #include <dcp/types.h> @@ -46,10 +47,14 @@ using boost::function; KDMOutputPanel::KDMOutputPanel (wxWindow* parent, bool interop) : wxPanel (parent, wxID_ANY) + , _forensic_mark_video (false) + , _forensic_mark_audio (false) { wxFlexGridSizer* table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, 0); add_label_to_sizer (table, this, _("KDM type"), true); + + wxBoxSizer* type = new wxBoxSizer (wxHORIZONTAL); _type = new wxChoice (this, wxID_ANY); _type->Append ("Modified Transitional 1", ((void *) dcp::MODIFIED_TRANSITIONAL_1)); _type->Append ("Multiple Modified Transitional 1", ((void *) dcp::MULTIPLE_MODIFIED_TRANSITIONAL_1)); @@ -58,8 +63,11 @@ KDMOutputPanel::KDMOutputPanel (wxWindow* parent, bool interop) _type->Append ("DCI Any", ((void *) dcp::DCI_ANY)); _type->Append ("DCI Specific", ((void *) dcp::DCI_SPECIFIC)); } - table->Add (_type, 1, wxEXPAND); + type->Add (_type, 1, wxEXPAND); _type->SetSelection (0); + wxButton* advanced = new wxButton (this, wxID_ANY, _("Advanced...")); + type->Add (advanced, 0, wxALIGN_CENTER_VERTICAL); + table->Add (type, 1, wxEXPAND); add_label_to_sizer (table, this, _("Folder / ZIP name format"), true, 0, wxALIGN_TOP | wxTOP | wxLEFT | wxRIGHT); _container_name_format = new NameFormatEditor (this, Config::instance()->kdm_container_name_format(), dcp::NameFormat::Map(), dcp::NameFormat::Map(), ""); @@ -132,6 +140,7 @@ KDMOutputPanel::KDMOutputPanel (wxWindow* parent, bool interop) _write_flat->Bind (wxEVT_RADIOBUTTON, boost::bind (&KDMOutputPanel::kdm_write_type_changed, this)); _write_folder->Bind (wxEVT_RADIOBUTTON, boost::bind (&KDMOutputPanel::kdm_write_type_changed, this)); _write_zip->Bind (wxEVT_RADIOBUTTON, boost::bind (&KDMOutputPanel::kdm_write_type_changed, this)); + advanced->Bind (wxEVT_BUTTON, boost::bind (&KDMOutputPanel::advanced_clicked, this)); SetSizer (table); } @@ -147,6 +156,16 @@ KDMOutputPanel::setup_sensitivity () } void +KDMOutputPanel::advanced_clicked () +{ + KDMAdvancedDialog* d = new KDMAdvancedDialog (this, _forensic_mark_video, _forensic_mark_audio); + d->ShowModal (); + _forensic_mark_video = d->forensic_mark_video (); + _forensic_mark_audio = d->forensic_mark_audio (); + d->Destroy (); +} + +void KDMOutputPanel::kdm_write_type_changed () { if (_write_flat->GetValue()) { diff --git a/src/wx/kdm_output_panel.h b/src/wx/kdm_output_panel.h index b2f428252..ba947b714 100644 --- a/src/wx/kdm_output_panel.h +++ b/src/wx/kdm_output_panel.h @@ -41,6 +41,12 @@ public: boost::filesystem::path directory () const; dcp::Formulation formulation () const; + bool forensic_mark_video () const { + return _forensic_mark_video; + } + bool forensic_mark_audio () const { + return _forensic_mark_audio; + } std::pair<boost::shared_ptr<Job>, int> make ( std::list<ScreenKDM> screen_kdms, @@ -52,6 +58,7 @@ public: private: void kdm_write_type_changed (); + void advanced_clicked (); wxChoice* _type; NameFormatEditor* _container_name_format; @@ -66,4 +73,6 @@ private: wxRadioButton* _write_folder; wxRadioButton* _write_zip; wxCheckBox* _email; + bool _forensic_mark_video; + bool _forensic_mark_audio; }; diff --git a/src/wx/wscript b/src/wx/wscript index 35861db00..77076c23e 100644 --- a/src/wx/wscript +++ b/src/wx/wscript @@ -66,6 +66,7 @@ sources = """ job_view.cc job_view_dialog.cc job_manager_view.cc + kdm_advanced_dialog.cc kdm_cpl_panel.cc kdm_dialog.cc kdm_output_panel.cc |
