private void DrawFile(ICollection <FileMoveInfo> filesList, FileMoveInfo fileMoveInfo) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.BeginVertical(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("From:", GUILayout.Width(49)); fileMoveInfo.From = EditorGUILayout.TextField("", fileMoveInfo.From); EditorGUILayout.LabelField("To:", GUILayout.Width(35)); fileMoveInfo.To = EditorGUILayout.TextField("", fileMoveInfo.To); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); fileMoveInfo.PerformOnStage = (BuildStage)EditorGUILayout.EnumPopup("Perform on stage:", fileMoveInfo.PerformOnStage); if (fileMoveInfo.PerformOnStage == BuildStage.BeforeBuild) { fileMoveInfo.Revert = EditorGUILayout.Toggle("Revert", fileMoveInfo.Revert); } EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); if (GUILayout.Button("-", GUILayout.Width(30), GUILayout.Height(30))) { _frameAction += () => filesList.Remove(fileMoveInfo); } EditorGUILayout.EndHorizontal(); }
private static List <FileMoveResult> RecursiveMerge(this DirectoryInfo source, string newpath, ExistingFileBehaviour existingFileBehaviour = ExistingFileBehaviour.Error) { List <FileMoveInfo> MoveInfo = new List <FileMoveInfo>(); foreach (FileInfo fi in source.EnumerateFiles("*", SearchOption.AllDirectories)) { MoveInfo.Add(new FileMoveInfo(fi, source.FullName, newpath)); } if (existingFileBehaviour == ExistingFileBehaviour.Error) { FileMoveInfo firstExists = MoveInfo.FirstOrDefault(f => f.TargetExists); if (firstExists != null) { throw new FileAlreadyExistsException(firstExists.TargetPath); } } foreach (FileMoveInfo thisMoveInfo in MoveInfo) { DirectoryInfo parentDirectory = new FileInfo(thisMoveInfo.TargetPath).Directory; if (!parentDirectory.Exists) { parentDirectory.Create(); } thisMoveInfo.Source.MoveTo(thisMoveInfo.TargetPath, existingFileBehaviour); } List <DirectoryInfo> toRemove = source.EnumerateDirectories("*", SearchOption.AllDirectories).OrderByDescending(d => d.FullName.Length).ToList(); foreach (DirectoryInfo di in toRemove) { if (!di.EnumerateFileSystemInfos().Any()) { di.Delete(); } } if (!source.EnumerateFileSystemInfos().Any()) { source.Delete(); } return(MoveInfo.Select(m => m.Result).ToList()); }