Browse Source

Fixed SD2-745 and SD2-871 (patch by John Simons)

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.0@1518 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
bd739ec808
  1. 17
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/BookmarkManager/BookmarkManager.cs
  2. 15
      src/Main/Base/Project/Src/Gui/Pads/FileScout.cs
  3. 5
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ProjectNode.cs
  4. 4
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionItemNode.cs
  5. 4
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionNode.cs
  6. 18
      src/Main/Base/Project/Src/Services/File/FileService.cs

17
src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/BookmarkManager/BookmarkManager.cs

@ -64,20 +64,25 @@ namespace ICSharpCode.TextEditor.Document @@ -64,20 +64,25 @@ namespace ICSharpCode.TextEditor.Document
/// </summary>
public void ToggleMarkAt(int lineNr)
{
Bookmark newMark;
if (factory != null)
newMark = factory.CreateBookmark(document, lineNr);
else
newMark = new Bookmark(document, lineNr);
Type newMarkType = newMark.GetType();
for (int i = 0; i < bookmark.Count; ++i) {
Bookmark mark = bookmark[i];
if (mark.LineNumber == lineNr && mark.CanToggle) {
if (mark.LineNumber == lineNr && mark.CanToggle && mark.GetType() == newMarkType) {
bookmark.RemoveAt(i);
OnRemoved(new BookmarkEventArgs(mark));
OnChanged(EventArgs.Empty);
return;
}
}
Bookmark newMark;
if (factory != null)
newMark = factory.CreateBookmark(document, lineNr);
else
newMark = new Bookmark(document, lineNr);
bookmark.Add(newMark);
OnAdded(new BookmarkEventArgs(newMark));
OnChanged(EventArgs.Empty);

15
src/Main/Base/Project/Src/Gui/Pads/FileScout.cs

@ -365,21 +365,18 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -365,21 +365,18 @@ namespace ICSharpCode.SharpDevelop.Gui
{
base.OnAfterLabelEdit(e);
if(e.Label == null) {
if (e.Label == null || !FileService.CheckFileName(e.Label)) {
e.CancelEdit = true;
return;
}
string filename = ((FileListItem)Items[e.Item]).FullName;
string newname = Path.GetDirectoryName(filename) + Path.DirectorySeparatorChar + e.Label;
string oldFileName = ((FileListItem)Items[e.Item]).FullName;
string newFileName = Path.Combine(Path.GetDirectoryName(oldFileName), e.Label);
try {
File.Move(filename, newname);
((FileListItem)Items[e.Item]).FullName = newname;
} catch(Exception ex) {
if (FileService.RenameFile(oldFileName, newFileName, false)) {
((FileListItem)Items[e.Item]).FullName = newFileName;
} else {
e.CancelEdit = true;
MessageService.ShowError(ex, "Rename failed");
}
}

5
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ProjectNode.cs

@ -147,13 +147,12 @@ namespace ICSharpCode.SharpDevelop.Project @@ -147,13 +147,12 @@ namespace ICSharpCode.SharpDevelop.Project
// }
// }
string newFileName = Path.Combine(project.Directory, newName + Path.GetExtension(project.FileName));
if (File.Exists(newFileName)) {
MessageService.ShowError("The file " + newFileName + " already exists.");
if (!FileService.RenameFile(project.FileName, newFileName, false)) {
return;
}
if (project.AssemblyName == project.Name)
project.AssemblyName = newName;
FileService.RenameFile(project.FileName, newFileName, false);
if (File.Exists(project.FileName + ".user"))
FileService.RenameFile(project.FileName + ".user", newFileName + ".user", false);
foreach (IProject p in ProjectService.OpenSolution.Projects) {

4
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionItemNode.cs

@ -128,7 +128,9 @@ namespace ICSharpCode.SharpDevelop.Project @@ -128,7 +128,9 @@ namespace ICSharpCode.SharpDevelop.Project
}
string newFileName = Path.Combine(Path.GetDirectoryName(this.FileName), newName);
FileService.RenameFile(this.FileName, newFileName, false);
if (!FileService.RenameFile(this.FileName, newFileName, false)) {
return;
}
solution.Save();
}
public override object AcceptVisitor(ProjectBrowserTreeNodeVisitor visitor, object data)

4
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionNode.cs

@ -60,11 +60,9 @@ namespace ICSharpCode.SharpDevelop.Project @@ -60,11 +60,9 @@ namespace ICSharpCode.SharpDevelop.Project
if (!FileService.CheckFileName(newName))
return;
string newFileName = Path.Combine(solution.Directory, newName + ".sln");
if (File.Exists(newFileName)) {
MessageService.ShowErrorFormatted("${res:Global.FileAlreadyExists}", newFileName);
if (!FileService.RenameFile(solution.FileName, newFileName, false)) {
return;
}
FileService.RenameFile(solution.FileName, newFileName, false);
solution.FileName = newFileName;
solution.Name = newName;
} finally {

18
src/Main/Base/Project/Src/Services/File/FileService.cs

@ -192,14 +192,20 @@ namespace ICSharpCode.Core @@ -192,14 +192,20 @@ namespace ICSharpCode.Core
return false;
if (!eargs.OperationAlreadyDone) {
try {
if (isDirectory) {
if (Directory.Exists(oldName)) {
Directory.Move(oldName, newName);
if (isDirectory && Directory.Exists(oldName)) {
if (Directory.Exists(newName)) {
MessageService.ShowMessage(StringParser.Parse("${res:Gui.ProjectBrowser.FileInUseError}"));
return false;
}
} else {
if (File.Exists(oldName)) {
File.Move(oldName, newName);
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) {

Loading…
Cancel
Save