From 18bb22e82336c76351eb0f8b57a0b5a1cffb2e5c Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sun, 25 Dec 2022 22:46:07 +0100 Subject: [PATCH] Support drag and drop of film directories onto the batch converter (#340). --- src/tools/dcpomatic_batch.cc | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/tools/dcpomatic_batch.cc b/src/tools/dcpomatic_batch.cc index 8bb36476d..a2db604df 100644 --- a/src/tools/dcpomatic_batch.cc +++ b/src/tools/dcpomatic_batch.cc @@ -40,6 +40,7 @@ LIBDCP_DISABLE_WARNINGS #include #include +#include #include #include #include @@ -115,6 +116,31 @@ public: PAUSE }; + class DCPDropTarget : public wxFileDropTarget + { + public: + DCPDropTarget(DOMFrame* owner) + : _frame(owner) + {} + + bool OnDropFiles(wxCoord, wxCoord, wxArrayString const& filenames) override + { + if (filenames.GetCount() == 1) { + /* Try to load a directory */ + auto path = boost::filesystem::path(wx_to_std(filenames[0])); + if (boost::filesystem::is_directory(path)) { + _frame->start_job(wx_to_std(filenames[0])); + return true; + } + } + + return false; + } + + private: + DOMFrame* _frame; + }; + explicit DOMFrame (wxString const & title) : wxFrame (nullptr, -1, title) , _sizer (new wxBoxSizer(wxVERTICAL)) @@ -156,6 +182,8 @@ public: Bind (wxEVT_CLOSE_WINDOW, boost::bind(&DOMFrame::close, this, _1)); Bind (wxEVT_SIZE, boost::bind(&DOMFrame::sized, this, _1)); + + SetDropTarget(new DCPDropTarget(this)); } void tool_clicked(wxCommandEvent& ev) -- 2.30.2