macOS build fix.
[dcpomatic.git] / src / tools / dcpomatic_kdm.cc
index 9bb8e20a86ea1c2c208e583326a75cb46f85e6d5..775349d54abfdb64b6564edebced2054d230d149 100644 (file)
@@ -22,6 +22,7 @@
 #include "wx/about_dialog.h"
 #include "wx/dcpomatic_button.h"
 #include "wx/editable_list.h"
+#include "wx/id.h"
 #include "wx/invalid_certificate_period_dialog.h"
 #include "wx/file_dialog.h"
 #include "wx/file_picker_ctrl.h"
@@ -96,7 +97,7 @@ using namespace dcpomatic;
 
 
 enum {
-       ID_help_report_a_problem = 1,
+       ID_help_report_a_problem = DCPOMATIC_MAIN_MENU,
 };
 
 
@@ -246,6 +247,7 @@ public:
                _export_dkdm->Bind (wxEVT_BUTTON, bind (&DOMFrame::export_dkdm_clicked, this));
                _dkdm_search->Bind(wxEVT_TEXT, boost::bind(&DOMFrame::dkdm_search_changed, this));
                _timing->TimingChanged.connect(boost::bind(&DOMFrame::setup_sensitivity, this));
+               _output->MethodChanged.connect(boost::bind(&DOMFrame::setup_sensitivity, this));
 
                setup_sensitivity ();
 
@@ -380,12 +382,12 @@ private:
 
                        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()
                                        );
@@ -478,7 +480,7 @@ private:
                _dkdm->GetSelections (sel);
                auto group = dynamic_pointer_cast<DKDMGroup>(selected_dkdm());
                auto dkdm = dynamic_pointer_cast<DKDM>(selected_dkdm());
-               _create->Enable(!_screens->screens().empty() && _timing->valid() && sel.GetCount() > 0 && dkdm);
+               _create->Enable(!_screens->screens().empty() && _timing->valid() && sel.GetCount() > 0 && dkdm && _output->method_selected());
                _remove_dkdm->Enable (sel.GetCount() > 0 && (!group || group->name() != "root"));
                _export_dkdm->Enable (sel.GetCount() > 0 && dkdm);
        }
@@ -486,6 +488,17 @@ private:
        void dkdm_selection_changed()
        {
                _selected_dkdm = selected_dkdm();
+               if (_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();
        }