summaryrefslogtreecommitdiff
path: root/src/wx/kdm_advanced_dialog.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2019-08-11 22:56:59 +0100
committerCarl Hetherington <cth@carlh.net>2019-08-11 22:56:59 +0100
commit910ea473219f2e7c672ad437d458316deca67025 (patch)
tree1af0895962ad3e122858c42d9b7df54e2d0a9bdd /src/wx/kdm_advanced_dialog.cc
parentbd83f1b0e1d8e7aae0af51376dbbb88d5e3f69d0 (diff)
Allow specification of audio forensic marking (in KDMs) for some channels only. Default to enabling forensic marking for video and audio (up to and including channel 12). Fixes #1498.
Diffstat (limited to 'src/wx/kdm_advanced_dialog.cc')
-rw-r--r--src/wx/kdm_advanced_dialog.cc48
1 files changed, 46 insertions, 2 deletions
diff --git a/src/wx/kdm_advanced_dialog.cc b/src/wx/kdm_advanced_dialog.cc
index 2027c0639..f5ed88b41 100644
--- a/src/wx/kdm_advanced_dialog.cc
+++ b/src/wx/kdm_advanced_dialog.cc
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2018 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2018-2019 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
@@ -20,8 +20,12 @@
#include "kdm_advanced_dialog.h"
#include "check_box.h"
+#include "wx_util.h"
+#include <wx/spinctrl.h>
-KDMAdvancedDialog::KDMAdvancedDialog (wxWindow* parent, bool forensic_mark_video, bool forensic_mark_audio)
+using boost::optional;
+
+KDMAdvancedDialog::KDMAdvancedDialog (wxWindow* parent, bool forensic_mark_video, bool forensic_mark_audio, optional<int> forensic_mark_audio_up_to)
: TableDialog (parent, _("Advanced KDM options"), 2, 1, false)
{
_forensic_mark_video = new CheckBox (this, _("Forensically mark video"));
@@ -33,7 +37,29 @@ KDMAdvancedDialog::KDMAdvancedDialog (wxWindow* parent, bool forensic_mark_video
add (_forensic_mark_audio);
add_spacer ();
+ _forensic_mark_all_audio = new wxRadioButton (this, wxID_ANY, _("Mark all audio channels"));
+ _table->Add (_forensic_mark_all_audio, 1, wxEXPAND | wxLEFT, DCPOMATIC_SIZER_GAP);
+ add_spacer ();
+ wxBoxSizer* hbox = new wxBoxSizer (wxHORIZONTAL);
+ _forensic_mark_some_audio = new wxRadioButton (this, wxID_ANY, _("Mark audio channels up to (and including)"));
+ hbox->Add (_forensic_mark_some_audio, 1, wxEXPAND | wxRIGHT, DCPOMATIC_SIZER_X_GAP);
+ _forensic_mark_audio_up_to = new wxSpinCtrl (this, wxID_ANY);
+ hbox->Add (_forensic_mark_audio_up_to, 0, wxRIGHT, DCPOMATIC_SIZER_X_GAP);
+ _table->Add (hbox, 0, wxLEFT, DCPOMATIC_SIZER_GAP);
+ add_spacer ();
+
+ if (forensic_mark_audio_up_to) {
+ _forensic_mark_audio_up_to->SetValue (*forensic_mark_audio_up_to);
+ _forensic_mark_some_audio->SetValue (true);
+ }
+
layout ();
+ setup_sensitivity ();
+
+ _forensic_mark_audio_up_to->SetRange (1, 15);
+ _forensic_mark_audio->Bind (wxEVT_CHECKBOX, boost::bind(&KDMAdvancedDialog::setup_sensitivity, this));
+ _forensic_mark_all_audio->Bind (wxEVT_RADIOBUTTON, boost::bind(&KDMAdvancedDialog::setup_sensitivity, this));
+ _forensic_mark_some_audio->Bind (wxEVT_RADIOBUTTON, boost::bind(&KDMAdvancedDialog::setup_sensitivity, this));
}
bool
@@ -47,3 +73,21 @@ KDMAdvancedDialog::forensic_mark_audio () const
{
return _forensic_mark_audio->GetValue ();
}
+
+optional<int>
+KDMAdvancedDialog::forensic_mark_audio_up_to () const
+{
+ if (!_forensic_mark_some_audio->GetValue()) {
+ return optional<int>();
+ }
+
+ return _forensic_mark_audio_up_to->GetValue();
+}
+
+void
+KDMAdvancedDialog::setup_sensitivity ()
+{
+ _forensic_mark_all_audio->Enable (_forensic_mark_audio->GetValue());
+ _forensic_mark_some_audio->Enable (_forensic_mark_audio->GetValue());
+ _forensic_mark_audio_up_to->Enable (_forensic_mark_audio->GetValue() && _forensic_mark_some_audio->GetValue());
+}