vector<KDMCertificatePeriod> period_checks;
- std::function<dcp::DecryptedKDM (dcp::LocalTime, dcp::LocalTime)> make_kdm = [decrypted, title](dcp::LocalTime begin, dcp::LocalTime end) {
+ std::function<dcp::DecryptedKDM (dcp::LocalTime, dcp::LocalTime)> make_kdm = [this, decrypted, title](dcp::LocalTime begin, dcp::LocalTime end) {
/* Make an empty KDM */
dcp::DecryptedKDM kdm (
begin,
end,
- decrypted.annotation_text().get_value_or(""),
+ _output->annotation_text(),
title,
dcp::LocalTime().as_string()
);
void dkdm_selection_changed()
{
- _selected_dkdm = selected_dkdm();
+ if (_selected_dkdm = selected_dkdm()) {
+ auto dkdm = std::dynamic_pointer_cast<DKDM>(_selected_dkdm);
+ if (dkdm) {
+ try {
+ dcp::DecryptedKDM decrypted(dkdm->dkdm(), Config::instance()->decryption_chain()->key().get());
+ if (decrypted.annotation_text()) {
+ _output->set_annotation_text(*decrypted.annotation_text());
+ }
+ } catch (...) {}
+ }
+ }
setup_sensitivity();
}
#include "lib/kdm_util.h"
#include "lib/screen.h"
#include <libcxml/cxml.h>
+#include <dcp/cpl.h>
#include <dcp/exceptions.h>
#include <dcp/warnings.h>
LIBDCP_DISABLE_WARNINGS
_screens->ScreensChanged.connect (boost::bind (&KDMDialog::setup_sensitivity, this));
_timing->TimingChanged.connect (boost::bind (&KDMDialog::setup_sensitivity, this));
_make->Bind (wxEVT_BUTTON, boost::bind (&KDMDialog::make_clicked, this));
- _cpl->Changed.connect(boost::bind(&KDMDialog::setup_sensitivity, this));
+ _cpl->Changed.connect(boost::bind(&KDMDialog::cpl_changed, this));
+ cpl_changed();
setup_sensitivity ();
SetSizer (overall_sizer);
}
+void
+KDMDialog::cpl_changed()
+{
+ try {
+ dcp::CPL cpl(_cpl->cpl());
+ if (auto text = cpl.annotation_text()) {
+ _output->set_annotation_text(*text);
+ }
+ } catch (...) {}
+
+ setup_sensitivity();
+}
+
+
void
KDMDialog::setup_sensitivity ()
{
void setup_sensitivity ();
void make_clicked ();
bool confirm_overwrite (boost::filesystem::path path);
+ void cpl_changed();
std::weak_ptr<const Film> _film;
ScreensPanel* _screens;
type->Add (advanced, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, DCPOMATIC_SIZER_X_GAP);
table->Add (type, 1, wxTOP, DCPOMATIC_CHOICE_TOP_PAD);
+ add_label_to_sizer(table, this, _("Annotation text"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTER_VERTICAL);
+ _annotation_text = new wxTextCtrl(this, wxID_ANY);
+ table->Add(_annotation_text, 1, wxEXPAND);
+
add_label_to_sizer (table, this, _("Folder / ZIP name format"), true, 0, wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT);
_container_name_format = new NameFormatEditor (this, Config::instance()->kdm_container_name_format(), dcp::NameFormat::Map(), dcp::NameFormat::Map(), "");
table->Add (_container_name_format->panel(), 1, wxEXPAND);
return _write_to->GetValue() || _email->GetValue();
}
+
+void
+KDMOutputPanel::set_annotation_text(string text)
+{
+ checked_set(_annotation_text, std::move(text));
+}
+
+
+string
+KDMOutputPanel::annotation_text() const
+{
+ return wx_to_std(_annotation_text->GetValue());
+}
+
bool method_selected() const;
+ void set_annotation_text(std::string text);
+ std::string annotation_text() const;
+
boost::signals2::signal<void ()> MethodChanged;
private:
void add_email_addresses_clicked ();
KDMChoice* _type;
+ wxTextCtrl* _annotation_text;
NameFormatEditor* _container_name_format;
NameFormatEditor* _filename_format;
CheckBox* _write_to;