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. 16
      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
/// </summary> /// </summary>
public void ToggleMarkAt(int lineNr) 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) { for (int i = 0; i < bookmark.Count; ++i) {
Bookmark mark = bookmark[i]; Bookmark mark = bookmark[i];
if (mark.LineNumber == lineNr && mark.CanToggle) {
if (mark.LineNumber == lineNr && mark.CanToggle && mark.GetType() == newMarkType) {
bookmark.RemoveAt(i); bookmark.RemoveAt(i);
OnRemoved(new BookmarkEventArgs(mark)); OnRemoved(new BookmarkEventArgs(mark));
OnChanged(EventArgs.Empty); OnChanged(EventArgs.Empty);
return; return;
} }
} }
Bookmark newMark;
if (factory != null)
newMark = factory.CreateBookmark(document, lineNr);
else
newMark = new Bookmark(document, lineNr);
bookmark.Add(newMark); bookmark.Add(newMark);
OnAdded(new BookmarkEventArgs(newMark)); OnAdded(new BookmarkEventArgs(newMark));
OnChanged(EventArgs.Empty); OnChanged(EventArgs.Empty);

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

@ -365,21 +365,18 @@ namespace ICSharpCode.SharpDevelop.Gui
{ {
base.OnAfterLabelEdit(e); base.OnAfterLabelEdit(e);
if(e.Label == null) { if (e.Label == null || !FileService.CheckFileName(e.Label)) {
e.CancelEdit = true; e.CancelEdit = true;
return; return;
} }
string filename = ((FileListItem)Items[e.Item]).FullName; string oldFileName = ((FileListItem)Items[e.Item]).FullName;
string newname = Path.GetDirectoryName(filename) + Path.DirectorySeparatorChar + e.Label; string newFileName = Path.Combine(Path.GetDirectoryName(oldFileName), e.Label);
try { if (FileService.RenameFile(oldFileName, newFileName, false)) {
File.Move(filename, newname); ((FileListItem)Items[e.Item]).FullName = newFileName;
((FileListItem)Items[e.Item]).FullName = newname; } else {
} catch(Exception ex) {
e.CancelEdit = true; 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
// } // }
// } // }
string newFileName = Path.Combine(project.Directory, newName + Path.GetExtension(project.FileName)); 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; return;
} }
if (project.AssemblyName == project.Name) if (project.AssemblyName == project.Name)
project.AssemblyName = newName; project.AssemblyName = newName;
FileService.RenameFile(project.FileName, newFileName, false);
if (File.Exists(project.FileName + ".user")) if (File.Exists(project.FileName + ".user"))
FileService.RenameFile(project.FileName + ".user", newFileName + ".user", false); FileService.RenameFile(project.FileName + ".user", newFileName + ".user", false);
foreach (IProject p in ProjectService.OpenSolution.Projects) { 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
} }
string newFileName = Path.Combine(Path.GetDirectoryName(this.FileName), newName); 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(); solution.Save();
} }
public override object AcceptVisitor(ProjectBrowserTreeNodeVisitor visitor, object data) 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
if (!FileService.CheckFileName(newName)) if (!FileService.CheckFileName(newName))
return; return;
string newFileName = Path.Combine(solution.Directory, newName + ".sln"); string newFileName = Path.Combine(solution.Directory, newName + ".sln");
if (File.Exists(newFileName)) { if (!FileService.RenameFile(solution.FileName, newFileName, false)) {
MessageService.ShowErrorFormatted("${res:Global.FileAlreadyExists}", newFileName);
return; return;
} }
FileService.RenameFile(solution.FileName, newFileName, false);
solution.FileName = newFileName; solution.FileName = newFileName;
solution.Name = newName; solution.Name = newName;
} finally { } finally {

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

@ -192,15 +192,21 @@ namespace ICSharpCode.Core
return false; return false;
if (!eargs.OperationAlreadyDone) { if (!eargs.OperationAlreadyDone) {
try { try {
if (isDirectory) { if (isDirectory && Directory.Exists(oldName)) {
if (Directory.Exists(oldName)) {
if (Directory.Exists(newName)) {
MessageService.ShowMessage(StringParser.Parse("${res:Gui.ProjectBrowser.FileInUseError}"));
return false;
}
Directory.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;
} }
} else {
if (File.Exists(oldName)) {
File.Move(oldName, newName); File.Move(oldName, newName);
} }
}
} catch (Exception e) { } catch (Exception e) {
if (isDirectory) { if (isDirectory) {
MessageService.ShowError(e, "Can't rename directory " + oldName); MessageService.ShowError(e, "Can't rename directory " + oldName);

Loading…
Cancel
Save