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); }
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); }
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))); }