+
+ 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->load_dcp(wx_to_std(filenames[0]));
+ return true;
+ }
+ }
+
+ if (filenames.GetCount() >= 1) {
+ /* Try to load the parent if we drop some files, one if which is an asset map */
+ for (size_t i = 0; i < filenames.GetCount(); ++i) {
+ auto path = boost::filesystem::path(wx_to_std(filenames[i]));
+ if (path.filename() == "ASSETMAP" || path.filename() == "ASSETMAP.xml") {
+ _frame->load_dcp(path.parent_path());
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ private:
+ DOMFrame* _frame;
+ };
+
+