+class ContentDropTarget : public wxFileDropTarget
+{
+public:
+ ContentDropTarget(ContentPanel* owner)
+ : _panel(owner)
+ {}
+
+ bool OnDropFiles(wxCoord, wxCoord, wxArrayString const& filenames) override
+ {
+ vector<boost::filesystem::path> files;
+ vector<boost::filesystem::path> dcps;
+ vector<boost::filesystem::path> folders;
+ for (size_t i = 0; i < filenames.GetCount(); ++i) {
+ auto path = boost::filesystem::path(wx_to_std(filenames[i]));
+ if (boost::filesystem::is_regular_file(path)) {
+ files.push_back(path);
+ } else if (boost::filesystem::is_directory(path)) {
+ if (contains_assetmap(path)) {
+ dcps.push_back(path);
+ } else {
+ folders.push_back(path);
+ }
+ }
+ }
+
+ if (!filenames.empty()) {
+ _panel->add_files(files);
+ }
+
+ for (auto dcp: dcps) {
+ _panel->add_dcp(dcp);
+ }
+
+ for (auto dir: folders) {
+ _panel->add_folder(dir);
+ }
+
+ return true;
+ };
+
+private:
+ ContentPanel* _panel;
+};
+
+