X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Ftools%2Fdcpomatic_batch.cc;h=a2db604df15ebfae89d92fd66cac4730cfd450cd;hp=8bb36476d1b3a6d22d94eea4efcdb223644c9762;hb=18bb22e82336c76351eb0f8b57a0b5a1cffb2e5c;hpb=f3617efde1751ac9e55f692369dc4ba3c6350ca8 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)