예제 #1
0
 private static bool RemoveFile(IFolderable file, IFolderableHost folderWrapper)
 {
     if (!folderWrapper.Files.Contains(file))
     {
         return(folderWrapper.Files.OfType <IFolderableHost>().Any(p => RemoveFile(file, p)));
     }
     folderWrapper.Files.Remove(file);
     return(true);
 }
예제 #2
0
        private static bool RemoveFolder(IFolderableHost parent, IFolderable folder)
        {
            if (!parent.Files.Contains(folder))
            {
                return(parent.Files.Cast <IFolderableHost>().Any(p => RemoveFolder(p, folder)));
            }
            parent.Files.Remove(folder);

            return(true);
        }
예제 #3
0
        private void QueueItems(IFolderableHost folderWrapper, string path, IProgress <ModelProgressUpdate> progress = null)
        {
            var enumerable   = folderWrapper.Files.OfType <IFile>().Where(wrapper => wrapper.Selected);
            var fileWrappers = enumerable as List <IFile> ?? enumerable.ToList();

            fileWrappers.ForEach(o =>
            {
                o.OutputPath  = path;
                o.ImageNumber = _totalImages++;
            });

            progress?.Report(new ModelProgressUpdate(_totalImages, _doneImages));

            Parallel.ForEach(fileWrappers, o => ProcessImage(o, progress));

            var enumerable1 = folderWrapper.Files.OfType <IFolderableHost>();
            var list        = enumerable1 as List <IFolderableHost> ?? enumerable1.ToList();

            list.ForEach(fold => QueueItems(fold, Path.Combine(path, fold.Name)));
        }