diff options
| author | Carl Hetherington <cth@carlh.net> | 2023-01-03 21:17:36 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2023-01-04 10:25:10 +0100 |
| commit | 271e642f03145fe1d98b1fde128d42ea3a3418c6 (patch) | |
| tree | 7654cdb6a0ef956b5b2bfaa186a31c50a7b3cfcc | |
| parent | 5fd2715af0b316d5ad0c3b08812f24af869f9fcc (diff) | |
Allow drag-and-drop of DKDMs onto the list in the KDM creator.
| -rw-r--r-- | src/tools/dcpomatic_kdm.cc | 22 |
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...")); |
