Browse Source

Worked on VB<->C# converter.

Fixed SD2-980: VB 'For Each' statement not converted correcly to C#

Text editor: Use TextLocation struct instead of System.Drawing.Point to represent line/column pairs.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2659 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 18 years ago
parent
commit
d2315a13c0
  1. 4
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs
  2. 2
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpMyNamespaceBuilder.cs
  3. 23
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/VBNetToCSharpConvertVisitorWithMyFormsSupport.cs
  4. 9
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/VBNetToCSharpConverter.cs
  5. 2
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBNetFormattingStrategy.cs
  6. 4
      src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDocumentEditor.cs
  7. 15
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerGenerator/AbstractDesignerGenerator.cs
  8. 3
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerGenerator/CSharpDesignerGenerator.cs
  9. 1
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerViewContent.cs
  10. 3
      src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Services/EventBindingService/CSharpWorkflowDesignerEventBindingService.cs
  11. 4
      src/AddIns/DisplayBindings/XmlEditor/Project/Src/XPathQueryControl.cs
  12. 2
      src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/DynamicHelpPad.cs
  13. 3
      src/AddIns/Misc/ResourceToolkit/Project/Src/Refactoring/ResourceRefactoringService.cs
  14. 2
      src/AddIns/Misc/ResourceToolkit/Project/Src/Resolver/AbstractResourceResolver.cs
  15. 2
      src/AddIns/Misc/ResourceToolkit/Project/Src/ToolTips/ResourceToolTipProvider.cs
  16. 4
      src/AddIns/Misc/SearchAndReplace/Test/MockDocument.cs
  17. 4
      src/Libraries/ICSharpCode.TextEditor/Project/ICSharpCode.TextEditor.csproj
  18. 38
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/CaretActions.cs
  19. 18
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/HomeEndActions.cs
  20. 32
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/MiscActions.cs
  21. 28
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/SelectionActions.cs
  22. 6
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/DefaultDocument.cs
  23. 18
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/IDocument.cs
  24. 2
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/MarkerStrategy/MarkerStrategy.cs
  25. 12
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/Selection/DefaultSelection.cs
  26. 6
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/Selection/ISelection.cs
  27. 20
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/Selection/SelectionManager.cs
  28. 128
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/TextLocation.cs
  29. 33
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/BracketHighlighter.cs
  30. 8
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/Caret.cs
  31. 2
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/CompletionWindow/AbstractCompletionWindow.cs
  32. 26
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/GutterMargin.cs
  33. 2
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/InsightWindow/InsightWindow.cs
  34. 8
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextArea.cs
  35. 2
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaClipboardHandler.cs
  36. 2
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaControl.cs
  37. 6
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaDragDropHandler.cs
  38. 46
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaMouseHandler.cs
  39. 18
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaUpdate.cs
  40. 12
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextView.cs
  41. 6
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/ToolTipRequestEventArgs.cs
  42. 6
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Undo/UndoStack.cs
  43. 3
      src/Libraries/NRefactory/Project/Src/Lexer/VBNet/Lexer.cs
  44. 1
      src/Libraries/NRefactory/Project/Src/Location.cs
  45. 46
      src/Libraries/NRefactory/Test/Lexer/VBNet/CustomLexerTests.cs
  46. 1
      src/Libraries/NRefactory/Test/NRefactoryTests.csproj
  47. 1
      src/Main/Base/Project/Src/Gui/AbstractViewContentHandlingLoadErrors.cs
  48. 4
      src/Main/Base/Project/Src/Gui/Pads/SearchResultPad/Nodes/SearchResultNode.cs
  49. 13
      src/Main/Base/Project/Src/Gui/Pads/SearchResultPad/SearchResultMatch.cs
  50. 15
      src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs
  51. 7
      src/Main/Base/Project/Src/Project/MSBuildInternals.cs
  52. 3
      src/Main/Base/Project/Src/Services/Debugger/DebuggerGridControl.cs
  53. 4
      src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs
  54. 2
      src/Main/Base/Project/Src/Services/RefactoringService/FindReferencesAndRenameHelper.cs
  55. 2
      src/Main/Base/Project/Src/Services/RefactoringService/TextEditorDocument.cs
  56. 3
      src/Main/Base/Project/Src/TextEditor/Commands/ClassBookmarkMenuBuilder.cs
  57. 2
      src/Main/Base/Project/Src/TextEditor/Commands/ClassMemberMenuBuilder.cs
  58. 2
      src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/CodeGenerationForm.cs
  59. 2
      src/Main/Base/Project/Src/TextEditor/Commands/ToolCommands.cs
  60. 4
      src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CodeCompletionData.cs
  61. 3
      src/Main/Base/Project/Src/TextEditor/Gui/Editor/QuickClassBrowserPanel.cs
  62. 106
      src/Main/Base/Test/CodeConverterTests.cs
  63. 64
      src/Main/Base/Test/NRefactoryResolverTests.cs
  64. 6
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/MemberLookupHelper.cs
  65. 64
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/CSharpToVBNetConvertVisitor.cs
  66. 20
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryASTConvertVisitor.cs
  67. 25
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryResolver.cs
  68. 40
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/TypeVisitor.cs
  69. 227
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/VBNetToCSharpConvertVisitor.cs
  70. 286
      src/SharpDevelop.sln

4
src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs

@ -60,7 +60,7 @@ namespace CSharpBinding.FormattingStrategy @@ -60,7 +60,7 @@ namespace CSharpBinding.FormattingStrategy
if (oldIndentLength != newIndentLength && lineNr == textArea.Caret.Position.Y) {
// fix cursor position if indentation was changed
int newX = textArea.Caret.Position.X - oldIndentLength + newIndentLength;
textArea.Caret.Position = new Point(Math.Max(newX, 0), lineNr);
textArea.Caret.Position = new TextLocation(Math.Max(newX, 0), lineNr);
}
return newIndentLength;
}
@ -92,7 +92,7 @@ namespace CSharpBinding.FormattingStrategy @@ -92,7 +92,7 @@ namespace CSharpBinding.FormattingStrategy
if (oldIndentLength != newIndentLength) {
// fix cursor position if indentation was changed
int newX = textArea.Caret.Position.X - oldIndentLength + newIndentLength;
textArea.Caret.Position = new Point(Math.Max(newX, 0), cursorPos);
textArea.Caret.Position = new TextLocation(Math.Max(newX, 0), cursorPos);
}
}
}

2
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpMyNamespaceBuilder.cs

