summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2023-01-03 21:17:36 +0100
committerCarl Hetherington <cth@carlh.net>2023-01-04 10:25:10 +0100
commit271e642f03145fe1d98b1fde128d42ea3a3418c6 (patch)
tree7654cdb6a0ef956b5b2bfaa186a31c50a7b3cfcc
parent5fd2715af0b316d5ad0c3b08812f24af869f9fcc (diff)
Allow drag-and-drop of DKDMs onto the list in the KDM creator.
-rw-r--r--src/tools/dcpomatic_kdm.cc22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/tools/dcpomatic_kdm.cc b/src/tools/dcpomatic_kdm.cc
index 90e315aab..04b37b2c6 100644
--- a/src/tools/dcpomatic_kdm.cc
+++ b/src/tools/dcpomatic_kdm.cc
@@ -55,6 +55,7 @@
#include <dcp/exceptions.h>
#include <dcp/warnings.h>
LIBDCP_DISABLE_WARNINGS
+#include <wx/dnd.h>
#include <wx/filepicker.h>
#include <wx/preferences.h>
#include <wx/splash.h>
@@ -175,10 +176,31 @@ public:
right->Add(_dkdm_search, 0, wxTOP | wxBOTTOM, DCPOMATIC_SIZER_Y_GAP);
+ class DKDMDropTarget : public wxFileDropTarget
+ {
+ public:
+ DKDMDropTarget(DOMFrame* frame)
+ : _frame(frame)
+ {}
+
+ bool OnDropFiles(wxCoord, wxCoord, wxArrayString const& filenames) override
+ {
+ for (size_t i = 0; i < filenames.GetCount(); ++i) {
+ _frame->add_dkdm(boost::filesystem::path(wx_to_std(filenames[0])));
+ }
+
+ return true;
+ }
+
+ private:
+ DOMFrame* _frame;
+ };
+
auto dkdm_sizer = new wxBoxSizer (wxHORIZONTAL);
_dkdm = new wxTreeCtrl (
overall_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTR_HIDE_ROOT | wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT
);
+ _dkdm->SetDropTarget(new DKDMDropTarget(this));
dkdm_sizer->Add(_dkdm, 1, wxEXPAND | wxBOTTOM, DCPOMATIC_SIZER_Y_GAP);
auto dkdm_buttons = new wxBoxSizer(wxVERTICAL);
_add_dkdm = new Button (overall_panel, _("Add..."));