Ejemplo n.º 1
0
 static void OnFileRenaming(FileRenamingEventArgs e)
 {
     if (FileRenaming != null)
     {
         FileRenaming(null, e);
     }
 }
Ejemplo n.º 2
0
 /// <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();
     }
 }
Ejemplo n.º 3
0
        /// <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);
            }
        }
Ejemplo n.º 5
0
		static void OnFileCopying(FileRenamingEventArgs e) {
			if (FileCopying != null) {
				FileCopying(null, e);
			}
		}
Ejemplo n.º 6
0
		/// <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;
		}
Ejemplo n.º 7
0
		/// <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();
			}
		}