Use std::vector for add_files.
[dcpomatic.git] / src / wx / content_panel.cc
index 7789e7b786b4fc8366b3d10f32d24d21bf1406a9..68f6f1b9479686ff88460147cef27229d806a258 100644 (file)
@@ -441,9 +441,9 @@ ContentPanel::add_file_clicked ()
 
        wxArrayString paths;
        d->GetPaths (paths);
-       list<boost::filesystem::path> path_list;
+       vector<boost::filesystem::path> path_list;
        for (unsigned int i = 0; i < paths.GetCount(); ++i) {
-               path_list.push_back (wx_to_std (paths[i]));
+               path_list.push_back (wx_to_std(paths[i]));
        }
        add_files (path_list);
 
@@ -511,6 +511,14 @@ ContentPanel::add_dcp_clicked ()
 
        try {
                _film->examine_and_add_content (make_shared<DCPContent>(path));
+       } catch (ProjectFolderError &) {
+               error_dialog (
+                       _parent,
+                       _(
+                               "This looks like a DCP-o-matic project folder, which cannot be added to a different project.  "
+                               "Choose the DCP directory inside the DCP-o-matic project folder if that's what you want to import."
+                        )
+                       );
        } catch (exception& e) {
                error_dialog (_parent, e.what());
        }
@@ -780,9 +788,9 @@ ContentPanel::files_dropped (wxDropFilesEvent& event)
        }
 
        auto paths = event.GetFiles ();
-       list<boost::filesystem::path> path_list;
+       vector<boost::filesystem::path> path_list;
        for (int i = 0; i < event.GetNumberOfFiles(); i++) {
-               path_list.push_back (wx_to_std (paths[i]));
+               path_list.push_back (wx_to_std(paths[i]));
        }
 
        add_files (path_list);
@@ -790,14 +798,14 @@ ContentPanel::files_dropped (wxDropFilesEvent& event)
 
 
 void
-ContentPanel::add_files (list<boost::filesystem::path> paths)
+ContentPanel::add_files (vector<boost::filesystem::path> paths)
 {
        /* It has been reported that the paths returned from e.g. wxFileDialog are not always sorted;
           I can't reproduce that, but sort them anyway.  Don't use ImageFilenameSorter as a normal
           alphabetical sort is expected here.
        */
 
-       paths.sort (CaseInsensitiveSorter ());
+       std::sort (paths.begin(), paths.end(), CaseInsensitiveSorter());
 
        /* XXX: check for lots of files here and do something */