diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs index 191443c810..3a3f53c977 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs @@ -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 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); } } } diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpMyNamespaceBuilder.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpMyNamespaceBuilder.cs index c521ebaf86..6700334d03 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpMyNamespaceBuilder.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpMyNamespaceBuilder.cs @@ -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 + " {"); diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/VBNetToCSharpConvertVisitorWithMyFormsSupport.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/VBNetToCSharpConvertVisitorWithMyFormsSupport.cs index b43cb4f49d..43a9c0996b 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/VBNetToCSharpConvertVisitorWithMyFormsSupport.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/VBNetToCSharpConvertVisitorWithMyFormsSupport.cs @@ -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 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; + } } } diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/VBNetToCSharpConverter.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/VBNetToCSharpConverter.cs index 07f2f9cbe6..1a75617f07 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/VBNetToCSharpConverter.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/VBNetToCSharpConverter.cs @@ -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(',', ';'); }); } diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBNetFormattingStrategy.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBNetFormattingStrategy.cs index 7b1db1d7fe..888f72b57f 100644 --- a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBNetFormattingStrategy.cs +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBNetFormattingStrategy.cs @@ -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; diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDocumentEditor.cs b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDocumentEditor.cs index 417ca4fd82..e31d137ec9 100644 --- a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDocumentEditor.cs +++ b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDocumentEditor.cs @@ -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); } diff --git a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerGenerator/AbstractDesignerGenerator.cs b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerGenerator/AbstractDesignerGenerator.cs index d0d7f83851..772bb1a180 100644 --- a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerGenerator/AbstractDesignerGenerator.cs +++ b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerGenerator/AbstractDesignerGenerator.cs @@ -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 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 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 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(); diff --git a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerGenerator/CSharpDesignerGenerator.cs b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerGenerator/CSharpDesignerGenerator.cs index 71cca630ff..82c8162b58 100644 --- a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerGenerator/CSharpDesignerGenerator.cs +++ b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerGenerator/CSharpDesignerGenerator.cs @@ -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 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++); diff --git a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerViewContent.cs b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerViewContent.cs index 4dc10425ae..ad0c830734 100644 --- a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerViewContent.cs +++ b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerViewContent.cs @@ -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; diff --git a/src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Services/EventBindingService/CSharpWorkflowDesignerEventBindingService.cs b/src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Services/EventBindingService/CSharpWorkflowDesignerEventBindingService.cs index e11eec73a0..f4ee77c886 100644 --- a/src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Services/EventBindingService/CSharpWorkflowDesignerEventBindingService.cs +++ b/src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Services/EventBindingService/CSharpWorkflowDesignerEventBindingService.cs @@ -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 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 == '{') { diff --git a/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XPathQueryControl.cs b/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XPathQueryControl.cs index 1606653d14..b17d8cb385 100644 --- a/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XPathQueryControl.cs +++ b/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XPathQueryControl.cs @@ -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); diff --git a/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/DynamicHelpPad.cs b/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/DynamicHelpPad.cs index 320754e048..0f0f784835 100644 --- a/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/DynamicHelpPad.cs +++ b/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/DynamicHelpPad.cs @@ -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; diff --git a/src/AddIns/Misc/ResourceToolkit/Project/Src/Refactoring/ResourceRefactoringService.cs b/src/AddIns/Misc/ResourceToolkit/Project/Src/Refactoring/ResourceRefactoringService.cs index adc0c87749..6460f57f5c 100644 --- a/src/AddIns/Misc/ResourceToolkit/Project/Src/Refactoring/ResourceRefactoringService.cs +++ b/src/AddIns/Misc/ResourceToolkit/Project/Src/Refactoring/ResourceRefactoringService.cs @@ -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 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) { diff --git a/src/AddIns/Misc/ResourceToolkit/Project/Src/Resolver/AbstractResourceResolver.cs b/src/AddIns/Misc/ResourceToolkit/Project/Src/Resolver/AbstractResourceResolver.cs index ea62be1994..3a1a612b05 100644 --- a/src/AddIns/Misc/ResourceToolkit/Project/Src/Resolver/AbstractResourceResolver.cs +++ b/src/AddIns/Misc/ResourceToolkit/Project/Src/Resolver/AbstractResourceResolver.cs @@ -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); } /// diff --git a/src/AddIns/Misc/ResourceToolkit/Project/Src/ToolTips/ResourceToolTipProvider.cs b/src/AddIns/Misc/ResourceToolkit/Project/Src/ToolTips/ResourceToolTipProvider.cs index fa60693fa1..1f1e3a60db 100644 --- a/src/AddIns/Misc/ResourceToolkit/Project/Src/ToolTips/ResourceToolTipProvider.cs +++ b/src/AddIns/Misc/ResourceToolkit/Project/Src/ToolTips/ResourceToolTipProvider.cs @@ -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; diff --git a/src/AddIns/Misc/SearchAndReplace/Test/MockDocument.cs b/src/AddIns/Misc/SearchAndReplace/Test/MockDocument.cs index f430554c24..3b06be8d84 100644 --- a/src/AddIns/Misc/SearchAndReplace/Test/MockDocument.cs +++ b/src/AddIns/Misc/SearchAndReplace/Test/MockDocument.cs @@ -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(); } diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/ICSharpCode.TextEditor.csproj b/src/Libraries/ICSharpCode.TextEditor/Project/ICSharpCode.TextEditor.csproj index b9c3317b5e..2c081df7a8 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/ICSharpCode.TextEditor.csproj +++ b/src/Libraries/ICSharpCode.TextEditor/Project/ICSharpCode.TextEditor.csproj @@ -1,4 +1,4 @@ - + Debug AnyCPU @@ -20,6 +20,7 @@ 98041856 AnyCPU 4096 + v2.0 False @@ -59,6 +60,7 @@ + diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/CaretActions.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/CaretActions.cs index a447dd069a..c505c19d7e 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/CaretActions.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/CaretActions.cs @@ -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 foldings = textArea.Document.FoldingManager.GetFoldedFoldingsWithEnd(position.Y); FoldMarker justBeforeCaret = null; foreach (FoldMarker fm in foldings) { @@ -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 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 foldings = textArea.Document.FoldingManager.GetFoldedFoldingsWithStart(position.Y); FoldMarker justBehindCaret = null; foreach (FoldMarker fm in foldings) { @@ -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 { 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 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 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 { 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 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 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; } diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/HomeEndActions.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/HomeEndActions.cs index 18a0b3544b..c200fc32b7 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/HomeEndActions.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/HomeEndActions.cs @@ -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 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 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 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 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 { 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(); diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/MiscActions.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/MiscActions.cs index d24a0bd9f3..995be73536 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/MiscActions.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/MiscActions.cs @@ -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 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 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 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 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 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 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 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 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 { 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(); diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/SelectionActions.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/SelectionActions.cs index 17f73929c8..5b2e719a48 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/SelectionActions.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/SelectionActions.cs @@ -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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 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) { diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/DefaultDocument.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/DefaultDocument.cs index 1e16bf6632..54ccd0ec9c 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/DefaultDocument.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/DefaultDocument.cs @@ -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; diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/IDocument.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/IDocument.cs index 8fddcfcb0e..93b4f3c095 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/IDocument.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/IDocument.cs @@ -90,7 +90,7 @@ namespace ICSharpCode.TextEditor.Document // get; // } -#region ILineManager interface + #region ILineManager interface /// /// A collection of all line segments /// @@ -104,7 +104,7 @@ namespace ICSharpCode.TextEditor.Document } /// - /// 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. /// int TotalNumberOfLines { @@ -189,9 +189,9 @@ namespace ICSharpCode.TextEditor.Document /// Get the next visible line below lineNumber /// int GetNextVisibleLineBelow(int lineNumber, int lineCount); -#endregion + #endregion -#region ITextBufferStrategy interface + #region ITextBufferStrategy interface /// /// 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 /// number of characters to copy. /// string GetText(int offset, int length); -#endregion + #endregion string GetText(ISegment segment); -#region ITextModel interface + #region ITextModel interface /// /// returns the logical line/column position from an offset /// - Point OffsetToPosition(int offset); + TextLocation OffsetToPosition(int offset); /// /// returns the offset from a logical line/column position /// - int PositionToOffset(Point p); -#endregion + int PositionToOffset(TextLocation p); + #endregion /// /// A container where all TextAreaUpdate objects get stored /// diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/MarkerStrategy/MarkerStrategy.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/MarkerStrategy/MarkerStrategy.cs index bb6264a68b..9196c30df3 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/MarkerStrategy/MarkerStrategy.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/MarkerStrategy/MarkerStrategy.cs @@ -100,7 +100,7 @@ namespace ICSharpCode.TextEditor.Document return markers; } - public List GetMarkers(Point position) + public List GetMarkers(TextLocation position) { if (position.Y >= document.TotalNumberOfLines || position.Y < 0) { return new List(); diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/Selection/DefaultSelection.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/Selection/DefaultSelection.cs index de818b7822..f766a30eb2 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/Selection/DefaultSelection.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/Selection/DefaultSelection.cs @@ -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 } } - public Point EndPosition { + public TextLocation EndPosition { get { return endPosition; } @@ -96,7 +96,7 @@ namespace ICSharpCode.TextEditor.Document /// /// Creates a new instance of /// - 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 { 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; diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/Selection/ISelection.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/Selection/ISelection.cs index 7d1ab9d2f2..702fe5f9af 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/Selection/ISelection.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/Selection/ISelection.cs @@ -14,12 +14,12 @@ namespace ICSharpCode.TextEditor.Document /// public interface ISelection { - Point StartPosition { + TextLocation StartPosition { get; set; } - Point EndPosition { + TextLocation EndPosition { get; set; } @@ -59,6 +59,6 @@ namespace ICSharpCode.TextEditor.Document bool ContainsOffset(int offset); - bool ContainsPosition(Point position); + bool ContainsPosition(TextLocation position); } } diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/Selection/SelectionManager.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/Selection/SelectionManager.cs index 3ea265afb4..8c374e80dd 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/Selection/SelectionManager.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/Selection/SelectionManager.cs @@ -17,7 +17,7 @@ namespace ICSharpCode.TextEditor.Document /// 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 } } - 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 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 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 // - 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() diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/TextLocation.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/TextLocation.cs new file mode 100644 index 0000000000..7403ea9c9e --- /dev/null +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/TextLocation.cs @@ -0,0 +1,128 @@ +// +// +// +// +// $Revision: 2658$ +// + +using System; + +namespace ICSharpCode.TextEditor +{ + /// + /// A line/column position. + /// Text editor lines/columns are counting from zero. + /// + public struct TextLocation : IComparable, IEquatable + { + /// + /// Represents no text location (-1, -1). + /// + 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; + } + } +} diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/BracketHighlighter.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/BracketHighlighter.cs index 852c3b7918..45d47744f5 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/BracketHighlighter.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/BracketHighlighter.cs @@ -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 } 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 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); } } diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/Caret.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/Caret.cs index 5ae4582eb4..c02e5fe2ac 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/Caret.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/Caret.cs @@ -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 // 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 LineSegment lineSegment = textArea.Document.GetLineSegment(line); column = Math.Min(column, lineSegment.Length); } - return new Point(column, line); + return new TextLocation(column, line); } /// diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/CompletionWindow/AbstractCompletionWindow.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/CompletionWindow/AbstractCompletionWindow.cs index 6e07fb7905..955d41c828 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/CompletionWindow/AbstractCompletionWindow.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/CompletionWindow/AbstractCompletionWindow.cs @@ -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; diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/GutterMargin.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/GutterMargin.cs index 8eea735f84..7a1466430c 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/GutterMargin.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/GutterMargin.cs @@ -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 // 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 // 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 // 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); } } } diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/InsightWindow/InsightWindow.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/InsightWindow/InsightWindow.cs index 54d62e187e..1823cfc359 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/InsightWindow/InsightWindow.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/InsightWindow/InsightWindow.cs @@ -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); diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextArea.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextArea.cs index 3e31d1c532..b619bcd897 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextArea.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextArea.cs @@ -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 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 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; diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaClipboardHandler.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaClipboardHandler.cs index edb00ab408..1d4cd6ce7e 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaClipboardHandler.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaClipboardHandler.cs @@ -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(); } } diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaControl.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaControl.cs index 18624d42a8..1fcaac1ac5 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaControl.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaControl.cs @@ -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(); } diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaDragDropHandler.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaDragDropHandler.cs index 61d9b48460..b83daba3c7 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaDragDropHandler.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaDragDropHandler.cs @@ -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); diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaMouseHandler.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaMouseHandler.cs index c63da52014..1df2d7edd4 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaMouseHandler.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaMouseHandler.cs @@ -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 { 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 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 } // 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 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 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 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 } 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 } 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 return offset; } - Point minSelection = nilPoint; - Point maxSelection = nilPoint; + TextLocation minSelection = TextLocation.Empty; + TextLocation maxSelection = TextLocation.Empty; void OnDoubleClick(object sender, System.EventArgs e) { diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaUpdate.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaUpdate.cs index f2011fc1ba..fd8919572f 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaUpdate.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaUpdate.cs @@ -27,7 +27,7 @@ namespace ICSharpCode.TextEditor /// public class TextAreaUpdate { - Point position; + TextLocation position; TextAreaUpdateType type; public TextAreaUpdateType TextAreaUpdateType { @@ -36,7 +36,7 @@ namespace ICSharpCode.TextEditor } } - public Point Position { + public TextLocation Position { get { return position; } @@ -44,7 +44,7 @@ namespace ICSharpCode.TextEditor /// /// Creates a new instance of - /// + /// public TextAreaUpdate(TextAreaUpdateType type) { this.type = type; @@ -52,8 +52,8 @@ namespace ICSharpCode.TextEditor /// /// Creates a new instance of - /// - public TextAreaUpdate(TextAreaUpdateType type, Point position) + /// + public TextAreaUpdate(TextAreaUpdateType type, TextLocation position) { this.type = type; this.position = position; @@ -61,20 +61,20 @@ namespace ICSharpCode.TextEditor /// /// Creates a new instance of - /// + /// public TextAreaUpdate(TextAreaUpdateType type, int startLine, int endLine) { this.type = type; - this.position = new Point(startLine, endLine); + this.position = new TextLocation(startLine, endLine); } /// /// Creates a new instance of - /// + /// 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() diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextView.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextView.cs index 28d3ea84b1..e5548039f9 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextView.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextView.cs @@ -726,12 +726,12 @@ namespace ICSharpCode.TextEditor /// /// returns line/column for a visual point position /// - 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 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 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 // 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; diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/ToolTipRequestEventArgs.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/ToolTipRequestEventArgs.cs index 3a5df4bcc9..dc2207b05b 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/ToolTipRequestEventArgs.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/ToolTipRequestEventArgs.cs @@ -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 } } - public Point LogicalPosition { + public TextLocation LogicalPosition { get { return logicalPosition; } @@ -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; diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Undo/UndoStack.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Undo/UndoStack.cs index b58b12ee85..d6daf5bbec 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Undo/UndoStack.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Undo/UndoStack.cs @@ -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; diff --git a/src/Libraries/NRefactory/Project/Src/Lexer/VBNet/Lexer.cs b/src/Libraries/NRefactory/Project/Src/Lexer/VBNet/Lexer.cs index 770bc55f15..a4dce1f6e0 100644 --- a/src/Libraries/NRefactory/Project/Src/Lexer/VBNet/Lexer.cs +++ b/src/Libraries/NRefactory/Project/Src/Lexer/VBNet/Lexer.cs @@ -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 if (!lineEnd) { errors.Error(Line, Col, String.Format("Return expected")); } - lineEnd = false; + lineEnd = oldLineEnd; continue; } diff --git a/src/Libraries/NRefactory/Project/Src/Location.cs b/src/Libraries/NRefactory/Project/Src/Location.cs index 2c23a51b21..4c4a5dc529 100644 --- a/src/Libraries/NRefactory/Project/Src/Location.cs +++ b/src/Libraries/NRefactory/Project/Src/Location.cs @@ -11,6 +11,7 @@ namespace ICSharpCode.NRefactory { /// /// A line/column position. + /// NRefactory lines/columns are counting from one. /// public struct Location : IComparable, IEquatable { diff --git a/src/Libraries/NRefactory/Test/Lexer/VBNet/CustomLexerTests.cs b/src/Libraries/NRefactory/Test/Lexer/VBNet/CustomLexerTests.cs new file mode 100644 index 0000000000..b1a14e5fdd --- /dev/null +++ b/src/Libraries/NRefactory/Test/Lexer/VBNet/CustomLexerTests.cs @@ -0,0 +1,46 @@ +// +// +// +// +// $Revision: 2658$ +// + +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)); + } + } +} diff --git a/src/Libraries/NRefactory/Test/NRefactoryTests.csproj b/src/Libraries/NRefactory/Test/NRefactoryTests.csproj index c77500988b..ea1bed0848 100644 --- a/src/Libraries/NRefactory/Test/NRefactoryTests.csproj +++ b/src/Libraries/NRefactory/Test/NRefactoryTests.csproj @@ -46,6 +46,7 @@ + diff --git a/src/Main/Base/Project/Src/Gui/AbstractViewContentHandlingLoadErrors.cs b/src/Main/Base/Project/Src/Gui/AbstractViewContentHandlingLoadErrors.cs index ca4a64d89c..1656d00729 100644 --- a/src/Main/Base/Project/Src/Gui/AbstractViewContentHandlingLoadErrors.cs +++ b/src/Main/Base/Project/Src/Gui/AbstractViewContentHandlingLoadErrors.cs @@ -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; diff --git a/src/Main/Base/Project/Src/Gui/Pads/SearchResultPad/Nodes/SearchResultNode.cs b/src/Main/Base/Project/Src/Gui/Pads/SearchResultPad/Nodes/SearchResultNode.cs index fa49613a55..bed9daa921 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/SearchResultPad/Nodes/SearchResultNode.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/SearchResultPad/Nodes/SearchResultNode.cs @@ -25,7 +25,7 @@ namespace SearchAndReplace { SearchResultMatch result; - Point startPosition; + TextLocation startPosition; string positionText; string displayText; string specialText; @@ -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); diff --git a/src/Main/Base/Project/Src/Gui/Pads/SearchResultPad/SearchResultMatch.cs b/src/Main/Base/Project/Src/Gui/Pads/SearchResultPad/SearchResultMatch.cs index 045c0c2cfb..44916f7872 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/SearchResultPad/SearchResultMatch.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/SearchResultPad/SearchResultMatch.cs @@ -7,6 +7,7 @@ using System; using System.Drawing; +using ICSharpCode.TextEditor; using ICSharpCode.TextEditor.Document; 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 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 } } - public SimpleSearchResultMatch(string displayText, Point position) : base(0, 0) + public SimpleSearchResultMatch(string displayText, TextLocation position) : base(0, 0) { this.position = position; this.displayText = displayText; diff --git a/src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs b/src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs index 45f04ec827..bea2f5ae6a 100644 --- a/src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs +++ b/src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs @@ -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 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 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); + } } } diff --git a/src/Main/Base/Project/Src/Project/MSBuildInternals.cs b/src/Main/Base/Project/Src/Project/MSBuildInternals.cs index e92512fafb..4d4d0a3527 100644 --- a/src/Main/Base/Project/Src/Project/MSBuildInternals.cs +++ b/src/Main/Base/Project/Src/Project/MSBuildInternals.cs @@ -353,7 +353,12 @@ namespace ICSharpCode.SharpDevelop.Project } } } - var referenceDict = references.ToDictionary(item => item.Include); + var referenceDict = new Dictionary(); + 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)); diff --git a/src/Main/Base/Project/Src/Services/Debugger/DebuggerGridControl.cs b/src/Main/Base/Project/Src/Services/Debugger/DebuggerGridControl.cs index eed61cdf50..34cfe139f0 100644 --- a/src/Main/Base/Project/Src/Services/Debugger/DebuggerGridControl.cs +++ b/src/Main/Base/Project/Src/Services/Debugger/DebuggerGridControl.cs @@ -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 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; diff --git a/src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs b/src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs index 179396e478..71c2b85013 100644 --- a/src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs +++ b/src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs @@ -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 /// 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) diff --git a/src/Main/Base/Project/Src/Services/RefactoringService/FindReferencesAndRenameHelper.cs b/src/Main/Base/Project/Src/Services/RefactoringService/FindReferencesAndRenameHelper.cs index 97c4ae0cc3..eb0de5338d 100644 --- a/src/Main/Base/Project/Src/Services/RefactoringService/FindReferencesAndRenameHelper.cs +++ b/src/Main/Base/Project/Src/Services/RefactoringService/FindReferencesAndRenameHelper.cs @@ -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 { diff --git a/src/Main/Base/Project/Src/Services/RefactoringService/TextEditorDocument.cs b/src/Main/Base/Project/Src/Services/RefactoringService/TextEditorDocument.cs index d9ba075944..bedb8b0014 100644 --- a/src/Main/Base/Project/Src/Services/RefactoringService/TextEditorDocument.cs +++ b/src/Main/Base/Project/Src/Services/RefactoringService/TextEditorDocument.cs @@ -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) diff --git a/src/Main/Base/Project/Src/TextEditor/Commands/ClassBookmarkMenuBuilder.cs b/src/Main/Base/Project/Src/TextEditor/Commands/ClassBookmarkMenuBuilder.cs index 0e37f30d07..24289b7a38 100644 --- a/src/Main/Base/Project/Src/TextEditor/Commands/ClassBookmarkMenuBuilder.cs +++ b/src/Main/Base/Project/Src/TextEditor/Commands/ClassBookmarkMenuBuilder.cs @@ -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 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); } diff --git a/src/Main/Base/Project/Src/TextEditor/Commands/ClassMemberMenuBuilder.cs b/src/Main/Base/Project/Src/TextEditor/Commands/ClassMemberMenuBuilder.cs index b4694cc5fe..dd08af783b 100644 --- a/src/Main/Base/Project/Src/TextEditor/Commands/ClassMemberMenuBuilder.cs +++ b/src/Main/Base/Project/Src/TextEditor/Commands/ClassMemberMenuBuilder.cs @@ -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); } diff --git a/src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/CodeGenerationForm.cs b/src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/CodeGenerationForm.cs index c8c452607f..4e091d4240 100644 --- a/src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/CodeGenerationForm.cs +++ b/src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/CodeGenerationForm.cs @@ -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; diff --git a/src/Main/Base/Project/Src/TextEditor/Commands/ToolCommands.cs b/src/Main/Base/Project/Src/TextEditor/Commands/ToolCommands.cs index b2bf24bb3d..37eaf7cbb3 100644 --- a/src/Main/Base/Project/Src/TextEditor/Commands/ToolCommands.cs +++ b/src/Main/Base/Project/Src/TextEditor/Commands/ToolCommands.cs @@ -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(); } } diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CodeCompletionData.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CodeCompletionData.cs index c16872297f..00b330a1eb 100644 --- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CodeCompletionData.cs +++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CodeCompletionData.cs @@ -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)); diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/QuickClassBrowserPanel.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/QuickClassBrowserPanel.cs index e7bb7585a6..afc9467df6 100644 --- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/QuickClassBrowserPanel.cs +++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/QuickClassBrowserPanel.cs @@ -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 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; diff --git a/src/Main/Base/Test/CodeConverterTests.cs b/src/Main/Base/Test/CodeConverterTests.cs index 64f7ea5a7b..fc4785cca2 100644 --- a/src/Main/Base/Test/CodeConverterTests.cs +++ b/src/Main/Base/Test/CodeConverterTests.cs @@ -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 " 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 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 } #endregion + [Test] + public void AutomaticInitializeComponentCall() + { + TestProgramVB2CS("Imports System.Windows.Forms\n" + + " _\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 "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 } 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 " 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 {\n" + " public string Current { get { } }\n" + " object System.Collections.IEnumerator.Current { get { } }\n" + @@ -547,7 +646,6 @@ namespace ICSharpCode.SharpDevelop.Tests { TestProgramVB2CS(VBIEnumeratorOfStringImplementation, DefaultUsingsCSharp + - "using System;\n" + "using System.Collections.Generic;\n" + "class Test : IEnumerator\n" + "{\n" + diff --git a/src/Main/Base/Test/NRefactoryResolverTests.cs b/src/Main/Base/Test/NRefactoryResolverTests.cs index 2d559e7b13..20bcd146c0 100644 --- a/src/Main/Base/Test/NRefactoryResolverTests.cs +++ b/src/Main/Base/Test/NRefactoryResolverTests.cs @@ -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 { 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(program, "c(3)", 5); + Assert.AreEqual("Microsoft.VisualBasic.Collection.Item", result.ResolvedMember.FullyQualifiedName); + IProperty p = (IProperty)result.ResolvedMember; + Assert.IsTrue(p.IsIndexer); + + result = ResolveVB(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(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 { } 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(program, "CancelButton", 5); + Assert.AreEqual("F.cancelButton", result.ResolvedMember.FullyQualifiedName); + + result = ResolveVB(program, "MyBase.CancelButton", 5); + Assert.AreEqual("System.Windows.Forms.Form.CancelButton", result.ResolvedMember.FullyQualifiedName); + } #endregion #region MixedType tests diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/MemberLookupHelper.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/MemberLookupHelper.cs index 0f57a94507..746ca12b56 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/MemberLookupHelper.cs +++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/MemberLookupHelper.cs @@ -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; diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/CSharpToVBNetConvertVisitor.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/CSharpToVBNetConvertVisitor.cs index f93391571a..8a79a7e297 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/CSharpToVBNetConvertVisitor.cs +++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/CSharpToVBNetConvertVisitor.cs @@ -18,18 +18,18 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver /// 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 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 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 { // 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 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 interfaceImplementations) @@ -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 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 { 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 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 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 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 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 { 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 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 { base.VisitCastExpression(castExpression, data); - if (_resolver.CompilationUnit == null) + if (resolver.CompilationUnit == null) return null; // cast to value type is a conversion diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryASTConvertVisitor.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryASTConvertVisitor.cs index 506274c1a3..388b6ad03a 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryASTConvertVisitor.cs +++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryASTConvertVisitor.cs @@ -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(); diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryResolver.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryResolver.cs index 682c2022d9..da435efc28 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryResolver.cs +++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryResolver.cs @@ -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 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 diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/TypeVisitor.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/TypeVisitor.cs index 50fa9ce97d..554265800c 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/TypeVisitor.cs +++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/TypeVisitor.cs @@ -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 indexers = type.GetProperties(); + List indexers = targetObjectType.GetProperties(); // remove non-indexers: for (int i = 0; i < indexers.Count; i++) { if (!indexers[i].IsIndexer) diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/VBNetToCSharpConvertVisitor.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/VBNetToCSharpConvertVisitor.cs index dd3dc14076..c63104d01a 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/VBNetToCSharpConvertVisitor.cs +++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/VBNetToCSharpConvertVisitor.cs @@ -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 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 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 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 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 return null; } + /// + /// Gets if the converter should add a default constructor to the current class if the + /// class does not have any constructors. + /// + 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; + } + + /// + /// Adds a default constructor to the type. + /// + 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 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 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 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 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 // 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 } 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 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; + } } } diff --git a/src/SharpDevelop.sln b/src/SharpDevelop.sln index 7d80ee976d..6e716c3500 100644 --- a/src/SharpDevelop.sln +++ b/src/SharpDevelop.sln @@ -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 {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