static void OnFileRenaming(FileRenamingEventArgs e) { if (FileRenaming != null) { FileRenaming(null, e); } }
/// <summary> /// Renames or moves a file, raising the appropriate events. This method may show message boxes. /// </summary> public static bool RenameFile(string oldName, string newName, bool isDirectory) { if (FileUtility.IsEqualFileName(oldName, newName)) { return(false); } FileChangeWatcher.DisableAllChangeWatchers(); try { FileRenamingEventArgs eargs = new FileRenamingEventArgs(oldName, newName, isDirectory); OnFileRenaming(eargs); if (eargs.Cancel) { return(false); } if (!eargs.OperationAlreadyDone) { try { if (isDirectory && Directory.Exists(oldName)) { if (Directory.Exists(newName)) { MessageService.ShowMessage(StringParser.Parse("${res:Gui.ProjectBrowser.FileInUseError}")); return(false); } Directory.Move(oldName, newName); } else if (File.Exists(oldName)) { if (File.Exists(newName)) { MessageService.ShowMessage(StringParser.Parse("${res:Gui.ProjectBrowser.FileInUseError}")); return(false); } File.Move(oldName, newName); } } catch (Exception e) { if (isDirectory) { MessageService.ShowHandledException(e, "Can't rename directory " + oldName); } else { MessageService.ShowHandledException(e, "Can't rename file " + oldName); } return(false); } } OnFileRenamed(new FileRenameEventArgs(oldName, newName, isDirectory)); return(true); } finally { FileChangeWatcher.EnableAllChangeWatchers(); } }
/// <summary> /// Copies a file, raising the appropriate events. This method may show message boxes. /// </summary> public static bool CopyFile(string oldName, string newName, bool isDirectory, bool overwrite) { if (FileUtility.IsEqualFileName(oldName, newName)) { return(false); } FileRenamingEventArgs eargs = new FileRenamingEventArgs(oldName, newName, isDirectory); OnFileCopying(eargs); if (eargs.Cancel) { return(false); } if (!eargs.OperationAlreadyDone) { try { if (isDirectory && Directory.Exists(oldName)) { if (!overwrite && Directory.Exists(newName)) { MessageService.ShowMessage(StringParser.Parse("${res:Gui.ProjectBrowser.FileInUseError}")); return(false); } FileUtility.DeepCopy(oldName, newName, overwrite); } else if (File.Exists(oldName)) { if (!overwrite && File.Exists(newName)) { MessageService.ShowMessage(StringParser.Parse("${res:Gui.ProjectBrowser.FileInUseError}")); return(false); } File.Copy(oldName, newName, overwrite); } } catch (Exception e) { if (isDirectory) { MessageService.ShowHandledException(e, "Can't copy directory " + oldName); } else { MessageService.ShowHandledException(e, "Can't copy file " + oldName); } return(false); } } OnFileCopied(new FileRenameEventArgs(oldName, newName, isDirectory)); return(true); }
private static void FileCopying(object sender, FileRenamingEventArgs e) { if (e.Cancel) return; if (!AddInOptions.AutomaticallyRenameFiles) return; var fullSource = Path.GetFullPath(e.SourceFile); if (!LocalHelper.CanBeVersionControlledFile(fullSource)) return; var fullTarget = Path.GetFullPath(e.TargetFile); if (!LocalHelper.CanBeVersionControlledFile(fullTarget)) return; try { using (var client = new SvnClientWrapper()) { SvnMessageView.HandleNotifications(client); var status = client.SingleStatus(fullSource); switch (status.TextStatus) { case StatusKind.Unversioned: case StatusKind.None: return; // nothing to do case StatusKind.Normal: case StatusKind.Modified: case StatusKind.Replaced: case StatusKind.Added: // copy without problem break; default: MessageService.ShowErrorFormatted("${res:AddIns.Subversion.CannotCopyError}", status.TextStatus.ToString()); e.Cancel = true; return; } e.OperationAlreadyDone = true; client.Copy(fullSource, fullTarget); } } catch (Exception ex) { MessageService.ShowError("File renamed exception: " + ex); } }
static void OnFileCopying(FileRenamingEventArgs e) { if (FileCopying != null) { FileCopying(null, e); } }
/// <summary> /// Copies a file, raising the appropriate events. This method may show message boxes. /// </summary> public static bool CopyFile(string oldName, string newName, bool isDirectory, bool overwrite) { if (FileUtility.IsEqualFileName(oldName, newName)) return false; FileRenamingEventArgs eargs = new FileRenamingEventArgs(oldName, newName, isDirectory); OnFileCopying(eargs); if (eargs.Cancel) return false; if (!eargs.OperationAlreadyDone) { try { if (isDirectory && Directory.Exists(oldName)) { if (!overwrite && Directory.Exists(newName)) { MessageService.ShowMessage(StringParser.Parse("${res:Gui.ProjectBrowser.FileInUseError}")); return false; } FileUtility.DeepCopy(oldName, newName, overwrite); } else if (File.Exists(oldName)) { if (!overwrite && File.Exists(newName)) { MessageService.ShowMessage(StringParser.Parse("${res:Gui.ProjectBrowser.FileInUseError}")); return false; } File.Copy(oldName, newName, overwrite); } } catch (Exception e) { if (isDirectory) { MessageService.ShowHandledException(e, "Can't copy directory " + oldName); } else { MessageService.ShowHandledException(e, "Can't copy file " + oldName); } return false; } } OnFileCopied(new FileRenameEventArgs(oldName, newName, isDirectory)); return true; }
/// <summary> /// Renames or moves a file, raising the appropriate events. This method may show message boxes. /// </summary> public static bool RenameFile(string oldName, string newName, bool isDirectory) { if (FileUtility.IsEqualFileName(oldName, newName)) return false; FileChangeWatcher.DisableAllChangeWatchers(); try { FileRenamingEventArgs eargs = new FileRenamingEventArgs(oldName, newName, isDirectory); OnFileRenaming(eargs); if (eargs.Cancel) return false; if (!eargs.OperationAlreadyDone) { try { if (isDirectory && Directory.Exists(oldName)) { if (Directory.Exists(newName)) { MessageService.ShowMessage(StringParser.Parse("${res:Gui.ProjectBrowser.FileInUseError}")); return false; } Directory.Move(oldName, newName); } else if (File.Exists(oldName)) { if (File.Exists(newName)) { MessageService.ShowMessage(StringParser.Parse("${res:Gui.ProjectBrowser.FileInUseError}")); return false; } File.Move(oldName, newName); } } catch (Exception e) { if (isDirectory) { MessageService.ShowHandledException(e, "Can't rename directory " + oldName); } else { MessageService.ShowHandledException(e, "Can't rename file " + oldName); } return false; } } OnFileRenamed(new FileRenameEventArgs(oldName, newName, isDirectory)); return true; } finally { FileChangeWatcher.EnableAllChangeWatchers(); } }