summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2019-03-28 00:32:20 +0000
committerCarl Hetherington <cth@carlh.net>2019-05-10 23:43:42 +0100
commiteb2ea2746ac25ede54a04b46b26e1ebc088357b7 (patch)
treea9268c32cc9109868636cf6d636200b98740bf08
parent6bfda50f36b35a6635e9da7a25f84319ca29d92f (diff)
Add export button for DKDMs (part of #1510).
-rw-r--r--src/tools/dcpomatic_kdm.cc27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/tools/dcpomatic_kdm.cc b/src/tools/dcpomatic_kdm.cc
index 2b0d25836..1e6e9052e 100644
--- a/src/tools/dcpomatic_kdm.cc
+++ b/src/tools/dcpomatic_kdm.cc
@@ -160,6 +160,8 @@ public:
dkdm_buttons->Add (_add_dkdm_folder, 0, wxALL | wxEXPAND, DCPOMATIC_BUTTON_STACK_GAP);
_remove_dkdm = new Button (overall_panel, _("Remove"));
dkdm_buttons->Add (_remove_dkdm, 0, wxALL | wxEXPAND, DCPOMATIC_BUTTON_STACK_GAP);
+ _export_dkdm = new Button (overall_panel, _("Export..."));
+ dkdm_buttons->Add (_export_dkdm, 0, wxALL | wxEXPAND, DCPOMATIC_BUTTON_STACK_GAP);
dkdm_sizer->Add (dkdm_buttons, 0, wxEXPAND | wxALL, DCPOMATIC_SIZER_GAP);
right->Add (dkdm_sizer, 1, wxEXPAND | wxALL, DCPOMATIC_SIZER_Y_GAP);
@@ -189,6 +191,7 @@ public:
_add_dkdm->Bind (wxEVT_BUTTON, bind (&DOMFrame::add_dkdm_clicked, this));
_add_dkdm_folder->Bind (wxEVT_BUTTON, bind (&DOMFrame::add_dkdm_folder_clicked, this));
_remove_dkdm->Bind (wxEVT_BUTTON, bind (&DOMFrame::remove_dkdm_clicked, this));
+ _export_dkdm->Bind (wxEVT_BUTTON, bind (&DOMFrame::export_dkdm_clicked, this));
setup_sensitivity ();
}
@@ -538,6 +541,29 @@ private:
Config::instance()->changed ();
}
+ void export_dkdm_clicked ()
+ {
+ shared_ptr<DKDMBase> removed = selected_dkdm ();
+ if (!removed) {
+ return;
+ }
+
+ shared_ptr<DKDM> dkdm = dynamic_pointer_cast<DKDM>(removed);
+ if (!dkdm) {
+ return;
+ }
+
+ wxFileDialog* d = new wxFileDialog (
+ this, _("Select DKDM File"), wxEmptyString, wxEmptyString, wxT("XML files (*.xml)|*.xml"),
+ wxFD_SAVE | wxFD_OVERWRITE_PROMPT
+ );
+
+ if (d->ShowModal() == wxID_OK) {
+ dkdm->dkdm().as_xml(wx_to_std(d->GetPath()));
+ }
+ d->Destroy ();
+ }
+
wxPreferencesEditor* _config_dialog;
ScreensPanel* _screens;
KDMTimingPanel* _timing;
@@ -547,6 +573,7 @@ private:
wxButton* _add_dkdm;
wxButton* _add_dkdm_folder;
wxButton* _remove_dkdm;
+ wxButton* _export_dkdm;
wxButton* _create;
KDMOutputPanel* _output;
JobViewDialog* _job_view;