@ -70,7 +70,7 @@ namespace CSharpBinding @@ -70,7 +70,7 @@ namespace CSharpBinding
if (myFormsClass != null) {
string indentation = line.Substring(0, line.Length - trimmedLine.Length);
foreach (IProperty p in myFormsClass.Properties) {
string typeName = p.ReturnType.FullyQualifiedName;
string typeName = "global::" + p.ReturnType.FullyQualifiedName;
output.AppendLine(indentation + typeName + " " + p.Name + "_instance;");
output.AppendLine(indentation + "bool " + p.Name + "_isCreating;");
output.AppendLine(indentation + "public " + typeName + " " + p.Name + " {");

23
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/VBNetToCSharpConvertVisitorWithMyFormsSupport.cs

@ -37,11 +37,8 @@ namespace CSharpBinding @@ -37,11 +37,8 @@ namespace CSharpBinding
{
base.VisitAssignmentExpression(assignmentExpression, data);
if (resolver.CompilationUnit == null)
return null;
if (vbMyFormsClass != null) {
TypeResolveResult trr = resolver.ResolveInternal(assignmentExpression.Right, ExpressionContext.Default) as TypeResolveResult;
TypeResolveResult trr = Resolve(assignmentExpression.Right) as TypeResolveResult;
if (trr != null && trr.ResolvedClass != null) {
foreach (IProperty p in vbMyFormsClass.Properties) {
if (p.ReturnType.FullyQualifiedName == trr.ResolvedClass.FullyQualifiedName) {
@ -54,5 +51,23 @@ namespace CSharpBinding @@ -54,5 +51,23 @@ namespace CSharpBinding
return null;
}
public override object VisitFieldReferenceExpression(FieldReferenceExpression fieldReferenceExpression, object data)
{
ResolveResult fieldRR = base.VisitFieldReferenceExpression(fieldReferenceExpression, data) as ResolveResult;
if (vbMyFormsClass != null && IsReferenceToInstanceMember(fieldRR)) {
TypeResolveResult trr = Resolve(fieldReferenceExpression.TargetObject) as TypeResolveResult;
if (trr != null && trr.ResolvedClass != null) {
foreach (IProperty p in vbMyFormsClass.Properties) {
if (p.ReturnType.FullyQualifiedName == trr.ResolvedClass.FullyQualifiedName) {
fieldReferenceExpression.TargetObject = MakeFieldReferenceExpression("My.MyProject.Forms." + p.Name);
}
}
}
}
return null;
}
}
}

9
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/VBNetToCSharpConverter.cs

@ -52,7 +52,14 @@ namespace CSharpBinding @@ -52,7 +52,14 @@ namespace CSharpBinding
protected override void CopyProperties(IProject sourceProject, IProject targetProject)
{
base.CopyProperties(sourceProject, targetProject);
FixProperty((CSharpProject)targetProject, "DefineConstants",
CSharpProject project = (CSharpProject)targetProject;
// 1591 = missing XML comment - the VB compiler does not have this warning
// we disable it by default because many VB projects have XML documentation turned on
// even though only few members are commented
project.SetProperty("NoWarn", "1591");
FixProperty(project, "DefineConstants",
delegate(string v) { return v.Replace(',', ';'); });
}

2
src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBNetFormattingStrategy.cs

@ -215,7 +215,7 @@ namespace VBNetBinding.FormattingStrategy @@ -215,7 +215,7 @@ namespace VBNetBinding.FormattingStrategy
if (oldIndentLength != newIndentLength && lineNr == textArea.Caret.Position.Y) {
// fix cursor position if indentation was changed
int newX = textArea.Caret.Position.X - oldIndentLength + newIndentLength;
textArea.Caret.Position = new Point(Math.Max(newX, 0), lineNr);
textArea.Caret.Position = new TextLocation(Math.Max(newX, 0), lineNr);
}
}
return indentLength;

4
src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDocumentEditor.cs

@ -80,8 +80,8 @@ namespace ICSharpCode.WixBinding @@ -80,8 +80,8 @@ namespace ICSharpCode.WixBinding
static void SelectText(SelectionManager selectionManager, IDocument document, int startOffset, int length)
{
selectionManager.ClearSelection();
Point selectionStart = document.OffsetToPosition(startOffset);
Point selectionEnd = document.OffsetToPosition(startOffset + length);
TextLocation selectionStart = document.OffsetToPosition(startOffset);
TextLocation selectionEnd = document.OffsetToPosition(startOffset + length);
selectionManager.SetSelection(selectionStart, selectionEnd);
}

15
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerGenerator/AbstractDesignerGenerator.cs

@ -20,6 +20,7 @@ using ICSharpCode.SharpDevelop; @@ -20,6 +20,7 @@ using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.TextEditor;
using ICSharpCode.TextEditor.Document;
using ReflectionLayer = ICSharpCode.SharpDevelop.Dom.ReflectionLayer;
@ -74,8 +75,8 @@ namespace ICSharpCode.FormsDesigner @@ -74,8 +75,8 @@ namespace ICSharpCode.FormsDesigner
Reparse();
IField field = GetField(formClass, fieldName);
if (field != null) {
int startOffset = document.PositionToOffset(new Point(0, field.Region.BeginLine - 1));
int endOffset = document.PositionToOffset(new Point(0, field.Region.EndLine));
int startOffset = document.PositionToOffset(new TextLocation(0, field.Region.BeginLine - 1));
int endOffset = document.PositionToOffset(new TextLocation(0, field.Region.EndLine));
document.Remove(startOffset, endOffset - startOffset);
} else if ((field = GetField(completeClass, fieldName)) != null) {
// TODO: Remove the field in the part where it is declared
@ -112,15 +113,15 @@ namespace ICSharpCode.FormsDesigner @@ -112,15 +113,15 @@ namespace ICSharpCode.FormsDesigner
Reparse();
IField oldField = GetField(formClass, newField.Name);
if (oldField != null) {
int startOffset = document.PositionToOffset(new Point(0, oldField.Region.BeginLine - 1));
int endOffset = document.PositionToOffset(new Point(0, oldField.Region.EndLine));
int startOffset = document.PositionToOffset(new TextLocation(0, oldField.Region.BeginLine - 1));
int endOffset = document.PositionToOffset(new TextLocation(0, oldField.Region.EndLine));
document.Replace(startOffset, endOffset - startOffset, tabs + GenerateFieldDeclaration(domGenerator, newField) + Environment.NewLine);
} else {
if ((oldField = GetField(completeClass, newField.Name)) != null) {
// TODO: Replace the field in the part where it is declared
LoggingService.Warn("Field declaration replacement in non-designer part currently not supported");
} else {
int endOffset = document.PositionToOffset(new Point(0, initializeComponents.BodyRegion.EndLine));
int endOffset = document.PositionToOffset(new TextLocation(0, initializeComponents.BodyRegion.EndLine));
document.Insert(endOffset, tabs + GenerateFieldDeclaration(domGenerator, newField) + Environment.NewLine);
}
}
@ -184,8 +185,8 @@ namespace ICSharpCode.FormsDesigner @@ -184,8 +185,8 @@ namespace ICSharpCode.FormsDesigner
DomRegion bodyRegion = GetReplaceRegion(document, initializeComponents);
if (bodyRegion.BeginColumn <= 0 || bodyRegion.EndColumn <= 0)
throw new InvalidOperationException("Column must be > 0");
int startOffset = document.PositionToOffset(new Point(bodyRegion.BeginColumn - 1, bodyRegion.BeginLine - 1));
int endOffset = document.PositionToOffset(new Point(bodyRegion.EndColumn - 1, bodyRegion.EndLine - 1));
int startOffset = document.PositionToOffset(new TextLocation(bodyRegion.BeginColumn - 1, bodyRegion.BeginLine - 1));
int endOffset = document.PositionToOffset(new TextLocation(bodyRegion.EndColumn - 1, bodyRegion.EndLine - 1));
document.Replace(startOffset, endOffset - startOffset, statements);
SaveDocument();

3
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerGenerator/CSharpDesignerGenerator.cs

@ -13,6 +13,7 @@ using System.Text; @@ -13,6 +13,7 @@ using System.Text;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.TextEditor;
using ICSharpCode.NRefactory.Ast;
using ICSharpCode.NRefactory.PrettyPrinter;
@ -56,7 +57,7 @@ namespace ICSharpCode.FormsDesigner @@ -56,7 +57,7 @@ namespace ICSharpCode.FormsDesigner
protected override int GetCursorLine(ICSharpCode.TextEditor.Document.IDocument document, IMethod method)
{
DomRegion r = method.BodyRegion;
int offset = document.PositionToOffset(new Point(r.BeginColumn - 1, r.BeginLine - 1));
int offset = document.PositionToOffset(new TextLocation(r.BeginColumn - 1, r.BeginLine - 1));
string tmp = document.GetText(offset, 10);
while (offset < document.TextLength) {
char c = document.GetCharAt(offset++);

1
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerViewContent.cs

@ -234,6 +234,7 @@ namespace ICSharpCode.FormsDesigner @@ -234,6 +234,7 @@ namespace ICSharpCode.FormsDesigner
} catch (Exception e) {
failedDesignerInitialize = true;
TextBox errorText = new TextBox();
errorText.ScrollBars = ScrollBars.Both;
errorText.Multiline = true;
if (e.InnerException is FormsDesignerLoadException) {
errorText.Text = e.InnerException.Message;

3
src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Services/EventBindingService/CSharpWorkflowDesignerEventBindingService.cs

@ -10,6 +10,7 @@ using System.Drawing; @@ -10,6 +10,7 @@ using System.Drawing;
using System.Text;
using System.ComponentModel;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.TextEditor;
using ICSharpCode.TextEditor.Document;
using ICSharpCode.NRefactory.PrettyPrinter;
using ICSharpCode.NRefactory.Ast;
@ -34,7 +35,7 @@ namespace WorkflowDesigner @@ -34,7 +35,7 @@ namespace WorkflowDesigner
protected override int GetCursorLine(IDocument document, IMethod method)
{
DomRegion r = method.BodyRegion;
int offset = document.PositionToOffset(new Point(r.BeginColumn - 1, r.BeginLine - 1));
int offset = document.PositionToOffset(new TextLocation(r.BeginColumn - 1, r.BeginLine - 1));
while (offset < document.TextLength) {
char c = document.GetCharAt(offset++);
if (c == '{') {

4
src/AddIns/DisplayBindings/XmlEditor/Project/Src/XPathQueryControl.cs

@ -596,8 +596,8 @@ namespace ICSharpCode.XmlEditor @@ -596,8 +596,8 @@ namespace ICSharpCode.XmlEditor
if (length > 0 && line < textAreaControl.Document.TotalNumberOfLines) {
SelectionManager selectionManager = textAreaControl.SelectionManager;
selectionManager.ClearSelection();
Point startPos = new Point(column, line);
Point endPos = new Point(column + length, line);
TextLocation startPos = new TextLocation(column, line);
TextLocation endPos = new TextLocation(column + length, line);
selectionManager.SetSelection(startPos, endPos);
}
line = Math.Min(line, textAreaControl.Document.TotalNumberOfLines - 1);

2
src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/DynamicHelpPad.cs

@ -39,7 +39,7 @@ namespace HtmlHelp2 @@ -39,7 +39,7 @@ namespace HtmlHelp2
{
HtmlHelp2DynamicHelpBrowserControl dynamicHelpBrowser;
private StringCollection dynamicHelpTerms = new StringCollection();
private Point lastPoint = Point.Empty;
private TextLocation lastPoint = TextLocation.Empty;
private string debugPreElement = String.Empty;
private bool enableDebugInfo = HtmlHelp2Environment.Config.DynamicHelpDebugInfos;

3
src/AddIns/Misc/ResourceToolkit/Project/Src/Refactoring/ResourceRefactoringService.cs

@ -18,6 +18,7 @@ using ICSharpCode.SharpDevelop; @@ -18,6 +18,7 @@ using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Refactoring;
using ICSharpCode.TextEditor;
using ICSharpCode.TextEditor.Document;
using SearchAndReplace;
@ -103,7 +104,7 @@ namespace Hornung.ResourceToolkit.Refactoring @@ -103,7 +104,7 @@ namespace Hornung.ResourceToolkit.Refactoring
int pos = -1;
while ((pos = finder.GetNextPossibleOffset(fileName, fileContent, pos)) >= 0) {
Point docPos = doc.OffsetToPosition(pos);
TextLocation docPos = doc.OffsetToPosition(pos);
ResourceResolveResult rrr = ResourceResolverService.Resolve(fileName, doc, docPos.Y, docPos.X, null);
if (rrr != null && rrr.ResourceFileContent != null && rrr.Key != null) {

2
src/AddIns/Misc/ResourceToolkit/Project/Src/Resolver/AbstractResourceResolver.cs

@ -41,7 +41,7 @@ namespace Hornung.ResourceToolkit.Resolver @@ -41,7 +41,7 @@ namespace Hornung.ResourceToolkit.Resolver
LoggingService.Debug("ResourceToolkit: "+this.GetType().ToString()+".Resolve called with invalid position arguments");
return null;
}
return this.Resolve(fileName, document, caretLine, caretColumn, document.PositionToOffset(new Point(caretColumn, caretLine)), charTyped);
return this.Resolve(fileName, document, caretLine, caretColumn, document.PositionToOffset(new TextLocation(caretColumn, caretLine)), charTyped);
}
/// <summary>

2
src/AddIns/Misc/ResourceToolkit/Project/Src/ToolTips/ResourceToolTipProvider.cs

@ -22,7 +22,7 @@ namespace Hornung.ResourceToolkit.ToolTips @@ -22,7 +22,7 @@ namespace Hornung.ResourceToolkit.ToolTips
public ToolTipInfo GetToolTipInfo(TextArea textArea, ToolTipRequestEventArgs e)
{
Point logicPos = e.LogicalPosition;
TextLocation logicPos = e.LogicalPosition;
IDocument doc = textArea.Document;
if (logicPos.X > doc.GetLineSegment(logicPos.Y).Length - 1) {
return null;

4
src/AddIns/Misc/SearchAndReplace/Test/MockDocument.cs

@ -202,12 +202,12 @@ namespace ICSharpCode.SharpDevelop.Tests.Utils @@ -202,12 +202,12 @@ namespace ICSharpCode.SharpDevelop.Tests.Utils
throw new NotImplementedException();
}
public System.Drawing.Point OffsetToPosition(int offset)
public ICSharpCode.TextEditor.TextLocation OffsetToPosition(int offset)
{
throw new NotImplementedException();
}
public int PositionToOffset(System.Drawing.Point p)
public int PositionToOffset(ICSharpCode.TextEditor.TextLocation p)
{
throw new NotImplementedException();
}

4
src/Libraries/ICSharpCode.TextEditor/Project/ICSharpCode.TextEditor.csproj

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@ -20,6 +20,7 @@ @@ -20,6 +20,7 @@
<BaseAddress>98041856</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<FileAlignment>4096</FileAlignment>
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<Optimize>False</Optimize>
@ -59,6 +60,7 @@ @@ -59,6 +60,7 @@
<Compile Include="Src\Document\IDocument.cs" />
<Compile Include="Src\Document\ISegment.cs" />
<Compile Include="Src\Document\LineManager\LineSegmentTree.cs" />
<Compile Include="Src\Document\TextLocation.cs" />
<Compile Include="Src\Document\TextUtilities.cs" />
<Compile Include="Src\Document\BookmarkManager\BookmarkManager.cs" />
<Compile Include="Src\Document\CustomLineManager\CustomLineManager.cs" />

38
src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/CaretActions.cs

@ -11,13 +11,13 @@ using System.Drawing; @@ -11,13 +11,13 @@ using System.Drawing;
using ICSharpCode.TextEditor.Document;
namespace ICSharpCode.TextEditor.Actions
namespace ICSharpCode.TextEditor.Actions
{
public class CaretLeft : AbstractEditAction
{
public override void Execute(TextArea textArea)
{
Point position = textArea.Caret.Position;
TextLocation position = textArea.Caret.Position;
List<FoldMarker> foldings = textArea.Document.FoldingManager.GetFoldedFoldingsWithEnd(position.Y);
FoldMarker justBeforeCaret = null;
foreach (FoldMarker fm in foldings) {
@ -35,7 +35,7 @@ namespace ICSharpCode.TextEditor.Actions @@ -35,7 +35,7 @@ namespace ICSharpCode.TextEditor.Actions
--position.X;
} else if (position.Y > 0) {
LineSegment lineAbove = textArea.Document.GetLineSegment(position.Y - 1);
position = new Point(lineAbove.Length, position.Y - 1);
position = new TextLocation(lineAbove.Length, position.Y - 1);
}
}
@ -49,7 +49,7 @@ namespace ICSharpCode.TextEditor.Actions @@ -49,7 +49,7 @@ namespace ICSharpCode.TextEditor.Actions
public override void Execute(TextArea textArea)
{
LineSegment curLine = textArea.Document.GetLineSegment(textArea.Caret.Line);
Point position = textArea.Caret.Position;
TextLocation position = textArea.Caret.Position;
List<FoldMarker> foldings = textArea.Document.FoldingManager.GetFoldedFoldingsWithStart(position.Y);
FoldMarker justBehindCaret = null;
foreach (FoldMarker fm in foldings) {
@ -78,13 +78,13 @@ namespace ICSharpCode.TextEditor.Actions @@ -78,13 +78,13 @@ namespace ICSharpCode.TextEditor.Actions
{
public override void Execute(TextArea textArea)
{
Point position = textArea.Caret.Position;
TextLocation position = textArea.Caret.Position;
int lineNr = position.Y;
int visualLine = textArea.Document.GetVisibleLine(lineNr);
if (visualLine > 0) {
int xpos = textArea.TextView.GetDrawingXPos(lineNr, position.X);
Point pos = new Point(xpos,
textArea.TextView.DrawingPosition.Y + (visualLine - 1) * textArea.TextView.FontHeight - textArea.TextView.TextArea.VirtualTop.Y);
TextLocation pos = new TextLocation(xpos,
textArea.TextView.DrawingPosition.Y + (visualLine - 1) * textArea.TextView.FontHeight - textArea.TextView.TextArea.VirtualTop.Y);
textArea.Caret.Position = textArea.TextView.GetLogicalPosition(pos.X, pos.Y);
textArea.SetCaretToDesiredColumn();
}
@ -98,13 +98,13 @@ namespace ICSharpCode.TextEditor.Actions @@ -98,13 +98,13 @@ namespace ICSharpCode.TextEditor.Actions
{
public override void Execute(TextArea textArea)
{
Point position = textArea.Caret.Position;
TextLocation position = textArea.Caret.Position;
int lineNr = position.Y;
int visualLine = textArea.Document.GetVisibleLine(lineNr);
if (visualLine < textArea.Document.GetVisibleLine(textArea.Document.TotalNumberOfLines)) {
int xpos = textArea.TextView.GetDrawingXPos(lineNr, position.X);
Point pos = new Point(xpos,
textArea.TextView.DrawingPosition.Y + (visualLine + 1) * textArea.TextView.FontHeight - textArea.TextView.TextArea.VirtualTop.Y);
TextLocation pos = new TextLocation(xpos,
textArea.TextView.DrawingPosition.Y + (visualLine + 1) * textArea.TextView.FontHeight - textArea.TextView.TextArea.VirtualTop.Y);
textArea.Caret.Position = textArea.TextView.GetLogicalPosition(pos.X, pos.Y);
textArea.SetCaretToDesiredColumn();
}
@ -119,10 +119,10 @@ namespace ICSharpCode.TextEditor.Actions @@ -119,10 +119,10 @@ namespace ICSharpCode.TextEditor.Actions
public override void Execute(TextArea textArea)
{
LineSegment line = textArea.Document.GetLineSegment(textArea.Caret.Position.Y);
Point oldPos = textArea.Caret.Position;
Point newPos;
TextLocation oldPos = textArea.Caret.Position;
TextLocation newPos;
if (textArea.Caret.Column >= line.Length) {
newPos = new Point(0, textArea.Caret.Line + 1);
newPos = new TextLocation(0, textArea.Caret.Line + 1);
} else {
int nextWordStart = TextUtilities.FindNextWordStart(textArea.Document, textArea.Caret.Offset);
newPos = textArea.Document.OffsetToPosition(nextWordStart);
@ -133,9 +133,9 @@ namespace ICSharpCode.TextEditor.Actions @@ -133,9 +133,9 @@ namespace ICSharpCode.TextEditor.Actions
foreach (FoldMarker marker in foldings) {
if (marker.IsFolded) {
if (oldPos.X == marker.StartColumn && oldPos.Y == marker.StartLine) {
newPos = new Point(marker.EndColumn, marker.EndLine);
newPos = new TextLocation(marker.EndColumn, marker.EndLine);
} else {
newPos = new Point(marker.StartColumn, marker.StartLine);
newPos = new TextLocation(marker.StartColumn, marker.StartLine);
}
break;
}
@ -150,7 +150,7 @@ namespace ICSharpCode.TextEditor.Actions @@ -150,7 +150,7 @@ namespace ICSharpCode.TextEditor.Actions
{
public override void Execute(TextArea textArea)
{
Point oldPos = textArea.Caret.Position;
TextLocation oldPos = textArea.Caret.Position;
if (textArea.Caret.Column == 0) {
base.Execute(textArea);
} else {
@ -158,16 +158,16 @@ namespace ICSharpCode.TextEditor.Actions @@ -158,16 +158,16 @@ namespace ICSharpCode.TextEditor.Actions
int prevWordStart = TextUtilities.FindPrevWordStart(textArea.Document, textArea.Caret.Offset);
Point newPos = textArea.Document.OffsetToPosition(prevWordStart);
TextLocation newPos = textArea.Document.OffsetToPosition(prevWordStart);
// handle fold markers
List<FoldMarker> foldings = textArea.Document.FoldingManager.GetFoldingsFromPosition(newPos.Y, newPos.X);
foreach (FoldMarker marker in foldings) {
if (marker.IsFolded) {
if (oldPos.X == marker.EndColumn && oldPos.Y == marker.EndLine) {
newPos = new Point(marker.StartColumn, marker.StartLine);
newPos = new TextLocation(marker.StartColumn, marker.StartLine);
} else {
newPos = new Point(marker.EndColumn, marker.EndLine);
newPos = new TextLocation(marker.EndColumn, marker.EndLine);
}
break;
}

18
src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/HomeEndActions.cs

@ -11,18 +11,18 @@ using System.Drawing; @@ -11,18 +11,18 @@ using System.Drawing;
using ICSharpCode.TextEditor.Document;
namespace ICSharpCode.TextEditor.Actions
namespace ICSharpCode.TextEditor.Actions
{
public class Home : AbstractEditAction
{
public override void Execute(TextArea textArea)
{
LineSegment curLine;
Point newPos = textArea.Caret.Position;
TextLocation newPos = textArea.Caret.Position;
bool jumpedIntoFolding = false;
do {
curLine = textArea.Document.GetLineSegment(newPos.Y);
if (TextUtilities.IsEmptyLine(textArea.Document, newPos.Y)) {
if (newPos.X != 0) {
newPos.X = 0;
@ -43,7 +43,7 @@ namespace ICSharpCode.TextEditor.Actions @@ -43,7 +43,7 @@ namespace ICSharpCode.TextEditor.Actions
jumpedIntoFolding = false;
foreach (FoldMarker foldMarker in foldings) {
if (foldMarker.IsFolded) {
newPos = new Point(foldMarker.StartColumn, foldMarker.StartLine);
newPos = new TextLocation(foldMarker.StartColumn, foldMarker.StartLine);
jumpedIntoFolding = true;
break;
}
@ -63,8 +63,8 @@ namespace ICSharpCode.TextEditor.Actions @@ -63,8 +63,8 @@ namespace ICSharpCode.TextEditor.Actions
public override void Execute(TextArea textArea)
{
LineSegment curLine;
Point newPos = textArea.Caret.Position;
bool jumpedIntoFolding = false;
TextLocation newPos = textArea.Caret.Position;
bool jumpedIntoFolding = false;
do {
curLine = textArea.Document.GetLineSegment(newPos.Y);
newPos.X = curLine.Length;
@ -73,7 +73,7 @@ namespace ICSharpCode.TextEditor.Actions @@ -73,7 +73,7 @@ namespace ICSharpCode.TextEditor.Actions
jumpedIntoFolding = false;
foreach (FoldMarker foldMarker in foldings) {
if (foldMarker.IsFolded) {
newPos = new Point(foldMarker.EndColumn, foldMarker.EndLine);
newPos = new TextLocation(foldMarker.EndColumn, foldMarker.EndLine);
jumpedIntoFolding = true;
break;
}
@ -93,7 +93,7 @@ namespace ICSharpCode.TextEditor.Actions @@ -93,7 +93,7 @@ namespace ICSharpCode.TextEditor.Actions
public override void Execute(TextArea textArea)
{
if (textArea.Caret.Line != 0 || textArea.Caret.Column != 0) {
textArea.Caret.Position = new Point(0, 0);
textArea.Caret.Position = new TextLocation(0, 0);
textArea.SetDesiredColumn();
}
}
@ -104,7 +104,7 @@ namespace ICSharpCode.TextEditor.Actions @@ -104,7 +104,7 @@ namespace ICSharpCode.TextEditor.Actions
{
public override void Execute(TextArea textArea)
{
Point endPos = textArea.Document.OffsetToPosition(textArea.Document.TextLength);
TextLocation endPos = textArea.Document.OffsetToPosition(textArea.Document.TextLength);
if (textArea.Caret.Position != endPos) {
textArea.Caret.Position = endPos;
textArea.SetDesiredColumn();

32
src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/MiscActions.cs

@ -595,15 +595,15 @@ namespace ICSharpCode.TextEditor.Actions @@ -595,15 +595,15 @@ namespace ICSharpCode.TextEditor.Actions
int lineEndOffset = line.Offset + line.Length;
int lineLength = line.Length;
textArea.Document.Remove(lineEndOffset, curLineOffset - lineEndOffset);
textArea.Caret.Position = new Point(lineLength, curLineNr - 1);
textArea.Document.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.PositionToEnd, new Point(0, curLineNr - 1)));
textArea.Caret.Position = new TextLocation(lineLength, curLineNr - 1);
textArea.Document.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.PositionToEnd, new TextLocation(0, curLineNr - 1)));
textArea.EndUpdate();
} else {
int caretOffset = textArea.Caret.Offset - 1;
textArea.Caret.Position = textArea.Document.OffsetToPosition(caretOffset);
textArea.Document.Remove(caretOffset, 1);
textArea.Document.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.PositionToLineEnd, new Point(textArea.Caret.Offset - textArea.Document.GetLineSegment(curLineNr).Offset, curLineNr)));
textArea.Document.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.PositionToLineEnd, new TextLocation(textArea.Caret.Offset - textArea.Document.GetLineSegment(curLineNr).Offset, curLineNr)));
textArea.EndUpdate();
}
}
@ -640,11 +640,11 @@ namespace ICSharpCode.TextEditor.Actions @@ -640,11 +640,11 @@ namespace ICSharpCode.TextEditor.Actions
LineSegment nextLine = textArea.Document.GetLineSegment(curLineNr + 1);
textArea.Document.Remove(textArea.Caret.Offset, nextLine.Offset - textArea.Caret.Offset);
textArea.Document.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.PositionToEnd, new Point(0, curLineNr)));
textArea.Document.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.PositionToEnd, new TextLocation(0, curLineNr)));
}
} else {
textArea.Document.Remove(textArea.Caret.Offset, 1);
// textArea.Document.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.PositionToLineEnd, new Point(textArea.Caret.Offset - textArea.Document.GetLineSegment(curLineNr).Offset, curLineNr)));
// textArea.Document.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.PositionToLineEnd, new TextLocation(textArea.Caret.Offset - textArea.Document.GetLineSegment(curLineNr).Offset, curLineNr)));
}
textArea.UpdateMatchingBracket();
textArea.EndUpdate();
@ -665,7 +665,7 @@ namespace ICSharpCode.TextEditor.Actions @@ -665,7 +665,7 @@ namespace ICSharpCode.TextEditor.Actions
int requestedLineNumber = Math.Min(textArea.Document.GetNextVisibleLineAbove(curLineNr, textArea.TextView.VisibleLineCount), textArea.Document.TotalNumberOfLines - 1);
if (curLineNr != requestedLineNumber) {
textArea.Caret.Position = new Point(textArea.Caret.DesiredColumn, requestedLineNumber);
textArea.Caret.Position = new TextLocation(textArea.Caret.DesiredColumn, requestedLineNumber);
}
}
}
@ -682,7 +682,7 @@ namespace ICSharpCode.TextEditor.Actions @@ -682,7 +682,7 @@ namespace ICSharpCode.TextEditor.Actions
int requestedLineNumber = Math.Max(textArea.Document.GetNextVisibleLineBelow(curLineNr, textArea.TextView.VisibleLineCount), 0);
if (curLineNr != requestedLineNumber) {
textArea.Caret.Position = new Point(textArea.Caret.DesiredColumn, requestedLineNumber);
textArea.Caret.Position = new TextLocation(textArea.Caret.DesiredColumn, requestedLineNumber);
}
}
}
@ -710,7 +710,7 @@ namespace ICSharpCode.TextEditor.Actions @@ -710,7 +710,7 @@ namespace ICSharpCode.TextEditor.Actions
textArea.SetDesiredColumn();
textArea.Document.UpdateQueue.Clear();
textArea.Document.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.PositionToEnd, new Point(0, curLineNr - 1)));
textArea.Document.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.PositionToEnd, new TextLocation(0, curLineNr - 1)));
} finally {
textArea.Document.UndoStack.EndUndoGroup();
textArea.EndUpdate();
@ -815,7 +815,7 @@ namespace ICSharpCode.TextEditor.Actions @@ -815,7 +815,7 @@ namespace ICSharpCode.TextEditor.Actions
textArea.SetDesiredColumn();
textArea.EndUpdate();
// if there are now less lines, we need this or there are redraw problems
textArea.Document.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.PositionToEnd, new Point(0, textArea.Document.GetLineNumberForOffset(textArea.Caret.Offset))));
textArea.Document.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.PositionToEnd, new TextLocation(0, textArea.Document.GetLineNumberForOffset(textArea.Caret.Offset))));
textArea.Document.CommitUpdate();
}
}
@ -858,7 +858,7 @@ namespace ICSharpCode.TextEditor.Actions @@ -858,7 +858,7 @@ namespace ICSharpCode.TextEditor.Actions
textArea.UpdateMatchingBracket();
textArea.EndUpdate();
// if there are now less lines, we need this or there are redraw problems
textArea.Document.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.PositionToEnd, new Point(0, textArea.Document.GetLineNumberForOffset(textArea.Caret.Offset))));
textArea.Document.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.PositionToEnd, new TextLocation(0, textArea.Document.GetLineNumberForOffset(textArea.Caret.Offset))));
textArea.Document.CommitUpdate();
}
}
@ -872,7 +872,7 @@ namespace ICSharpCode.TextEditor.Actions @@ -872,7 +872,7 @@ namespace ICSharpCode.TextEditor.Actions
textArea.Document.Remove(line.Offset, line.TotalLength);
textArea.Caret.Position = textArea.Document.OffsetToPosition(line.Offset);
textArea.Document.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.PositionToEnd, new Point(0, lineNr)));
textArea.Document.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.PositionToEnd, new TextLocation(0, lineNr)));
textArea.UpdateMatchingBracket();
textArea.Document.CommitUpdate();
}
@ -888,7 +888,7 @@ namespace ICSharpCode.TextEditor.Actions @@ -888,7 +888,7 @@ namespace ICSharpCode.TextEditor.Actions
int numRemove = (line.Offset + line.Length) - textArea.Caret.Offset;
if (numRemove > 0) {
textArea.Document.Remove(textArea.Caret.Offset, numRemove);
textArea.Document.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.SingleLine, new Point(0, lineNr)));
textArea.Document.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.SingleLine, new TextLocation(0, lineNr)));
textArea.Document.CommitUpdate();
}
}
@ -900,19 +900,19 @@ namespace ICSharpCode.TextEditor.Actions @@ -900,19 +900,19 @@ namespace ICSharpCode.TextEditor.Actions
{
Highlight highlight = textArea.FindMatchingBracketHighlight();
if (highlight != null) {
Point p1 = new Point(highlight.CloseBrace.X + 1, highlight.CloseBrace.Y);
Point p2 = new Point(highlight.OpenBrace.X + 1, highlight.OpenBrace.Y);
TextLocation p1 = new TextLocation(highlight.CloseBrace.X + 1, highlight.CloseBrace.Y);
TextLocation p2 = new TextLocation(highlight.OpenBrace.X + 1, highlight.OpenBrace.Y);
if (p1 == textArea.Caret.Position) {
if (textArea.Document.TextEditorProperties.BracketMatchingStyle == BracketMatchingStyle.After) {
textArea.Caret.Position = p2;
} else {
textArea.Caret.Position = new Point(p2.X - 1, p2.Y);
textArea.Caret.Position = new TextLocation(p2.X - 1, p2.Y);
}
} else {
if (textArea.Document.TextEditorProperties.BracketMatchingStyle == BracketMatchingStyle.After) {
textArea.Caret.Position = p1;
} else {
textArea.Caret.Position = new Point(p1.X - 1, p1.Y);
textArea.Caret.Position = new TextLocation(p1.X - 1, p1.Y);
}
}
textArea.SetDesiredColumn();

28
src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/SelectionActions.cs

@ -15,7 +15,7 @@ namespace ICSharpCode.TextEditor.Actions @@ -15,7 +15,7 @@ namespace ICSharpCode.TextEditor.Actions
{
public override void Execute(TextArea textArea)
{
Point oldCaretPos = textArea.Caret.Position;
TextLocation oldCaretPos = textArea.Caret.Position;
base.Execute(textArea);
textArea.AutoClearSelection = false;
textArea.SelectionManager.ExtendSelection(oldCaretPos, textArea.Caret.Position);
@ -26,7 +26,7 @@ namespace ICSharpCode.TextEditor.Actions @@ -26,7 +26,7 @@ namespace ICSharpCode.TextEditor.Actions
{
public override void Execute(TextArea textArea)
{
Point oldCaretPos = textArea.Caret.Position;
TextLocation oldCaretPos = textArea.Caret.Position;
base.Execute(textArea);
textArea.AutoClearSelection = false;
textArea.SelectionManager.ExtendSelection(oldCaretPos, textArea.Caret.Position);
@ -37,7 +37,7 @@ namespace ICSharpCode.TextEditor.Actions @@ -37,7 +37,7 @@ namespace ICSharpCode.TextEditor.Actions
{
public override void Execute(TextArea textArea)
{
Point oldCaretPos = textArea.Caret.Position;
TextLocation oldCaretPos = textArea.Caret.Position;
base.Execute(textArea);
textArea.AutoClearSelection = false;
textArea.SelectionManager.ExtendSelection(oldCaretPos, textArea.Caret.Position);
@ -48,7 +48,7 @@ namespace ICSharpCode.TextEditor.Actions @@ -48,7 +48,7 @@ namespace ICSharpCode.TextEditor.Actions
{
public override void Execute(TextArea textArea)
{
Point oldCaretPos = textArea.Caret.Position;
TextLocation oldCaretPos = textArea.Caret.Position;
base.Execute(textArea);
textArea.AutoClearSelection = false;
textArea.SelectionManager.ExtendSelection(oldCaretPos, textArea.Caret.Position);
@ -59,7 +59,7 @@ namespace ICSharpCode.TextEditor.Actions @@ -59,7 +59,7 @@ namespace ICSharpCode.TextEditor.Actions
{
public override void Execute(TextArea textArea)
{
Point oldCaretPos = textArea.Caret.Position;
TextLocation oldCaretPos = textArea.Caret.Position;
base.Execute(textArea);
textArea.AutoClearSelection = false;
textArea.SelectionManager.ExtendSelection(oldCaretPos, textArea.Caret.Position);
@ -70,7 +70,7 @@ namespace ICSharpCode.TextEditor.Actions @@ -70,7 +70,7 @@ namespace ICSharpCode.TextEditor.Actions
{
public override void Execute(TextArea textArea)
{
Point oldCaretPos = textArea.Caret.Position;
TextLocation oldCaretPos = textArea.Caret.Position;
base.Execute(textArea);
textArea.AutoClearSelection = false;
textArea.SelectionManager.ExtendSelection(oldCaretPos, textArea.Caret.Position);
@ -81,7 +81,7 @@ namespace ICSharpCode.TextEditor.Actions @@ -81,7 +81,7 @@ namespace ICSharpCode.TextEditor.Actions
{
public override void Execute(TextArea textArea)
{
Point oldCaretPos = textArea.Caret.Position;
TextLocation oldCaretPos = textArea.Caret.Position;
base.Execute(textArea);
textArea.AutoClearSelection = false;
textArea.SelectionManager.ExtendSelection(oldCaretPos, textArea.Caret.Position);
@ -92,7 +92,7 @@ namespace ICSharpCode.TextEditor.Actions @@ -92,7 +92,7 @@ namespace ICSharpCode.TextEditor.Actions
{
public override void Execute(TextArea textArea)
{
Point oldCaretPos = textArea.Caret.Position;
TextLocation oldCaretPos = textArea.Caret.Position;
base.Execute(textArea);
textArea.AutoClearSelection = false;
textArea.SelectionManager.ExtendSelection(oldCaretPos, textArea.Caret.Position);
@ -103,7 +103,7 @@ namespace ICSharpCode.TextEditor.Actions @@ -103,7 +103,7 @@ namespace ICSharpCode.TextEditor.Actions
{
public override void Execute(TextArea textArea)
{
Point oldCaretPos = textArea.Caret.Position;
TextLocation oldCaretPos = textArea.Caret.Position;
base.Execute(textArea);
textArea.AutoClearSelection = false;
textArea.SelectionManager.ExtendSelection(oldCaretPos, textArea.Caret.Position);
@ -114,7 +114,7 @@ namespace ICSharpCode.TextEditor.Actions @@ -114,7 +114,7 @@ namespace ICSharpCode.TextEditor.Actions
{
public override void Execute(TextArea textArea)
{
Point oldCaretPos = textArea.Caret.Position;
TextLocation oldCaretPos = textArea.Caret.Position;
base.Execute(textArea);
textArea.AutoClearSelection = false;
textArea.SelectionManager.ExtendSelection(oldCaretPos, textArea.Caret.Position);
@ -125,7 +125,7 @@ namespace ICSharpCode.TextEditor.Actions @@ -125,7 +125,7 @@ namespace ICSharpCode.TextEditor.Actions
{
public override void Execute(TextArea textArea)
{
Point oldCaretPos = textArea.Caret.Position;
TextLocation oldCaretPos = textArea.Caret.Position;
base.Execute(textArea);
textArea.AutoClearSelection = false;
textArea.SelectionManager.ExtendSelection(oldCaretPos, textArea.Caret.Position);
@ -136,7 +136,7 @@ namespace ICSharpCode.TextEditor.Actions @@ -136,7 +136,7 @@ namespace ICSharpCode.TextEditor.Actions
{
public override void Execute(TextArea textArea)
{
Point oldCaretPos = textArea.Caret.Position;
TextLocation oldCaretPos = textArea.Caret.Position;
base.Execute(textArea);
textArea.AutoClearSelection = false;
textArea.SelectionManager.ExtendSelection(oldCaretPos, textArea.Caret.Position);
@ -148,8 +148,8 @@ namespace ICSharpCode.TextEditor.Actions @@ -148,8 +148,8 @@ namespace ICSharpCode.TextEditor.Actions
public override void Execute(TextArea textArea)
{
textArea.AutoClearSelection = false;
Point startPoint = new Point(0, 0);
Point endPoint = textArea.Document.OffsetToPosition(textArea.Document.TextLength);
TextLocation startPoint = new TextLocation(0, 0);
TextLocation endPoint = textArea.Document.OffsetToPosition(textArea.Document.TextLength);
if (textArea.SelectionManager.HasSomethingSelected) {
if (textArea.SelectionManager.SelectionCollection[0].StartPosition == startPoint &&
textArea.SelectionManager.SelectionCollection[0].EndPosition == endPoint) {

6
src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/DefaultDocument.cs

@ -341,14 +341,14 @@ namespace ICSharpCode.TextEditor.Document @@ -341,14 +341,14 @@ namespace ICSharpCode.TextEditor.Document
return lineTrackingStrategy.GetNextVisibleLineBelow(lineNumber, lineCount);
}
public Point OffsetToPosition(int offset)
public TextLocation OffsetToPosition(int offset)
{
int lineNr = GetLineNumberForOffset(offset);
LineSegment line = GetLineSegment(lineNr);
return new Point(offset - line.Offset, lineNr);
return new TextLocation(offset - line.Offset, lineNr);
}
public int PositionToOffset(Point p)
public int PositionToOffset(TextLocation p)
{
if (p.Y >= this.TotalNumberOfLines) {
return 0;

18
src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/IDocument.cs

@ -90,7 +90,7 @@ namespace ICSharpCode.TextEditor.Document @@ -90,7 +90,7 @@ namespace ICSharpCode.TextEditor.Document
// get;
// }
#region ILineManager interface
#region ILineManager interface
/// <value>
/// A collection of all line segments
/// </value>
@ -104,7 +104,7 @@ namespace ICSharpCode.TextEditor.Document @@ -104,7 +104,7 @@ namespace ICSharpCode.TextEditor.Document
}
/// <value>
/// The total number of lines, this may be != ArrayList.Count
/// The total number of lines, this may be != ArrayList.Count
/// if the last line ends with a delimiter.
/// </value>
int TotalNumberOfLines {
@ -189,9 +189,9 @@ namespace ICSharpCode.TextEditor.Document @@ -189,9 +189,9 @@ namespace ICSharpCode.TextEditor.Document
/// Get the next visible line below lineNumber
/// </remarks>
int GetNextVisibleLineBelow(int lineNumber, int lineCount);
#endregion
#endregion
#region ITextBufferStrategy interface
#region ITextBufferStrategy interface
/// <value>
/// Get the whole text as string.
/// When setting the text using the TextContent property, the undo stack is cleared.
@ -264,20 +264,20 @@ namespace ICSharpCode.TextEditor.Document @@ -264,20 +264,20 @@ namespace ICSharpCode.TextEditor.Document
/// number of characters to copy.
/// </param>
string GetText(int offset, int length);
#endregion
#endregion
string GetText(ISegment segment);
#region ITextModel interface
#region ITextModel interface
/// <summary>
/// returns the logical line/column position from an offset
/// </summary>
Point OffsetToPosition(int offset);
TextLocation OffsetToPosition(int offset);
/// <summary>
/// returns the offset from a logical line/column position
/// </summary>
int PositionToOffset(Point p);
#endregion
int PositionToOffset(TextLocation p);
#endregion
/// <value>
/// A container where all TextAreaUpdate objects get stored
/// </value>

2
src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/MarkerStrategy/MarkerStrategy.cs

@ -100,7 +100,7 @@ namespace ICSharpCode.TextEditor.Document @@ -100,7 +100,7 @@ namespace ICSharpCode.TextEditor.Document
return markers;
}
public List<TextMarker> GetMarkers(Point position)
public List<TextMarker> GetMarkers(TextLocation position)
{
if (position.Y >= document.TotalNumberOfLines || position.Y < 0) {
return new List<TextMarker>();

12
src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/Selection/DefaultSelection.cs

@ -17,10 +17,10 @@ namespace ICSharpCode.TextEditor.Document @@ -17,10 +17,10 @@ namespace ICSharpCode.TextEditor.Document
{
IDocument document;
bool isRectangularSelection;
Point startPosition;
Point endPosition;
TextLocation startPosition;
TextLocation endPosition;
public Point StartPosition {
public TextLocation StartPosition {
get {
return startPosition;
}
@ -29,7 +29,7 @@ namespace ICSharpCode.TextEditor.Document @@ -29,7 +29,7 @@ namespace ICSharpCode.TextEditor.Document
}
}
public Point EndPosition {
public TextLocation EndPosition {
get {
return endPosition;
}
@ -96,7 +96,7 @@ namespace ICSharpCode.TextEditor.Document @@ -96,7 +96,7 @@ namespace ICSharpCode.TextEditor.Document
/// <summary>
/// Creates a new instance of <see cref="DefaultSelection"/>
/// </summary>
public DefaultSelection(IDocument document, Point startPosition, Point endPosition)
public DefaultSelection(IDocument document, TextLocation startPosition, TextLocation endPosition)
{
this.document = document;
this.startPosition = startPosition;
@ -110,7 +110,7 @@ namespace ICSharpCode.TextEditor.Document @@ -110,7 +110,7 @@ namespace ICSharpCode.TextEditor.Document
{
return String.Format("[DefaultSelection : StartPosition={0}, EndPosition={1}]", startPosition, endPosition);
}
public bool ContainsPosition(Point position)
public bool ContainsPosition(TextLocation position)
{
if (this.IsEmpty)
return false;

6
src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/Selection/ISelection.cs

@ -14,12 +14,12 @@ namespace ICSharpCode.TextEditor.Document @@ -14,12 +14,12 @@ namespace ICSharpCode.TextEditor.Document
/// </summary>
public interface ISelection
{
Point StartPosition {
TextLocation StartPosition {
get;
set;
}
Point EndPosition {
TextLocation EndPosition {
get;
set;
}
@ -59,6 +59,6 @@ namespace ICSharpCode.TextEditor.Document @@ -59,6 +59,6 @@ namespace ICSharpCode.TextEditor.Document
bool ContainsOffset(int offset);
bool ContainsPosition(Point position);
bool ContainsPosition(TextLocation position);
}
}

20
src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/Selection/SelectionManager.cs

@ -17,7 +17,7 @@ namespace ICSharpCode.TextEditor.Document @@ -17,7 +17,7 @@ namespace ICSharpCode.TextEditor.Document
/// </summary>
public class SelectionManager : IDisposable
{
internal Point selectionStart;
internal TextLocation selectionStart;
IDocument document;
TextArea textArea;
internal SelectFrom selectFrom = new SelectFrom();
@ -142,17 +142,17 @@ namespace ICSharpCode.TextEditor.Document @@ -142,17 +142,17 @@ namespace ICSharpCode.TextEditor.Document
}
}
public void SetSelection(Point startPosition, Point endPosition)
public void SetSelection(TextLocation startPosition, TextLocation endPosition)
{
SetSelection(new DefaultSelection(document, startPosition, endPosition));
}
public bool GreaterEqPos(Point p1, Point p2)
public bool GreaterEqPos(TextLocation p1, TextLocation p2)
{
return p1.Y > p2.Y || p1.Y == p2.Y && p1.X >= p2.X;
}
public void ExtendSelection(Point oldPosition, Point newPosition)
public void ExtendSelection(TextLocation oldPosition, TextLocation newPosition)
{
// where oldposition is where the cursor was,
// and newposition is where it has ended up from a click (both zero based)
@ -162,8 +162,8 @@ namespace ICSharpCode.TextEditor.Document @@ -162,8 +162,8 @@ namespace ICSharpCode.TextEditor.Document
return;
}
Point min;
Point max;
TextLocation min;
TextLocation max;
int oldnewX = newPosition.X;
bool oldIsGreater = GreaterEqPos(oldPosition, newPosition);
if (oldIsGreater) {
@ -205,7 +205,7 @@ namespace ICSharpCode.TextEditor.Document @@ -205,7 +205,7 @@ namespace ICSharpCode.TextEditor.Document
selection.StartPosition = selectionStart;
// this handles last line selection
if (selectFrom.where == WhereFrom.Gutter ) //&& newPosition.Y != oldPosition.Y)
selection.EndPosition = new Point(textArea.Caret.Column, textArea.Caret.Line);
selection.EndPosition = new TextLocation(textArea.Caret.Column, textArea.Caret.Line);
else {
newPosition.X = oldnewX;
selection.EndPosition = newPosition;
@ -230,12 +230,12 @@ namespace ICSharpCode.TextEditor.Document @@ -230,12 +230,12 @@ namespace ICSharpCode.TextEditor.Document
// - checks that there are more lines available after the current one
// - if there are then the next line is returned
// - if there are NOT then the last position on the given line is returned
public Point NextValidPosition(int line)
public TextLocation NextValidPosition(int line)
{
if (line < document.TotalNumberOfLines - 1)
return new Point(0, line + 1);
return new TextLocation(0, line + 1);
else
return new Point(document.GetLineSegment(document.TotalNumberOfLines - 1).Length + 1, line);
return new TextLocation(document.GetLineSegment(document.TotalNumberOfLines - 1).Length + 1, line);
}
void ClearWithoutUpdate()

128
src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/TextLocation.cs

@ -0,0 +1,128 @@ @@ -0,0 +1,128 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
// <version>$Revision: 2658$</version>
// </file>
using System;
namespace ICSharpCode.TextEditor
{
/// <summary>
/// A line/column position.
/// Text editor lines/columns are counting from zero.
/// </summary>
public struct TextLocation : IComparable<TextLocation>, IEquatable<TextLocation>
{
/// <summary>
/// Represents no text location (-1, -1).
/// </summary>
public static readonly TextLocation Empty = new TextLocation(-1, -1);
public TextLocation(int column, int line)
{
x = column;
y = line;
}
int x, y;
public int X {
get { return x; }
set { x = value; }
}
public int Y {
get { return y; }
set { y = value; }
}
public int Line {
get { return y; }
set { y = value; }
}
public int Column {
get { return x; }
set { x = value; }
}
public bool IsEmpty {
get {
return x <= 0 && y <= 0;
}
}
public override string ToString()
{
return string.Format("(Line {1}, Col {0})", this.x, this.y);
}
public override int GetHashCode()
{
return unchecked (87 * x.GetHashCode() ^ y.GetHashCode());
}
public override bool Equals(object obj)
{
if (!(obj is TextLocation)) return false;
return (TextLocation)obj == this;
}
public bool Equals(TextLocation other)
{
return this == other;
}
public static bool operator ==(TextLocation a, TextLocation b)
{
return a.x == b.x && a.y == b.y;
}
public static bool operator !=(TextLocation a, TextLocation b)
{
return a.x != b.x || a.y != b.y;
}
public static bool operator <(TextLocation a, TextLocation b)
{
if (a.y < b.y)
return true;
else if (a.y == b.y)
return a.x < b.x;
else
return false;
}
public static bool operator >(TextLocation a, TextLocation b)
{
if (a.y > b.y)
return true;
else if (a.y == b.y)
return a.x > b.x;
else
return false;
}
public static bool operator <=(TextLocation a, TextLocation b)
{
return !(a > b);
}
public static bool operator >=(TextLocation a, TextLocation b)
{
return !(a < b);
}
public int CompareTo(TextLocation other)
{
if (this == other)
return 0;
if (this < other)
return -1;
else
return 1;
}
}
}

33
src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/BracketHighlighter.cs

@ -13,30 +13,13 @@ namespace ICSharpCode.TextEditor @@ -13,30 +13,13 @@ namespace ICSharpCode.TextEditor
{
public class Highlight
{
Point openBrace;
Point closeBrace;
public TextLocation OpenBrace { get; set; }
public TextLocation CloseBrace { get; set; }
public Point OpenBrace {
get {
return openBrace;
}
set {
openBrace = value;
}
}
public Point CloseBrace {
get {
return closeBrace;
}
set {
closeBrace = value;
}
}
public Highlight(Point openBrace, Point closeBrace)
public Highlight(TextLocation openBrace, TextLocation closeBrace)
{
this.openBrace = openBrace;
this.closeBrace = closeBrace;
this.OpenBrace = openBrace;
this.CloseBrace = closeBrace;
}
}
@ -79,12 +62,12 @@ namespace ICSharpCode.TextEditor @@ -79,12 +62,12 @@ namespace ICSharpCode.TextEditor
}
char word = document.GetCharAt(Math.Max(0, Math.Min(document.TextLength - 1, searchOffset)));
Point endP = document.OffsetToPosition(searchOffset);
TextLocation endP = document.OffsetToPosition(searchOffset);
if (word == opentag) {
if (searchOffset < document.TextLength) {
int bracketOffset = TextUtilities.SearchBracketForward(document, searchOffset + 1, opentag, closingtag);
if (bracketOffset >= 0) {
Point p = document.OffsetToPosition(bracketOffset);
TextLocation p = document.OffsetToPosition(bracketOffset);
return new Highlight(p, endP);
}
}
@ -92,7 +75,7 @@ namespace ICSharpCode.TextEditor @@ -92,7 +75,7 @@ namespace ICSharpCode.TextEditor
if (searchOffset > 0) {
int bracketOffset = TextUtilities.SearchBracketBackward(document, searchOffset - 1, opentag, closingtag);
if (bracketOffset >= 0) {
Point p = document.OffsetToPosition(bracketOffset);
TextLocation p = document.OffsetToPosition(bracketOffset);
return new Highlight(p, endP);
}
}

8
src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/Caret.cs

@ -95,9 +95,9 @@ namespace ICSharpCode.TextEditor @@ -95,9 +95,9 @@ namespace ICSharpCode.TextEditor
}
}
public Point Position {
public TextLocation Position {
get {
return new Point(column, line);
return new TextLocation(column, line);
}
set {
line = value.Y;
@ -130,7 +130,7 @@ namespace ICSharpCode.TextEditor @@ -130,7 +130,7 @@ namespace ICSharpCode.TextEditor
// caretCreated = false;
}
public Point ValidatePosition(Point pos)
public TextLocation ValidatePosition(TextLocation pos)
{
int line = Math.Max(0, Math.Min(textArea.Document.TotalNumberOfLines - 1, pos.Y));
int column = Math.Max(0, pos.X);
@ -139,7 +139,7 @@ namespace ICSharpCode.TextEditor @@ -139,7 +139,7 @@ namespace ICSharpCode.TextEditor
LineSegment lineSegment = textArea.Document.GetLineSegment(line);
column = Math.Min(column, lineSegment.Length);
}
return new Point(column, line);
return new TextLocation(column, line);
}
/// <remarks>

2
src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/CompletionWindow/AbstractCompletionWindow.cs

@ -39,7 +39,7 @@ namespace ICSharpCode.TextEditor.Gui.CompletionWindow @@ -39,7 +39,7 @@ namespace ICSharpCode.TextEditor.Gui.CompletionWindow
protected virtual void SetLocation()
{
TextArea textArea = control.ActiveTextAreaControl.TextArea;
Point caretPos = textArea.Caret.Position;
TextLocation caretPos = textArea.Caret.Position;
int xpos = textArea.TextView.GetDrawingXPos(caretPos.Y, caretPos.X);
int rulerHeight = textArea.TextEditorProperties.ShowHorizontalRuler ? textArea.TextView.FontHeight : 0;

26
src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/GutterMargin.cs

@ -92,7 +92,7 @@ namespace ICSharpCode.TextEditor @@ -92,7 +92,7 @@ namespace ICSharpCode.TextEditor
public override void HandleMouseDown(Point mousepos, MouseButtons mouseButtons)
{
Point selectionStartPos;
TextLocation selectionStartPos;
textArea.SelectionManager.selectFrom.where = WhereFrom.Gutter;
int realline = textArea.TextView.GetLogicalLine(mousepos);
@ -107,13 +107,13 @@ namespace ICSharpCode.TextEditor @@ -107,13 +107,13 @@ namespace ICSharpCode.TextEditor
// whole line selection - start of line to start of next line
if (realline < textArea.Document.TotalNumberOfLines - 1)
{
textArea.SelectionManager.SetSelection(new DefaultSelection(textArea.Document, selectionStartPos, new Point(0, realline + 1)));
textArea.Caret.Position = new Point(0, realline + 1);
textArea.SelectionManager.SetSelection(new DefaultSelection(textArea.Document, selectionStartPos, new TextLocation(0, realline + 1)));
textArea.Caret.Position = new TextLocation(0, realline + 1);
}
else
{
textArea.SelectionManager.SetSelection(new DefaultSelection(textArea.Document, selectionStartPos, new Point(textArea.Document.GetLineSegment(realline).Length + 1, realline)));
textArea.Caret.Position = new Point(textArea.Document.GetLineSegment(realline).Length + 1, realline);
textArea.SelectionManager.SetSelection(new DefaultSelection(textArea.Document, selectionStartPos, new TextLocation(textArea.Document.GetLineSegment(realline).Length + 1, realline)));
textArea.Caret.Position = new TextLocation(textArea.Document.GetLineSegment(realline).Length + 1, realline);
}
}
else
@ -121,9 +121,9 @@ namespace ICSharpCode.TextEditor @@ -121,9 +121,9 @@ namespace ICSharpCode.TextEditor
// nothing is selected so make a new selection from cursor
selectionStartPos = textArea.Caret.Position;
// whole line selection - start of line to start of next line
textArea.SelectionManager.SetSelection(new DefaultSelection(textArea.Document, selectionStartPos, new Point(selectionStartPos.X, selectionStartPos.Y)));
textArea.SelectionManager.ExtendSelection(new Point(selectionStartPos.X, selectionStartPos.Y), new Point(0, realline));
textArea.Caret.Position = new Point(0, realline);
textArea.SelectionManager.SetSelection(new DefaultSelection(textArea.Document, selectionStartPos, new TextLocation(selectionStartPos.X, selectionStartPos.Y)));
textArea.SelectionManager.ExtendSelection(new TextLocation(selectionStartPos.X, selectionStartPos.Y), new TextLocation(0, realline));
textArea.Caret.Position = new TextLocation(0, realline);
}
}
else
@ -138,18 +138,18 @@ namespace ICSharpCode.TextEditor @@ -138,18 +138,18 @@ namespace ICSharpCode.TextEditor
// there is a selection)
textArea.mousepos = mousepos;
selectionStartPos = new Point(0, realline);
selectionStartPos = new TextLocation(0, realline);
textArea.SelectionManager.ClearSelection();
// whole line selection - start of line to start of next line
if (realline < textArea.Document.TotalNumberOfLines - 1)
{
textArea.SelectionManager.SetSelection(new DefaultSelection(textArea.Document, selectionStartPos, new Point(selectionStartPos.X, selectionStartPos.Y + 1)));
textArea.Caret.Position = new Point(selectionStartPos.X, selectionStartPos.Y + 1);
textArea.SelectionManager.SetSelection(new DefaultSelection(textArea.Document, selectionStartPos, new TextLocation(selectionStartPos.X, selectionStartPos.Y + 1)));
textArea.Caret.Position = new TextLocation(selectionStartPos.X, selectionStartPos.Y + 1);
}
else
{
textArea.SelectionManager.SetSelection(new DefaultSelection(textArea.Document, new Point(0, realline), new Point(textArea.Document.GetLineSegment(realline).Length + 1, selectionStartPos.Y)));
textArea.Caret.Position = new Point(textArea.Document.GetLineSegment(realline).Length + 1, selectionStartPos.Y);
textArea.SelectionManager.SetSelection(new DefaultSelection(textArea.Document, new TextLocation(0, realline), new TextLocation(textArea.Document.GetLineSegment(realline).Length + 1, selectionStartPos.Y)));
textArea.Caret.Position = new TextLocation(textArea.Document.GetLineSegment(realline).Length + 1, selectionStartPos.Y);
}
}
}

2
src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/InsightWindow/InsightWindow.cs

@ -60,7 +60,7 @@ namespace ICSharpCode.TextEditor.Gui.InsightWindow @@ -60,7 +60,7 @@ namespace ICSharpCode.TextEditor.Gui.InsightWindow
protected override void CaretOffsetChanged(object sender, EventArgs e)
{
// move the window under the caret (don't change the x position)
Point caretPos = control.ActiveTextAreaControl.Caret.Position;
TextLocation caretPos = control.ActiveTextAreaControl.Caret.Position;
int y = (int)((1 + caretPos.Y) * control.ActiveTextAreaControl.TextArea.TextView.FontHeight) - control.ActiveTextAreaControl.TextArea.VirtualTop.Y - 1 + control.ActiveTextAreaControl.TextArea.TextView.DrawingPosition.Y;
int xpos = control.ActiveTextAreaControl.TextArea.TextView.GetDrawingXPos(caretPos.Y, caretPos.X);

8
src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextArea.cs

@ -221,7 +221,7 @@ namespace ICSharpCode.TextEditor @@ -221,7 +221,7 @@ namespace ICSharpCode.TextEditor
void TextContentChanged(object sender, EventArgs e)
{
Caret.Position = new Point(0, 0);
Caret.Position = new TextLocation(0, 0);
SelectionManager.SelectionCollection.Clear();
}
void SearchMatchingBracket(object sender, EventArgs e)
@ -409,8 +409,8 @@ namespace ICSharpCode.TextEditor @@ -409,8 +409,8 @@ namespace ICSharpCode.TextEditor
toolTipRectangle = new Rectangle(mousePos.X - 4, mousePos.Y - 4, 8, 8);
Point logicPos = textView.GetLogicalPosition(mousePos.X - textView.DrawingPosition.Left,
mousePos.Y - textView.DrawingPosition.Top);
TextLocation logicPos = textView.GetLogicalPosition(mousePos.X - textView.DrawingPosition.Left,
mousePos.Y - textView.DrawingPosition.Top);
bool inDocument = textView.DrawingPosition.Contains(mousePos)
&& logicPos.Y >= 0 && logicPos.Y < Document.TotalNumberOfLines;
ToolTipRequestEventArgs args = new ToolTipRequestEventArgs(mousePos, logicPos, inDocument);
@ -456,7 +456,7 @@ namespace ICSharpCode.TextEditor @@ -456,7 +456,7 @@ namespace ICSharpCode.TextEditor
lastMouseInMargin = null;
}
if (textView.DrawingPosition.Contains(e.X, e.Y)) {
Point realmousepos = TextView.GetLogicalPosition(e.X - TextView.DrawingPosition.X, e.Y - TextView.DrawingPosition.Y);
TextLocation realmousepos = TextView.GetLogicalPosition(e.X - TextView.DrawingPosition.X, e.Y - TextView.DrawingPosition.Y);
if(SelectionManager.IsSelected(Document.PositionToOffset(realmousepos)) && MouseButtons == MouseButtons.None) {
// mouse is hovering over a selection, so show default mouse
this.Cursor = Cursors.Default;

2
src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaClipboardHandler.cs

@ -152,7 +152,7 @@ namespace ICSharpCode.TextEditor @@ -152,7 +152,7 @@ namespace ICSharpCode.TextEditor
textArea.BeginUpdate();
textArea.Caret.Position = textArea.Document.OffsetToPosition(lineWhereCaretIs.Offset);
textArea.SelectionManager.RemoveSelectedText();
textArea.Document.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.PositionToEnd, new Point(0, curLineNr)));
textArea.Document.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.PositionToEnd, new TextLocation(0, curLineNr)));
textArea.EndUpdate();
}
}

2
src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaControl.cs

@ -417,7 +417,7 @@ namespace ICSharpCode.TextEditor @@ -417,7 +417,7 @@ namespace ICSharpCode.TextEditor
{
textArea.Focus();
textArea.SelectionManager.ClearSelection();
textArea.Caret.Position = new Point(column, line);
textArea.Caret.Position = new TextLocation(column, line);
textArea.SetDesiredColumn();
ScrollToCaret();
}

6
src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaDragDropHandler.cs

@ -112,11 +112,11 @@ namespace ICSharpCode.TextEditor @@ -112,11 +112,11 @@ namespace ICSharpCode.TextEditor
Point p = textArea.PointToClient(new Point(e.X, e.Y));
if (textArea.TextView.DrawingPosition.Contains(p.X, p.Y)) {
Point realmousepos= textArea.TextView.GetLogicalPosition(p.X - textArea.TextView.DrawingPosition.X,
p.Y - textArea.TextView.DrawingPosition.Y);
TextLocation realmousepos= textArea.TextView.GetLogicalPosition(p.X - textArea.TextView.DrawingPosition.X,
p.Y - textArea.TextView.DrawingPosition.Y);
int lineNr = Math.Min(textArea.Document.TotalNumberOfLines - 1, Math.Max(0, realmousepos.Y));
textArea.Caret.Position = new Point(realmousepos.X, lineNr);
textArea.Caret.Position = new TextLocation(realmousepos.X, lineNr);
textArea.SetDesiredColumn();
if (e.Data.GetDataPresent(typeof(string))) {
e.Effect = GetDragDropEffect(e);

46
src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaMouseHandler.cs

@ -134,8 +134,9 @@ namespace ICSharpCode.TextEditor @@ -134,8 +134,9 @@ namespace ICSharpCode.TextEditor
{
textArea.SelectionManager.ClearSelection();
Point clickPosition = textArea.TextView.GetLogicalPosition(mousepos.X - textArea.TextView.DrawingPosition.X,
mousepos.Y - textArea.TextView.DrawingPosition.Y);
TextLocation clickPosition = textArea.TextView.GetLogicalPosition(
mousepos.X - textArea.TextView.DrawingPosition.X,
mousepos.Y - textArea.TextView.DrawingPosition.Y);
textArea.Caret.Position = clickPosition;
textArea.SetDesiredColumn();
}
@ -199,11 +200,12 @@ namespace ICSharpCode.TextEditor @@ -199,11 +200,12 @@ namespace ICSharpCode.TextEditor
{
Point mousepos;
mousepos = textArea.mousepos;
Point realmousepos = textArea.TextView.GetLogicalPosition(Math.Max(0, mousepos.X - textArea.TextView.DrawingPosition.X),
mousepos.Y - textArea.TextView.DrawingPosition.Y);
TextLocation realmousepos = textArea.TextView.GetLogicalPosition(
Math.Max(0, mousepos.X - textArea.TextView.DrawingPosition.X),
mousepos.Y - textArea.TextView.DrawingPosition.Y);
int y = realmousepos.Y;
realmousepos = textArea.Caret.ValidatePosition(realmousepos);
Point oldPos = textArea.Caret.Position;
TextLocation oldPos = textArea.Caret.Position;
if (oldPos == realmousepos && textArea.SelectionManager.selectFrom.where != WhereFrom.Gutter)
{
return;
@ -213,7 +215,7 @@ namespace ICSharpCode.TextEditor @@ -213,7 +215,7 @@ namespace ICSharpCode.TextEditor
if (textArea.SelectionManager.selectFrom.where == WhereFrom.Gutter) {
if(realmousepos.Y < textArea.SelectionManager.selectionStart.Y) {
// the selection has moved above the startpoint
textArea.Caret.Position = new Point(0, realmousepos.Y);
textArea.Caret.Position = new TextLocation(0, realmousepos.Y);
} else {
// the selection has moved below the startpoint
textArea.Caret.Position = textArea.SelectionManager.NextValidPosition(realmousepos.Y);
@ -223,11 +225,11 @@ namespace ICSharpCode.TextEditor @@ -223,11 +225,11 @@ namespace ICSharpCode.TextEditor
}
// moves selection across whole words for double-click initiated selection
if (minSelection != nilPoint && textArea.SelectionManager.SelectionCollection.Count > 0 && textArea.SelectionManager.selectFrom.where == WhereFrom.TArea) {
if (!minSelection.IsEmpty && textArea.SelectionManager.SelectionCollection.Count > 0 && textArea.SelectionManager.selectFrom.where == WhereFrom.TArea) {
// Extend selection when selection was started with double-click
ISelection selection = textArea.SelectionManager.SelectionCollection[0];
Point min = textArea.SelectionManager.GreaterEqPos(minSelection, maxSelection) ? maxSelection : minSelection;
Point max = textArea.SelectionManager.GreaterEqPos(minSelection, maxSelection) ? minSelection : maxSelection;
TextLocation min = textArea.SelectionManager.GreaterEqPos(minSelection, maxSelection) ? maxSelection : minSelection;
TextLocation max = textArea.SelectionManager.GreaterEqPos(minSelection, maxSelection) ? minSelection : maxSelection;
if (textArea.SelectionManager.GreaterEqPos(max, realmousepos) && textArea.SelectionManager.GreaterEqPos(realmousepos, min)) {
textArea.SelectionManager.SetSelection(min, max);
} else if (textArea.SelectionManager.GreaterEqPos(max, realmousepos)) {
@ -335,21 +337,21 @@ namespace ICSharpCode.TextEditor @@ -335,21 +337,21 @@ namespace ICSharpCode.TextEditor
lastTime = DateTime.Now;
lastmousedownpos = new Point(e.X, e.Y);
if(textArea.SelectionManager.selectFrom.where == WhereFrom.Gutter) {
if(minSelection != nilPoint && maxSelection != nilPoint && textArea.SelectionManager.SelectionCollection.Count > 0) {
if (textArea.SelectionManager.selectFrom.where == WhereFrom.Gutter) {
if (!minSelection.IsEmpty && !maxSelection.IsEmpty && textArea.SelectionManager.SelectionCollection.Count > 0) {
textArea.SelectionManager.SelectionCollection[0].StartPosition = minSelection;
textArea.SelectionManager.SelectionCollection[0].EndPosition = maxSelection;
textArea.SelectionManager.selectionStart = minSelection;
minSelection = nilPoint;
maxSelection = nilPoint;
minSelection = TextLocation.Empty;
maxSelection = TextLocation.Empty;
}
}
return;
}
}
minSelection = nilPoint;
maxSelection = nilPoint;
minSelection = TextLocation.Empty;
maxSelection = TextLocation.Empty;
lastTime = DateTime.Now;
lastmousedownpos = mousedownpos = new Point(e.X, e.Y);
@ -362,7 +364,7 @@ namespace ICSharpCode.TextEditor @@ -362,7 +364,7 @@ namespace ICSharpCode.TextEditor
clickedOnSelectedText = true;
}
textArea.SelectionManager.SetSelection(new DefaultSelection(textArea.TextView.Document, new Point(marker.StartColumn, marker.StartLine), new Point(marker.EndColumn, marker.EndLine)));
textArea.SelectionManager.SetSelection(new DefaultSelection(textArea.TextView.Document, new TextLocation(marker.StartColumn, marker.StartLine), new TextLocation(marker.EndColumn, marker.EndLine)));
textArea.Focus();
return;
}
@ -370,7 +372,7 @@ namespace ICSharpCode.TextEditor @@ -370,7 +372,7 @@ namespace ICSharpCode.TextEditor
if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift) {
ExtendSelectionToMouse();
} else {
Point realmousepos = textArea.TextView.GetLogicalPosition(mousepos.X - textArea.TextView.DrawingPosition.X, mousepos.Y - textArea.TextView.DrawingPosition.Y);
TextLocation realmousepos = textArea.TextView.GetLogicalPosition(mousepos.X - textArea.TextView.DrawingPosition.X, mousepos.Y - textArea.TextView.DrawingPosition.Y);
clickedOnSelectedText = false;
int offset = textArea.Document.PositionToOffset(realmousepos);
@ -381,7 +383,7 @@ namespace ICSharpCode.TextEditor @@ -381,7 +383,7 @@ namespace ICSharpCode.TextEditor
} else {
textArea.SelectionManager.ClearSelection();
if (mousepos.Y > 0 && mousepos.Y < textArea.TextView.DrawingPosition.Height) {
Point pos = new Point();
TextLocation pos = new TextLocation();
pos.Y = Math.Min(textArea.Document.TotalNumberOfLines - 1, realmousepos.Y);
pos.X = realmousepos.X;
textArea.Caret.Position = pos;
@ -392,14 +394,14 @@ namespace ICSharpCode.TextEditor @@ -392,14 +394,14 @@ namespace ICSharpCode.TextEditor
} else if (button == MouseButtons.Right) {
// Rightclick sets the cursor to the click position unless
// the previous selection was clicked
Point realmousepos = textArea.TextView.GetLogicalPosition(mousepos.X - textArea.TextView.DrawingPosition.X, mousepos.Y - textArea.TextView.DrawingPosition.Y);
TextLocation realmousepos = textArea.TextView.GetLogicalPosition(mousepos.X - textArea.TextView.DrawingPosition.X, mousepos.Y - textArea.TextView.DrawingPosition.Y);
int offset = textArea.Document.PositionToOffset(realmousepos);
if (!textArea.SelectionManager.HasSomethingSelected ||
!textArea.SelectionManager.IsSelected(offset))
{
textArea.SelectionManager.ClearSelection();
if (mousepos.Y > 0 && mousepos.Y < textArea.TextView.DrawingPosition.Height) {
Point pos = new Point();
TextLocation pos = new TextLocation();
pos.Y = Math.Min(textArea.Document.TotalNumberOfLines - 1, realmousepos.Y);
pos.X = realmousepos.X;
textArea.Caret.Position = pos;
@ -469,8 +471,8 @@ namespace ICSharpCode.TextEditor @@ -469,8 +471,8 @@ namespace ICSharpCode.TextEditor
return offset;
}
Point minSelection = nilPoint;
Point maxSelection = nilPoint;
TextLocation minSelection = TextLocation.Empty;
TextLocation maxSelection = TextLocation.Empty;
void OnDoubleClick(object sender, System.EventArgs e)
{

18
src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaUpdate.cs

@ -27,7 +27,7 @@ namespace ICSharpCode.TextEditor @@ -27,7 +27,7 @@ namespace ICSharpCode.TextEditor
/// </summary>
public class TextAreaUpdate
{
Point position;
TextLocation position;
TextAreaUpdateType type;
public TextAreaUpdateType TextAreaUpdateType {
@ -36,7 +36,7 @@ namespace ICSharpCode.TextEditor @@ -36,7 +36,7 @@ namespace ICSharpCode.TextEditor
}
}
public Point Position {
public TextLocation Position {
get {
return position;
}
@ -44,7 +44,7 @@ namespace ICSharpCode.TextEditor @@ -44,7 +44,7 @@ namespace ICSharpCode.TextEditor
/// <summary>
/// Creates a new instance of <see cref="TextAreaUpdate"/>
/// </summary>
/// </summary>
public TextAreaUpdate(TextAreaUpdateType type)
{
this.type = type;
@ -52,8 +52,8 @@ namespace ICSharpCode.TextEditor @@ -52,8 +52,8 @@ namespace ICSharpCode.TextEditor
/// <summary>
/// Creates a new instance of <see cref="TextAreaUpdate"/>
/// </summary>
public TextAreaUpdate(TextAreaUpdateType type, Point position)
/// </summary>
public TextAreaUpdate(TextAreaUpdateType type, TextLocation position)
{
this.type = type;
this.position = position;
@ -61,20 +61,20 @@ namespace ICSharpCode.TextEditor @@ -61,20 +61,20 @@ namespace ICSharpCode.TextEditor
/// <summary>
/// Creates a new instance of <see cref="TextAreaUpdate"/>
/// </summary>
/// </summary>
public TextAreaUpdate(TextAreaUpdateType type, int startLine, int endLine)
{
this.type = type;
this.position = new Point(startLine, endLine);
this.position = new TextLocation(startLine, endLine);
}
/// <summary>
/// Creates a new instance of <see cref="TextAreaUpdate"/>
/// </summary>
/// </summary>
public TextAreaUpdate(TextAreaUpdateType type, int singleLine)
{
this.type = type;
this.position = new Point(0, singleLine);
this.position = new TextLocation(0, singleLine);
}
public override string ToString()

12
src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextView.cs

@ -726,12 +726,12 @@ namespace ICSharpCode.TextEditor @@ -726,12 +726,12 @@ namespace ICSharpCode.TextEditor
/// <summary>
/// returns line/column for a visual point position
/// </summary>
public Point GetLogicalPosition(int xPos, int yPos)
public TextLocation GetLogicalPosition(int xPos, int yPos)
{
xPos += (int)(textArea.VirtualTop.X * WideSpaceWidth);
int clickedVisualLine = Math.Max(0, (yPos + this.textArea.VirtualTop.Y) / fontHeight);
int logicalLine = Document.GetFirstLogicalLine(clickedVisualLine);
Point pos = GetLogicalColumn(logicalLine, xPos);
TextLocation pos = GetLogicalColumn(logicalLine, xPos);
return pos;
}
@ -744,12 +744,12 @@ namespace ICSharpCode.TextEditor @@ -744,12 +744,12 @@ namespace ICSharpCode.TextEditor
return Document.GetFirstLogicalLine(clickedVisualLine);
}
public Point GetLogicalColumn(int firstLogicalLine, int xPos)
public TextLocation GetLogicalColumn(int firstLogicalLine, int xPos)
{
float spaceWidth = WideSpaceWidth;
LineSegment line = firstLogicalLine < Document.TotalNumberOfLines ? Document.GetLineSegment(firstLogicalLine) : null;
if (line == null) {
return new Point((int)(xPos / spaceWidth), firstLogicalLine);
return new TextLocation((int)(xPos / spaceWidth), firstLogicalLine);
}
int lineNumber = firstLogicalLine;
@ -771,7 +771,7 @@ namespace ICSharpCode.TextEditor @@ -771,7 +771,7 @@ namespace ICSharpCode.TextEditor
paintPos += folding.FoldText.Length * spaceWidth;
// special case when xPos is inside the fold marker
if (xPos <= paintPos - (paintPos - oldPaintPos) / 2) {
return new Point(logicalColumn, lineNumber);
return new TextLocation(logicalColumn, lineNumber);
}
logicalColumn = folding.EndColumn;
if (lineNumber != folding.EndLine) {
@ -801,7 +801,7 @@ namespace ICSharpCode.TextEditor @@ -801,7 +801,7 @@ namespace ICSharpCode.TextEditor
// when the paint position is reached, give it back otherwise advance to the next char
if (xPos <= paintPos - (paintPos - oldPaintPos) / 2) {
return new Point(logicalColumn, lineNumber);
return new TextLocation(logicalColumn, lineNumber);
}
++logicalColumn;

6
src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/ToolTipRequestEventArgs.cs

@ -15,7 +15,7 @@ namespace ICSharpCode.TextEditor @@ -15,7 +15,7 @@ namespace ICSharpCode.TextEditor
public class ToolTipRequestEventArgs
{
Point mousePosition;
Point logicalPosition;
TextLocation logicalPosition;
bool inDocument;
public Point MousePosition {
@ -24,7 +24,7 @@ namespace ICSharpCode.TextEditor @@ -24,7 +24,7 @@ namespace ICSharpCode.TextEditor
}
}
public Point LogicalPosition {
public TextLocation LogicalPosition {
get {
return logicalPosition;
}
@ -52,7 +52,7 @@ namespace ICSharpCode.TextEditor @@ -52,7 +52,7 @@ namespace ICSharpCode.TextEditor
toolTipText = text;
}
public ToolTipRequestEventArgs(Point mousePosition, Point logicalPosition, bool inDocument)
public ToolTipRequestEventArgs(Point mousePosition, TextLocation logicalPosition, bool inDocument)
{
this.mousePosition = mousePosition;
this.logicalPosition = logicalPosition;

6
src/Libraries/ICSharpCode.TextEditor/Project/Src/Undo/UndoStack.cs

@ -194,10 +194,10 @@ namespace ICSharpCode.TextEditor.Undo @@ -194,10 +194,10 @@ namespace ICSharpCode.TextEditor.Undo
class UndoableSetCaretPosition : IUndoableOperation
{
UndoStack stack;
Point pos;
Point redoPos;
TextLocation pos;
TextLocation redoPos;
public UndoableSetCaretPosition(UndoStack stack, Point pos)
public UndoableSetCaretPosition(UndoStack stack, TextLocation pos)
{
this.stack = stack;
this.pos = pos;

3
src/Libraries/NRefactory/Project/Src/Lexer/VBNet/Lexer.cs

@ -83,6 +83,7 @@ namespace ICSharpCode.NRefactory.Parser.VB @@ -83,6 +83,7 @@ namespace ICSharpCode.NRefactory.Parser.VB
}
ch = (char)ReaderRead();
bool oldLineEnd = lineEnd;
lineEnd = false;
while (Char.IsWhiteSpace(ch)) {
if (HandleLineEnd(ch)) {
@ -99,7 +100,7 @@ namespace ICSharpCode.NRefactory.Parser.VB @@ -99,7 +100,7 @@ namespace ICSharpCode.NRefactory.Parser.VB
if (!lineEnd) {
errors.Error(Line, Col, String.Format("Return expected"));
}
lineEnd = false;
lineEnd = oldLineEnd;
continue;
}

1
src/Libraries/NRefactory/Project/Src/Location.cs

@ -11,6 +11,7 @@ namespace ICSharpCode.NRefactory @@ -11,6 +11,7 @@ namespace ICSharpCode.NRefactory
{
/// <summary>
/// A line/column position.
/// NRefactory lines/columns are counting from one.
/// </summary>
public struct Location : IComparable<Location>, IEquatable<Location>
{

46
src/Libraries/NRefactory/Test/Lexer/VBNet/CustomLexerTests.cs

@ -0,0 +1,46 @@ @@ -0,0 +1,46 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
// <version>$Revision: 2658$</version>
// </file>
using System;
using System.IO;
using NUnit.Framework;
using NUnit.Framework.SyntaxHelpers;
using ICSharpCode.NRefactory.Parser;
using ICSharpCode.NRefactory.Parser.VB;
namespace ICSharpCode.NRefactory.Tests.Lexer.VB
{
[TestFixture]
public class CustomLexerTests
{
ILexer GenerateLexer(StringReader sr)
{
return ParserFactory.CreateLexer(SupportedLanguage.VBNet, sr);
}
[Test]
public void TestSingleEOLForMulitpleLines()
{
ILexer lexer = GenerateLexer(new StringReader("Stop\n\n\nEnd"));
Assert.That(lexer.NextToken().kind, Is.EqualTo(Tokens.Stop));
Assert.That(lexer.NextToken().kind, Is.EqualTo(Tokens.EOL));
Assert.That(lexer.NextToken().kind, Is.EqualTo(Tokens.End));
Assert.That(lexer.NextToken().kind, Is.EqualTo(Tokens.EOL));
Assert.That(lexer.NextToken().kind, Is.EqualTo(Tokens.EOF));
}
[Test]
public void TestSingleEOLForMulitpleLinesWithContinuation()
{
ILexer lexer = GenerateLexer(new StringReader("Stop\n _\n\nEnd"));
Assert.That(lexer.NextToken().kind, Is.EqualTo(Tokens.Stop));
Assert.That(lexer.NextToken().kind, Is.EqualTo(Tokens.EOL));
Assert.That(lexer.NextToken().kind, Is.EqualTo(Tokens.End));
Assert.That(lexer.NextToken().kind, Is.EqualTo(Tokens.EOL));
Assert.That(lexer.NextToken().kind, Is.EqualTo(Tokens.EOF));
}
}
}

1
src/Libraries/NRefactory/Test/NRefactoryTests.csproj

@ -46,6 +46,7 @@ @@ -46,6 +46,7 @@
<Compile Include="AssemblyInfo.cs" />
<Compile Include="Lexer\CSharp\LexerTests.cs" />
<Compile Include="General\UnitTest.cs" />
<Compile Include="Lexer\VBNet\CustomLexerTests.cs" />
<Compile Include="Parser\Expressions\LambdaExpressionTests.cs" />
<Compile Include="Parser\Expressions\QueryExpressionTests.cs" />
<Compile Include="Output\SnippetConversion.cs" />

1
src/Main/Base/Project/Src/Gui/AbstractViewContentHandlingLoadErrors.cs

@ -91,6 +91,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -91,6 +91,7 @@ namespace ICSharpCode.SharpDevelop.Gui
if (errorTextBox == null) {
errorTextBox = new TextBox();
errorTextBox.Multiline = true;
errorTextBox.ScrollBars = ScrollBars.Both;
errorTextBox.ReadOnly = true;
errorTextBox.BackColor = SystemColors.Window;
errorTextBox.Dock = DockStyle.Fill;

4
src/Main/Base/Project/Src/Gui/Pads/SearchResultPad/Nodes/SearchResultNode.cs

@ -25,7 +25,7 @@ namespace SearchAndReplace @@ -25,7 +25,7 @@ namespace SearchAndReplace
{
SearchResultMatch result;
Point startPosition;
TextLocation startPosition;
string positionText;
string displayText;
string specialText;
@ -58,7 +58,7 @@ namespace SearchAndReplace @@ -58,7 +58,7 @@ namespace SearchAndReplace
drawDefault = false;
this.result = result;
startPosition = result.GetStartPosition(document);
Point endPosition = result.GetEndPosition(document);
TextLocation endPosition = result.GetEndPosition(document);
positionText = "(" + (startPosition.Y + 1) + ", " + (startPosition.X + 1) + ") ";
LineSegment line = document.GetLineSegment(startPosition.Y);

13
src/Main/Base/Project/Src/Gui/Pads/SearchResultPad/SearchResultMatch.cs

@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
using System;
using System.Drawing;
using ICSharpCode.TextEditor;
using ICSharpCode.TextEditor.Document;
namespace SearchAndReplace
@ -61,12 +62,12 @@ namespace SearchAndReplace @@ -61,12 +62,12 @@ namespace SearchAndReplace
this.length = length;
}
public virtual Point GetStartPosition(IDocument document)
public virtual TextLocation GetStartPosition(IDocument document)
{
return document.OffsetToPosition(Offset);
}
public virtual Point GetEndPosition(IDocument document)
public virtual TextLocation GetEndPosition(IDocument document)
{
return document.OffsetToPosition(Offset + Length);
}
@ -90,14 +91,14 @@ namespace SearchAndReplace @@ -90,14 +91,14 @@ namespace SearchAndReplace
public class SimpleSearchResultMatch : SearchResultMatch
{
Point position;
TextLocation position;
public override Point GetStartPosition(IDocument doc)
public override TextLocation GetStartPosition(IDocument doc)
{
return position;
}
public override Point GetEndPosition(IDocument doc)
public override TextLocation GetEndPosition(IDocument doc)
{
return position;
}
@ -110,7 +111,7 @@ namespace SearchAndReplace @@ -110,7 +111,7 @@ namespace SearchAndReplace
}
}
public SimpleSearchResultMatch(string displayText, Point position) : base(0, 0)
public SimpleSearchResultMatch(string displayText, TextLocation position) : base(0, 0)
{
this.position = position;
this.displayText = displayText;

15
src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs

@ -60,7 +60,7 @@ namespace ICSharpCode.SharpDevelop.Project.Converter @@ -60,7 +60,7 @@ namespace ICSharpCode.SharpDevelop.Project.Converter
if (item.ItemType == ItemType.Compile) {
return 50;
} else if (ItemType.DefaultFileItems.Contains(item.ItemType)) {
return 10;
return 4;
} else {
return 1;
}
@ -137,7 +137,7 @@ namespace ICSharpCode.SharpDevelop.Project.Converter @@ -137,7 +137,7 @@ namespace ICSharpCode.SharpDevelop.Project.Converter
totalWork += GetRequiredWork(item);
}
monitor.BeginTask("Converting", sourceItems.Count, true);
monitor.BeginTask("Converting", totalWork, true);
int workDone = 0;
foreach (ProjectItem item in sourceItems) {
FileProjectItem fileItem = item as FileProjectItem;
@ -273,5 +273,16 @@ namespace ICSharpCode.SharpDevelop.Project.Converter @@ -273,5 +273,16 @@ namespace ICSharpCode.SharpDevelop.Project.Converter
base.ConvertFile(sourceItem, targetItem);
}
}
protected override void CopyProperties(IProject sourceProject, IProject targetProject)
{
base.CopyProperties(sourceProject, targetProject);
// WarningsAsErrors/NoWarn refers to warning numbers that are completely different for
// the two compilers.
MSBuildBasedProject p = (MSBuildBasedProject)targetProject;
p.SetProperty("WarningsAsErrors", null);
p.SetProperty("NoWarn", null);
}
}
}

7
src/Main/Base/Project/Src/Project/MSBuildInternals.cs

@ -353,7 +353,12 @@ namespace ICSharpCode.SharpDevelop.Project @@ -353,7 +353,12 @@ namespace ICSharpCode.SharpDevelop.Project
}
}
}
var referenceDict = references.ToDictionary(item => item.Include);
var referenceDict = new Dictionary<string, ReferenceProjectItem>();
foreach (ReferenceProjectItem item in references) {
// references could be duplicate, so we cannot use referenceDict.Add or reference.ToDictionary
referenceDict[item.Include] = item;
}
#if DEBUG
//engine.RegisterLogger(new MSBuild.ConsoleLogger(Microsoft.Build.Framework.LoggerVerbosity.Detailed));

3
src/Main/Base/Project/Src/Services/Debugger/DebuggerGridControl.cs

@ -11,6 +11,7 @@ using System.Drawing; @@ -11,6 +11,7 @@ using System.Drawing;
using System.Windows.Forms;
using ICSharpCode.SharpDevelop.Widgets.TreeGrid;
using ICSharpCode.TextEditor;
namespace ICSharpCode.SharpDevelop.Debugging
{
@ -71,7 +72,7 @@ namespace ICSharpCode.SharpDevelop.Debugging @@ -71,7 +72,7 @@ namespace ICSharpCode.SharpDevelop.Debugging
DynamicTreeRow.ChildForm frm;
public void ShowForm(ICSharpCode.TextEditor.TextArea textArea, Point logicTextPos)
public void ShowForm(ICSharpCode.TextEditor.TextArea textArea, TextLocation logicTextPos)
{
frm = new DynamicTreeRow.ChildForm();
frm.AllowResizing = false;

4
src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs

@ -280,7 +280,7 @@ namespace ICSharpCode.SharpDevelop.Debugging @@ -280,7 +280,7 @@ namespace ICSharpCode.SharpDevelop.Debugging
{
if (mouseButtons != MouseButtons.Left) return;
Rectangle viewRect = iconBar.TextArea.TextView.DrawingPosition;
Point logicPos = iconBar.TextArea.TextView.GetLogicalPosition(0, mousepos.Y - viewRect.Top);
TextLocation logicPos = iconBar.TextArea.TextView.GetLogicalPosition(0, mousepos.Y - viewRect.Top);
if (logicPos.Y >= 0 && logicPos.Y < iconBar.TextArea.Document.TotalNumberOfLines) {
ToggleBreakpointAt(iconBar.TextArea.Document, iconBar.TextArea.MotherTextEditorControl.FileName, logicPos.Y);
@ -372,7 +372,7 @@ namespace ICSharpCode.SharpDevelop.Debugging @@ -372,7 +372,7 @@ namespace ICSharpCode.SharpDevelop.Debugging
/// </summary>
internal static ToolTipInfo GetToolTipInfo(TextArea textArea, ToolTipRequestEventArgs e)
{
Point logicPos = e.LogicalPosition;
TextLocation logicPos = e.LogicalPosition;
IDocument doc = textArea.Document;
IExpressionFinder expressionFinder = ParserService.GetExpressionFinder(textArea.MotherTextEditorControl.FileName);
if (expressionFinder == null)

2
src/Main/Base/Project/Src/Services/RefactoringService/FindReferencesAndRenameHelper.cs

@ -70,7 +70,7 @@ namespace ICSharpCode.SharpDevelop.Refactoring @@ -70,7 +70,7 @@ namespace ICSharpCode.SharpDevelop.Refactoring
if (fileName == null)
return;
ProvidedDocumentInformation documentInformation = FindReferencesAndRenameHelper.GetDocumentInformation(fileName);
int offset = documentInformation.CreateDocument().PositionToOffset(new Point(region.BeginColumn - 1, region.BeginLine - 1));
int offset = documentInformation.CreateDocument().PositionToOffset(new TextLocation(region.BeginColumn - 1, region.BeginLine - 1));
string text = documentInformation.TextBuffer.GetText(offset, Math.Min(name.Length + 30, documentInformation.TextBuffer.Length - offset - 1));
int offsetChange = -1;
do {

2
src/Main/Base/Project/Src/Services/RefactoringService/TextEditorDocument.cs

@ -72,7 +72,7 @@ namespace ICSharpCode.SharpDevelop.Refactoring @@ -72,7 +72,7 @@ namespace ICSharpCode.SharpDevelop.Refactoring
public int PositionToOffset(int line, int column)
{
return doc.PositionToOffset(new Point(column - 1, line - 1));
return doc.PositionToOffset(new TextLocation(column - 1, line - 1));
}
public void Insert(int offset, string text)

3
src/Main/Base/Project/Src/TextEditor/Commands/ClassBookmarkMenuBuilder.cs

@ -23,6 +23,7 @@ using ICSharpCode.SharpDevelop.Project; @@ -23,6 +23,7 @@ using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Refactoring;
using ICSharpCode.TextEditor.Document;
using SearchAndReplace;
using ICSharpCode.TextEditor;
namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
{
@ -311,7 +312,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands @@ -311,7 +312,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
if (derivedClass.CompilationUnit == null) continue;
if (derivedClass.CompilationUnit.FileName == null) continue;
SearchResultMatch res = new SimpleSearchResultMatch(derivedClass.FullyQualifiedName, new Point(derivedClass.Region.BeginColumn - 1, derivedClass.Region.BeginLine - 1));
SearchResultMatch res = new SimpleSearchResultMatch(derivedClass.FullyQualifiedName, new TextLocation(derivedClass.Region.BeginColumn - 1, derivedClass.Region.BeginLine - 1));
res.ProvidedDocumentInformation = FindReferencesAndRenameHelper.GetDocumentInformation(derivedClass.CompilationUnit.FileName);
results.Add(res);
}

2
src/Main/Base/Project/Src/TextEditor/Commands/ClassMemberMenuBuilder.cs

@ -183,7 +183,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands @@ -183,7 +183,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
if (derivedClass.CompilationUnit.FileName == null) continue;
IMember m = MemberLookupHelper.FindSimilarMember(derivedClass, member);
if (m != null && !m.Region.IsEmpty) {
SearchResultMatch res = new SimpleSearchResultMatch(m.FullyQualifiedName, new Point(m.Region.BeginColumn - 1, m.Region.BeginLine - 1));
SearchResultMatch res = new SimpleSearchResultMatch(m.FullyQualifiedName, new TextLocation(m.Region.BeginColumn - 1, m.Region.BeginLine - 1));
res.ProvidedDocumentInformation = FindReferencesAndRenameHelper.GetDocumentInformation(derivedClass.CompilationUnit.FileName);
results.Add(res);
}

2
src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/CodeGenerationForm.cs

@ -48,7 +48,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands @@ -48,7 +48,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
cancelButton.Text = ResourceService.GetString("Global.CancelButtonText");
// selectionListBox.Sorted = true;
Point caretPos = textEditorControl.ActiveTextAreaControl.Caret.Position;
TextLocation caretPos = textEditorControl.ActiveTextAreaControl.Caret.Position;
TextArea textArea = textEditorControl.ActiveTextAreaControl.TextArea;
TextView textView = textArea.TextView;
Point visualPos;

2
src/Main/Base/Project/Src/TextEditor/Commands/ToolCommands.cs

@ -57,7 +57,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands @@ -57,7 +57,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
textarea.Document.Insert(textarea.ActiveTextAreaControl.Caret.Offset, colorstr);
int lineNumber = textarea.Document.GetLineNumberForOffset(textarea.ActiveTextAreaControl.Caret.Offset);
textarea.ActiveTextAreaControl.Caret.Column += colorstr.Length;
textarea.Document.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.SingleLine, new Point(0, lineNumber)));
textarea.Document.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.SingleLine, new TextLocation(0, lineNumber)));
textarea.Document.CommitUpdate();
}
}

4
src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CodeCompletionData.cs

@ -195,8 +195,8 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -195,8 +195,8 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
}
if (c != null && text.Length > c.Name.Length) {
textArea.InsertString(text.Substring(0, c.Name.Length + 1));
Point start = textArea.Caret.Position;
Point end;
TextLocation start = textArea.Caret.Position;
TextLocation end;
int pos = text.IndexOf(',');
if (pos < 0) {
textArea.InsertString(text.Substring(c.Name.Length + 1));

3
src/Main/Base/Project/Src/TextEditor/Gui/Editor/QuickClassBrowserPanel.cs

@ -14,6 +14,7 @@ using System.Windows.Forms; @@ -14,6 +14,7 @@ using System.Windows.Forms;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.TextEditor;
namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
{
@ -475,7 +476,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -475,7 +476,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
if (autoselect) {
ComboBoxItem item = (ComboBoxItem)comboBox.Items[comboBox.SelectedIndex];
if (item.IsInCurrentPart) {
textAreaControl.ActiveTextAreaControl.Caret.Position = new Point(item.Column, item.Line);
textAreaControl.ActiveTextAreaControl.Caret.Position = new TextLocation(item.Column, item.Line);
textAreaControl.ActiveTextAreaControl.TextArea.Focus();
} else {
IMember m = item.Item as IMember;

106
src/Main/Base/Test/CodeConverterTests.cs

@ -41,7 +41,9 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -41,7 +41,9 @@ namespace ICSharpCode.SharpDevelop.Tests
{
DefaultProjectContent pc = new DefaultProjectContent();
pc.ReferencedContents.Add(projectContentRegistry.Mscorlib);
pc.ReferencedContents.Add(projectContentRegistry.GetProjectContentForReference("System.Windows.Forms", "System.Windows.Forms"));
if (sourceLanguage == SupportedLanguage.VBNet) {
pc.ReferencedContents.Add(projectContentRegistry.GetProjectContentForReference("Microsoft.VisualBasic", "Microsoft.VisualBasic"));
pc.DefaultImports = new DefaultUsing(pc);
pc.DefaultImports.Usings.Add("System");
pc.DefaultImports.Usings.Add("Microsoft.VisualBasic");
@ -239,6 +241,35 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -239,6 +241,35 @@ namespace ICSharpCode.SharpDevelop.Tests
" End Function\n" +
"End Class");
}
[Test]
public void HandlesClassEvent()
{
TestProgramVB2CS("Imports System.Windows.Forms\n" +
"Class Test\n" +
" Inherits Form\n" +
" Sub Me_Load(sender As Object, e As EventArgs) Handles Me.Load\n" +
" End Sub\n" +
" Sub Base_Paint(sender As Object, e As PaintEventArgs) Handles MyBase.Paint\n" +
" End Sub\n" +
"End Class",
DefaultUsingsCSharp +
"using System.Windows.Forms;\n" +
"class Test : Form\n" +
"{\n" +
" public void Me_Load(object sender, EventArgs e)\n" +
" {\n" +
" }\n" +
" public void Base_Paint(object sender, PaintEventArgs e)\n" +
" {\n" +
" }\n" +
" public Test()\n" +
" {\n" +
" Paint += Base_Paint;\n" +
" Load += Me_Load;\n" +
" }\n" +
"}");
}
#endregion
#region ReferenceEqualityAndValueEquality
@ -296,6 +327,20 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -296,6 +327,20 @@ namespace ICSharpCode.SharpDevelop.Tests
TestStatementsVB2CS("Dim i as Integer = appdomain.getcurrentthreadid",
"int i = AppDomain.GetCurrentThreadId();");
}
[Test]
public void FixVBCasingAndAddMethodCallParenthesis2()
{
TestStatementsVB2CS("console.writeline(appdomain.getcurrentthreadid)",
"Console.WriteLine(AppDomain.GetCurrentThreadId());");
}
[Test]
public void FixVBCasingAndAddMethodCallParenthesis3()
{
TestStatementsVB2CS("console.writeline(T)",
"Console.WriteLine(T());");
}
#endregion
#region Redim
@ -336,6 +381,31 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -336,6 +381,31 @@ namespace ICSharpCode.SharpDevelop.Tests
}
#endregion
[Test]
public void AutomaticInitializeComponentCall()
{
TestProgramVB2CS("Imports System.Windows.Forms\n" +
"<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _\n" +
"Class Test\n" +
" Inherits Form\n" +
" Private Sub InitializeComponent()\n" +
" End Sub\n" +
"End Class",
DefaultUsingsCSharp +
"using System.Windows.Forms;\n" +
"[Microsoft.VisualBasic.CompilerServices.DesignerGenerated()]\n" +
"class Test : Form\n" +
"{\n" +
" private void InitializeComponent()\n" +
" {\n" +
" }\n" +
" public Test()\n" +
" {\n" +
" InitializeComponent();\n" +
" }\n" +
"}");
}
[Test]
public void IndexerExpression()
{
@ -375,6 +445,36 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -375,6 +445,36 @@ namespace ICSharpCode.SharpDevelop.Tests
"Dim c As Integer = (a \\ a) * a\n");
}
[Test]
public void ForeachOnExistingVariable()
{
TestStatementsVB2CS("Dim a As String\n" +
"For Each a In b\n" +
" Console.WriteLine(a)\n" +
"Next",
"string a = null;\n" +
"foreach (string a_loopVariable in b) {\n" +
" a = a_loopVariable;\n" +
" Console.WriteLine(a);\n" +
"}");
}
[Test]
public void ConvertDefaultPropertyToIndexer()
{
TestStatementsVB2CS("Dim c As Collection\n" +
"a = c.Item(2)",
"Collection c = null;\n" +
"a = c[2];");
}
[Test]
public void RemoveImportDuplicatedByProjectLevelImport()
{
TestProgramVB2CS("Imports System\nClass Test\nEnd Class",
DefaultUsingsCSharp + "class Test\n{\n}");
}
#region Casting
[Test]
public void CastToEnum()
@ -508,7 +608,6 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -508,7 +608,6 @@ namespace ICSharpCode.SharpDevelop.Tests
}
const string VBIEnumeratorOfStringImplementation =
"Imports System\n" +
"Imports System.Collections.Generic\n" +
"Class Test\n" +
" Implements IEnumerator(Of String)\n" +
@ -524,14 +623,14 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -524,14 +623,14 @@ namespace ICSharpCode.SharpDevelop.Tests
" End Function\n" +
" Public Sub Reset() Implements System.Collections.IEnumerator.Reset\n" +
" End Sub\n" +
" Public Sub Dispose() Implements IDisposable.Dispose\n" +
" Public Sub Dispose() Implements System.IDisposable.Dispose\n" +
" End Sub\n" +
"End Class";
[Test]
public void InterfaceImplementation3()
{
TestProgramCS2VB("using System; using System.Collections.Generic;\n" +
TestProgramCS2VB("using System.Collections.Generic;\n" +
"class Test : IEnumerator<string> {\n" +
" public string Current { get { } }\n" +
" object System.Collections.IEnumerator.Current { get { } }\n" +
@ -547,7 +646,6 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -547,7 +646,6 @@ namespace ICSharpCode.SharpDevelop.Tests
{
TestProgramVB2CS(VBIEnumeratorOfStringImplementation,
DefaultUsingsCSharp +
"using System;\n" +
"using System.Collections.Generic;\n" +
"class Test : IEnumerator<string>\n" +
"{\n" +

64
src/Main/Base/Test/NRefactoryResolverTests.cs

@ -61,6 +61,7 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -61,6 +61,7 @@ namespace ICSharpCode.SharpDevelop.Tests
};
pc.ReferencedContents.Add(projectContentRegistry.Mscorlib);
pc.ReferencedContents.Add(projectContentRegistry.GetProjectContentForReference("System.Windows.Forms", "System.Windows.Forms"));
pc.ReferencedContents.Add(projectContentRegistry.GetProjectContentForReference("Microsoft.VisualBasic", "Microsoft.VisualBasic"));
pc.Language = LanguageProperties.VBNet;
lastPC = pc;
NRefactoryASTConvertVisitor visitor = new NRefactoryASTConvertVisitor(pc);
@ -678,6 +679,50 @@ class C : B { @@ -678,6 +679,50 @@ class C : B {
Assert.IsTrue(Refactoring.RefactoringService.IsReferenceToMember(bCtor, mrr));
Assert.IsFalse(Refactoring.RefactoringService.IsReferenceToMember(aCtor, mrr));
}
[Test]
public void VBIndexerCall()
{
string program = @"Imports Microsoft.VisualBasic
Class A
Sub Method()
Dim c As Collection
End Sub
End Class
";
MemberResolveResult result = ResolveVB<MemberResolveResult>(program, "c(3)", 5);
Assert.AreEqual("Microsoft.VisualBasic.Collection.Item", result.ResolvedMember.FullyQualifiedName);
IProperty p = (IProperty)result.ResolvedMember;
Assert.IsTrue(p.IsIndexer);
result = ResolveVB<MemberResolveResult>(program, "c.Item(3)", 5);
Assert.AreEqual("Microsoft.VisualBasic.Collection.Item", result.ResolvedMember.FullyQualifiedName);
p = (IProperty)result.ResolvedMember;
Assert.IsTrue(p.IsIndexer);
}
[Test]
public void VBPInvokeCall()
{
string program = @"Imports Microsoft.VisualBasic
Class A
Declare Function GetRectangleArea Lib ""..\..\PinvokeLib.dll"" (ByRef rectangle As MyRectangle) As Integer
Sub Method(r1 As MyRectangle)
End Sub
End Class
";
MemberResolveResult result = ResolveVB<MemberResolveResult>(program, "GetRectangleArea(r1)", 5);
Assert.AreEqual("A.GetRectangleArea", result.ResolvedMember.FullyQualifiedName);
IMethod m = (IMethod)result.ResolvedMember;
Assert.IsTrue(m.IsStatic);
Assert.AreEqual("System.Int32", m.ReturnType.FullyQualifiedName);
Assert.AreEqual(1, m.Parameters.Count);
Assert.AreEqual("rectangle", m.Parameters[0].Name);
Assert.IsTrue(m.Parameters[0].IsRef);
}
#endregion
#region Import namespace tests
@ -1049,6 +1094,25 @@ class B { @@ -1049,6 +1094,25 @@ class B {
}
Assert.AreEqual(1, count);
}
[Test]
public void ShadowingTest()
{
string program = @"Imports System.Windows.Forms
Class F
Inherits Form
Sub M
End Sub
Friend WithEvents Shadows cancelButton As Button
End Class
";
MemberResolveResult result = ResolveVB<MemberResolveResult>(program, "CancelButton", 5);
Assert.AreEqual("F.cancelButton", result.ResolvedMember.FullyQualifiedName);
result = ResolveVB<MemberResolveResult>(program, "MyBase.CancelButton", 5);
Assert.AreEqual("System.Windows.Forms.Form.CancelButton", result.ResolvedMember.FullyQualifiedName);
}
#endregion
#region MixedType tests

6
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/MemberLookupHelper.cs

@ -620,6 +620,12 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -620,6 +620,12 @@ namespace ICSharpCode.SharpDevelop.Dom
static bool IsConstructedConversionToGenericReturnType(IReturnType from, IReturnType to, bool allowGenericTarget)
{
// null could be passed when type arguments could not be resolved/inferred
if (from == null && to == null)
return true;
if (from == null || to == null)
return false;
if (from.Equals(to))
return true;

64
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/CSharpToVBNetConvertVisitor.cs

@ -18,18 +18,18 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -18,18 +18,18 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
/// </summary>
public class CSharpToVBNetConvertVisitor : CSharpConstructsConvertVisitor
{
NRefactoryResolver _resolver;
ParseInformation _parseInfo;
IProjectContent _pc;
NRefactoryResolver resolver;
ParseInformation parseInformation;
IProjectContent projectContent;
public string RootNamespaceToRemove { get; set; }
public string StartupObjectToMakePublic { get; set; }
public IList<string> DefaultImportsToRemove { get; set; }
public CSharpToVBNetConvertVisitor(IProjectContent pc, ParseInformation parseInfo)
{
_resolver = new NRefactoryResolver(LanguageProperties.CSharp);
_pc = pc;
_parseInfo = parseInfo;
this.resolver = new NRefactoryResolver(LanguageProperties.CSharp);
this.projectContent = pc;
this.parseInformation = parseInfo;
}
public override object VisitCompilationUnit(CompilationUnit compilationUnit, object data)
@ -42,7 +42,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -42,7 +42,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
IReturnType ResolveType(TypeReference typeRef)
{
return TypeVisitor.CreateReturnType(typeRef, _resolver);
return TypeVisitor.CreateReturnType(typeRef, resolver);
}
public override object VisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration, object data)
@ -103,11 +103,11 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -103,11 +103,11 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
{
// Initialize resolver for method:
if (!methodDeclaration.Body.IsNull) {
if (_resolver.Initialize(_parseInfo, methodDeclaration.Body.StartLocation.Y, methodDeclaration.Body.StartLocation.X)) {
_resolver.RunLookupTableVisitor(methodDeclaration);
if (resolver.Initialize(parseInformation, methodDeclaration.Body.StartLocation.Y, methodDeclaration.Body.StartLocation.X)) {
resolver.RunLookupTableVisitor(methodDeclaration);
}
}
IMethod currentMethod = _resolver.CallingMember as IMethod;
IMethod currentMethod = resolver.CallingMember as IMethod;
CreateInterfaceImplementations(currentMethod, methodDeclaration, methodDeclaration.InterfaceImplementations);
if (currentMethod != null && currentMethod.Name == "Main") {
if (currentMethod.DeclaringType.FullyQualifiedName == StartupObjectToMakePublic) {
@ -122,7 +122,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -122,7 +122,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
ClassFinder CreateContext()
{
return new ClassFinder(_resolver.CallingClass, _resolver.CallingMember, _resolver.CaretLine, _resolver.CaretColumn);
return new ClassFinder(resolver.CallingClass, resolver.CallingMember, resolver.CaretLine, resolver.CaretColumn);
}
void CreateInterfaceImplementations(IMember currentMember, ParametrizedNode memberDecl, List<InterfaceImplementation> interfaceImplementations)
@ -186,8 +186,8 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -186,8 +186,8 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
public override object VisitConstructorDeclaration(ConstructorDeclaration constructorDeclaration, object data)
{
if (!constructorDeclaration.Body.IsNull) {
if (_resolver.Initialize(_parseInfo, constructorDeclaration.Body.StartLocation.Y, constructorDeclaration.Body.StartLocation.X)) {
_resolver.RunLookupTableVisitor(constructorDeclaration);
if (resolver.Initialize(parseInformation, constructorDeclaration.Body.StartLocation.Y, constructorDeclaration.Body.StartLocation.X)) {
resolver.RunLookupTableVisitor(constructorDeclaration);
}
}
return base.VisitConstructorDeclaration(constructorDeclaration, data);
@ -195,23 +195,23 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -195,23 +195,23 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
public override object VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration, object data)
{
if (_resolver.Initialize(_parseInfo, propertyDeclaration.BodyStart.Y, propertyDeclaration.BodyStart.X)) {
_resolver.RunLookupTableVisitor(propertyDeclaration);
if (resolver.Initialize(parseInformation, propertyDeclaration.BodyStart.Y, propertyDeclaration.BodyStart.X)) {
resolver.RunLookupTableVisitor(propertyDeclaration);
}
IProperty currentProperty = _resolver.CallingMember as IProperty;
IProperty currentProperty = resolver.CallingMember as IProperty;
CreateInterfaceImplementations(currentProperty, propertyDeclaration, propertyDeclaration.InterfaceImplementations);
return base.VisitPropertyDeclaration(propertyDeclaration, data);
}
public override object VisitExpressionStatement(ExpressionStatement expressionStatement, object data)
{
if (_resolver.CompilationUnit == null)
if (resolver.CompilationUnit == null)
return base.VisitExpressionStatement(expressionStatement, data);
// Transform event invocations that aren't already transformed by a parent IfStatement to RaiseEvent statement
InvocationExpression eventInvocation = expressionStatement.Expression as InvocationExpression;
if (eventInvocation != null && eventInvocation.TargetObject is IdentifierExpression) {
MemberResolveResult mrr = _resolver.ResolveInternal(eventInvocation.TargetObject, ExpressionContext.Default) as MemberResolveResult;
MemberResolveResult mrr = resolver.ResolveInternal(eventInvocation.TargetObject, ExpressionContext.Default) as MemberResolveResult;
if (mrr != null && mrr.ResolvedMember is IEvent) {
ReplaceCurrentNode(new RaiseEventStatement(
((IdentifierExpression)eventInvocation.TargetObject).Identifier,
@ -228,7 +228,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -228,7 +228,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
{
base.VisitBinaryOperatorExpression(binaryOperatorExpression, data);
if (_resolver.CompilationUnit == null)
if (resolver.CompilationUnit == null)
return null;
switch (binaryOperatorExpression.Op) {
@ -249,8 +249,8 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -249,8 +249,8 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
void ConvertEqualityToReferenceEqualityIfRequired(BinaryOperatorExpression binaryOperatorExpression)
{
// maybe we have to convert Equality operator to ReferenceEquality
ResolveResult left = _resolver.ResolveInternal(binaryOperatorExpression.Left, ExpressionContext.Default);
ResolveResult right = _resolver.ResolveInternal(binaryOperatorExpression.Right, ExpressionContext.Default);
ResolveResult left = resolver.ResolveInternal(binaryOperatorExpression.Left, ExpressionContext.Default);
ResolveResult right = resolver.ResolveInternal(binaryOperatorExpression.Right, ExpressionContext.Default);
if (left != null && right != null && left.ResolvedType != null && right.ResolvedType != null) {
IClass cLeft = left.ResolvedType.GetUnderlyingClass();
IClass cRight = right.ResolvedType.GetUnderlyingClass();
@ -274,8 +274,8 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -274,8 +274,8 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
void ConvertArgumentsForStringConcatenationIfRequired(BinaryOperatorExpression binaryOperatorExpression)
{
ResolveResult left = _resolver.ResolveInternal(binaryOperatorExpression.Left, ExpressionContext.Default);
ResolveResult right = _resolver.ResolveInternal(binaryOperatorExpression.Right, ExpressionContext.Default);
ResolveResult left = resolver.ResolveInternal(binaryOperatorExpression.Left, ExpressionContext.Default);
ResolveResult right = resolver.ResolveInternal(binaryOperatorExpression.Right, ExpressionContext.Default);
if (left != null && right != null) {
if (IsString(left.ResolvedType)) {
@ -294,8 +294,8 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -294,8 +294,8 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
void ConvertDivisionToIntegerDivisionIfRequired(BinaryOperatorExpression binaryOperatorExpression)
{
ResolveResult left = _resolver.ResolveInternal(binaryOperatorExpression.Left, ExpressionContext.Default);
ResolveResult right = _resolver.ResolveInternal(binaryOperatorExpression.Right, ExpressionContext.Default);
ResolveResult left = resolver.ResolveInternal(binaryOperatorExpression.Left, ExpressionContext.Default);
ResolveResult right = resolver.ResolveInternal(binaryOperatorExpression.Right, ExpressionContext.Default);
if (left != null && right != null) {
if (IsInteger(left.ResolvedType) && IsInteger(right.ResolvedType)) {
@ -358,14 +358,14 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -358,14 +358,14 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
public override object VisitIdentifierExpression(IdentifierExpression identifierExpression, object data)
{
base.VisitIdentifierExpression(identifierExpression, data);
if (_resolver.CompilationUnit == null)
if (resolver.CompilationUnit == null)
return null;
InvocationExpression parentIE = identifierExpression.Parent as InvocationExpression;
if (!(identifierExpression.Parent is AddressOfExpression)
&& (parentIE == null || parentIE.TargetObject != identifierExpression))
{
ResolveResult rr = _resolver.ResolveInternal(identifierExpression, ExpressionContext.Default);
ResolveResult rr = resolver.ResolveInternal(identifierExpression, ExpressionContext.Default);
if (rr is MethodResolveResult) {
ReplaceCurrentNode(new AddressOfExpression(identifierExpression));
}
@ -377,14 +377,14 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -377,14 +377,14 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
{
base.VisitFieldReferenceExpression(fieldReferenceExpression, data);
if (_resolver.CompilationUnit == null)
if (resolver.CompilationUnit == null)
return null;
InvocationExpression parentIE = fieldReferenceExpression.Parent as InvocationExpression;
if (!(fieldReferenceExpression.Parent is AddressOfExpression)
&& (parentIE == null || parentIE.TargetObject != fieldReferenceExpression))
{
ResolveResult rr = _resolver.ResolveInternal(fieldReferenceExpression, ExpressionContext.Default);
ResolveResult rr = resolver.ResolveInternal(fieldReferenceExpression, ExpressionContext.Default);
if (rr is MethodResolveResult) {
ReplaceCurrentNode(new AddressOfExpression(fieldReferenceExpression));
}
@ -395,11 +395,11 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -395,11 +395,11 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
void HandleAssignmentStatement(AssignmentExpression assignmentExpression)
{
if (_resolver.CompilationUnit == null || assignmentExpression == null)
if (resolver.CompilationUnit == null || assignmentExpression == null)
return;
if (assignmentExpression.Op == AssignmentOperatorType.Add || assignmentExpression.Op == AssignmentOperatorType.Subtract) {
ResolveResult rr = _resolver.ResolveInternal(assignmentExpression.Left, ExpressionContext.Default);
ResolveResult rr = resolver.ResolveInternal(assignmentExpression.Left, ExpressionContext.Default);
if (rr is MemberResolveResult && (rr as MemberResolveResult).ResolvedMember is IEvent) {
if (assignmentExpression.Op == AssignmentOperatorType.Add) {
ReplaceCurrentNode(new AddHandlerStatement(assignmentExpression.Left, assignmentExpression.Right));
@ -429,7 +429,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -429,7 +429,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
{
base.VisitCastExpression(castExpression, data);
if (_resolver.CompilationUnit == null)
if (resolver.CompilationUnit == null)
return null;
// cast to value type is a conversion

20
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryASTConvertVisitor.cs

@ -484,6 +484,26 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -484,6 +484,26 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
return null;
}
public override object VisitDeclareDeclaration(AST.DeclareDeclaration declareDeclaration, object data)
{
DefaultClass currentClass = GetCurrentClass();
DomRegion region = GetRegion(declareDeclaration.StartLocation, declareDeclaration.EndLocation);
DefaultMethod method = new DefaultMethod(declareDeclaration.Name, null, ConvertModifier(declareDeclaration.Modifier), region, DomRegion.Empty, currentClass);
method.Documentation = GetDocumentation(region.BeginLine, declareDeclaration.Attributes);
method.Modifiers |= ModifierEnum.Extern | ModifierEnum.Static;
method.ReturnType = CreateReturnType(declareDeclaration.TypeReference, method);
ConvertAttributes(declareDeclaration, method);
foreach (AST.ParameterDeclarationExpression par in declareDeclaration.Parameters) {
method.Parameters.Add(CreateParameter(par, method));
}
currentClass.Methods.Add(method);
return null;
}
public override object VisitOperatorDeclaration(AST.OperatorDeclaration operatorDeclaration, object data)
{
DefaultClass c = GetCurrentClass();

25
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryResolver.cs

@ -603,7 +603,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -603,7 +603,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
}
#region Resolve Identifier
ResolveResult ResolveIdentifier(string identifier, NR.Location position, ExpressionContext context)
public ResolveResult ResolveIdentifier(string identifier, NR.Location position, ExpressionContext context)
{
ResolveResult result = ResolveIdentifierInternal(identifier, position);
if (result is TypeResolveResult)
@ -980,22 +980,37 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -980,22 +980,37 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
bool isClassInInheritanceTree = false;
if (callingClass != null)
isClassInInheritanceTree = callingClass.IsTypeInInheritanceTree(type.GetUnderlyingClass());
// when there are multiple possible members, use the member from the more derived class
// (this is necessary to support a field shadowing a property)
IMember result = null;
foreach (IProperty p in type.GetProperties()) {
if (IsSameName(p.Name, memberName)) {
return p;
result = GetMoreDerivedMember(result, p);
}
}
foreach (IField f in type.GetFields()) {
if (IsSameName(f.Name, memberName)) {
return f;
result = GetMoreDerivedMember(result, f);
}
}
foreach (IEvent e in type.GetEvents()) {
if (IsSameName(e.Name, memberName)) {
return e;
result = GetMoreDerivedMember(result, e);
}
}
return null;
return result;
}
IMember GetMoreDerivedMember(IMember m1, IMember m2)
{
if (m1 == null) return m2;
if (m2 == null) return m1;
if (m1.DeclaringType.IsTypeInInheritanceTree(m2.DeclaringType))
return m1;
else
return m2;
}
#endregion

40
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/TypeVisitor.cs

@ -225,18 +225,48 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -225,18 +225,48 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
return c.Methods.FindAll(delegate(IMethod m) { return m.IsConstructor; });
}
public IProperty GetIndexer(IndexerExpression indexerExpression)
{
IReturnType targetObjectType = (IReturnType)indexerExpression.TargetObject.AcceptVisitor(this, null);
return GetIndexer(indexerExpression, targetObjectType);
}
IProperty GetVisualBasicIndexer(InvocationExpression invocationExpression)
{
return GetIndexer(new IndexerExpression(invocationExpression.TargetObject, invocationExpression.Arguments));
ResolveResult targetRR = resolver.ResolveInternal(invocationExpression.TargetObject, ExpressionContext.Default);
if (targetRR != null) {
// Visual Basic can call indexers in two ways:
// collection(index) - use indexer
// collection.Item(index) - use parametrized property
if (invocationExpression.TargetObject is IdentifierExpression || invocationExpression.TargetObject is FieldReferenceExpression) {
// only IdentifierExpression/FieldReferenceExpression can represent a parametrized property
// - the check is necessary because collection.Items and collection.Item(index) both
// resolve to the same property, but we want to use the default indexer for the second call in
// collection.Item(index1)(index2)
MemberResolveResult memberRR = targetRR as MemberResolveResult;
if (memberRR != null) {
IProperty p = memberRR.ResolvedMember as IProperty;
if (p != null && p.Parameters.Count > 0) {
// this is a parametrized property
return p;
}
}
}
// not a parametrized property - try normal indexer
return GetIndexer(new IndexerExpression(invocationExpression.TargetObject, invocationExpression.Arguments),
targetRR.ResolvedType);
} else {
return null;
}
}
public IProperty GetIndexer(IndexerExpression indexerExpression)
IProperty GetIndexer(IndexerExpression indexerExpression, IReturnType targetObjectType)
{
IReturnType type = (IReturnType)indexerExpression.TargetObject.AcceptVisitor(this, null);
if (type == null) {
if (targetObjectType == null) {
return null;
}
List<IProperty> indexers = type.GetProperties();
List<IProperty> indexers = targetObjectType.GetProperties();
// remove non-indexers:
for (int i = 0; i < indexers.Count; i++) {
if (!indexers[i].IsIndexer)

227
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/VBNetToCSharpConvertVisitor.cs

@ -22,6 +22,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -22,6 +22,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
// Adds using statements for the default usings
// Convert "ReDim" statement
// Convert "WithEvents" fields/"Handles" clauses
// Insert InitializeComponents() call into default constructor
public string NamespacePrefixToAdd { get; set; }
@ -31,9 +32,9 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -31,9 +32,9 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
public VBNetToCSharpConvertVisitor(IProjectContent pc, ParseInformation parseInfo)
{
resolver = new NRefactoryResolver(LanguageProperties.VBNet);
projectContent = pc;
parseInformation = parseInfo;
this.resolver = new NRefactoryResolver(LanguageProperties.VBNet);
this.projectContent = pc;
this.parseInformation = parseInfo;
}
public override object VisitCompilationUnit(CompilationUnit compilationUnit, object data)
@ -45,10 +46,9 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -45,10 +46,9 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
if (ns != null) {
ns.Name = NamespacePrefixToAdd + "." + ns.Name;
}
TypeDeclaration td = compilationUnit.Children[i] as TypeDeclaration;
if (td != null) {
if (compilationUnit.Children[i] is TypeDeclaration || compilationUnit.Children[i] is DelegateDeclaration) {
ns = new NamespaceDeclaration(NamespacePrefixToAdd);
ns.AddChild(td);
ns.AddChild(compilationUnit.Children[i]);
compilationUnit.Children[i] = ns;
}
}
@ -65,6 +65,32 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -65,6 +65,32 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
return null;
}
public override object VisitUsing(Using @using, object data)
{
base.VisitUsing(@using, data);
if (projectContent != null && projectContent.DefaultImports != null) {
if (!@using.IsAlias) {
// remove using if it is already part of the project-wide imports
foreach (string defaultImport in projectContent.DefaultImports.Usings) {
if (resolver.IsSameName(defaultImport, @using.Name)) {
RemoveCurrentNode();
break;
}
}
}
}
return null;
}
public override object VisitUsingDeclaration(UsingDeclaration usingDeclaration, object data)
{
base.VisitUsingDeclaration(usingDeclaration, data);
if (usingDeclaration.Usings.Count == 0) {
RemoveCurrentNode();
}
return null;
}
public override object VisitTypeDeclaration(TypeDeclaration typeDeclaration, object data)
{
resolver.Initialize(parseInformation, typeDeclaration.BodyStartLocation.Line, typeDeclaration.BodyStartLocation.Column);
@ -87,14 +113,14 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -87,14 +113,14 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
containsClassHandlesClauses |= !handles.Contains(".");
}
}
// ensure the type has at least one constructor to which the AddHandlerStatements can be added
CompoundClass compoundClass = callingClass as CompoundClass;
if (containsClassHandlesClauses && !hasConstructors) {
// ensure the type has at least one constructor to which the AddHandlerStatements can be added
if (!hasConstructors) {
// add constructor only to one part
if (compoundClass == null || compoundClass.GetParts()[0] == resolver.CallingClass) {
ConstructorDeclaration cd = new ConstructorDeclaration(typeDeclaration.Name, Modifiers.Public, null, null);
cd.Body = new BlockStatement();
typeDeclaration.AddChild(cd);
if (containsClassHandlesClauses || RequiresConstructor(callingClass)) {
AddDefaultConstructor(callingClass, typeDeclaration);
}
}
}
}
@ -103,6 +129,52 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -103,6 +129,52 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
return null;
}
/// <summary>
/// Gets if the converter should add a default constructor to the current class if the
/// class does not have any constructors.
/// </summary>
protected virtual bool RequiresConstructor(IClass currentClass)
{
// the VB compiler automatically adds the InitializeComponents() call to the
// default constructor, so the converter has to an explicit constructor
// and place the call there
return IsAutomaticallyCallingInitializeComponent(currentClass);
}
bool IsAutomaticallyCallingInitializeComponent(IClass currentClass)
{
if (currentClass != null) {
if (currentClass.SearchMember("InitializeComponent", LanguageProperties.VBNet) is IMethod) {
foreach (IAttribute at in currentClass.Attributes) {
if (at.AttributeType.FullyQualifiedName == "Microsoft.VisualBasic.CompilerServices.DesignerGeneratedAttribute") {
return true;
}
}
}
}
return false;
}
/// <summary>
/// Adds a default constructor to the type.
/// </summary>
protected virtual ConstructorDeclaration AddDefaultConstructor(IClass currentClass, TypeDeclaration typeDeclaration)
{
ConstructorDeclaration cd = new ConstructorDeclaration(typeDeclaration.Name, Modifiers.Public, null, null);
cd.Body = new BlockStatement();
// location is required to make Resolve() work in the constructor
cd.StartLocation = cd.Body.StartLocation = cd.EndLocation = cd.Body.EndLocation = typeDeclaration.BodyStartLocation;
typeDeclaration.AddChild(cd);
if (IsAutomaticallyCallingInitializeComponent(currentClass)) {
// the VB compiler automatically adds the InitializeComponents() call to the
// default constructor, so the converter has to add the call when creating an explicit
// constructor
cd.Body.Children.Add(new ExpressionStatement(
new InvocationExpression(new IdentifierExpression("InitializeComponent"))));
}
return cd;
}
public override object VisitMethodDeclaration(MethodDeclaration methodDeclaration, object data)
{
// Initialize resolver for method:
@ -268,7 +340,10 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -268,7 +340,10 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
if (ident != null) {
identifierExpression.Identifier = ident;
}
FullyQualifyModuleMemberReference(identifierExpression, rr);
if (ReplaceWithInvocation(identifierExpression, rr)) {}
else if (FullyQualifyModuleMemberReference(identifierExpression, rr)) {}
return null;
}
@ -279,23 +354,44 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -279,23 +354,44 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
if (resolver.CompilationUnit == null)
return null;
ResolveResult rr = resolver.ResolveInternal(fieldReferenceExpression, ExpressionContext.Default);
ResolveResult rr = Resolve(fieldReferenceExpression);
string ident = GetIdentifierFromResult(rr);
if (ident != null) {
fieldReferenceExpression.FieldName = ident;
}
if (ReplaceWithInvocation(fieldReferenceExpression, rr)) {}
else if (FullyQualifyModuleMemberReference(fieldReferenceExpression, rr)) {}
return rr;
}
protected bool IsReferenceToInstanceMember(ResolveResult rr)
{
MemberResolveResult memberRR = rr as MemberResolveResult;
if (memberRR != null)
return memberRR.ResolvedMember.IsStatic == false;
MethodResolveResult methodRR = rr as MethodResolveResult;
if (methodRR != null && methodRR.ContainingType != null) {
foreach (IMethod m in methodRR.ContainingType.GetMethods()) {
if (resolver.IsSameName(m.Name, methodRR.Name)) {
return !m.IsStatic;
}
}
}
return false;
}
bool ReplaceWithInvocation(Expression expression, ResolveResult rr)
{
if (rr is MethodResolveResult
&& !(fieldReferenceExpression.Parent is AddressOfExpression)
&& !(fieldReferenceExpression.Parent is InvocationExpression))
&& !(expression.Parent is AddressOfExpression)
&& !(expression.Parent is InvocationExpression))
{
InvocationExpression ie = new InvocationExpression(fieldReferenceExpression);
InvocationExpression ie = new InvocationExpression(expression);
ReplaceCurrentNode(ie);
} else {
FullyQualifyModuleMemberReference(fieldReferenceExpression, rr);
return true;
}
return rr;
return false;
}
IReturnType GetContainingTypeOfStaticMember(ResolveResult rr)
@ -311,31 +407,39 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -311,31 +407,39 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
return null;
}
void FullyQualifyModuleMemberReference(IdentifierExpression ident, ResolveResult rr)
bool FullyQualifyModuleMemberReference(IdentifierExpression ident, ResolveResult rr)
{
IReturnType containingType = GetContainingTypeOfStaticMember(rr);
if (containingType == null)
return;
return false;
if (resolver.CallingClass != null) {
if (resolver.CallingClass.IsTypeInInheritanceTree(containingType.GetUnderlyingClass()))
return;
return false;
}
ReplaceCurrentNode(new FieldReferenceExpression(
new TypeReferenceExpression(Refactoring.CodeGenerator.ConvertType(containingType, CreateContext())),
new TypeReferenceExpression(ConvertType(containingType)),
ident.Identifier
));
return true;
}
void FullyQualifyModuleMemberReference(FieldReferenceExpression fre, ResolveResult rr)
TypeReference ConvertType(IReturnType type)
{
return Refactoring.CodeGenerator.ConvertType(type, CreateContext());
}
bool FullyQualifyModuleMemberReference(FieldReferenceExpression fre, ResolveResult rr)
{
IReturnType containingType = GetContainingTypeOfStaticMember(rr);
if (containingType == null)
return;
return false;
ResolveResult targetRR = resolver.ResolveInternal(fre.TargetObject, ExpressionContext.Default);
if (targetRR is NamespaceResolveResult) {
fre.TargetObject = new TypeReferenceExpression(Refactoring.CodeGenerator.ConvertType(containingType, CreateContext()));
fre.TargetObject = new TypeReferenceExpression(ConvertType(containingType));
return true;
}
return false;
}
public override object VisitInvocationExpression(InvocationExpression invocationExpression, object data)
@ -353,13 +457,32 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -353,13 +457,32 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
return null;
}
protected ResolveResult Resolve(Expression expression)
{
if (resolver.CompilationUnit == null) {
return null;
} else {
return resolver.ResolveInternal(expression, ExpressionContext.Default);
}
}
void ProcessInvocationExpression(InvocationExpression invocationExpression)
{
MemberResolveResult rr = resolver.ResolveInternal(invocationExpression, ExpressionContext.Default) as MemberResolveResult;
MemberResolveResult rr = Resolve(invocationExpression) as MemberResolveResult;
if (rr != null) {
IProperty p = rr.ResolvedMember as IProperty;
if (p != null && invocationExpression.Arguments.Count > 0) {
ReplaceCurrentNode(new IndexerExpression(invocationExpression.TargetObject, invocationExpression.Arguments));
// col(i) -> col[i] or col.Items(i) -> col[i] ?
Expression targetObject = invocationExpression.TargetObject;
FieldReferenceExpression targetObjectFre = targetObject as FieldReferenceExpression;
if (p.IsIndexer && targetObjectFre != null) {
MemberResolveResult rr2 = Resolve(targetObjectFre) as MemberResolveResult;
if (rr2 != null && rr2.ResolvedMember == rr.ResolvedMember) {
// remove ".Items"
targetObject = targetObjectFre.TargetObject;
}
}
ReplaceCurrentNode(new IndexerExpression(targetObject, invocationExpression.Arguments));
}
IMethod m = rr.ResolvedMember as IMethod;
if (m != null && invocationExpression.Arguments.Count == m.Parameters.Count) {
@ -397,11 +520,9 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -397,11 +520,9 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
// replace with:
// MyArray = (int[,])Microsoft.VisualBasic.CompilerServices.Utils.CopyArray(MyArray, new int[dim1+1, dim2+1]);
ResolveResult rr = resolver.ResolveInternal(reDimStatement.ReDimClauses[0].TargetObject, ExpressionContext.Default);
ResolveResult rr = Resolve(reDimStatement.ReDimClauses[0].TargetObject);
if (rr != null && rr.ResolvedType != null && rr.ResolvedType.IsArrayReturnType) {
ArrayCreateExpression ace = new ArrayCreateExpression(
Refactoring.CodeGenerator.ConvertType(rr.ResolvedType, CreateContext())
);
ArrayCreateExpression ace = new ArrayCreateExpression(ConvertType(rr.ResolvedType));
foreach (Expression arg in reDimStatement.ReDimClauses[0].Arguments) {
ace.Arguments.Add(Expression.AddInteger(arg, 1));
}
@ -427,11 +548,9 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -427,11 +548,9 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
} else {
// replace with array create expression
ResolveResult rr = resolver.ResolveInternal(reDimStatement.ReDimClauses[0].TargetObject, ExpressionContext.Default);
ResolveResult rr = Resolve(reDimStatement.ReDimClauses[0].TargetObject);
if (rr != null && rr.ResolvedType != null && rr.ResolvedType.IsArrayReturnType) {
ArrayCreateExpression ace = new ArrayCreateExpression(
Refactoring.CodeGenerator.ConvertType(rr.ResolvedType, CreateContext())
);
ArrayCreateExpression ace = new ArrayCreateExpression(ConvertType(rr.ResolvedType));
foreach (Expression arg in reDimStatement.ReDimClauses[0].Arguments) {
ace.Arguments.Add(Expression.AddInteger(arg, 1));
}
@ -511,5 +630,39 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -511,5 +630,39 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
return trr.ResolvedClass.Name;
return null;
}
public override object VisitForeachStatement(ForeachStatement foreachStatement, object data)
{
base.VisitForeachStatement(foreachStatement, data);
if (resolver.CompilationUnit == null)
return null;
if (foreachStatement.TypeReference.IsNull) {
ResolveResult rr = resolver.ResolveIdentifier(foreachStatement.VariableName, foreachStatement.StartLocation, ExpressionContext.Default);
if (rr != null && rr.ResolvedType != null) {
BlockStatement blockStatement = foreachStatement.EmbeddedStatement as BlockStatement;
if (blockStatement == null) {
blockStatement = new BlockStatement();
blockStatement.AddChild(foreachStatement.EmbeddedStatement);
foreachStatement.EmbeddedStatement = blockStatement;
}
string newVariableName = foreachStatement.VariableName + "_loopVariable";
ExpressionStatement st = new ExpressionStatement(
new AssignmentExpression(
new IdentifierExpression(foreachStatement.VariableName),
AssignmentOperatorType.Assign,
new IdentifierExpression(newVariableName)));
blockStatement.Children.Insert(0, st);
st.Parent = blockStatement;
foreachStatement.VariableName = newVariableName;
foreachStatement.TypeReference = ConvertType(rr.ResolvedType);
}
}
return null;
}
}
}

286
src/SharpDevelop.sln

@ -1,176 +1,176 @@ @@ -1,176 +1,176 @@

Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
# SharpDevelop 3.0.0.2644
# SharpDevelop 3.0.0.2658
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{14A277EE-7DF1-4529-B639-7D1EF334C1C5}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Display Bindings", "Display Bindings", "{4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace", "AddIns\Misc\SearchAndReplace\Project\SearchAndReplace.csproj", "{9196DD8A-B4D4-4780-8742-C5762E547FC2}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WpfDesign", "WpfDesign", "{388C3979-2621-4839-A955-7E5C03BA0B63}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddinScout", "AddIns\Misc\AddinScout\Project\AddinScout.csproj", "{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.AddIn", "AddIns\DisplayBindings\WpfDesign\WpfDesign.AddIn\WpfDesign.AddIn.csproj", "{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartPage", "AddIns\Misc\StartPage\Project\StartPage.csproj", "{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.XamlDom", "AddIns\DisplayBindings\WpfDesign\WpfDesign.XamlDom\Project\WpfDesign.XamlDom.csproj", "{88DA149F-21B2-48AB-82C4-28FB6BDFD783}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RegExpTk", "AddIns\Misc\RegExpTk\Project\RegExpTk.csproj", "{64A3E5E6-90BF-47F6-94DF-68C94B62C817}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.Designer", "AddIns\DisplayBindings\WpfDesign\WpfDesign.Designer\Project\WpfDesign.Designer.csproj", "{78CC29AC-CC79-4355-B1F2-97936DF198AC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HighlightingEditor", "AddIns\Misc\HighlightingEditor\Project\HighlightingEditor.csproj", "{8A462940-E5E9-4E85-982D-D4C006EE31D4}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign", "AddIns\DisplayBindings\WpfDesign\WpfDesign\Project\WpfDesign.csproj", "{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FiletypeRegisterer", "AddIns\Misc\FiletypeRegisterer\Project\FiletypeRegisterer.csproj", "{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorkflowDesigner", "AddIns\DisplayBindings\WorkflowDesigner\Project\WorkflowDesigner.csproj", "{533F4684-DBA6-4518-B005-C84F22A2DD57}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugger", "Debugger", "{6604365C-C702-4C10-9BA8-637F1E3D4D0D}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ClassDiagram", "ClassDiagram", "{DB137F0B-9B62-4232-AE92-F7BE0280B8D3}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TreeListView", "AddIns\Misc\Debugger\TreeListView\Project\TreeListView.csproj", "{B08385CD-F0CC-488C-B4F4-EEB34B6D2688}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassWizard", "AddIns\DisplayBindings\ClassDiagram\ClassWizard\ClassWizard.csproj", "{8C59E80D-C4E4-4F36-9AD8-47C40F6E58B4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Core", "AddIns\Misc\Debugger\Debugger.Core\Project\Debugger.Core.csproj", "{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Diagrams", "AddIns\DisplayBindings\ClassDiagram\DiagramRouter\Diagrams.csproj", "{0991423A-DBF6-4C89-B365-A1DF1EB32E42}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.AddIn", "AddIns\Misc\Debugger\Debugger.AddIn\Project\Debugger.AddIn.csproj", "{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassDiagramAddin", "AddIns\DisplayBindings\ClassDiagram\ClassDiagramAddin\ClassDiagramAddin.csproj", "{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HtmlHelp2", "AddIns\Misc\HtmlHelp2\Project\HtmlHelp2.csproj", "{918487B7-2153-4618-BBB3-344DBDDF2A2A}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassEditor", "AddIns\DisplayBindings\ClassDiagram\ClassEditor\ClassEditor.csproj", "{F5E059BB-96C2-4398-BED0-8598CD434173}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddInManager", "AddIns\Misc\AddInManager\Project\AddInManager.csproj", "{F93E52FD-DA66-4CE5-A0CB-BCD902811122}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassCanvas", "AddIns\DisplayBindings\ClassDiagram\ClassCanvas\ClassCanvas.csproj", "{08F772A1-F0BE-433E-8B37-F6522953DB05}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PInvokeAddIn", "AddIns\Misc\PInvokeAddIn\Project\PInvokeAddIn.csproj", "{5EEB99CF-EA2B-4733-80A6-CE9192D68170}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SettingsEditor", "AddIns\DisplayBindings\SettingsEditor\Project\SettingsEditor.csproj", "{85226AFB-CE71-4851-9A75-7EEC663A8E8A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoAddIn", "AddIns\Misc\MonoAddIn\Project\MonoAddIn.csproj", "{082DCD64-EE32-4151-A50F-E139CF754CC0}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IconEditor", "IconEditor", "{0D37CE59-B0EF-4F3C-B9EB-8557E53A448B}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage", "AddIns\Misc\CodeCoverage\Project\CodeCoverage.csproj", "{08ce9972-283b-44f4-82fa-966f7dfa6b7a}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditorAddIn", "AddIns\DisplayBindings\IconEditor\IconEditorAddIn\IconEditorAddIn.csproj", "{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting", "AddIns\Misc\UnitTesting\UnitTesting.csproj", "{1F261725-6318-4434-A1B1-6C70CE4CD324}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditor", "AddIns\DisplayBindings\IconEditor\IconEditor\IconEditor.csproj", "{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "HtmlHelp2JScriptGlobals", "AddIns\Misc\HtmlHelp2\JScriptGlobals\HtmlHelp2JScriptGlobals.vbproj", "{E54A5AD2-418D-4A85-BA5E-CD803DE38715}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor", "AddIns\DisplayBindings\XmlEditor\Project\XmlEditor.csproj", "{6B717BD1-CD5E-498C-A42E-9E6A4584DC48}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SubversionAddIn", "AddIns\Misc\SubversionAddIn\Project\SubversionAddIn.csproj", "{17F4D7E0-6933-4C2E-8714-FD7E98D625D5}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormsDesigner", "AddIns\DisplayBindings\FormsDesigner\Project\FormsDesigner.csproj", "{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysis", "AddIns\Misc\CodeAnalysis\CodeAnalysis.csproj", "{3EAA45A9-735C-4AC7-A799-947B93EA449D}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceEditor", "AddIns\DisplayBindings\ResourceEditor\Project\ResourceEditor.csproj", "{CBC6C247-747B-4908-B09A-4D2E0F640B6B}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ComponentInspector", "ComponentInspector", "{BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Backends", "Backends", "{FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector", "AddIns\Misc\ComponentInspector\ComponentInspector\ComponentInspector.csproj", "{000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlBinding", "AddIns\BackendBindings\XamlBinding\Project\XamlBinding.csproj", "{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.AddIn", "AddIns\Misc\ComponentInspector\ComponentInspector.AddIn\ComponentInspector.AddIn.csproj", "{869951D5-A0D6-4DC6-9F1D-E6B9A12AC446}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding", "AddIns\BackendBindings\WixBinding\Project\WixBinding.csproj", "{e1b288a2-08ee-4318-8bbb-8ab72c69e33e}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.Core", "AddIns\Misc\ComponentInspector\ComponentInspector.Core\ComponentInspector.Core.csproj", "{E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter", "AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Project\NRefactoryToBooConverter.csproj", "{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceToolkit", "AddIns\Misc\ResourceToolkit\Project\ResourceToolkit.csproj", "{461606BD-E824-4D0A-8CBA-01810B1F5E02}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding", "AddIns\BackendBindings\Boo\BooBinding\Project\BooBinding.csproj", "{4AC2D5F1-F671-480C-A075-6BF62B3721B2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ILAsmBinding", "AddIns\BackendBindings\ILAsmBinding\Project\ILAsmBinding.csproj", "{6e59af58-f635-459a-9a35-c9ac41c00339}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VBNetBinding", "AddIns\BackendBindings\VBNetBinding\Project\VBNetBinding.csproj", "{BF38FB72-B380-4196-AF8C-95749D726C61}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding", "AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SharpServerTools", "SharpServerTools", "{6CEEC0D9-FA00-4EE3-9A1C-39B7ACC882FD}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ServerBrowserTool", "AddIns\Misc\SharpServerTools\ServerBrowserTool\ServerBrowserTool.csproj", "{D721EAA4-8A40-4EF0-A011-5862159BE621}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataTools.UI", "AddIns\Misc\SharpServerTools\DataTools.UI\DataTools.UI.csproj", "{87C0E3D9-0DFD-4F6D-8E38-408AAF73F4EE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataTools.Model", "AddIns\Misc\SharpServerTools\DataTools.Model\DataTools.Model.csproj", "{51783FC4-D8D2-4BFB-A1F1-AC8857CF3ED0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataTools.AddIn", "AddIns\Misc\SharpServerTools\SharpDbTools\DataTools.AddIn.csproj", "{93B2D6DF-7588-40C0-8A35-CA0DD7328FC3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataTools.Model", "AddIns\Misc\SharpServerTools\DataTools.Model\DataTools.Model.csproj", "{51783FC4-D8D2-4BFB-A1F1-AC8857CF3ED0}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ServerBrowserTool", "AddIns\Misc\SharpServerTools\ServerBrowserTool\ServerBrowserTool.csproj", "{D721EAA4-8A40-4EF0-A011-5862159BE621}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataTools.UI", "AddIns\Misc\SharpServerTools\DataTools.UI\DataTools.UI.csproj", "{87C0E3D9-0DFD-4F6D-8E38-408AAF73F4EE}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceToolkit", "AddIns\Misc\ResourceToolkit\Project\ResourceToolkit.csproj", "{461606BD-E824-4D0A-8CBA-01810B1F5E02}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Backends", "Backends", "{FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ComponentInspector", "ComponentInspector", "{BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding", "AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VBNetBinding", "AddIns\BackendBindings\VBNetBinding\Project\VBNetBinding.csproj", "{BF38FB72-B380-4196-AF8C-95749D726C61}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ILAsmBinding", "AddIns\BackendBindings\ILAsmBinding\Project\ILAsmBinding.csproj", "{6e59af58-f635-459a-9a35-c9ac41c00339}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding", "AddIns\BackendBindings\Boo\BooBinding\Project\BooBinding.csproj", "{4AC2D5F1-F671-480C-A075-6BF62B3721B2}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.Core", "AddIns\Misc\ComponentInspector\ComponentInspector.Core\ComponentInspector.Core.csproj", "{E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter", "AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Project\NRefactoryToBooConverter.csproj", "{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.AddIn", "AddIns\Misc\ComponentInspector\ComponentInspector.AddIn\ComponentInspector.AddIn.csproj", "{869951D5-A0D6-4DC6-9F1D-E6B9A12AC446}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding", "AddIns\BackendBindings\WixBinding\Project\WixBinding.csproj", "{e1b288a2-08ee-4318-8bbb-8ab72c69e33e}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector", "AddIns\Misc\ComponentInspector\ComponentInspector\ComponentInspector.csproj", "{000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlBinding", "AddIns\BackendBindings\XamlBinding\Project\XamlBinding.csproj", "{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysis", "AddIns\Misc\CodeAnalysis\CodeAnalysis.csproj", "{3EAA45A9-735C-4AC7-A799-947B93EA449D}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Display Bindings", "Display Bindings", "{4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SubversionAddIn", "AddIns\Misc\SubversionAddIn\Project\SubversionAddIn.csproj", "{17F4D7E0-6933-4C2E-8714-FD7E98D625D5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceEditor", "AddIns\DisplayBindings\ResourceEditor\Project\ResourceEditor.csproj", "{CBC6C247-747B-4908-B09A-4D2E0F640B6B}"
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "HtmlHelp2JScriptGlobals", "AddIns\Misc\HtmlHelp2\JScriptGlobals\HtmlHelp2JScriptGlobals.vbproj", "{E54A5AD2-418D-4A85-BA5E-CD803DE38715}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormsDesigner", "AddIns\DisplayBindings\FormsDesigner\Project\FormsDesigner.csproj", "{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting", "AddIns\Misc\UnitTesting\UnitTesting.csproj", "{1F261725-6318-4434-A1B1-6C70CE4CD324}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor", "AddIns\DisplayBindings\XmlEditor\Project\XmlEditor.csproj", "{6B717BD1-CD5E-498C-A42E-9E6A4584DC48}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage", "AddIns\Misc\CodeCoverage\Project\CodeCoverage.csproj", "{08ce9972-283b-44f4-82fa-966f7dfa6b7a}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IconEditor", "IconEditor", "{0D37CE59-B0EF-4F3C-B9EB-8557E53A448B}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoAddIn", "AddIns\Misc\MonoAddIn\Project\MonoAddIn.csproj", "{082DCD64-EE32-4151-A50F-E139CF754CC0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditor", "AddIns\DisplayBindings\IconEditor\IconEditor\IconEditor.csproj", "{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PInvokeAddIn", "AddIns\Misc\PInvokeAddIn\Project\PInvokeAddIn.csproj", "{5EEB99CF-EA2B-4733-80A6-CE9192D68170}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditorAddIn", "AddIns\DisplayBindings\IconEditor\IconEditorAddIn\IconEditorAddIn.csproj", "{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddInManager", "AddIns\Misc\AddInManager\Project\AddInManager.csproj", "{F93E52FD-DA66-4CE5-A0CB-BCD902811122}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SettingsEditor", "AddIns\DisplayBindings\SettingsEditor\Project\SettingsEditor.csproj", "{85226AFB-CE71-4851-9A75-7EEC663A8E8A}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HtmlHelp2", "AddIns\Misc\HtmlHelp2\Project\HtmlHelp2.csproj", "{918487B7-2153-4618-BBB3-344DBDDF2A2A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ClassDiagram", "ClassDiagram", "{DB137F0B-9B62-4232-AE92-F7BE0280B8D3}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugger", "Debugger", "{6604365C-C702-4C10-9BA8-637F1E3D4D0D}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassCanvas", "AddIns\DisplayBindings\ClassDiagram\ClassCanvas\ClassCanvas.csproj", "{08F772A1-F0BE-433E-8B37-F6522953DB05}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassEditor", "AddIns\DisplayBindings\ClassDiagram\ClassEditor\ClassEditor.csproj", "{F5E059BB-96C2-4398-BED0-8598CD434173}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassDiagramAddin", "AddIns\DisplayBindings\ClassDiagram\ClassDiagramAddin\ClassDiagramAddin.csproj", "{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.AddIn", "AddIns\Misc\Debugger\Debugger.AddIn\Project\Debugger.AddIn.csproj", "{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Diagrams", "AddIns\DisplayBindings\ClassDiagram\DiagramRouter\Diagrams.csproj", "{0991423A-DBF6-4C89-B365-A1DF1EB32E42}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Core", "AddIns\Misc\Debugger\Debugger.Core\Project\Debugger.Core.csproj", "{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassWizard", "AddIns\DisplayBindings\ClassDiagram\ClassWizard\ClassWizard.csproj", "{8C59E80D-C4E4-4F36-9AD8-47C40F6E58B4}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TreeListView", "AddIns\Misc\Debugger\TreeListView\Project\TreeListView.csproj", "{B08385CD-F0CC-488C-B4F4-EEB34B6D2688}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorkflowDesigner", "AddIns\DisplayBindings\WorkflowDesigner\Project\WorkflowDesigner.csproj", "{533F4684-DBA6-4518-B005-C84F22A2DD57}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FiletypeRegisterer", "AddIns\Misc\FiletypeRegisterer\Project\FiletypeRegisterer.csproj", "{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WpfDesign", "WpfDesign", "{388C3979-2621-4839-A955-7E5C03BA0B63}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HighlightingEditor", "AddIns\Misc\HighlightingEditor\Project\HighlightingEditor.csproj", "{8A462940-E5E9-4E85-982D-D4C006EE31D4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign", "AddIns\DisplayBindings\WpfDesign\WpfDesign\Project\WpfDesign.csproj", "{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RegExpTk", "AddIns\Misc\RegExpTk\Project\RegExpTk.csproj", "{64A3E5E6-90BF-47F6-94DF-68C94B62C817}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.Designer", "AddIns\DisplayBindings\WpfDesign\WpfDesign.Designer\Project\WpfDesign.Designer.csproj", "{78CC29AC-CC79-4355-B1F2-97936DF198AC}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartPage", "AddIns\Misc\StartPage\Project\StartPage.csproj", "{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.XamlDom", "AddIns\DisplayBindings\WpfDesign\WpfDesign.XamlDom\Project\WpfDesign.XamlDom.csproj", "{88DA149F-21B2-48AB-82C4-28FB6BDFD783}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddinScout", "AddIns\Misc\AddinScout\Project\AddinScout.csproj", "{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.AddIn", "AddIns\DisplayBindings\WpfDesign\WpfDesign.AddIn\WpfDesign.AddIn.csproj", "{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace", "AddIns\Misc\SearchAndReplace\Project\SearchAndReplace.csproj", "{9196DD8A-B4D4-4780-8742-C5762E547FC2}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{9421EDF4-9769-4BE9-B5A6-C87DE221D73C}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aga.Controls", "Libraries\TreeViewAdv\Aga.Controls\Aga.Controls.csproj", "{E73BB233-D88B-44A7-A98F-D71EE158381D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TextEditor", "Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj", "{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Build.Tasks", "Libraries\ICSharpCode.Build.Tasks\Project\ICSharpCode.Build.Tasks.csproj", "{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinFormsUI", "Libraries\DockPanel_Src\WinFormsUI\WinFormsUI.csproj", "{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Build.Tasks", "Libraries\ICSharpCode.Build.Tasks\Project\ICSharpCode.Build.Tasks.csproj", "{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TextEditor", "Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj", "{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aga.Controls", "Libraries\TreeViewAdv\Aga.Controls\Aga.Controls.csproj", "{E73BB233-D88B-44A7-A98F-D71EE158381D}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{5A3EBEBA-0560-41C1-966B-23F7D03A5486}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{00000000-0000-0000-0000-000000000000}") = "Tools", "Tools\Tools.build", "B13EFF7F-7EA4-4B68-A375-D112105E9182"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Dom", "Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj", "{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Widgets", "Main\ICSharpCode.SharpDevelop.Widgets\Project\ICSharpCode.SharpDevelop.Widgets.csproj", "{8035765F-D51F-4A0C-A746-2FD100E19419}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Sda", "Main\ICSharpCode.SharpDevelop.Sda\ICSharpCode.SharpDevelop.Sda.csproj", "{80318B5F-A25D-45AB-8A95-EF31D2370A4C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Sda", "Main\ICSharpCode.SharpDevelop.Sda\ICSharpCode.SharpDevelop.Sda.csproj", "{80318B5F-A25D-45AB-8A95-EF31D2370A4C}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Widgets", "Main\ICSharpCode.SharpDevelop.Widgets\Project\ICSharpCode.SharpDevelop.Widgets.csproj", "{8035765F-D51F-4A0C-A746-2FD100E19419}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Dom", "Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj", "{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}"
Project("{00000000-0000-0000-0000-000000000000}") = "Tools", "Tools\Tools.build", "B13EFF7F-7EA4-4B68-A375-D112105E9182"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -504,75 +504,75 @@ Global @@ -504,75 +504,75 @@ Global
{9196DD8A-B4D4-4780-8742-C5762E547FC2}.Release|Any CPU.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{6CEEC0D9-FA00-4EE3-9A1C-39B7ACC882FD} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{461606BD-E824-4D0A-8CBA-01810B1F5E02} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{3EAA45A9-735C-4AC7-A799-947B93EA449D} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{17F4D7E0-6933-4C2E-8714-FD7E98D625D5} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{E54A5AD2-418D-4A85-BA5E-CD803DE38715} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{1F261725-6318-4434-A1B1-6C70CE4CD324} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{08ce9972-283b-44f4-82fa-966f7dfa6b7a} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{082DCD64-EE32-4151-A50F-E139CF754CC0} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{5EEB99CF-EA2B-4733-80A6-CE9192D68170} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{F93E52FD-DA66-4CE5-A0CB-BCD902811122} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{918487B7-2153-4618-BBB3-344DBDDF2A2A} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{6604365C-C702-4C10-9BA8-637F1E3D4D0D} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{8A462940-E5E9-4E85-982D-D4C006EE31D4} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{64A3E5E6-90BF-47F6-94DF-68C94B62C817} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{9196DD8A-B4D4-4780-8742-C5762E547FC2} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
{B08385CD-F0CC-488C-B4F4-EEB34B6D2688} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
{E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}
{869951D5-A0D6-4DC6-9F1D-E6B9A12AC446} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}
{000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}
{87C0E3D9-0DFD-4F6D-8E38-408AAF73F4EE} = {6CEEC0D9-FA00-4EE3-9A1C-39B7ACC882FD}
{51783FC4-D8D2-4BFB-A1F1-AC8857CF3ED0} = {6CEEC0D9-FA00-4EE3-9A1C-39B7ACC882FD}
{93B2D6DF-7588-40C0-8A35-CA0DD7328FC3} = {6CEEC0D9-FA00-4EE3-9A1C-39B7ACC882FD}
{D721EAA4-8A40-4EF0-A011-5862159BE621} = {6CEEC0D9-FA00-4EE3-9A1C-39B7ACC882FD}
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{e1b288a2-08ee-4318-8bbb-8ab72c69e33e} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{4AC2D5F1-F671-480C-A075-6BF62B3721B2} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{6e59af58-f635-459a-9a35-c9ac41c00339} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{BF38FB72-B380-4196-AF8C-95749D726C61} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{388C3979-2621-4839-A955-7E5C03BA0B63} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{533F4684-DBA6-4518-B005-C84F22A2DD57} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{DB137F0B-9B62-4232-AE92-F7BE0280B8D3} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{85226AFB-CE71-4851-9A75-7EEC663A8E8A} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{0D37CE59-B0EF-4F3C-B9EB-8557E53A448B} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{6B717BD1-CD5E-498C-A42E-9E6A4584DC48} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{CBC6C247-747B-4908-B09A-4D2E0F640B6B} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92} = {0D37CE59-B0EF-4F3C-B9EB-8557E53A448B}
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD} = {0D37CE59-B0EF-4F3C-B9EB-8557E53A448B}
{8C59E80D-C4E4-4F36-9AD8-47C40F6E58B4} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3}
{0991423A-DBF6-4C89-B365-A1DF1EB32E42} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3}
{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3}
{F5E059BB-96C2-4398-BED0-8598CD434173} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3}
{08F772A1-F0BE-433E-8B37-F6522953DB05} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3}
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865} = {388C3979-2621-4839-A955-7E5C03BA0B63}
{88DA149F-21B2-48AB-82C4-28FB6BDFD783} = {388C3979-2621-4839-A955-7E5C03BA0B63}
{78CC29AC-CC79-4355-B1F2-97936DF198AC} = {388C3979-2621-4839-A955-7E5C03BA0B63}
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{6B717BD1-CD5E-498C-A42E-9E6A4584DC48} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{0D37CE59-B0EF-4F3C-B9EB-8557E53A448B} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{85226AFB-CE71-4851-9A75-7EEC663A8E8A} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{DB137F0B-9B62-4232-AE92-F7BE0280B8D3} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{533F4684-DBA6-4518-B005-C84F22A2DD57} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{388C3979-2621-4839-A955-7E5C03BA0B63} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{66A378A1-E9F4-4AD5-8946-D0EC06C2902F} = {388C3979-2621-4839-A955-7E5C03BA0B63}
{E73BB233-D88B-44A7-A98F-D71EE158381D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{78CC29AC-CC79-4355-B1F2-97936DF198AC} = {388C3979-2621-4839-A955-7E5C03BA0B63}
{88DA149F-21B2-48AB-82C4-28FB6BDFD783} = {388C3979-2621-4839-A955-7E5C03BA0B63}
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865} = {388C3979-2621-4839-A955-7E5C03BA0B63}
{08F772A1-F0BE-433E-8B37-F6522953DB05} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3}
{F5E059BB-96C2-4398-BED0-8598CD434173} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3}
{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3}
{0991423A-DBF6-4C89-B365-A1DF1EB32E42} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3}
{8C59E80D-C4E4-4F36-9AD8-47C40F6E58B4} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3}
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD} = {0D37CE59-B0EF-4F3C-B9EB-8557E53A448B}
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92} = {0D37CE59-B0EF-4F3C-B9EB-8557E53A448B}
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{BF38FB72-B380-4196-AF8C-95749D726C61} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{6e59af58-f635-459a-9a35-c9ac41c00339} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{4AC2D5F1-F671-480C-A075-6BF62B3721B2} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{e1b288a2-08ee-4318-8bbb-8ab72c69e33e} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{9196DD8A-B4D4-4780-8742-C5762E547FC2} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{64A3E5E6-90BF-47F6-94DF-68C94B62C817} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{8A462940-E5E9-4E85-982D-D4C006EE31D4} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{6604365C-C702-4C10-9BA8-637F1E3D4D0D} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{918487B7-2153-4618-BBB3-344DBDDF2A2A} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{F93E52FD-DA66-4CE5-A0CB-BCD902811122} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{5EEB99CF-EA2B-4733-80A6-CE9192D68170} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{082DCD64-EE32-4151-A50F-E139CF754CC0} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{08ce9972-283b-44f4-82fa-966f7dfa6b7a} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{1F261725-6318-4434-A1B1-6C70CE4CD324} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{E54A5AD2-418D-4A85-BA5E-CD803DE38715} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{17F4D7E0-6933-4C2E-8714-FD7E98D625D5} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{3EAA45A9-735C-4AC7-A799-947B93EA449D} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{461606BD-E824-4D0A-8CBA-01810B1F5E02} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{6CEEC0D9-FA00-4EE3-9A1C-39B7ACC882FD} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{D721EAA4-8A40-4EF0-A011-5862159BE621} = {6CEEC0D9-FA00-4EE3-9A1C-39B7ACC882FD}
{93B2D6DF-7588-40C0-8A35-CA0DD7328FC3} = {6CEEC0D9-FA00-4EE3-9A1C-39B7ACC882FD}
{51783FC4-D8D2-4BFB-A1F1-AC8857CF3ED0} = {6CEEC0D9-FA00-4EE3-9A1C-39B7ACC882FD}
{87C0E3D9-0DFD-4F6D-8E38-408AAF73F4EE} = {6CEEC0D9-FA00-4EE3-9A1C-39B7ACC882FD}
{000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}
{869951D5-A0D6-4DC6-9F1D-E6B9A12AC446} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}
{E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}
{B08385CD-F0CC-488C-B4F4-EEB34B6D2688} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{8035765F-D51F-4A0C-A746-2FD100E19419} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{80318B5F-A25D-45AB-8A95-EF31D2370A4C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{2748AD25-9C63-4E12-877B-4DCE96FBED54} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{1152B71B-3C05-4598-B20D-823B5D40559E} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{E73BB233-D88B-44A7-A98F-D71EE158381D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
B13EFF7F-7EA4-4B68-A375-D112105E9182 = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{1152B71B-3C05-4598-B20D-823B5D40559E} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{2748AD25-9C63-4E12-877B-4DCE96FBED54} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{80318B5F-A25D-45AB-8A95-EF31D2370A4C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{8035765F-D51F-4A0C-A746-2FD100E19419} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
EndGlobalSection
EndGlobal

Loading…
Cancel
Save