Browse Source

Merged Corsavy r1333:1387 to trunk.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@1388 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
46b5c86bfb
  1. 70
      AddIns/ICSharpCode.SharpDevelop.addin
  2. BIN
      data/resources/StringResources.cz.resources
  3. BIN
      data/resources/StringResources.de.resources
  4. BIN
      data/resources/StringResources.hu.resources
  5. BIN
      data/resources/StringResources.nl.resources
  6. BIN
      data/resources/StringResources.pt-br.resources
  7. BIN
      data/resources/StringResources.tr.resources
  8. 2
      data/templates/file/CSharp/CSharp.Web.WebControl.xft
  9. 2
      data/templates/file/CSharp/CSharp.Web.WebService.xft
  10. 61
      doc/AssemblyBaseAddresses.txt
  11. 10
      src/AddIns/BackendBindings/Boo/BooBinding.sln
  12. 2
      src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.csproj
  13. 8
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooAmbience.cs
  14. 16
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooProject.cs
  15. 76
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/BooResolver.cs
  16. 2
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/CompletionBinding.cs
  17. 57
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ConvertVisitor.cs
  18. 34
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/InferredReturnType.cs
  19. 56
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ResolveVisitor.cs
  20. 50
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/VariableLookupVisitor.cs
  21. 72
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/Designer/BooDesignerGenerator.cs
  22. 6
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/Designer/BooDesignerLoader.cs
  23. 77
      src/AddIns/BackendBindings/Boo/BooBinding/Test/BooBinding.Tests.csproj
  24. 417
      src/AddIns/BackendBindings/Boo/BooBinding/Test/ResolverTests.cs
  25. 8
      src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitorExpressions.cs
  26. 18
      src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/NRefactoryToBooConverter.csproj
  27. 30
      src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Test/MemberTests.cs
  28. 5
      src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Test/TestHelper.cs
  29. 10
      src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj
  30. 8
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpAmbience.cs
  31. 104
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs
  32. 11
      src/AddIns/BackendBindings/ILAsmBinding/Project/ILAsmBinding.csproj
  33. 102
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBNetFormattingStrategy.cs
  34. 11
      src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.csproj
  35. 2
      src/AddIns/DisplayBindings/FormsDesigner/Project/FormsDesigner.csproj
  36. 10
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerGenerator/AbstractDesignerGenerator.cs
  37. 6
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerLoader/NRefactoryDesignerLoader.cs
  38. 72
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Services/TypeResolutionService.cs
  39. 11
      src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.csproj
  40. 7
      src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceList.cs
  41. 5
      src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlSchemaCompletionData.cs
  42. 2
      src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.csproj
  43. 30
      src/AddIns/DisplayBindings/XmlEditor/Test/Schema/AllElementTestFixture.cs
  44. 2
      src/AddIns/Misc/AddInManager/Project/AddInManager.csproj
  45. 11
      src/AddIns/Misc/AddinScout/Project/AddinScout.csproj
  46. 2
      src/AddIns/Misc/CodeCoverage/Project/CodeCoverage.csproj
  47. 11
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Debugger.AddIn.csproj
  48. 1
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/DynamicTreeDebuggerRow.cs
  49. 5
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Debugger.Core.csproj
  50. 2
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Function.cs
  51. 8
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/SourcecodeSegment.cs
  52. 3
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Thread.cs
  53. 4
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/ClassVariable.cs
  54. 4
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/ObjectValue.cs
  55. 10
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Value.cs
  56. 13
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Variable.cs
  57. 11
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/VariableCollection.cs
  58. 10
      src/AddIns/Misc/Debugger/TreeListView/Project/TreeListView.csproj
  59. 11
      src/AddIns/Misc/FiletypeRegisterer/Project/FiletypeRegisterer.csproj
  60. 10
      src/AddIns/Misc/HighlightingEditor/Project/HighlightingEditor.csproj
  61. 9
      src/AddIns/Misc/HighlightingEditor/Project/Src/EditHighlightingPanel.cs
  62. 43
      src/AddIns/Misc/HighlightingEditor/Project/Src/EditorHighlightColor.cs
  63. 7
      src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/AbstractNode.cs
  64. 7
      src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/DigitsNode.cs
  65. 27
      src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/EnvironmentNode.cs
  66. 24
      src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/KeywordListNode.cs
  67. 6
      src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/KeywordListsNode.cs
  68. 12
      src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/MarkerNode.cs
  69. 6
      src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/MarkersNode.cs
  70. 19
      src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/PropertiesNode.cs
  71. 42
      src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/RuleSetNode.cs
  72. 9
      src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/RuleSetsNode.cs
  73. 42
      src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/SchemeNode.cs
  74. 40
      src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/SpanNode.cs
  75. 6
      src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/SpansNode.cs
  76. 12
      src/AddIns/Misc/HtmlHelp2/JScriptGlobals/HtmlHelp2JScriptGlobals.vbproj
  77. 23
      src/AddIns/Misc/HtmlHelp2/Project/HtmlHelp2.csproj
  78. 4
      src/AddIns/Misc/HtmlHelp2/Project/src/Service/Help2RegistryWalker.cs
  79. 2
      src/AddIns/Misc/MonoAddIn/Project/MonoAddIn.csproj
  80. 2
      src/AddIns/Misc/MonoReflectionLoader/Project/MonoReflectionLoader.csproj
  81. 5
      src/AddIns/Misc/NAntAddIn/Project/NAntAddIn.csproj
  82. 10
      src/AddIns/Misc/PInvokeAddIn/Project/PInvokeAddIn.csproj
  83. 10
      src/AddIns/Misc/RegExpTk/Project/RegExpTk.csproj
  84. 18
      src/AddIns/Misc/SharpQuery/SharpQuery.csproj
  85. 4
      src/AddIns/Misc/SharpReport/SharpReport/Designer/SectionControls/ReportSection.cs
  86. 2
      src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ControlHelper.cs
  87. 4
      src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportControlBase.cs
  88. 2
      src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportLineControl.cs
  89. 6
      src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportRectangleControl.cs
  90. 23
      src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportRowControl.cs
  91. 58
      src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportTextControl.cs
  92. 15
      src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ItemsHelper.cs
  93. 10
      src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ReportDataItem.cs
  94. 4
      src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ReportRowItem.cs
  95. 32
      src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ReportTextItem.cs
  96. 2
      src/AddIns/Misc/SharpReport/SharpReport/SharpReport.csproj
  97. 9
      src/AddIns/Misc/SharpReport/SharpReport/Visitors/LoadReportVisitor.cs
  98. 2
      src/AddIns/Misc/SharpReport/SharpReportAddin/SharpReportAddin.csproj
  99. 9
      src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseDataItem.cs
  100. 16
      src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseReportItem.cs
  101. Some files were not shown because too many files have changed in this diff Show More

70
AddIns/ICSharpCode.SharpDevelop.addin

@ -537,10 +537,10 @@ @@ -537,10 +537,10 @@
<ComplexCondition>
<Not>
<Condition name = "Ownerstate" ownerstate = "Missing"/>
</Not>
</Not>
<MenuItem id = "AddWebReference"
label = "${res:ProjectComponent.ContextMenu.AddWebReference}"
class = "ICSharpCode.SharpDevelop.Project.Commands.AddWebReferenceToProject"/>
label = "${res:ProjectComponent.ContextMenu.AddWebReference}"
class = "ICSharpCode.SharpDevelop.Project.Commands.AddWebReferenceToProject"/>
<MenuItem id = "AddSeparator" type = "Separator"/>
<MenuItem id = "Delete"
label = "${res:XML.MainMenu.EditMenu.Delete}"
@ -565,11 +565,11 @@ @@ -565,11 +565,11 @@
<ComplexCondition>
<Not>
<Condition name = "Ownerstate" ownerstate = "Missing"/>
</Not>
</Not>
<MenuItem id = "Refresh"
label = "${res:ProjectComponent.ContextMenu.RefreshWebReference}"
label = "${res:ProjectComponent.ContextMenu.RefreshWebReference}"
type = "Item"
class = "ICSharpCode.SharpDevelop.Project.Commands.RefreshWebReference"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.RefreshWebReference"/>
<MenuItem id = "RefreshSeparator" type = "Separator" />
<MenuItem id = "Delete"
label = "${res:XML.MainMenu.EditMenu.Delete}"
@ -582,9 +582,9 @@ @@ -582,9 +582,9 @@
class = "ICSharpCode.SharpDevelop.Project.Commands.RenameEntryEvent"/>
<MenuItem id = "PropertiesSeparator" type = "Separator" />
<MenuItem id = "Properties"
icon = "Icons.16x16.PropertiesIcon"
label = "${res:XML.MainMenu.FormatMenu.ShowProperties}"
class = "ICSharpCode.SharpDevelop.Project.Commands.ShowPropertiesForNode"/>
icon = "Icons.16x16.PropertiesIcon"
label = "${res:XML.MainMenu.FormatMenu.ShowProperties}"
class = "ICSharpCode.SharpDevelop.Project.Commands.ShowPropertiesForNode"/>
</ComplexCondition>
</Path>
@ -933,9 +933,9 @@ @@ -933,9 +933,9 @@
class = "ICSharpCode.SharpDevelop.Commands.TabStrip.SaveFileAsTab"/>
<Condition name = "OpenWindowState" openwindowstate="Dirty" action="Disable">
<MenuItem id = "SaveAll"
icon = "Icons.16x16.SaveAllIcon"
label = "${res:XML.MainMenu.FileMenu.SaveAll.Description}"
class = "ICSharpCode.SharpDevelop.Commands.SaveAllFiles"/>
icon = "Icons.16x16.SaveAllIcon"
label = "${res:XML.MainMenu.FileMenu.SaveAll.Description}"
class = "ICSharpCode.SharpDevelop.Commands.SaveAllFiles"/>
</Condition>
<MenuItem id = "SaveSeparator" type = "Separator" />
<ComplexCondition action="Disable">
@ -1010,15 +1010,15 @@ @@ -1010,15 +1010,15 @@
<Condition name = "Ownerstate" ownerstate="CanBeRenamed" action="Disable">
<MenuItem id = "RenameTab"
label = "${res:SideBarComponent.ContextMenu.RenameTab}"
class = "ICSharpCode.SharpDevelop.Commands.SideBarRenameTabHeader"/>
label = "${res:SideBarComponent.ContextMenu.RenameTab}"
class = "ICSharpCode.SharpDevelop.Commands.SideBarRenameTabHeader"/>
</Condition>
<MenuItem id = "Separator1" type = "Separator" />
<MenuItem id = "AddTab"
label = "${res:SideBarComponent.ContextMenu.AddTab}"
class = "ICSharpCode.SharpDevelop.Commands.SideBarAddTabHeader"/>
<MenuItem id = "Separator2" type = "Separator" />
<Condition name = "Ownerstate" ownerstate="CanMoveUp" action="Disable">
<MenuItem id = "MoveTabUp"
@ -1038,27 +1038,27 @@ @@ -1038,27 +1038,27 @@
<Path name = "/SharpDevelop/Workbench/SharpDevelopSideBar/SideTab/ContextMenu">
<Condition name = "Ownerstate" ownerstate="TabCanBeDeleted" action="Disable">
<MenuItem id = "DeleteTabItem"
label = "${res:SideBarComponent.ContextMenu.DeleteTabItem}"
class = "ICSharpCode.SharpDevelop.Commands.SideBarDeleteTabItem"/>
label = "${res:SideBarComponent.ContextMenu.DeleteTabItem}"
class = "ICSharpCode.SharpDevelop.Commands.SideBarDeleteTabItem"/>
</Condition>
<Condition name = "Ownerstate" ownerstate="CanBeRenamed" action="Disable">
<MenuItem id = "RenameTabItem"
label = "${res:SideBarComponent.ContextMenu.RenameTabItem}"
class = "ICSharpCode.SharpDevelop.Commands.SideBarRenameTabItem" />
label = "${res:SideBarComponent.ContextMenu.RenameTabItem}"
class = "ICSharpCode.SharpDevelop.Commands.SideBarRenameTabItem" />
</Condition>
<MenuItem id = "Separator1" type = "Separator" />
<Condition name = "Ownerstate" ownerstate="CanMoveItemUp" action="Disable">
<MenuItem id = "MoveItemUp"
label = "${res:SideBarComponent.ContextMenu.MoveTabItemUp}"
class = "ICSharpCode.SharpDevelop.Commands.SideBarMoveActiveItemUp"/>
label = "${res:SideBarComponent.ContextMenu.MoveTabItemUp}"
class = "ICSharpCode.SharpDevelop.Commands.SideBarMoveActiveItemUp"/>
</Condition>
<Condition name = "Ownerstate" ownerstate="CanMoveItemDown" action="Disable">
<MenuItem id = "MoveItemDown"
label = "${res:SideBarComponent.ContextMenu.MoveTabItemDown}"
class = "ICSharpCode.SharpDevelop.Commands.SideBarMoveActiveItemDown"/>
label = "${res:SideBarComponent.ContextMenu.MoveTabItemDown}"
class = "ICSharpCode.SharpDevelop.Commands.SideBarMoveActiveItemDown"/>
</Condition>
<Include id="CommonContextMenu" path="/SharpDevelop/Workbench/SharpDevelopSideBar/CommonContextMenu"/>
@ -1279,8 +1279,8 @@ @@ -1279,8 +1279,8 @@
label = "${res:ProjectComponent.ContextMenu.AddReference}"
class = "ICSharpCode.SharpDevelop.Project.Commands.AddReferenceToProject"/>
<MenuItem id = "AddWebReference"
label = "${res:ProjectComponent.ContextMenu.AddWebReference}"
class = "ICSharpCode.SharpDevelop.Project.Commands.AddWebReferenceToProject"/>
label = "${res:ProjectComponent.ContextMenu.AddWebReference}"
class = "ICSharpCode.SharpDevelop.Project.Commands.AddWebReferenceToProject"/>
<MenuItem id = "AddSeparator" type = "Separator"/>
<Include id = "ProjectActions" path="/SharpDevelop/Pads/ProjectBrowser/ContextMenu/ProjectActions"/>
<MenuItem id = "Separator2" type = "Separator" />
@ -1579,7 +1579,7 @@ @@ -1579,7 +1579,7 @@
<!-- File extensions that should not be searched since they are not opened
in a text editor -->
<Path name="/AddIns/DefaultTextEditor/Search/ExcludedFileExtensions">
<String text=".resx"/>
<String text=".resx"/>
<String text=".resources"/>
</Path>
@ -1612,7 +1612,7 @@ @@ -1612,7 +1612,7 @@
class = "ICSharpCode.SharpDevelop.Refactoring.RenameLocalVariableCommand"/>
<MenuItem id = "FindReferences"
label = "${res:SharpDevelop.Refactoring.FindReferencesCommand}"
class = "ICSharpCode.SharpDevelop.Refactoring.FindLocalVariableReferencesCommand"/>
class = "ICSharpCode.SharpDevelop.Refactoring.FindLocalVariableReferencesCommand"/>
</Path>
<Path name = "/SharpDevelop/ViewContent/DefaultTextEditor/Refactoring/LocalVariableDefinition">
@ -1654,10 +1654,6 @@ @@ -1654,10 +1654,6 @@
icon = "Icons.16x16.CommentRegion"
label = "${res:XML.TextAreaContextMenu.CommentUncommentSelection}"
class= "ICSharpCode.SharpDevelop.DefaultEditor.Commands.CommentRegion"/>
<!-- <MenuItem id = "Uncomment"
icon = "Icons.16x16.UnCommentRegion"
label = "${res:XML.TextAreaContextMenu.UncommentSelection}"
class= "ICSharpCode.SharpDevelop.DefaultEditor.Commands.UncommentRegion"/>-->
<MenuItem id = "Indent"
label = "${res:XML.TextAreaContextMenu.Indent}"
shortcut = "Control|I"
@ -1814,6 +1810,15 @@ @@ -1814,6 +1810,15 @@
<MenuItem id = "LeadingSpaces2Tabs"
label = "${res:XML.MainMenu.EditMenu.FormatMenu.LdSpace2Tab}"
class ="ICSharpCode.SharpDevelop.DefaultEditor.Commands.ConvertLeadingSpacesToTabs"/>
<MenuItem id = "Separator4" type = "Separator" />
<MenuItem id = "Comment"
icon = "Icons.16x16.CommentRegion"
label = "${res:XML.TextAreaContextMenu.CommentUncommentSelection}"
class= "ICSharpCode.SharpDevelop.DefaultEditor.Commands.CommentRegion"/>
<MenuItem id = "Indent"
label = "${res:XML.TextAreaContextMenu.Indent}"
shortcut = "Control|I"
class = "ICSharpCode.SharpDevelop.DefaultEditor.Commands.IndentSelection" />
</Condition>
</MenuItem>
<MenuItem insertafter = "Format" insertbefore = "Separator3" id = "Folding" label = "${res:XML.MainMenu.EditMenu.FoldingMenu}" type="Menu">
@ -1933,7 +1938,6 @@ @@ -1933,7 +1938,6 @@
<Path name = "/AddIns/DefaultTextEditor/EditActions">
<EditAction id = "TemplateCompletion" class = "ICSharpCode.SharpDevelop.DefaultEditor.Actions.TemplateCompletion" keys = "Control|J"/>
<EditAction id = "CodeCompletionPopup" class = "ICSharpCode.SharpDevelop.DefaultEditor.Actions.CodeCompletionPopup" keys = "Control|Space"/>
<EditAction id = "IndentSelection" class = "ICSharpCode.TextEditor.Actions.IndentSelection" keys = "Control|I"/>
<EditAction id = "GoToDefinition" class = "ICSharpCode.SharpDevelop.DefaultEditor.Actions.GoToDefinition" keys = "Control|Enter"/>
</Path>

BIN
data/resources/StringResources.cz.resources

Binary file not shown.

BIN
data/resources/StringResources.de.resources

Binary file not shown.

BIN
data/resources/StringResources.hu.resources

Binary file not shown.

BIN
data/resources/StringResources.nl.resources

Binary file not shown.

BIN
data/resources/StringResources.pt-br.resources

Binary file not shown.

BIN
data/resources/StringResources.tr.resources

Binary file not shown.

2
data/templates/file/CSharp/CSharp.Web.WebControl.xft

@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
icon = "C#.File.NewClass"
category = "C#"
subcategory = "ASP.NET"
defaultname = "WebControl"
defaultname = "WebControl${Number}"
language = "C#"
/>

2
data/templates/file/CSharp/CSharp.Web.WebService.xft

@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
icon = "C#.File.NewClass"
category = "C#"
subcategory = "ASP.NET"
defaultname = "WebService.asmx"
defaultname = "WebService${Number}.asmx"
language = "C#"
/>

61
doc/AssemblyBaseAddresses.txt

@ -0,0 +1,61 @@ @@ -0,0 +1,61 @@
To be on the safe side and leave enough space for the future,
the in-memory size of an assembly used here should be 8 times the disk image size.
Sysinternals Processexplorer can show relocated assemblies in yellow in the DLL View.
adr = 0x5000000
def AddModule(kbsize as int):
print "0x${adr.ToString('x')} - 0x${(adr + 3 * kbsize * 1024).ToString('x')}"
adr += 8 * kbsize * 1024
adr = 0x80000 * System.Math.Ceiling(cast(double,adr) / 0x80000)
def AddModules(*names as (string)):
for name in names:
System.Console.Write("${name}:\t")
AddModule(System.IO.FileInfo("d:\\corsavy\\sharpdevelop\\bin\\" + name + ".dll").Length / 1024)
AssemblyName: startaddress - endaddress
ICSharpCode.Core: 0x5000000 - 0x504e000
ICSharpCode.SharpDevelop: 0x5100000 - 0x5472000
ICSharpCode.NRefactory: 0x5a80000 - 0x5b9a000
ICSharpCode.TextEditor: 0x5d80000 - 0x5e67000
MonoReflectionLoader: 0x6000000 - 0x600c000
WeifenLuo.WinFormsUI.Docking: 0x6080000 - 0x6107000
ICSharpCode.Build.Tasks: 0x6200000 - 0x621b000
CSharpBinding: 0x6280000 - 0x62bc000
ILAsmBinding: 0x6380000 - 0x639b000
VBNetBinding: 0x6400000 - 0x643f000
NRefactoryToBooConverter: 0x6500000 - 0x6536000
BooBinding: 0x6600000 - 0x664e000
FormsDesigner: 0x6700000 - 0x676f000
ResourceEditor: 0x6880000 - 0x689e000
XmlEditor: 0x6900000 - 0x6948000
ICSharpCode.AddInMananger: 0x6a00000 - 0x6a24000
AddInScout: 0x6a80000 - 0x6a8b400
CodeCoverage: 0x6b00000 - 0x6b30000
TreeListView (debugger): 0x6b80000 - 0x6be6000
Debugger.Code: 0x6d00000 - 0x6ddb000
Debugger.AddIn: 0x6f80000 - 0x6faa000
FileTypeRegisterer: 0x7000000 - 0x7009000
HighlightingEditor: 0x7080000 - 0x70ec000
HtmlHelp2: 0x7200000 - 0x723f000
HtmlHelp2JScriptGlobals: 0x7300000 - 0x7306c00
MonoAddIn: 0x7380000 - 0x7395000
NAntAddIn: 0x7400000 - 0x7427000
PInvokeAddIn: 0x7480000 - 0x749b000
RegExpTk: 0x7500000 - 0x7524000
SharpQuery: 0x7580000 - 0x75b0000
SharpReportCore: 0x7600000 - 0x7654000
SharpReport: 0x7700000 - 0x773c000
SharpReportAddIn: 0x7800000 - 0x781e000
ReportGenerator: 0x7880000 - 0x78a1000
StartPage: 0x7900000 - 0x791e000
UnitTesting: 0x7980000 - 0x799b000
Next free address: 0x7a00000

10
src/AddIns/BackendBindings/Boo/BooBinding.sln

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
Microsoft Visual Studio Solution File, Format Version 9.00
# SharpDevelop 2.0.0.1199
# SharpDevelop 2.1.0.1333
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter", "NRefactoryToBooConverter\Project\NRefactoryToBooConverter.csproj", "{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter.Tests", "NRefactoryToBooConverter\Test\NRefactoryToBooConverter.Tests.csproj", "{C9DE556D-325C-4544-B29F-16A9EB7C9830}"
@ -8,8 +8,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StandaloneConverter", "Stan @@ -8,8 +8,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StandaloneConverter", "Stan
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding", "BooBinding\Project\BooBinding.csproj", "{4AC2D5F1-F671-480C-A075-6BF62B3721B2}"
EndProject
Project("{A33008B1-5DAC-44D5-9060-242E3B6E38F2}") = "Boo.InterpreterAddIn", "Boo.InterpreterAddIn\Project\Boo.InterpreterAddIn.booproj", "{928E34B2-5E46-4A4D-8E4D-2CA2CCDB905A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "..\..\..\Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TextEditor", "..\..\..\Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj", "{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}"
@ -22,6 +20,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinFormsUI", "..\..\..\Libr @@ -22,6 +20,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinFormsUI", "..\..\..\Libr
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormsDesigner", "..\..\DisplayBindings\FormsDesigner\Project\FormsDesigner.csproj", "{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding.Tests", "BooBinding\Test\BooBinding.Tests.csproj", "{6FA16499-896F-4C02-BB43-1AF5C6C7C713}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -80,5 +80,9 @@ Global @@ -80,5 +80,9 @@ Global
{83DD7E12-A705-4DBA-9D71-09C8973D9382}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{83DD7E12-A705-4DBA-9D71-09C8973D9382}.Release|Any CPU.Build.0 = Release|Any CPU
{83DD7E12-A705-4DBA-9D71-09C8973D9382}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6FA16499-896F-4C02-BB43-1AF5C6C7C713}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6FA16499-896F-4C02-BB43-1AF5C6C7C713}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6FA16499-896F-4C02-BB43-1AF5C6C7C713}.Release|Any CPU.Build.0 = Release|Any CPU
{6FA16499-896F-4C02-BB43-1AF5C6C7C713}.Release|Any CPU.ActiveCfg = Release|Any CPU
EndGlobalSection
EndGlobal

2
src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.csproj

@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
<NoStdLib>False</NoStdLib>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>4194304</BaseAddress>
<BaseAddress>106954752</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<FileAlignment>4096</FileAlignment>
<WarningLevel>4</WarningLevel>

8
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooAmbience.cs

@ -323,6 +323,14 @@ namespace Grunwald.BooBinding @@ -323,6 +323,14 @@ namespace Grunwald.BooBinding
}
if (property.IsIndexer) {
if (property.DeclaringType != null) {
if (UseFullyQualifiedMemberNames) {
builder.Append(property.DeclaringType.FullyQualifiedName);
} else {
builder.Append(property.DeclaringType.Name);
}
builder.Append('.');
}
builder.Append("self");
} else {
if (IncludeHTMLMarkup) {

16
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooProject.cs

@ -101,5 +101,21 @@ namespace Grunwald.BooBinding @@ -101,5 +101,21 @@ namespace Grunwald.BooBinding
return BooAmbience.Instance;
}
}
[Browsable(false)]
public bool Ducky {
get {
return GetProperty("Ducky", false);
}
}
public override void SetProperty<T>(string configurationName, string platform, string property, T value, PropertyStorageLocations location)
{
bool oldDucky = Ducky;
base.SetProperty(configurationName, platform, property, value, location);
if (Ducky != oldDucky) {
ParserService.Reparse(this);
}
}
}
}

76
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/BooResolver.cs

@ -63,6 +63,19 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -63,6 +63,19 @@ namespace Grunwald.BooBinding.CodeCompletion
return cu;
}
}
/// <summary>
/// Gets if duck typing is enabled for the Boo project.
/// </summary>
public bool IsDucky {
get {
BooProject p = pc.Project as BooProject;
if (p != null)
return p.Ducky;
else
return false;
}
}
#endregion
#region Initialization
@ -184,6 +197,9 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -184,6 +197,9 @@ namespace Grunwald.BooBinding.CodeCompletion
return new NamespaceResolveResult(callingClass, callingMember, "");
}
ResolveResult rr = NRResolver.GetResultFromDeclarationLine(callingClass, callingMember as IMethodOrProperty, caretLine, caretColumn, expressionResult.Expression);
if (rr != null) return rr;
AST.Expression expr;
try {
expr = Boo.Lang.Parser.BooParser.ParseExpression("expression", expressionResult.Expression);
@ -273,18 +289,18 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -273,18 +289,18 @@ namespace Grunwald.BooBinding.CodeCompletion
public ArrayList CtrlSpace(int caretLine, int caretColumn, string fileName, string fileContent, ExpressionContext context)
{
ArrayList result;
ArrayList result = new ArrayList();
if (!Initialize(fileName, caretLine, caretColumn))
return null;
if (context == ExpressionContext.Importable) {
result = new ArrayList();
pc.AddNamespaceContents(result, "", pc.Language, true);
NRResolver.AddUsing(result, pc.DefaultImports, pc);
return result;
}
result = GetImportedNamespaceContents();
NRResolver.AddContentsFromCalling(result, callingClass, callingMember);
AddImportedNamespaceContents(result);
if (BooProject.BooCompilerPC != null) {
if (context == ExpressionFinder.BooAttributeContext.Instance) {
@ -304,8 +320,6 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -304,8 +320,6 @@ namespace Grunwald.BooBinding.CodeCompletion
}
}
NRResolver.AddContentsFromCalling(result, callingClass, callingMember);
List<string> knownVariableNames = new List<string>();
foreach (object o in result) {
IMember m = o as IMember;
@ -325,14 +339,58 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -325,14 +339,58 @@ namespace Grunwald.BooBinding.CodeCompletion
// used by ctrl+space and resolve visitor (resolve identifier)
public ArrayList GetImportedNamespaceContents()
{
ArrayList list = new ArrayList();
ArrayList result = new ArrayList();
AddImportedNamespaceContents(result);
return result;
}
void AddImportedNamespaceContents(ArrayList list)
{
IClass c;
foreach (KeyValuePair<string, string> pair in BooAmbience.TypeConversionTable) {
c = GetPrimitiveClass(pc, pair.Key, pair.Value);
foreach (KeyValuePair<string, string> pair in BooAmbience.ReverseTypeConversionTable) {
c = GetPrimitiveClass(pc, pair.Value, pair.Key);
if (c != null) list.Add(c);
}
list.Add(new DuckClass(cu));
NRResolver.AddImportedNamespaceContents(list, cu, callingClass);
return list;
}
internal class DuckClass : DefaultClass
{
public DuckClass(ICompilationUnit cu) : base(cu, "duck")
{
Documentation = "Use late-binding to access members of this type.<br/>\n'If it walks like a duck and quacks like a duck, it must be a duck.'";
Modifiers = ModifierEnum.Public;
}
protected override IReturnType CreateDefaultReturnType()
{
return new DuckReturnType(this);
}
}
internal class DuckReturnType : AbstractReturnType
{
IClass c;
public DuckReturnType(IClass c) {
this.c = c;
FullyQualifiedName = c.FullyQualifiedName;
}
public override IClass GetUnderlyingClass() {
return c;
}
public override List<IMethod> GetMethods() {
return new List<IMethod>();
}
public override List<IProperty> GetProperties() {
return new List<IProperty>();
}
public override List<IField> GetFields() {
return new List<IField>();
}
public override List<IEvent> GetEvents() {
return new List<IEvent>();
}
}
#endregion
}

2
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/CompletionBinding.cs

@ -52,7 +52,7 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -52,7 +52,7 @@ namespace Grunwald.BooBinding.CodeCompletion
public override bool HandleKeyword(SharpDevelopTextAreaControl editor, string word)
{
switch (word.ToLower(CultureInfo.InvariantCulture)) {
switch (word.ToLowerInvariant()) {
case "import":
editor.ShowCompletionWindow(new CtrlSpaceCompletionDataProvider(ExpressionContext.Importable), ' ');
return true;

57
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ConvertVisitor.cs

@ -177,7 +177,7 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -177,7 +177,7 @@ namespace Grunwald.BooBinding.CodeCompletion
if (parameters == null || parameters.Count == 0) {
m.Parameters = DefaultParameter.EmptyParameterList;
} else {
AddParameters(parameters, m.Parameters);
AddParameters(parameters, m.Parameters, m, m.DeclaringType);
}
}
void ConvertParameters(AST.ParameterDeclarationCollection parameters, DefaultProperty p)
@ -185,14 +185,17 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -185,14 +185,17 @@ namespace Grunwald.BooBinding.CodeCompletion
if (parameters == null || parameters.Count == 0) {
p.Parameters = DefaultParameter.EmptyParameterList;
} else {
AddParameters(parameters, p.Parameters);
AddParameters(parameters, p.Parameters, p, p.DeclaringType);
}
}
void AddParameters(AST.ParameterDeclarationCollection parameters, IList<IParameter> output)
internal static void AddParameters(AST.ParameterDeclarationCollection parameters, IList<IParameter> output, IMethodOrProperty method, IClass c)
{
if (c == null) throw new ArgumentNullException("c");
DefaultParameter p = null;
foreach (AST.ParameterDeclaration par in parameters) {
p = new DefaultParameter(par.Name, CreateReturnType(par.Type), GetRegion(par));
p = new DefaultParameter(par.Name,
CreateReturnType(par.Type, c, method as IMethod, c.Region.BeginLine + 1, 1, c.ProjectContent),
new DomRegion(par.LexicalInfo.Line, par.LexicalInfo.Column));
if (par.IsByRef) p.Modifiers |= ParameterModifiers.Ref;
output.Add(p);
}
@ -210,13 +213,23 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -210,13 +213,23 @@ namespace Grunwald.BooBinding.CodeCompletion
return CreateReturnType(reference, c, method, c.Region.BeginLine + 1, 1, _cu.ProjectContent);
}
}
internal static IReturnType GetDefaultReturnType(IProjectContent projectContent)
{
BooProject project = projectContent.Project as BooProject;
if (project != null && project.Ducky)
return new BooResolver.DuckClass(new DefaultCompilationUnit(projectContent)).DefaultReturnType;
else
return ReflectionReturnType.Object;
}
public static IReturnType CreateReturnType(AST.TypeReference reference, IClass callingClass,
IMember callingMember, int caretLine, int caretColumn,
IMethodOrProperty callingMember, int caretLine, int caretColumn,
IProjectContent projectContent)
{
System.Diagnostics.Debug.Assert(projectContent != null);
if (reference == null) {
LoggingService.Warn("inferred return type!");
return ReflectionReturnType.Object;
return GetDefaultReturnType(projectContent);
}
if (reference is AST.ArrayTypeReference) {
AST.ArrayTypeReference arr = (AST.ArrayTypeReference)reference;
@ -227,7 +240,9 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -227,7 +240,9 @@ namespace Grunwald.BooBinding.CodeCompletion
string name = ((AST.SimpleTypeReference)reference).Name;
IReturnType rt;
int typeParameterCount = (reference is AST.GenericTypeReference) ? ((AST.GenericTypeReference)reference).GenericArguments.Count : 0;
if (BooAmbience.ReverseTypeConversionTable.ContainsKey(name))
if (name == "duck")
rt = new BooResolver.DuckClass(new DefaultCompilationUnit(projectContent)).DefaultReturnType;
else if (BooAmbience.ReverseTypeConversionTable.ContainsKey(name))
rt = new GetClassReturnType(projectContent, BooAmbience.ReverseTypeConversionTable[name], typeParameterCount);
else
rt = new SearchClassReturnType(projectContent, callingClass, caretLine, caretColumn,
@ -244,7 +259,13 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -244,7 +259,13 @@ namespace Grunwald.BooBinding.CodeCompletion
}
return rt;
} else if (reference is AST.CallableTypeReference) {
return new AnonymousMethodReturnType();
AST.CallableTypeReference ctr = (AST.CallableTypeReference)reference;
AnonymousMethodReturnType amrt = new AnonymousMethodReturnType(new DefaultCompilationUnit(projectContent));
if (ctr.ReturnType != null) {
amrt.MethodReturnType = CreateReturnType(ctr.ReturnType, callingClass, callingMember, caretLine, caretColumn, projectContent);
}
AddParameters(ctr.Parameters, amrt.MethodParameters, callingMember, callingClass ?? new DefaultClass(new DefaultCompilationUnit(projectContent), "__Dummy"));
return amrt;
} else {
throw new NotSupportedException("unknown reference type: " + reference.ToString());
}
@ -263,7 +284,7 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -263,7 +284,7 @@ namespace Grunwald.BooBinding.CodeCompletion
if (field.Initializer != null)
return new InferredReturnType(field.Initializer, OuterClass);
else
return ReflectionReturnType.Object;
return GetDefaultReturnType(_cu.ProjectContent);
} else {
return CreateReturnType(field.Type);
}
@ -271,13 +292,13 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -271,13 +292,13 @@ namespace Grunwald.BooBinding.CodeCompletion
IReturnType CreateReturnType(AST.Method node, IMethod method)
{
if (node.ReturnType == null)
return new InferredReturnType(node.Body, OuterClass);
return new InferredReturnType(node.Body, OuterClass, false);
return CreateReturnType(node.ReturnType, method);
}
IReturnType CreateReturnType(AST.Property property)
{
if (property.Type == null && property.Getter != null && property.Getter.Body != null)
return new InferredReturnType(property.Getter.Body, OuterClass);
return new InferredReturnType(property.Getter.Body, OuterClass, false);
return CreateReturnType(property.Type);
}
@ -392,6 +413,18 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -392,6 +413,18 @@ namespace Grunwald.BooBinding.CodeCompletion
private void LeaveTypeDefinition(AST.TypeDefinition node)
{
DefaultClass c = _currentClass.Pop();
foreach (AST.Attribute att in node.Attributes) {
if (att.Name == "System.Reflection.DefaultMemberAttribute" && att.Arguments.Count == 1) {
AST.StringLiteralExpression sle = att.Arguments[0] as AST.StringLiteralExpression;
if (sle != null) {
foreach (DefaultProperty p in c.Properties) {
if (p.Name == sle.Value) {
p.IsIndexer = true;
}
}
}
}
}
//LoggingService.Debug("Leave "+node.GetType().Name+" "+node.FullName+" (Class = "+c.FullyQualifiedName+")");
}

34
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/InferredReturnType.cs

@ -29,9 +29,12 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -29,9 +29,12 @@ namespace Grunwald.BooBinding.CodeCompletion
this.expression = expression;
}
public InferredReturnType(Block block, IClass context)
bool useLastStatementIfNoReturnStatement;
public InferredReturnType(Block block, IClass context, bool useLastStatementIfNoReturnStatement)
{
if (block == null) throw new ArgumentNullException("block");
this.useLastStatementIfNoReturnStatement = useLastStatementIfNoReturnStatement;
this.block = block;
this.context = context;
}
@ -44,12 +47,17 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -44,12 +47,17 @@ namespace Grunwald.BooBinding.CodeCompletion
Block b = block;
block = null; // reset block before calling Visit to prevent StackOverflow
v.Visit(b);
if (v.noReturnStatement)
cachedType = ReflectionReturnType.Void;
else if (v.result is NullReturnType)
if (v.noReturnStatement) {
if (useLastStatementIfNoReturnStatement && v.lastExpressionStatement != null) {
cachedType = new BooResolver().GetTypeOfExpression(v.lastExpressionStatement.Expression, context);
} else {
cachedType = ReflectionReturnType.Void;
}
} else if (v.result is NullReturnType) {
cachedType = ReflectionReturnType.Object;
else
} else {
cachedType = v.result;
}
} else if (expression != null) {
Expression expr = expression;
expression = null;
@ -66,8 +74,10 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -66,8 +74,10 @@ namespace Grunwald.BooBinding.CodeCompletion
{
this.context = context;
}
public IReturnType result;
public bool noReturnStatement = true;
public ExpressionStatement lastExpressionStatement;
public override void OnReturnStatement(ReturnStatement node)
{
@ -79,10 +89,22 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -79,10 +89,22 @@ namespace Grunwald.BooBinding.CodeCompletion
}
}
public override void OnExpressionStatement(ExpressionStatement node)
{
base.OnExpressionStatement(node);
lastExpressionStatement = node;
}
public override void OnYieldStatement(YieldStatement node)
{
noReturnStatement = false;
result = ReflectionReturnType.CreatePrimitive(typeof(System.Collections.IEnumerable));
IClass enumerable = ProjectContentRegistry.Mscorlib.GetClass("System.Collections.Generic.IEnumerable", 1);
result = new ConstructedReturnType(enumerable.DefaultReturnType, new IReturnType[] { new InferredReturnType(node.Expression, context) });
}
public override void OnCallableBlockExpression(CallableBlockExpression node)
{
// ignore return statements in callable blocks
}
public override bool Visit(Node node)

56
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ResolveVisitor.cs

@ -168,9 +168,14 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -168,9 +168,14 @@ namespace Grunwald.BooBinding.CodeCompletion
}
}
}
if (callingClass != null) {
if (ResolveMember(callingClass.DefaultReturnType, identifier))
return true;
{ // Find members of this class or enclosing classes
IClass tmp = callingClass;
while (tmp != null) {
if (ResolveMember(tmp.DefaultReturnType, identifier))
return true;
tmp = tmp.DeclaringType;
}
}
string namespaceName = projectContent.SearchNamespace(identifier, callingClass, cu, resolver.CaretLine, resolver.CaretColumn);
@ -291,6 +296,19 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -291,6 +296,19 @@ namespace Grunwald.BooBinding.CodeCompletion
}
} else {
if (resolveResult != null) {
if (resolveResult is TypeResolveResult) {
IClass rClass = (resolveResult as TypeResolveResult).ResolvedClass;
if (rClass != null) {
foreach (IClass baseClass in rClass.ClassInheritanceTree) {
foreach (IClass innerClass in baseClass.InnerClasses) {
if (IsSameName(innerClass.Name, node.Name)) {
MakeTypeResult(innerClass);
return;
}
}
}
}
}
ResolveMember(resolveResult.ResolvedType, node.Name);
}
}
@ -350,19 +368,28 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -350,19 +368,28 @@ namespace Grunwald.BooBinding.CodeCompletion
{
ClearResult();
node.Target.Accept(this);
if (resolveResult is MixedResolveResult) {
MixedResolveResult mixed = (MixedResolveResult)resolveResult;
resolveResult = mixed.TypeResult;
foreach (ResolveResult rr in mixed.Results) {
if (rr is MethodResolveResult) {
resolveResult = rr;
break;
}
}
}
if (resolveResult == null)
return;
if (resolveResult is MethodResolveResult) {
// normal method call
string methodName = ((MethodResolveResult)resolveResult).Name;
IReturnType containingType = ((MethodResolveResult)resolveResult).ContainingType;
ResolveMethodInType(containingType, methodName, node.Arguments);
} else if (resolveResult is TypeResolveResult || resolveResult is MixedResolveResult) {
TypeResolveResult trr = resolveResult as TypeResolveResult;
if (trr == null)
trr = (resolveResult as MixedResolveResult).TypeResult;
if (trr != null && trr.ResolvedClass != null) {
} else if (resolveResult is TypeResolveResult) {
TypeResolveResult trr = (TypeResolveResult)resolveResult;
if (trr.ResolvedClass != null) {
if (trr.ResolvedClass.FullyQualifiedName == "array") {
ResolveArrayCreation(node.Arguments);
return;
@ -524,6 +551,7 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -524,6 +551,7 @@ namespace Grunwald.BooBinding.CodeCompletion
switch (node.Operator) {
case BinaryOperatorType.GreaterThan:
case BinaryOperatorType.GreaterThanOrEqual:
case BinaryOperatorType.Equality:
case BinaryOperatorType.Inequality:
case BinaryOperatorType.LessThan:
case BinaryOperatorType.LessThanOrEqual:
@ -531,8 +559,6 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -531,8 +559,6 @@ namespace Grunwald.BooBinding.CodeCompletion
case BinaryOperatorType.Member:
case BinaryOperatorType.NotMatch:
case BinaryOperatorType.NotMember:
case BinaryOperatorType.Or:
case BinaryOperatorType.And:
case BinaryOperatorType.ReferenceEquality:
case BinaryOperatorType.ReferenceInequality:
case BinaryOperatorType.TypeTest:
@ -566,7 +592,15 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -566,7 +592,15 @@ namespace Grunwald.BooBinding.CodeCompletion
public override void OnCallableBlockExpression(CallableBlockExpression node)
{
MakeResult(new AnonymousMethodReturnType());
AnonymousMethodReturnType amrt = new AnonymousMethodReturnType(cu);
if (node.ReturnType != null) {
amrt.MethodReturnType = ConvertType(node.ReturnType);
} else {
amrt.MethodReturnType = new InferredReturnType(node.Body, resolver.CallingClass,
node.ContainsAnnotation("inline"));
}
ConvertVisitor.AddParameters(node.Parameters, amrt.MethodParameters, resolver.CallingMember, resolver.CallingClass ?? new DefaultClass(resolver.CompilationUnit, "__Dummy"));
MakeResult(amrt);
}
public override void OnCallableTypeReference(CallableTypeReference node)

50
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/VariableLookupVisitor.cs

@ -26,9 +26,32 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -26,9 +26,32 @@ namespace Grunwald.BooBinding.CodeCompletion
DeclarationFound(node.Declaration.Name, node.Declaration.Type, node.Initializer, node.LexicalInfo);
}
public override void OnParameterDeclaration(ParameterDeclaration node)
SourceLocation GetEndSourceLocation(Node node)
{
if (node.EndSourceLocation.IsValid) return node.EndSourceLocation;
if (node is CallableBlockExpression) {
return GetEndSourceLocation((node as CallableBlockExpression).Body);
} else if (node is ForStatement) {
return GetEndSourceLocation((node as ForStatement).Block);
} else if (node is ExceptionHandler) {
return GetEndSourceLocation((node as ExceptionHandler).Block);
} else if (node is Block) {
StatementCollection st = (node as Block).Statements;
if (st.Count > 0) {
return GetEndSourceLocation(st[st.Count - 1]);
}
}
return node.EndSourceLocation;
}
public override void OnCallableBlockExpression(CallableBlockExpression node)
{
DeclarationFound(node.Name, node.Type, null, node.LexicalInfo);
if (node.LexicalInfo.Line <= resolver.CaretLine && GetEndSourceLocation(node).Line >= resolver.CaretLine - 1) {
foreach (ParameterDeclaration param in node.Parameters) {
DeclarationFound(param.Name, param.Type ?? (resolver.IsDucky ? new SimpleTypeReference("duck") : new SimpleTypeReference("object")), null, param.LexicalInfo);
}
base.OnCallableBlockExpression(node);
}
}
protected override void OnError(Node node, Exception error)
@ -51,7 +74,7 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -51,7 +74,7 @@ namespace Grunwald.BooBinding.CodeCompletion
public override void OnForStatement(ForStatement node)
{
if (node.LexicalInfo.Line <= resolver.CaretLine && node.Block.EndSourceLocation.Line >= resolver.CaretLine - 1) {
if (node.LexicalInfo.Line <= resolver.CaretLine && GetEndSourceLocation(node).Line >= resolver.CaretLine - 1) {
foreach (Declaration decl in node.Declarations) {
IterationDeclarationFound(decl.Name, decl.Type, node.Iterator, node.LexicalInfo);
}
@ -82,6 +105,14 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -82,6 +105,14 @@ namespace Grunwald.BooBinding.CodeCompletion
}
}
}
public override void OnExceptionHandler(ExceptionHandler node)
{
if (node.LexicalInfo.Line <= resolver.CaretLine && GetEndSourceLocation(node).Line >= resolver.CaretLine) {
DeclarationFound(node.Declaration.Name, node.Declaration.Type ?? new SimpleTypeReference("System.Exception"), null, node.Declaration.LexicalInfo);
}
base.OnExceptionHandler(node);
}
}
/// <summary>
@ -142,7 +173,14 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -142,7 +173,14 @@ namespace Grunwald.BooBinding.CodeCompletion
{
if (expr == null)
return;
IReturnType returnType = new InferredReturnType(expr, resolver.CallingClass);
// Prevent creating an infinite number of InferredReturnTypes in inferring cycles
IReturnType returnType;
if (expr.ContainsAnnotation("DomReturnType")) {
returnType = (IReturnType)expr["DomReturnType"];
} else {
returnType = new InferredReturnType(expr, resolver.CallingClass);
expr.Annotate("DomReturnType", returnType);
}
if (useElementType)
returnType = new ElementReturnType(returnType);
result = new DefaultField.LocalVariableField(returnType, name,
@ -199,7 +237,9 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -199,7 +237,9 @@ namespace Grunwald.BooBinding.CodeCompletion
if (declarationType != null) {
Add(declarationName, declarationType);
} else if (initializer != null) {
Add(declarationName, initializer, false);
if (!knownVariableNames.Contains(declarationName)) {
Add(declarationName, initializer, false);
}
}
}

72
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/Designer/BooDesignerGenerator.cs

@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
using System;
using System.ComponentModel;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using System.CodeDom;
@ -30,6 +31,77 @@ namespace Grunwald.BooBinding.Designer @@ -30,6 +31,77 @@ namespace Grunwald.BooBinding.Designer
return new Boo.Lang.CodeDom.BooCodeProvider();
}
protected override void FixGeneratedCode(IClass formClass, CodeMemberMethod code)
{
base.FixGeneratedCode(formClass, code);
Dictionary<string, IReturnType> variables = new Dictionary<string, IReturnType>();
foreach (IField f in formClass.DefaultReturnType.GetFields()) {
variables[f.Name] = f.ReturnType;
}
variables[""] = formClass.DefaultReturnType;
foreach (CodeStatement statement in code.Statements) {
CodeExpressionStatement ces = statement as CodeExpressionStatement;
if (ces != null) {
CodeMethodInvokeExpression cmie = ces.Expression as CodeMethodInvokeExpression;
if (cmie != null && cmie.Parameters.Count == 1) {
CodeArrayCreateExpression cace = cmie.Parameters[0] as CodeArrayCreateExpression;
if (cace != null) {
IReturnType rt = ResolveType(cmie.Method.TargetObject, variables);
if (rt != null) {
foreach (IMethod m in rt.GetMethods()) {
if (m.Name == cmie.Method.MethodName
&& m.Parameters.Count == 1
&& m.Parameters[0].IsParams
&& m.Parameters[0].ReturnType.ArrayDimensions == 1
&& m.Parameters[0].ReturnType.ArrayElementType.FullyQualifiedName == cace.CreateType.BaseType)
{
cace.UserData["Explode"] = true;
}
}
}
}
}
}
CodeVariableDeclarationStatement cvds = statement as CodeVariableDeclarationStatement;
if (cvds != null) {
variables[cvds.Name] = new SearchClassReturnType(formClass.ProjectContent, formClass, formClass.Region.BeginLine + 1, 0, cvds.Type.BaseType, cvds.Type.TypeArguments.Count);
}
}
}
IReturnType ResolveType(CodeExpression expr, Dictionary<string, IReturnType> variables)
{
IReturnType rt;
if (expr is CodeThisReferenceExpression) {
return variables[""];
} else if (expr is CodeVariableReferenceExpression) {
string name = (expr as CodeVariableReferenceExpression).VariableName;
if (variables.TryGetValue(name, out rt))
return rt;
} else if (expr is CodeFieldReferenceExpression) {
string name = (expr as CodeFieldReferenceExpression).FieldName;
rt = ResolveType((expr as CodeFieldReferenceExpression).TargetObject, variables);
if (rt != null) {
foreach (IField f in rt.GetFields()) {
if (f.Name == name) {
return f.ReturnType;
}
}
}
} else if (expr is CodePropertyReferenceExpression) {
string name = (expr as CodePropertyReferenceExpression).PropertyName;
rt = ResolveType((expr as CodePropertyReferenceExpression).TargetObject, variables);
if (rt != null) {
foreach (IProperty p in rt.GetProperties()) {
if (p.Name == name) {
return p.ReturnType;
}
}
}
}
return null;
}
protected override string CreateEventHandler(EventDescriptor edesc, string eventMethodName, string body, string indentation)
{
if (string.IsNullOrEmpty(body)) body = "pass";

6
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/Designer/BooDesignerLoader.cs

@ -198,7 +198,11 @@ namespace Grunwald.BooBinding.Designer @@ -198,7 +198,11 @@ namespace Grunwald.BooBinding.Designer
protected override void Write(CodeCompileUnit unit)
{
LoggingService.Info("BooDesignerLoader.Write called");
generator.MergeFormChanges(unit);
try {
generator.MergeFormChanges(unit);
} catch (Exception ex) {
MessageService.ShowError(ex);
}
}
}
}

77
src/AddIns/BackendBindings/Boo/BooBinding/Test/BooBinding.Tests.csproj

@ -0,0 +1,77 @@ @@ -0,0 +1,77 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<OutputType>Library</OutputType>
<RootNamespace>Grunwald.BooBinding.Tests</RootNamespace>
<AssemblyName>BooBinding.Tests</AssemblyName>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{6FA16499-896F-4C02-BB43-1AF5C6C7C713}</ProjectGuid>
<OutputPath>..\..\..\..\..\..\bin\UnitTests\</OutputPath>
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<NoStdLib>False</NoStdLib>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>4194304</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<FileAlignment>4096</FileAlignment>
<WarningLevel>4</WarningLevel>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<BaseIntermediateOutputPath>obj\</BaseIntermediateOutputPath>
<IntermediateOutputPath>obj\Debug\</IntermediateOutputPath>
<Optimize>False</Optimize>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugSymbols>true</DebugSymbols>
<DebugType>Full</DebugType>
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<BaseIntermediateOutputPath>obj\</BaseIntermediateOutputPath>
<IntermediateOutputPath>obj\Release\</IntermediateOutputPath>
<Optimize>True</Optimize>
<DefineConstants>TRACE</DefineConstants>
<DebugSymbols>False</DebugSymbols>
<DebugType>None</DebugType>
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
<Reference Include="nunit.framework">
<HintPath>..\..\..\..\..\Tools\NUnit\nunit.framework.dll</HintPath>
<SpecificVersion>False</SpecificVersion>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="ResolverTests.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj">
<Project>{2748AD25-9C63-4E12-877B-4DCE96FBED54}</Project>
<Name>ICSharpCode.SharpDevelop</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\Main\Core\Project\ICSharpCode.Core.csproj">
<Project>{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}</Project>
<Name>ICSharpCode.Core</Name>
</ProjectReference>
<ProjectReference Include="..\Project\BooBinding.csproj">
<Project>{4AC2D5F1-F671-480C-A075-6BF62B3721B2}</Project>
<Name>BooBinding</Name>
</ProjectReference>
<Content Include="..\..\..\..\..\..\bin\log4net.dll">
<Link>log4net.dll</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="..\..\..\..\..\..\bin\ICSharpCode.Core.dll">
<Link>ICSharpCode.Core.dll</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="..\..\..\..\..\..\bin\ICSharpCode.SharpDevelop.dll">
<Link>ICSharpCode.SharpDevelop.dll</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
</Project>

417
src/AddIns/BackendBindings/Boo/BooBinding/Test/ResolverTests.cs

@ -0,0 +1,417 @@ @@ -0,0 +1,417 @@
/*
* Created by SharpDevelop.
* User: Daniel Grunwald
* Date: 23.04.2006
* Time: 11:33
*/
using System;
using System.Reflection;
using NUnit.Framework;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Project;
using Grunwald.BooBinding.CodeCompletion;
namespace Grunwald.BooBinding.Tests
{
[TestFixture]
public class ResolverTests
{
#region Helper
T Resolve<T>(string code) where T : ResolveResult
{
return Resolve<T>(code, "/*1*/");
}
T Resolve<T>(string code, string marker) where T : ResolveResult
{
return Resolve<T>(normalProg, code, marker);
}
T Resolve<T>(string prog, string code, string marker) where T : ResolveResult
{
ResolveResult rr = Resolve(prog, new ExpressionResult(code), marker);
Assert.IsNotNull(rr, "Resolve must not return null");
Assert.IsInstanceOfType(typeof(T), rr, "Resolve must return instance of type " + typeof(T).Name);
return (T)rr;
}
IProjectContent booLangPC;
public ResolverTests() {
booLangPC = new ReflectionProjectContent(Assembly.Load("Boo.Lang"), "Boo.Lang.dll");
booLangPC.ReferencedContents.Add(ProjectContentRegistry.Mscorlib);
}
const string fileName = "tempFile.boo";
DefaultProjectContent lastPC;
void Register(string prog)
{
DefaultProjectContent pc = new DefaultProjectContent();
lastPC = pc;
ParserService.ForceProjectContent(pc);
pc.ReferencedContents.Add(ProjectContentRegistry.Mscorlib);
pc.ReferencedContents.Add(ProjectContentRegistry.WinForms);
pc.ReferencedContents.Add(booLangPC);
ICompilationUnit cu = new BooParser().Parse(pc, fileName, prog);
ParserService.UpdateParseInformation(cu, fileName, false, false);
cu.Classes.ForEach(pc.AddClassToNamespaceList);
}
void GetPos(string prog, string marker, out int line, out int column)
{
int index = prog.IndexOf(marker);
line = 1;
column = 0;
for (int i = 0; i < index; i++) {
column++;
if (prog[i]=='\n') {
line++;
column = 0;
}
}
}
ResolveResult Resolve(string prog, ExpressionResult er, string marker)
{
Register(prog);
int line, column;
GetPos(prog, marker, out line, out column);
BooResolver r = new BooResolver();
return r.Resolve(er, line, column, fileName, prog);
}
#endregion
#region Basic tests
const string normalProg =
"import System\n" +
"def MyMethod(arg as string):\n" +
"\tlocalVar = arg\n" +
"\t/*1*/\n" +
"\tclosure = { e as string | arg.IndexOf(e) /*inClosure*/ }\n" +
"\tindex = closure('.')\n" +
"\t/*2*/\n" +
"\tclosure2 = def(e as DateTime):\n" +
"\t\treturn e.Year\n" +
"\trecursiveClosure = def(myObject):/*inRecursiveClosure*/\n" +
"\t\treturn recursiveClosure(myObject)\n" +
"\t/*3*/\n";
[Test]
public void MethodParameter()
{
LocalResolveResult rr = Resolve<LocalResolveResult>("arg");
Assert.IsTrue(rr.IsParameter);
Assert.AreEqual("System.String", rr.ResolvedType.FullyQualifiedName);
}
[Test]
public void LocalVariable()
{
LocalResolveResult rr = Resolve<LocalResolveResult>("localVar");
Assert.IsFalse(rr.IsParameter);
Assert.AreEqual("System.String", rr.ResolvedType.FullyQualifiedName);
}
[Test]
public void NullCoalescing()
{
ResolveResult rr = Resolve<ResolveResult>("localVar or arg");
Assert.AreEqual("System.String", rr.ResolvedType.FullyQualifiedName);
}
[Test]
public void InnerClassEnum()
{
TypeResolveResult trr = Resolve<TypeResolveResult>("Environment.SpecialFolder");
Assert.AreEqual("System.Environment.SpecialFolder", trr.ResolvedClass.FullyQualifiedName);
MemberResolveResult mrr = Resolve<MemberResolveResult>("Environment.SpecialFolder.Desktop");
Assert.AreEqual("System.Environment.SpecialFolder.Desktop", mrr.ResolvedMember.FullyQualifiedName);
}
[Test]
public void ClosureParameter()
{
LocalResolveResult rr = Resolve<LocalResolveResult>("e", "/*inClosure*/");
Assert.AreEqual("System.String", rr.ResolvedType.FullyQualifiedName);
Assert.IsNull(Resolve(normalProg, new ExpressionResult("e"), "/*1*/"));
}
[Test]
public void ClosureCall()
{
LocalResolveResult rr = Resolve<LocalResolveResult>("closure('.')", "/*2*/");
Assert.IsFalse(rr.IsParameter);
Assert.AreEqual("closure", rr.Field.Name);
Assert.AreEqual("System.Int32", rr.ResolvedType.FullyQualifiedName);
}
[Test]
public void ClosureCall2()
{
LocalResolveResult rr = Resolve<LocalResolveResult>("closure2(DateTime.Now)", "/*3*/");
Assert.IsFalse(rr.IsParameter);
Assert.AreEqual("closure2", rr.Field.Name);
Assert.AreEqual("System.Int32", rr.ResolvedType.FullyQualifiedName);
}
[Test]
public void RecursiveClosure()
{
// Code-completion cannot work here, test if SharpDevelop is correctly
// preventing the StackOverflow.
LocalResolveResult rr = Resolve<LocalResolveResult>("recursiveClosure", "/*3*/");
Assert.IsFalse(rr.IsParameter);
Assert.AreEqual("delegate(myObject:Object):?", rr.ResolvedType.FullyQualifiedName);
}
[Test]
public void ClosureTypelessArgument()
{
LocalResolveResult rr = Resolve<LocalResolveResult>("myObject", "/*inRecursiveClosure*/");
Assert.AreEqual("System.Object", rr.ResolvedType.FullyQualifiedName);
}
[Test]
public void EqualityOperator()
{
ResolveResult rr = Resolve<ResolveResult>("0 == 0");
Assert.AreEqual("System.Boolean", rr.ResolvedType.FullyQualifiedName);
rr = Resolve<ResolveResult>("0 != 1");
Assert.AreEqual("System.Boolean", rr.ResolvedType.FullyQualifiedName);
rr = Resolve<ResolveResult>("null is null");
Assert.AreEqual("System.Boolean", rr.ResolvedType.FullyQualifiedName);
rr = Resolve<ResolveResult>("object() is not null");
Assert.AreEqual("System.Boolean", rr.ResolvedType.FullyQualifiedName);
}
[Test]
public void ClassMethodAmbiguity()
{
string prog =
"class Test:\n" +
"\tdef constructor():\n" +
"\t\tpass\n" +
"class OtherClass:\n" +
"\tdef Test():\n" +
"\t\t/*mark*/\n" +
"\t\tpass\n";
MemberResolveResult rr = Resolve<MemberResolveResult>(prog, "Test()", "/*mark*/");
Assert.AreEqual("OtherClass.Test", rr.ResolvedMember.FullyQualifiedName);
}
#endregion
#region Regression
const string regressionProg =
"import System\n" +
"import System.Reflection\n" +
"def MyMethod(arg as string):\n" +
"\tif true:\n" +
"\t\tboo629 = 'hello'\n" +
"\tfor boo640a in [1, 2, 3]:\n" +
"\t\tif boo640b = boo640a as FieldInfo: /*640*/\n" +
"\t\t\tprint boo640b\n" +
"\t\n" +
"\t/*1*/\n";
[Test]
public void Boo629VariableScope()
{
LocalResolveResult rr = Resolve<LocalResolveResult>(regressionProg, "boo629", "/*1*/");
Assert.AreEqual("System.String", rr.ResolvedType.FullyQualifiedName);
}
[Test]
public void Boo640ConditionalAssignment()
{
LocalResolveResult rr = Resolve<LocalResolveResult>(regressionProg, "boo640b", "/*1*/");
Assert.AreEqual("System.Reflection.FieldInfo", rr.ResolvedType.FullyQualifiedName);
rr = Resolve<LocalResolveResult>(regressionProg, "boo640a", "/*640*/");
Assert.AreEqual("System.Object", rr.ResolvedType.FullyQualifiedName);
Assert.IsNull(Resolve(regressionProg, new ExpressionResult("boo640a"), "/*1*/"));
}
[Test]
public void IndexerRecognition()
{
string prog =
"class Foo:\n" +
"\tself[index as int]:\n" +
"\t\tget:\n" +
"\t\t\treturn true\n" +
"def example():\n" +
"\tfoo = Foo()\n" +
"\tmybool = foo[1] /*mark*/\n" +
"\tprint mybool\n";
MemberResolveResult rr = Resolve<MemberResolveResult>(prog, "foo[1]", "/*mark*/");
Assert.IsTrue(((IProperty)rr.ResolvedMember).IsIndexer);
Assert.AreEqual("System.Boolean", rr.ResolvedType.FullyQualifiedName);
LocalResolveResult rr2 = Resolve<LocalResolveResult>(prog, "mybool", "/*mark*/");
Assert.AreEqual("System.Boolean", rr2.ResolvedType.FullyQualifiedName);
}
#endregion
#region Nested Classes
const string nestedClassProg =
"class Outer:\n" +
"\tpublic static outerField = 1\n" +
"\tpublic class Inner:\n/*inner*/" +
"\t\tpublic innerField = 2\n" +
"class Derived(Outer):\n/*derived*/" +
"\tpublic static derivedField = 3\n" +
"def Method():\n" +
"\ti as Outer.Inner\n" +
"\ti2 as Derived.Inner\n" +
"\t/*1*/";
[Test]
public void NestedClassTypeResolution()
{
TypeResolveResult trr;
trr = Resolve<TypeResolveResult>(nestedClassProg, "Outer.Inner", "/*1*/");
Assert.AreEqual("Outer.Inner", trr.ResolvedClass.FullyQualifiedName);
trr = Resolve<TypeResolveResult>(nestedClassProg, "Inner", "/*inner*/");
Assert.AreEqual("Outer.Inner", trr.ResolvedClass.FullyQualifiedName);
trr = Resolve<TypeResolveResult>(nestedClassProg, "Inner", "/*derived*/");
Assert.AreEqual("Outer.Inner", trr.ResolvedClass.FullyQualifiedName);
trr = Resolve<TypeResolveResult>(nestedClassProg, "Derived.Inner", "/*1*/");
Assert.AreEqual("Outer.Inner", trr.ResolvedClass.FullyQualifiedName);
}
[Test]
public void NestedClassCtrlSpace()
{
CtrlSpace(nestedClassProg.Replace("/*inner*/", "/*mark*/"), "outerField", "innerField", "Inner", "Outer", "Derived");
CtrlSpace(nestedClassProg.Replace("/*derived*/", "/*mark*/"), "outerField", "derivedField", "Inner", "Outer", "Derived");
}
[Test]
public void NestedClassParentStaticField()
{
MemberResolveResult mrr = Resolve<MemberResolveResult>(nestedClassProg, "outerField", "/*inner*/");
Assert.AreEqual("Outer.outerField", mrr.ResolvedMember.FullyQualifiedName);
}
[Test]
public void NestedClassCC()
{
LocalResolveResult rr = Resolve<LocalResolveResult>(nestedClassProg, "i", "/*1*/");
Assert.AreEqual("Outer.Inner", rr.ResolvedType.FullyQualifiedName);
bool ok = false;
foreach (object o in rr.GetCompletionData(lastPC)) {
IMember m = o as IMember;
if (m != null && m.Name == "innerField")
ok = true;
}
Assert.IsTrue(ok);
MemberResolveResult mrr = Resolve<MemberResolveResult>(nestedClassProg, "i.innerField", "/*1*/");
Assert.AreEqual("Outer.Inner.innerField", mrr.ResolvedMember.FullyQualifiedName);
}
[Test]
public void NestedClassCC2()
{
LocalResolveResult rr = Resolve<LocalResolveResult>(nestedClassProg, "i2", "/*1*/");
Assert.AreEqual("Outer.Inner", rr.ResolvedType.FullyQualifiedName);
bool ok = false;
foreach (object o in rr.GetCompletionData(lastPC)) {
IMember m = o as IMember;
if (m != null && m.Name == "innerField")
ok = true;
}
Assert.IsTrue(ok);
MemberResolveResult mrr = Resolve<MemberResolveResult>(nestedClassProg, "i2.innerField", "/*1*/");
Assert.AreEqual("Outer.Inner.innerField", mrr.ResolvedMember.FullyQualifiedName);
}
#endregion
#region CtrlSpace
void CtrlSpace(string prog, params string[] expected)
{
CtrlSpace(new string[0], prog, expected);
}
void CtrlSpace(string[] unExpected, string prog, params string[] expected)
{
Register(prog);
int line, column;
GetPos(prog, "/*mark*/", out line, out column);
BooResolver r = new BooResolver();
System.Collections.ArrayList ar;
ar = r.CtrlSpace(line, column, fileName, prog, ExpressionContext.Default);
foreach (string e in unExpected) {
foreach (object o in ar) {
if (e.Equals(o))
Assert.Fail("Didn't expect " + e);
if (o is IMember && (o as IMember).Name == e) {
Assert.Fail("Didn't expect " + e);
}
if (o is IClass && (o as IClass).Name == e) {
Assert.Fail("Didn't expect " + e);
}
}
}
foreach (string e in expected) {
bool ok = false;
foreach (object o in ar) {
if (e.Equals(o)) {
if (ok) Assert.Fail("double entry " + e);
ok = true;
}
if (o is IMember && (o as IMember).Name == e) {
if (ok) Assert.Fail("double entry " + e);
ok = true;
}
if (o is IClass && (o as IClass).Name == e) {
if (ok) Assert.Fail("double entry " + e);
ok = true;
}
}
if (!ok)
Assert.Fail("Expected " + e);
}
}
[Test]
public void CtrlSpaceScopeExtension()
{
string prog =
"def Foo():\n" +
"\tbar = def():\n" +
"\t\tx = 0\n" +
"\t\t/*mark*/\n";
CtrlSpace(prog, "bar", "x");
}
[Test]
public void DoubleEntryTest()
{
string prog =
"class MyClass:\n" +
"\t_myInt = 0\n" +
"\tdef Foo():\n" +
"\t\t_myInt = 5\n" +
"\t\t/*mark*/\n";
CtrlSpace(prog, "_myInt");
}
[Test]
public void LoopInClosureTest()
{
string prog =
"def Foo():\n" +
"\tfor i in range(5):\n" +
"\t\tbar = def():\n" +
"\t\t\tx = 0\n" +
"\t\t\t/*mark*/\n" +
"\t\t\tprint x";
CtrlSpace(prog, "x", "bar", "i");
}
#endregion
}
}

8
src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitorExpressions.cs

@ -117,6 +117,10 @@ namespace NRefactoryToBooConverter @@ -117,6 +117,10 @@ namespace NRefactoryToBooConverter
if (val is double) {
return new B.DoubleLiteralExpression(GetLexicalInfo(pe), (double)val, false);
}
if (val is decimal) {
AddWarning(pe, "Converting decimal literal to double literal");
return new B.DoubleLiteralExpression(GetLexicalInfo(pe), (double)(decimal)val);
}
AddError(pe, "Unknown primitive literal of type " + val.GetType().FullName);
return null;
}
@ -520,14 +524,14 @@ namespace NRefactoryToBooConverter @@ -520,14 +524,14 @@ namespace NRefactoryToBooConverter
{
AddError(checkedExpression, "Using 'checked' inside an expression is not supported by boo, " +
"use the checked {} block instead.");
return null;
return MakeMethodCall("checked", ConvertExpression(checkedExpression.Expression));
}
public object Visit(UncheckedExpression uncheckedExpression, object data)
{
AddError(uncheckedExpression, "Using 'unchecked' inside an expression is not supported by boo, " +
"use the unchecked {} block instead.");
return null;
return MakeMethodCall("unchecked", ConvertExpression(uncheckedExpression.Expression));
}
}
}

18
src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/NRefactoryToBooConverter.csproj

@ -6,6 +6,16 @@ @@ -6,6 +6,16 @@
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}</ProjectGuid>
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
<NoStdLib>False</NoStdLib>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>105906176</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<FileAlignment>4096</FileAlignment>
<WarningLevel>4</WarningLevel>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\Debug\</OutputPath>
@ -17,6 +27,14 @@ @@ -17,6 +27,14 @@
<Optimize>true</Optimize>
<DefineConstants>TRACE</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<DebugType>Full</DebugType>
<DebugSymbols>true</DebugSymbols>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<DebugType>None</DebugType>
<DebugSymbols>false</DebugSymbols>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Drawing" />

30
src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Test/MemberTests.cs

@ -134,6 +134,18 @@ namespace NRefactoryToBooConverter.Tests @@ -134,6 +134,18 @@ namespace NRefactoryToBooConverter.Tests
TestInClass("public static void Run() {}", "public static def Run() as System.Void:\n\tpass");
}
[Test]
public void AbstractMethod()
{
TestInClass("public abstract void Run();", "public abstract def Run() as System.Void:\n\tpass");
}
[Test]
public void AbstractMethodInInterface()
{
TestInInterface("void Run();", "def Run() as System.Void");
}
[Test]
public void StaticMethodInStaticClass()
{
@ -214,6 +226,18 @@ namespace NRefactoryToBooConverter.Tests @@ -214,6 +226,18 @@ namespace NRefactoryToBooConverter.Tests
"[AA]\npublic Text as System.String:\n\t[BB]\n\tget:\n\t\tpass\n\t[CC]\n\tset:\n\t\tpass");
}
[Test]
public void AbstractProperty()
{
TestInClass("public abstract string Prop { get; }", "public abstract Prop as System.String:\n\tget:\n\t\tpass");
}
[Test]
public void AbstractPropertyInInterface()
{
TestInInterface("string Prop { get; }", "Prop as System.String:\n\tget");
}
[Test]
public void ReadOnlyIndexer()
{
@ -251,6 +275,12 @@ namespace NRefactoryToBooConverter.Tests @@ -251,6 +275,12 @@ namespace NRefactoryToBooConverter.Tests
TestInClass("[LookHere] event EventHandler Closed;", "[LookHere]\nprivate event Closed as EventHandler");
}
[Test]
public void EventInInterface()
{
TestInInterface("event EventHandler Closed;", "event Closed as EventHandler");
}
[Test]
public void PInvoke()
{

5
src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Test/TestHelper.cs

@ -65,6 +65,11 @@ namespace NRefactoryToBooConverter.Tests @@ -65,6 +65,11 @@ namespace NRefactoryToBooConverter.Tests
Assert.AreEqual(output.Replace("??", ConverterSettings.DefaultNameGenerationPrefix), ConvertVB(input));
}
protected void TestInInterface(string input, string output)
{
Test("public interface ClassName {\n" + input + "\n}", "public interface ClassName:\n\t" + output.Replace("\n", "\n\t"));
}
protected void TestInClass(string input, string output)
{
Test("public class ClassName {\n" + input + "\n}", "public class ClassName:\n\t" + output.Replace("\n", "\n\t"));

10
src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj

@ -12,9 +12,17 @@ @@ -12,9 +12,17 @@
<RunPostBuildEvent>OnSuccessfulBuild</RunPostBuildEvent>
<OutputType>Library</OutputType>
<AssemblyOriginatorKeyMode>File</AssemblyOriginatorKeyMode>
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>103284736</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<FileAlignment>4096</FileAlignment>
<WarningLevel>4</WarningLevel>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>True</DebugSymbols>
<DebugSymbols>true</DebugSymbols>
<DebugType>Full</DebugType>
<Optimize>False</Optimize>
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>

8
src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpAmbience.cs

@ -303,6 +303,14 @@ namespace ICSharpCode.Core @@ -303,6 +303,14 @@ namespace ICSharpCode.Core
}
if (property.IsIndexer) {
if (property.DeclaringType != null) {
if (UseFullyQualifiedMemberNames) {
builder.Append(property.DeclaringType.FullyQualifiedName);
} else {
builder.Append(property.DeclaringType.Name);
}
builder.Append('.');
}
builder.Append("this");
} else {
if (IncludeHTMLMarkup) {

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

@ -231,71 +231,63 @@ namespace CSharpBinding.FormattingStrategy @@ -231,71 +231,63 @@ namespace CSharpBinding.FormattingStrategy
return false;
}
bool IsBeforeRegion(TextArea textArea, DomRegion region, int lineNr)
{
if (region.IsEmpty) {
return false;
}
return region.BeginLine - 2 <= lineNr && lineNr <= region.BeginLine;
}
object GetClassMember(TextArea textArea, int lineNr, IClass c)
{
if (IsBeforeRegion(textArea, c.Region, lineNr)) {
return c;
}
foreach (IClass inner in c.InnerClasses) {
object o = GetClassMember(textArea, lineNr, inner);
if (o != null) {
return o;
}
}
foreach (IField f in c.Fields) {
if (IsBeforeRegion(textArea, f.Region, lineNr)) {
return f;
}
}
foreach (IProperty p in c.Properties) {
if (IsBeforeRegion(textArea, p.Region, lineNr)) {
return p;
}
}
foreach (IEvent e in c.Events) {
if (IsBeforeRegion(textArea, e.Region, lineNr)) {
return e;
}
}
foreach (IMethod m in c.Methods) {
if (IsBeforeRegion(textArea, m.Region, lineNr)) {
return m;
}
}
return null;
}
object GetMember(TextArea textArea, int lineNr)
/// <summary>
/// Gets the next member after the specified caret position.
/// </summary>
object GetMemberAfter(TextArea textArea, int caretLine)
{
string fileName = textArea.MotherTextEditorControl.FileName;
object nextElement = null;
if (fileName != null && fileName.Length > 0 ) {
string fullPath = Path.GetFullPath(fileName);
ParseInformation parseInfo = ParserService.GetParseInformation(fullPath);
ParseInformation parseInfo = ParserService.ParseFile(fileName, textArea.Document.TextContent);
if (parseInfo != null) {
ICompilationUnit currentCompilationUnit = (ICompilationUnit)parseInfo.BestCompilationUnit;
ICompilationUnit currentCompilationUnit = parseInfo.BestCompilationUnit;
if (currentCompilationUnit != null) {
foreach (IClass c in currentCompilationUnit.Classes) {
object o = GetClassMember(textArea, lineNr, c);
if (o != null) {
return o;
IClass currentClass = currentCompilationUnit.GetInnermostClass(caretLine, 0);
int nextElementLine = int.MaxValue;
if (currentClass == null) {
foreach (IClass c in currentCompilationUnit.Classes) {
if (c.Region.BeginLine < nextElementLine && c.Region.BeginLine > caretLine) {
nextElementLine = c.Region.BeginLine;
nextElement = c;
}
}
} else {
foreach (IClass c in currentClass.InnerClasses) {
if (c.Region.BeginLine < nextElementLine && c.Region.BeginLine > caretLine) {
nextElementLine = c.Region.BeginLine;
nextElement = c;
}
}
foreach (IMember m in currentClass.Methods) {
if (m.Region.BeginLine < nextElementLine && m.Region.BeginLine > caretLine) {
nextElementLine = m.Region.BeginLine;
nextElement = m;
}
}
foreach (IMember m in currentClass.Properties) {
if (m.Region.BeginLine < nextElementLine && m.Region.BeginLine > caretLine) {
nextElementLine = m.Region.BeginLine;
nextElement = m;
}
}
foreach (IMember m in currentClass.Fields) {
if (m.Region.BeginLine < nextElementLine && m.Region.BeginLine > caretLine) {
nextElementLine = m.Region.BeginLine;
nextElement = m;
}
}
foreach (IMember m in currentClass.Events) {
if (m.Region.BeginLine < nextElementLine && m.Region.BeginLine > caretLine) {
nextElementLine = m.Region.BeginLine;
nextElement = m;
}
}
}
}
}
}
return null;
return nextElement;
}
#endregion
@ -327,7 +319,7 @@ namespace CSharpBinding.FormattingStrategy @@ -327,7 +319,7 @@ namespace CSharpBinding.FormattingStrategy
string lineAboveText = lineAbove == null ? "" : textArea.Document.GetText(lineAbove);
if (curLineText != null && curLineText.EndsWith("///") && (lineAboveText == null || !lineAboveText.Trim().StartsWith("///"))) {
string indentation = base.GetIndentation(textArea, lineNr);
object member = GetMember(textArea, lineNr);
object member = GetMemberAfter(textArea, lineNr);
if (member != null) {
StringBuilder sb = new StringBuilder();
sb.Append(" <summary>\n");

11
src/AddIns/BackendBindings/ILAsmBinding/Project/ILAsmBinding.csproj

@ -13,13 +13,20 @@ @@ -13,13 +13,20 @@
<NoConfig>False</NoConfig>
<RunPostBuildEvent>OnSuccessfulBuild</RunPostBuildEvent>
<OutputType>Library</OutputType>
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>104333312</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<FileAlignment>4096</FileAlignment>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>True</DebugSymbols>
<DebugSymbols>true</DebugSymbols>
<Optimize>False</Optimize>
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
<OutputPath>..\..\..\..\..\AddIns\AddIns\BackendBindings\ILAsmBinding\</OutputPath>
<DebugType>full</DebugType>
<DebugType>Full</DebugType>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugSymbols>False</DebugSymbols>

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

@ -269,7 +269,7 @@ namespace VBNetBinding.FormattingStrategy @@ -269,7 +269,7 @@ namespace VBNetBinding.FormattingStrategy
if (curLineText != null && curLineText.EndsWith("'''") && (lineAboveText == null || !lineAboveText.Trim().StartsWith("'''"))) {
string indentation = base.GetIndentation(textArea, lineNr);
object member = GetMember(textArea, lineNr);
object member = GetMemberAfter(textArea, lineNr);
if (member != null) {
StringBuilder sb = new StringBuilder();
sb.Append(" <summary>\n");
@ -446,69 +446,63 @@ namespace VBNetBinding.FormattingStrategy @@ -446,69 +446,63 @@ namespace VBNetBinding.FormattingStrategy
return false;
}
object GetMember(TextArea textArea, int lineNr)
/// <summary>
/// Gets the next member after the specified caret position.
/// </summary>
object GetMemberAfter(TextArea textArea, int caretLine)
{
string fileName = textArea.MotherTextEditorControl.FileName;
object nextElement = null;
if (fileName != null && fileName.Length > 0 ) {
string fullPath = Path.GetFullPath(fileName);
ParseInformation parseInfo = ParserService.GetParseInformation(fullPath);
ParseInformation parseInfo = ParserService.ParseFile(fileName, textArea.Document.TextContent);
if (parseInfo != null) {
ICompilationUnit currentCompilationUnit = (ICompilationUnit)parseInfo.BestCompilationUnit;
ICompilationUnit currentCompilationUnit = parseInfo.BestCompilationUnit;
if (currentCompilationUnit != null) {
foreach (IClass c in currentCompilationUnit.Classes) {
object o = GetClassMember(textArea, lineNr, c);
if (o != null) {
return o;
IClass currentClass = currentCompilationUnit.GetInnermostClass(caretLine, 0);
int nextElementLine = int.MaxValue;
if (currentClass == null) {
foreach (IClass c in currentCompilationUnit.Classes) {
if (c.Region.BeginLine < nextElementLine && c.Region.BeginLine > caretLine) {
nextElementLine = c.Region.BeginLine;
nextElement = c;
}
}
} else {
foreach (IClass c in currentClass.InnerClasses) {
if (c.Region.BeginLine < nextElementLine && c.Region.BeginLine > caretLine) {
nextElementLine = c.Region.BeginLine;
nextElement = c;
}
}
foreach (IMember m in currentClass.Methods) {
if (m.Region.BeginLine < nextElementLine && m.Region.BeginLine > caretLine) {
nextElementLine = m.Region.BeginLine;
nextElement = m;
}
}
foreach (IMember m in currentClass.Properties) {
if (m.Region.BeginLine < nextElementLine && m.Region.BeginLine > caretLine) {
nextElementLine = m.Region.BeginLine;
nextElement = m;
}
}
foreach (IMember m in currentClass.Fields) {
if (m.Region.BeginLine < nextElementLine && m.Region.BeginLine > caretLine) {
nextElementLine = m.Region.BeginLine;
nextElement = m;
}
}
foreach (IMember m in currentClass.Events) {
if (m.Region.BeginLine < nextElementLine && m.Region.BeginLine > caretLine) {
nextElementLine = m.Region.BeginLine;
nextElement = m;
}
}
}
}
}
}
return null;
}
object GetClassMember(TextArea textArea, int lineNr, IClass c)
{
if (IsBeforeRegion(textArea, c.Region, lineNr)) {
return c;
}
foreach (IClass inner in c.InnerClasses) {
object o = GetClassMember(textArea, lineNr, inner);
if (o != null) {
return o;
}
}
foreach (IField f in c.Fields) {
if (IsBeforeRegion(textArea, f.Region, lineNr)) {
return f;
}
}
foreach (IProperty p in c.Properties) {
if (IsBeforeRegion(textArea, p.Region, lineNr)) {
return p;
}
}
foreach (IEvent e in c.Events) {
if (IsBeforeRegion(textArea, e.Region, lineNr)) {
return e;
}
}
foreach (IMethod m in c.Methods) {
if (IsBeforeRegion(textArea, m.Region, lineNr)) {
return m;
}
}
return null;
}
bool IsBeforeRegion(TextArea textArea, DomRegion region, int lineNr)
{
if (region.IsEmpty) {
return false;
}
return region.BeginLine - 2 <= lineNr && lineNr <= region.BeginLine;
return nextElement;
}
bool IsInString(string start)

11
src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.csproj

@ -13,13 +13,20 @@ @@ -13,13 +13,20 @@
<RunPostBuildEvent>OnSuccessfulBuild</RunPostBuildEvent>
<OutputType>Library</OutputType>
<AssemblyOriginatorKeyMode>File</AssemblyOriginatorKeyMode>
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>104857600</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<FileAlignment>4096</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>True</DebugSymbols>
<DebugSymbols>true</DebugSymbols>
<Optimize>False</Optimize>
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
<OutputPath>..\..\..\..\..\AddIns\AddIns\BackendBindings\VBNetBinding\</OutputPath>
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<DebugType>Full</DebugType>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugSymbols>False</DebugSymbols>

2
src/AddIns/DisplayBindings/FormsDesigner/Project/FormsDesigner.csproj

@ -21,7 +21,7 @@ @@ -21,7 +21,7 @@
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<OutputPath>..\..\..\..\..\AddIns\AddIns\DisplayBindings\FormsDesigner\</OutputPath>
<DebugSymbols>true</DebugSymbols>
<BaseAddress>4194304</BaseAddress>
<BaseAddress>108003328</BaseAddress>
<FileAlignment>4096</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">

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

@ -136,6 +136,10 @@ namespace ICSharpCode.FormsDesigner @@ -136,6 +136,10 @@ namespace ICSharpCode.FormsDesigner
protected abstract DomRegion GetReplaceRegion(ICSharpCode.TextEditor.Document.IDocument document, IMethod method);
protected virtual void FixGeneratedCode(IClass formClass, CodeMemberMethod code)
{
}
public virtual void MergeFormChanges(CodeCompileUnit unit)
{
Reparse();
@ -158,6 +162,10 @@ namespace ICSharpCode.FormsDesigner @@ -158,6 +162,10 @@ namespace ICSharpCode.FormsDesigner
if (formClass == null || initializeComponent == null) {
throw new InvalidOperationException("InitializeComponent method not found in framework-generated CodeDom.");
}
if (this.formClass == null) {
MessageService.ShowMessage("Cannot save form: InitializeComponent method does not exist anymore. You should not modify the Designer.cs file while editing a form.");
return;
}
if (formClass.Name != this.formClass.Name) {
LoggingService.Info("Renaming form to " + formClass.Name);
@ -165,6 +173,8 @@ namespace ICSharpCode.FormsDesigner @@ -165,6 +173,8 @@ namespace ICSharpCode.FormsDesigner
Reparse();
}
FixGeneratedCode(this.formClass, initializeComponent);
// generate file and get initialize components string
StringWriter writer = new StringWriter();
CodeDOMGenerator domGenerator = new CodeDOMGenerator(this.CodeDomProvider, tabs + '\t');

6
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerLoader/NRefactoryDesignerLoader.cs

@ -329,7 +329,11 @@ namespace ICSharpCode.FormsDesigner @@ -329,7 +329,11 @@ namespace ICSharpCode.FormsDesigner
this.CodeDomProvider.GenerateCodeFromCompileUnit(unit, Console.Out, null);
}
#endif
generator.MergeFormChanges(unit);
try {
generator.MergeFormChanges(unit);
} catch (Exception ex) {
MessageService.ShowError(ex);
}
}
// public void Reload()

72
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Services/TypeResolutionService.cs

@ -17,6 +17,7 @@ using ICSharpCode.SharpDevelop.Project; @@ -17,6 +17,7 @@ using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.Core;
using System.Diagnostics;
using Microsoft.Win32;
namespace ICSharpCode.FormsDesigner.Services
{
@ -130,6 +131,11 @@ namespace ICSharpCode.FormsDesigner.Services @@ -130,6 +131,11 @@ namespace ICSharpCode.FormsDesigner.Services
}
}
static string GetHash(string fileName)
{
return Path.GetFileName(fileName).ToLowerInvariant() + File.GetLastWriteTimeUtc(fileName).Ticks.ToString();
}
/// <summary>
/// Loads the file in none-locking mode. Returns null on failure.
/// </summary>
@ -137,7 +143,16 @@ namespace ICSharpCode.FormsDesigner.Services @@ -137,7 +143,16 @@ namespace ICSharpCode.FormsDesigner.Services
{
if (!File.Exists(fileName))
return null;
string hash = Path.GetFileName(fileName) + File.GetLastWriteTimeUtc(fileName).Ticks.ToString();
// FIX for SD2-716, remove when designer gets its own AppDomain
foreach (Assembly asm in AppDomain.CurrentDomain.GetAssemblies()) {
if (string.Equals(asm.Location, fileName, StringComparison.InvariantCultureIgnoreCase)) {
RegisterAssembly(asm);
return asm;
}
}
string hash = GetHash(fileName);
lock (assemblyDict) {
Assembly asm;
if (assemblyDict.TryGetValue(hash, out asm))
@ -213,6 +228,20 @@ namespace ICSharpCode.FormsDesigner.Services @@ -213,6 +228,20 @@ namespace ICSharpCode.FormsDesigner.Services
}
}
public static void RegisterAssembly(Assembly asm)
{
string file = asm.Location;
if (file.Length > 0) {
lock (assemblyDict) {
assemblyDict[GetHash(file)] = asm;
}
}
lock (designerAssemblies) {
if (!designerAssemblies.Contains(asm))
designerAssemblies.Insert(0, asm);
}
}
public Assembly GetAssembly(AssemblyName name)
{
return LoadAssembly(name, false);
@ -227,10 +256,7 @@ namespace ICSharpCode.FormsDesigner.Services @@ -227,10 +256,7 @@ namespace ICSharpCode.FormsDesigner.Services
{
try {
Assembly asm = Assembly.Load(name);
lock (designerAssemblies) {
if (!designerAssemblies.Contains(asm))
designerAssemblies.Insert(0, asm);
}
RegisterAssembly(asm);
return asm;
} catch (System.IO.FileLoadException) {
if (throwOnError)
@ -266,6 +292,11 @@ namespace ICSharpCode.FormsDesigner.Services @@ -266,6 +292,11 @@ namespace ICSharpCode.FormsDesigner.Services
if (IgnoreType(name)) {
return null;
}
#if DEBUG
if (!name.StartsWith("System.")) {
LoggingService.Debug("TypeResolutionService: Looking for " + name);
}
#endif
try {
Type type = Type.GetType(name, false, ignoreCase);
@ -334,6 +365,7 @@ namespace ICSharpCode.FormsDesigner.Services @@ -334,6 +365,7 @@ namespace ICSharpCode.FormsDesigner.Services
ICSharpCode.Core.LoggingService.Warn("TODO: Add Assembly reference : " + name);
}
#region VSDesigner workarounds
/// <summary>
/// HACK - Ignore any requests for types from the Microsoft.VSDesigner
/// assembly. There are smart tag problems if data adapter
@ -352,8 +384,38 @@ namespace ICSharpCode.FormsDesigner.Services @@ -352,8 +384,38 @@ namespace ICSharpCode.FormsDesigner.Services
return false;
}
static string vsDesignerIdeDir;
static void RegisterVSDesignerWorkaround()
{
if (vsDesignerIdeDir == null) {
vsDesignerIdeDir = "";
RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\VisualStudio\8.0\Setup\VS");
if (key != null) {
vsDesignerIdeDir = key.GetValue("VS7CommonDir") as string ?? "";
if (vsDesignerIdeDir.Length > 0) {
vsDesignerIdeDir = Path.Combine(vsDesignerIdeDir, "IDE");
AppDomain.CurrentDomain.AssemblyResolve += delegate(object sender, ResolveEventArgs args) {
string shortName = args.Name;
if (shortName.IndexOf(',') >= 0) {
shortName = shortName.Substring(0, shortName.IndexOf(','));
}
if (shortName.StartsWith("Microsoft.")
&& File.Exists(Path.Combine(vsDesignerIdeDir, shortName + ".dll")))
{
return Assembly.LoadFrom(Path.Combine(vsDesignerIdeDir, shortName + ".dll"));
}
return null;
};
}
}
}
}
#endregion
public static void AddAssemblyResolver()
{
RegisterVSDesignerWorkaround();
AppDomain.CurrentDomain.AssemblyResolve += AssemblyResolveEventHandler;
}

11
src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.csproj

@ -12,13 +12,22 @@ @@ -12,13 +12,22 @@
<OutputType>Library</OutputType>
<AssemblyOriginatorKeyMode>File</AssemblyOriginatorKeyMode>
<RootNamespace>ResourceEditor</RootNamespace>
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>109576192</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<FileAlignment>4096</FileAlignment>
<WarningLevel>4</WarningLevel>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>True</DebugSymbols>
<DebugSymbols>true</DebugSymbols>
<Optimize>False</Optimize>
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
<OutputPath>..\..\..\..\..\AddIns\AddIns\DisplayBindings\ResourceEditor\</OutputPath>
<DefineConstants>DEBUG</DefineConstants>
<DebugType>Full</DebugType>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugSymbols>False</DebugSymbols>

7
src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceList.cs

@ -120,10 +120,10 @@ namespace ResourceEditor @@ -120,10 +120,10 @@ namespace ResourceEditor
public void LoadFile(string filename)
{
Stream s = File.OpenRead(filename);
switch (Path.GetExtension(filename).ToLowerInvariant()) {
case ".resx":
ResXResourceReader rx = new ResXResourceReader(s);
ResXResourceReader rx = new ResXResourceReader(filename);
rx.BasePath = Path.GetDirectoryName(filename);
IDictionaryEnumerator n = rx.GetEnumerator();
while (n.MoveNext())
if (!resources.ContainsKey(n.Key.ToString()))
@ -135,7 +135,7 @@ namespace ResourceEditor @@ -135,7 +135,7 @@ namespace ResourceEditor
//// new file will fail here - so we have to ignore exception(s)
ResourceReader rr=null;
try {
rr = new ResourceReader(s);
rr = new ResourceReader(filename);
foreach (DictionaryEntry entry in rr) {
if (!resources.ContainsKey(entry.Key.ToString()))
resources.Add(entry.Key.ToString(), new ResourceItem(entry.Key.ToString(), entry.Value));
@ -149,7 +149,6 @@ namespace ResourceEditor @@ -149,7 +149,6 @@ namespace ResourceEditor
}
break;
}
s.Close();
InitializeListView();
}

5
src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlSchemaCompletionData.cs

@ -794,8 +794,9 @@ namespace ICSharpCode.XmlEditor @@ -794,8 +794,9 @@ namespace ICSharpCode.XmlEditor
XmlSchemaSequence sequence = complexType.Particle as XmlSchemaSequence;
XmlSchemaChoice choice = complexType.Particle as XmlSchemaChoice;
XmlSchemaGroupRef groupRef = complexType.Particle as XmlSchemaGroupRef;
XmlSchemaAll all = complexType.Particle as XmlSchemaAll;
XmlSchemaComplexContent complexContent = complexType.ContentModel as XmlSchemaComplexContent;
if (sequence != null) {
matchedElement = FindElement(sequence.Items, name);
} else if (choice != null) {
@ -810,6 +811,8 @@ namespace ICSharpCode.XmlEditor @@ -810,6 +811,8 @@ namespace ICSharpCode.XmlEditor
}
} else if (groupRef != null) {
matchedElement = FindElement(groupRef, name);
} else if (all != null) {
matchedElement = FindElement(all.Items, name);
}
return matchedElement;

2
src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.csproj

@ -16,7 +16,7 @@ @@ -16,7 +16,7 @@
<StartProgram>..\..\..\..\..\bin\SharpDevelop.exe</StartProgram>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>4194304</BaseAddress>
<BaseAddress>110100480</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<FileAlignment>4096</FileAlignment>
<NoWarn>0618</NoWarn>

30
src/AddIns/DisplayBindings/XmlEditor/Test/Schema/AllElementTestFixture.cs

@ -21,13 +21,18 @@ namespace XmlEditor.Tests.Schema @@ -21,13 +21,18 @@ namespace XmlEditor.Tests.Schema
public class AllElementTestFixture : SchemaTestFixtureBase
{
ICompletionData[] personElementChildren;
ICompletionData[] firstNameAttributes;
ICompletionData[] firstNameElementChildren;
public override void FixtureInit()
{
XmlElementPath path = new XmlElementPath();
path.Elements.Add(new QualifiedName("person", "http://foo"));
personElementChildren = SchemaCompletionData.GetChildElementCompletionData(path);
path.Elements.Add(new QualifiedName("firstname", "http://foo"));
firstNameAttributes = SchemaCompletionData.GetAttributeCompletionData(path);
firstNameElementChildren = SchemaCompletionData.GetChildElementCompletionData(path);
}
[Test]
@ -37,13 +42,34 @@ namespace XmlEditor.Tests.Schema @@ -37,13 +42,34 @@ namespace XmlEditor.Tests.Schema
"Should be 2 child elements.");
}
[Test]
public void FirstNameElementHasAttribute()
{
Assert.AreEqual(1, firstNameAttributes.Length, "Should have one attribute.");
}
[Test]
public void FirstNameElementHasChildren()
{
Assert.AreEqual(2, firstNameElementChildren.Length,
"Should be 2 child elements.");
}
protected override string GetSchema()
{
return "<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" targetNamespace=\"http://foo\">\r\n" +
" <xs:element name=\"person\">\r\n" +
" <xs:complexType>\r\n" +
" <xs:all>\r\n" +
" <xs:element name=\"firstname\" type=\"xs:string\"/>\r\n" +
" <xs:element name=\"firstname\">\r\n" +
" <xs:complexType>\r\n" +
" <xs:sequence>\r\n" +
" <xs:element name=\"short\" type=\"xs:string\"/>\r\n" +
" <xs:element name=\"title\" type=\"xs:string\"/>\r\n" +
" </xs:sequence>\r\n" +
" <xs:attribute name=\"id\"/>\r\n" +
" </xs:complexType>\r\n" +
" </xs:element>\r\n" +
" <xs:element name=\"lastname\" type=\"xs:string\"/>\r\n" +
" </xs:all>\r\n" +
" </xs:complexType>\r\n" +

2
src/AddIns/Misc/AddInManager/Project/AddInManager.csproj

@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
<NoStdLib>False</NoStdLib>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>4194304</BaseAddress>
<BaseAddress>111149056</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<FileAlignment>4096</FileAlignment>
<WarningLevel>4</WarningLevel>

11
src/AddIns/Misc/AddinScout/Project/AddinScout.csproj

@ -13,12 +13,21 @@ @@ -13,12 +13,21 @@
<NoConfig>False</NoConfig>
<RunPostBuildEvent>OnSuccessfulBuild</RunPostBuildEvent>
<OutputType>Library</OutputType>
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>111673344</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<FileAlignment>4096</FileAlignment>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>True</DebugSymbols>
<DebugSymbols>true</DebugSymbols>
<Optimize>False</Optimize>
<DefineConstants>DEBUG</DefineConstants>
<OutputPath>..\..\..\..\..\AddIns\AddIns\Misc\AddinScout\</OutputPath>
<DebugType>Full</DebugType>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugSymbols>False</DebugSymbols>

2
src/AddIns/Misc/CodeCoverage/Project/CodeCoverage.csproj

@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
<NoStdLib>False</NoStdLib>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>4194304</BaseAddress>
<BaseAddress>112197632</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<FileAlignment>4096</FileAlignment>
<WarningLevel>4</WarningLevel>

11
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Debugger.AddIn.csproj

@ -9,10 +9,19 @@ @@ -9,10 +9,19 @@
<RootNamespace>Debugger.AddIn</RootNamespace>
<AssemblyName>Debugger.AddIn</AssemblyName>
<WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
<NoStdLib>False</NoStdLib>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>116916224</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<FileAlignment>4096</FileAlignment>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DebugType>Full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\..\..\..\AddIns\AddIns\Misc\Debugger\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>

1
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/DynamicTreeDebuggerRow.cs

@ -217,6 +217,7 @@ namespace ICSharpCode.SharpDevelop.Services @@ -217,6 +217,7 @@ namespace ICSharpCode.SharpDevelop.Services
DynamicTreeRow MakeSubMenu(string name, params IEnumerable<DynamicListRow>[] elements)
{
DynamicTreeRow rootRow = new DynamicTreeRow();
rootRow.ShowMinusWhileExpanded = true;
DebuggerGridControl.AddColumns(rootRow.ChildColumns);
rootRow[2].Text = name;
foreach(IEnumerable<DynamicListRow> rows in elements) {

5
src/AddIns/Misc/Debugger/Debugger.Core/Project/Debugger.Core.csproj

@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@
<NoStdLib>False</NoStdLib>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>4194304</BaseAddress>
<BaseAddress>114294784</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<FileAlignment>4096</FileAlignment>
<WarningLevel>4</WarningLevel>
@ -21,11 +21,12 @@ @@ -21,11 +21,12 @@
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DebugType>Full</DebugType>
<NoWarn>108</NoWarn>
<OutputPath>..\..\..\..\..\..\AddIns\AddIns\Misc\Debugger\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
<Optimize>False</Optimize>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>PdbOnly</DebugType>

2
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Function.cs

@ -42,7 +42,7 @@ namespace Debugger @@ -42,7 +42,7 @@ namespace Debugger
public string Name {
get {
return methodProps.Name;
return methodProps.Name; // + "(" + chainIndex.ToString() + ", " + frameIndex.ToString() + ")";
}
}

8
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/SourcecodeSegment.cs

@ -158,7 +158,7 @@ namespace Debugger @@ -158,7 +158,7 @@ namespace Debugger
function = null;
ilOffset = 0;
Module module = null;
Module module = null;
ISymUnmanagedReader symReader = null;
ISymUnmanagedDocument symDoc = null;
@ -206,7 +206,11 @@ namespace Debugger @@ -206,7 +206,11 @@ namespace Debugger
}
ISymUnmanagedMethod symMethod;
symMethod = symReader.GetMethodFromDocumentPosition(symDoc, validLine, (uint)StartColumn);
try {
symMethod = symReader.GetMethodFromDocumentPosition(symDoc, (uint)StartLine, (uint)StartColumn);
} catch {
return false; //Not found
}
function = module.CorModule.GetFunctionFromToken(symMethod.Token);

3
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Thread.cs

@ -249,8 +249,11 @@ namespace Debugger @@ -249,8 +249,11 @@ namespace Debugger
return corFrameEnum.Next();
}
// NOTE: During evlulation some chains may be temporaly removed
internal void CheckExpirationOfFunctions()
{
if (debugger.Evaluating) return;
ICorDebugChainEnum corChainEnum = corThread.EnumerateChains();
uint maxChainIndex = corChainEnum.Count - 1;

4
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/ClassVariable.cs

@ -11,8 +11,8 @@ namespace Debugger @@ -11,8 +11,8 @@ namespace Debugger
{
public class ClassVariable: Variable
{
bool isStatic;
bool isPublic;
internal bool isStatic;
internal bool isPublic;
public bool IsStatic {
get {

4
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/ObjectValue.cs

@ -155,7 +155,7 @@ namespace Debugger @@ -155,7 +155,7 @@ namespace Debugger
{
foreach(MethodProps m in Methods) {
MethodProps method = m; // One per scope/delegate
if (method.Name.StartsWith("get_") && method.HasSpecialName) {
if (method.HasSpecialName && method.Name.StartsWith("get_") && method.Name != "get_Item") {
yield return new PropertyVariable(debugger,
method.Name.Remove(0, 4),
method.IsStatic,
@ -182,7 +182,7 @@ namespace Debugger @@ -182,7 +182,7 @@ namespace Debugger
ICorDebugValue[] GetArgsForEval(MethodProps method, ValueGetter getter)
{
ObjectValue updatedVal = (ObjectValue)getter();
ObjectValue updatedVal = getter() as ObjectValue;
if (this.IsEquivalentValue(updatedVal)) {
if (method.IsStatic) {
return new ICorDebugValue[] {};

10
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Value.cs

@ -19,7 +19,8 @@ namespace Debugger @@ -19,7 +19,8 @@ namespace Debugger
ICorDebugValue corValue;
// ICorDebugHandleValue can be used to get corValue back after Continue()
protected ICorDebugHandleValue corHandleValue;
object pauseSessionAtCreation;
PauseSession pauseSessionAtCreation;
DebugeeState debugeeStateAtCreation;
public event EventHandler<ValueEventArgs> ValueChanged;
@ -31,6 +32,8 @@ namespace Debugger @@ -31,6 +32,8 @@ namespace Debugger
internal ICorDebugValue CorValue {
get {
if (this.IsExpired) throw new DebuggerException("CorValue has expired");
if (pauseSessionAtCreation == debugger.PauseSession) {
return corValue;
} else {
@ -47,6 +50,8 @@ namespace Debugger @@ -47,6 +50,8 @@ namespace Debugger
protected ICorDebugHandleValue SoftReference {
get {
if (this.IsExpired) throw new DebuggerException("CorValue has expired");
if (corHandleValue != null) return corHandleValue;
ICorDebugHeapValue2 heapValue = this.CorValue.As<ICorDebugHeapValue2>();
@ -66,7 +71,7 @@ namespace Debugger @@ -66,7 +71,7 @@ namespace Debugger
if (corHandleValue == null) {
return pauseSessionAtCreation != debugger.PauseSession;
} else {
return false;
return debugeeStateAtCreation != debugger.DebugeeState;
}
}
}
@ -139,6 +144,7 @@ namespace Debugger @@ -139,6 +144,7 @@ namespace Debugger
this.corValue = DereferenceUnbox(corValue);
}
this.pauseSessionAtCreation = debugger.PauseSession;
this.debugeeStateAtCreation = debugger.DebugeeState;
}
public override string ToString()

13
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Variable.cs

@ -23,8 +23,8 @@ namespace Debugger @@ -23,8 +23,8 @@ namespace Debugger
string name;
VariableCollection subVariables;
protected ValueGetter valueGetter;
Value cachedValue;
internal protected ValueGetter valueGetter;
internal Value cachedValue;
event EventHandler<DebuggerEventArgs> valueChanged;
public event EventHandler<VariableCollectionEventArgs> ValueRemovedFromCollection;
@ -89,7 +89,7 @@ namespace Debugger @@ -89,7 +89,7 @@ namespace Debugger
}
}
protected virtual void OnValueChanged()
protected internal virtual void OnValueChanged()
{
cachedValue = null;
if (valueChanged != null) {
@ -120,6 +120,13 @@ namespace Debugger @@ -120,6 +120,13 @@ namespace Debugger
this.valueGetter = valueGetter;
this.subVariables = new VariableCollection(debugger);
this.subVariables.Updating += OnSubVariablesUpdating;
if (name.StartsWith("<") && name.Contains(">") && name != "<Base class>") {
string middle = name.TrimStart('<').Split('>')[0]; // Get text between '<' and '>'
if (middle != "") {
this.name = middle;
}
}
}
void OnSubVariablesUpdating(object sender, VariableCollectionEventArgs e)

11
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/VariableCollection.cs

@ -144,6 +144,17 @@ namespace Debugger @@ -144,6 +144,17 @@ namespace Debugger
foreach(Variable newVariable in newVariables) {
if (this.Contains(newVariable.Name)) {
Variable oldVariable = this[newVariable.Name];
// HACK: Realy bad object-oriented design!!!
// Trasfer the new variable into the old one
if (oldVariable != newVariable) {
oldVariable.valueGetter = newVariable.valueGetter;
oldVariable.cachedValue = null;
if (newVariable is ClassVariable && oldVariable is ClassVariable) {
((ClassVariable)oldVariable).isPublic = ((ClassVariable)oldVariable).isPublic;
((ClassVariable)oldVariable).isStatic = ((ClassVariable)oldVariable).isStatic;
}
}
// Keep the variable in the list
toBeRemoved.Remove(this[newVariable.Name]);
} else {

10
src/AddIns/Misc/Debugger/TreeListView/Project/TreeListView.csproj

@ -9,10 +9,18 @@ @@ -9,10 +9,18 @@
<RootNamespace>TreeListView</RootNamespace>
<AssemblyName>TreeListView</AssemblyName>
<WarningLevel>4</WarningLevel>
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
<NoStdLib>False</NoStdLib>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>112721920</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<FileAlignment>4096</FileAlignment>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DebugType>Full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\..\..\..\AddIns\AddIns\Misc\Debugger\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>

11
src/AddIns/Misc/FiletypeRegisterer/Project/FiletypeRegisterer.csproj

@ -13,12 +13,21 @@ @@ -13,12 +13,21 @@
<RunPostBuildEvent>OnSuccessfulBuild</RunPostBuildEvent>
<OutputType>Library</OutputType>
<RootNamespace>ICSharpCode.FiletypeRegisterer</RootNamespace>
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>117440512</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<FileAlignment>4096</FileAlignment>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>True</DebugSymbols>
<DebugSymbols>true</DebugSymbols>
<Optimize>False</Optimize>
<OutputPath>..\..\..\..\..\AddIns\AddIns\Misc\FiletypeRegisterer\</OutputPath>
<DefineConstants>DEBUG</DefineConstants>
<DebugType>Full</DebugType>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugSymbols>False</DebugSymbols>

10
src/AddIns/Misc/HighlightingEditor/Project/HighlightingEditor.csproj

@ -12,15 +12,21 @@ @@ -12,15 +12,21 @@
<NoConfig>False</NoConfig>
<RunPostBuildEvent>OnSuccessfulBuild</RunPostBuildEvent>
<OutputType>Library</OutputType>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>117964800</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<FileAlignment>4096</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>True</DebugSymbols>
<DebugSymbols>true</DebugSymbols>
<Optimize>False</Optimize>
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
<OutputPath>..\..\..\..\..\AddIns\AddIns\Misc\HighlightingEditor\</OutputPath>
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<DefineConstants>DEBUG</DefineConstants>
<DebugType>Full</DebugType>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugSymbols>False</DebugSymbols>

9
src/AddIns/Misc/HighlightingEditor/Project/Src/EditHighlightingPanel.cs

@ -190,8 +190,13 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels @@ -190,8 +190,13 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
DialogResult res = dlg.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm);
if (res == DialogResult.OK) {
using (StreamWriter sw = new StreamWriter(item.FileName, false)) {
sw.WriteLine(item.Node.ToXml().Replace("\n", "\r\n"));
using (XmlTextWriter writer = new XmlTextWriter(item.FileName, Encoding.UTF8)) {
writer.Formatting = Formatting.Indented;
writer.IndentChar = '\t';
writer.Indentation = 1;
writer.WriteStartDocument();
item.Node.WriteXml(writer);
writer.WriteEndDocument();
}
// refresh item text
userList.Items.RemoveAt(userList.SelectedIndex);

43
src/AddIns/Misc/HighlightingEditor/Project/Src/EditorHighlightColor.cs

@ -22,7 +22,7 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes @@ -22,7 +22,7 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes
{
bool hasForeColor = false;
bool hasBackColor = false;
Color foreColor;
bool sysForeColor = false;
string sysForeColorName = "";
@ -105,7 +105,7 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes @@ -105,7 +105,7 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes
el.Attributes["color"] == null &&
el.Attributes["bgcolor"] == null)
{
noColor = true;
noColor = true;
return;
}
@ -146,6 +146,11 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes @@ -146,6 +146,11 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes
}
}
public static EditorHighlightColor FromTextEditor(ICSharpCode.TextEditor.Document.HighlightColor color)
{
return new EditorHighlightColor(color.HasForgeground, color.Color, color.HasBackground, color.BackgroundColor, color.Bold, color.Italic);
}
public EditorHighlightColor(bool hascolor, Color Color, bool hasbackcolor, Color BackColor, bool bold, bool italic)
{
hasForeColor = hascolor;
@ -209,38 +214,30 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes @@ -209,38 +214,30 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes
return Color.FromArgb(a, r, g, b);
}
public string ToXml()
public void WriteXmlAttributes(XmlWriter writer)
{
string str = "";
str += "bold=\"" + bold.ToString().ToLowerInvariant() + "\" ";
str += "italic=\"" + italic.ToString().ToLowerInvariant() + "\" ";
writer.WriteAttributeString("bold", bold.ToString().ToLowerInvariant());
writer.WriteAttributeString("italic", italic.ToString().ToLowerInvariant());
if (hasForeColor) {
str += "color=\"";
if (sysForeColor) {
str += "SystemColors." + sysForeColorName;
writer.WriteAttributeString("color", "SystemColors." + sysForeColorName);
} else {
str += ReplaceColorName("#" + (foreColor.A != 255 ? foreColor.A.ToString("X2") : "") +
foreColor.R.ToString("X2") +
foreColor.G.ToString("X2") +
foreColor.B.ToString("X2"));
writer.WriteAttributeString("color", ReplaceColorName("#" + (foreColor.A != 255 ? foreColor.A.ToString("X2") : "") +
foreColor.R.ToString("X2") +
foreColor.G.ToString("X2") +
foreColor.B.ToString("X2")));
}
str += "\" ";
}
if (hasBackColor) {
str += "bgcolor=\"";
if (sysBackColor) {
str += "SystemColors." + sysBackColorName;
writer.WriteAttributeString("bgcolor", "SystemColors." + sysBackColorName);
} else {
str += ReplaceColorName("#" + (backColor.A != 255 ? backColor.A.ToString("X2") : "") +
backColor.R.ToString("X2") +
backColor.G.ToString("X2") +
backColor.B.ToString("X2"));
writer.WriteAttributeString("bgcolor", ReplaceColorName("#" + (backColor.A != 255 ? backColor.A.ToString("X2") : "") +
backColor.R.ToString("X2") +
backColor.G.ToString("X2") +
backColor.B.ToString("X2")));
}
str += "\" ";
}
return str;
}
Color ParseSysColor(string colorName)

7
src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/AbstractNode.cs

@ -36,11 +36,6 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes @@ -36,11 +36,6 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes
public abstract void UpdateNodeText();
// should be made abstract when implementing ToXml()
public virtual string ToXml() { return ""; }
public static string ReplaceXmlChars(string str)
{
return str.Replace("&", "&amp;").Replace("<", "&lt;").Replace(">", "&gt;");
}
public abstract void WriteXml(XmlWriter writer);
}
}

7
src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/DigitsNode.cs

@ -45,9 +45,12 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes @@ -45,9 +45,12 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes
{
}
public override string ToXml()
public override void WriteXml(XmlWriter writer)
{
return "\t<Digits name=\"Digits\" " + color.ToXml() + "/>\n\n";
writer.WriteStartElement("Digits");
writer.WriteAttributeString("name", "Digits");
color.WriteXmlAttributes(writer);
writer.WriteEndElement();
}
}

27
src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/EnvironmentNode.cs

@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Drawing;
using System.Xml;
@ -26,8 +27,6 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes @@ -26,8 +27,6 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes
public EnvironmentNode(XmlElement el)
{
ArrayList envColors = new ArrayList();
ArrayList envColorNames = new ArrayList();
ArrayList envColorDescriptions = new ArrayList();
@ -40,13 +39,22 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes @@ -40,13 +39,22 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes
}
}
}
foreach (KeyValuePair<string, HighlightColor> pair in new DefaultHighlightingStrategy().EnvironmentColors) {
if (!envColorNames.Contains(pair.Key)) {
envColorNames.Add(pair.Key);
envColorDescriptions.Add("${res:Dialog.HighlightingEditor.EnvColors." + pair.Key + "}");
envColors.Add(EditorHighlightColor.FromTextEditor(pair.Value));
}
}
EnvironmentNode.ColorNames = (string[])envColorNames.ToArray(typeof(string));
this.ColorDescs = (string[])envColorDescriptions.ToArray(typeof(string));
this.Colors = (EditorHighlightColor[])envColors.ToArray(typeof(EditorHighlightColor));
StringParser.Parse(ColorDescs);
Text = ResNodeName("EnvironmentColors");
panel = new EnvironmentOptionPanel(this);
}
@ -54,14 +62,15 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes @@ -54,14 +62,15 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes
{
}
public override string ToXml()
public override void WriteXml(XmlWriter writer)
{
string str = "\t<Environment>\n";
for (int i = 0; i <= ColorNames.GetUpperBound(0); ++i) {
str += "\t\t<" + ColorNames[i] + " " + Colors[i].ToXml() + "/>\n";
writer.WriteStartElement("Environment");
for (int i = 0; i < ColorNames.Length; i++) {
writer.WriteStartElement(ColorNames[i]);
Colors[i].WriteXmlAttributes(writer);
writer.WriteEndElement();
}
str += "\t</Environment>\n\n";
return str;
writer.WriteEndElement();
}
}

24
src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/KeywordListNode.cs

@ -57,7 +57,7 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes @@ -57,7 +57,7 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes
{
Text = ResNodeName("KeywordList");
panel = new KeywordListOptionPanel(this);
if (el == null) return;
color = new EditorHighlightColor(el);
@ -88,23 +88,17 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes @@ -88,23 +88,17 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes
if (name != "") Text = name;
}
public override string ToXml()
public override void WriteXml(XmlWriter writer)
{
StringBuilder ret = new StringBuilder("\t\t\t<KeyWords name=\"");
ret.Append(ReplaceXmlChars(name));
ret.Append("\" ");
////ret += color.ToXml() + ">\n";
ret.Append(color.ToXml());
ret.Append(">\n");
writer.WriteStartElement("KeyWords");
writer.WriteAttributeString("name", name);
color.WriteXmlAttributes(writer);
foreach(string str in words) {
////ret += "\t\t\t\t<Key word=\"" + ReplaceXmlChars(str) + "\"/>\n";
ret.Append("\t\t\t\t<Key word=\"");
ret.Append(ReplaceXmlChars(str));
ret.Append("\"/>\n");
writer.WriteStartElement("Key");
writer.WriteAttributeString("word", str);
writer.WriteEndElement();
}
////ret += "\t\t\t</KeyWords>\n\n";
ret.Append("\t\t\t</KeyWords>\n\n");
return ret.ToString();
writer.WriteEndElement();
}
}

6
src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/KeywordListsNode.cs

@ -37,13 +37,11 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes @@ -37,13 +37,11 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes
{
}
public override string ToXml()
public override void WriteXml(XmlWriter writer)
{
string ret = "";
foreach (KeywordListNode node in Nodes) {
ret += node.ToXml();
node.WriteXml(writer);
}
return ret;
}
}

12
src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/MarkerNode.cs

@ -54,13 +54,13 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes @@ -54,13 +54,13 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes
Text = what;
}
public override string ToXml()
public override void WriteXml(XmlWriter writer)
{
string ret = "\t\t\t<Mark" + (previous ? "Previous" : "Following") + " ";
ret += color.ToXml();
if (markMarker) ret += " markmarker=\"true\"";
ret += ">" + ReplaceXmlChars(what) + "</Mark" + (previous ? "Previous" : "Following") + ">\n\n";
return ret;
writer.WriteStartElement("Mark" + (previous ? "Previous" : "Following"));
color.WriteXmlAttributes(writer);
if (markMarker) writer.WriteAttributeString("markmarker", "true");
writer.WriteString(what);
writer.WriteEndElement();
}
public string What {

6
src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/MarkersNode.cs

@ -36,13 +36,11 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes @@ -36,13 +36,11 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes
{
}
public override string ToXml()
public override void WriteXml(XmlWriter writer)
{
string ret = "";
foreach (MarkerNode node in Nodes) {
ret += node.ToXml();
node.WriteXml(writer);
}
return ret;
}
}

19
src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/PropertiesNode.cs

@ -33,20 +33,21 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes @@ -33,20 +33,21 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes
}
}
public override void UpdateNodeText()
{
}
public override string ToXml()
public override void WriteXml(XmlWriter writer)
{
string ret = "\t<Properties>\n";
writer.WriteStartElement("Properties");
foreach (DictionaryEntry de in Properties) {
ret += "\t\t<Property name=\"" + ReplaceXmlChars((string)de.Key)
+ "\" value=\"" + ReplaceXmlChars((string)de.Value) + "\"/>\n";
writer.WriteStartElement("Property");
writer.WriteAttributeString("name", (string)de.Key);
writer.WriteAttributeString("value", (string)de.Value);
writer.WriteEndElement();
}
ret += "\t</Properties>\n\n";
return ret;
writer.WriteEndElement();
}
}
@ -55,7 +56,7 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes @@ -55,7 +56,7 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes
private System.Windows.Forms.Button addBtn;
private System.Windows.Forms.Button editBtn;
private System.Windows.Forms.Button removeBtn;
private System.Windows.Forms.ListView listView;
private System.Windows.Forms.ListView listView;
public PropertiesOptionPanel(PropertiesNode parent) : base(parent)
{
@ -70,7 +71,7 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes @@ -70,7 +71,7 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes
listView = (ListView)ControlDictionary["listView"];
}
public override void StoreSettings()
{
PropertiesNode node = (PropertiesNode)parent;

42
src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/RuleSetNode.cs

@ -69,8 +69,8 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes @@ -69,8 +69,8 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes
Nodes.Add(keywordNode);
Nodes.Add(spansNode);
Nodes.Add(prevMarkerNode);
Nodes.Add(nextMarkerNode);
Nodes.Add(nextMarkerNode);
}
public RuleSetNode(string Name, string Delim, string Ref, bool noEsc, bool noCase)
@ -89,7 +89,7 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes @@ -89,7 +89,7 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes
Nodes.Add(keywordNode);
Nodes.Add(spansNode);
Nodes.Add(prevMarkerNode);
Nodes.Add(nextMarkerNode);
Nodes.Add(nextMarkerNode);
panel = new RuleSetOptionPanel(this);
}
@ -101,25 +101,25 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes @@ -101,25 +101,25 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes
}
}
public override string ToXml()
public override void WriteXml(XmlWriter writer)
{
if (reference != "") return "\t\t<RuleSet name=\"" + ReplaceXmlChars(name) + "\" reference=\"" + ReplaceXmlChars(reference) + "\"></RuleSet>\n\n";
string ret = "\t\t<RuleSet ignorecase=\"" + ignoreCase.ToString().ToLowerInvariant() + "\" ";
if (noEscapeSequences) ret += "noescapesequences=\"true\" ";
if (!isRoot) ret += "name=\"" + ReplaceXmlChars(name) + "\" ";
ret += ">\n";
ret += "\t\t\t<Delimiters>" + ReplaceXmlChars(delimiters) + "</Delimiters>\n\n";
ret += spansNode.ToXml();
ret += prevMarkerNode.ToXml();
ret += nextMarkerNode.ToXml();
ret += keywordNode.ToXml();
ret += "\t\t</RuleSet>\n\n";
return ret;
writer.WriteStartElement("RuleSet");
if (!isRoot)
writer.WriteAttributeString("name", name);
if (reference != "") {
writer.WriteAttributeString("reference", reference);
} else {
writer.WriteAttributeString("ignorecase", ignoreCase.ToString().ToLowerInvariant());
if (noEscapeSequences)
writer.WriteAttributeString("noescapesequences", "true");
if (delimiters != "")
writer.WriteElementString("Delimiters", delimiters);
spansNode.WriteXml(writer);
prevMarkerNode.WriteXml(writer);
nextMarkerNode.WriteXml(writer);
keywordNode.WriteXml(writer);
}
writer.WriteEndElement();
}
public string Delimiters {

9
src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/RuleSetsNode.cs

@ -35,14 +35,13 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes @@ -35,14 +35,13 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes
{
}
public override string ToXml()
public override void WriteXml(XmlWriter writer)
{
string ret = "\t<RuleSets>\n";
writer.WriteStartElement("RuleSets");
foreach (RuleSetNode node in Nodes) {
ret += node.ToXml();
node.WriteXml(writer);
}
ret += "\t</RuleSets>\n\n";
return ret;
writer.WriteEndElement();
}
}

42
src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/SchemeNode.cs

@ -18,11 +18,21 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes @@ -18,11 +18,21 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes
{
string name;
string[] extensions;
string extends;
public string Extends {
get {
return extends;
}
set {
extends = value;
}
}
public string[] Extensions {
get {
return extensions;
}
}
set {
extensions = value;
}
@ -60,6 +70,8 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes @@ -60,6 +70,8 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes
extensions = el.Attributes["extensions"].InnerText.Split('|');
}
extends = el.GetAttribute("extends");
UpdateNodeText();
panel = new SchemeOptionPanel(this);
@ -82,23 +94,23 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes @@ -82,23 +94,23 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes
Text = name;
}
public override string ToXml()
public override void WriteXml(XmlWriter writer)
{
string str =
"<?xml version=\"1.0\"?>\n" +
"<!-- This file was autogenerated by the #Develop highlighting editor. -->\n\n" +
"<SyntaxDefinition name=\"" + ReplaceXmlChars(name) + "\" extensions=\"" + String.Join("|", extensions) + "\">\n\n";
writer.WriteComment("This file was autogenerated by the #Develop highlighting editor.");
writer.WriteStartElement("SyntaxDefinition");
str += envNode.ToXml();
str += propNode.ToXml();
str += digitsNode.ToXml();
str += rulesetsNode.ToXml();
str +=
"</SyntaxDefinition>\n";
writer.WriteAttributeString("name", name);
writer.WriteAttributeString("extensions", String.Join(";", extensions));
if (extends != "") {
writer.WriteAttributeString("extends", extends);
}
return str;
envNode.WriteXml(writer);
propNode.WriteXml(writer);
digitsNode.WriteXml(writer);
rulesetsNode.WriteXml(writer);
writer.WriteEndElement();
}
}

40
src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/SpanNode.cs

@ -59,27 +59,32 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes @@ -59,27 +59,32 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes
}
public override string ToXml()
public override void WriteXml(XmlWriter writer)
{
string ret = "";
ret = "\t\t\t<Span name=\"" + ReplaceXmlChars(name) + "\" ";
if (noEscapeSequences) ret += "noescapesequences=\"true\" ";
if (rule != "") ret += "rule=\"" + ReplaceXmlChars(rule) + "\" ";
ret += "stopateol=\"" + stopEOL.ToString().ToLowerInvariant() + "\" ";
ret += color.ToXml();
ret += ">\n";
writer.WriteStartElement("Span");
writer.WriteAttributeString("name", name);
if (noEscapeSequences)
writer.WriteAttributeString("noescapesequences", "true");
if (rule != "")
writer.WriteAttributeString("rule", rule);
writer.WriteAttributeString("stopateol", stopEOL.ToString().ToLowerInvariant());
color.WriteXmlAttributes(writer);
ret += "\t\t\t\t<Begin ";
if (beginColor != null && !beginColor.NoColor) ret += beginColor.ToXml();
ret += ">" + ReplaceXmlChars(begin) + "</Begin>\n";
writer.WriteStartElement("Begin");
if (beginColor != null && !beginColor.NoColor)
beginColor.WriteXmlAttributes(writer);
writer.WriteString(begin);
writer.WriteEndElement();
if (end != "") {
ret += "\t\t\t\t<End ";
if (endColor != null && !endColor.NoColor) ret += endColor.ToXml();
ret += ">" + ReplaceXmlChars(end) + "</End>\n";
writer.WriteStartElement("End");
if (endColor != null && !endColor.NoColor)
endColor.WriteXmlAttributes(writer);
writer.WriteString(end);
writer.WriteEndElement();
}
ret += "\t\t\t</Span>\n\n";
return ret;
writer.WriteEndElement();
}
public SpanNode(string Name)
@ -91,6 +96,7 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes @@ -91,6 +96,7 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes
panel = new SpanOptionPanel(this);
}
public override void UpdateNodeText()
{
if (name != "") { Text = name; return; }
@ -121,7 +127,7 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes @@ -121,7 +127,7 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes
}
public EditorHighlightColor BeginColor {
get {
get {
return beginColor;
}
set {

6
src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/SpansNode.cs

@ -35,13 +35,11 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes @@ -35,13 +35,11 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes
{
}
public override string ToXml()
public override void WriteXml(XmlWriter writer)
{
string ret = "";
foreach (SpanNode node in Nodes) {
ret += node.ToXml();
node.WriteXml(writer);
}
return ret;
}
}

12
src/AddIns/Misc/HtmlHelp2/JScriptGlobals/HtmlHelp2JScriptGlobals.vbproj

@ -7,12 +7,22 @@ @@ -7,12 +7,22 @@
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<MyType>Windows</MyType>
<ProjectGuid>{E54A5AD2-418D-4A85-BA5E-CD803DE38715}</ProjectGuid>
<RemoveIntegerChecks>False</RemoveIntegerChecks>
<OptionExplicit>On</OptionExplicit>
<OptionStrict>Off</OptionStrict>
<OptionCompare>Binary</OptionCompare>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>120586240</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<WarningLevel>4</WarningLevel>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<OutputPath>bin\Debug\</OutputPath>
<Optimize>False</Optimize>
<DefineConstants>DEBUG,TRACE</DefineConstants>
<DebugSymbols>True</DebugSymbols>
<DebugSymbols>true</DebugSymbols>
<DebugType>Full</DebugType>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">

23
src/AddIns/Misc/HtmlHelp2/Project/HtmlHelp2.csproj

@ -9,10 +9,23 @@ @@ -9,10 +9,23 @@
<ProductVersion>8.0.50215</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<Win32Resource>Resources\dynamichelp.res</Win32Resource>
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
<NoStdLib>False</NoStdLib>
<DebugType>None</DebugType>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>119537664</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<FileAlignment>4096</FileAlignment>
<WarningLevel>4</WarningLevel>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<DebugSymbols>false</DebugSymbols>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>..\..\..\..\..\AddIns\AddIns\Misc\HtmlHelp2\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<Optimize>False</Optimize>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>..\..\..\..\..\AddIns\AddIns\Misc\HtmlHelp2\</OutputPath>
@ -36,11 +49,6 @@ @@ -36,11 +49,6 @@
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<Reference Include="ICSharpCode.TextEditor">
<HintPath>..\..\..\..\..\bin\ICSharpCode.TextEditor.dll</HintPath>
<SpecificVersion>False</SpecificVersion>
<Private>False</Private>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="src\BaseControls\TocPad.cs">
@ -111,6 +119,11 @@ @@ -111,6 +119,11 @@
<Project>{E54A5AD2-418D-4A85-BA5E-CD803DE38715}</Project>
<Name>HtmlHelp2JScriptGlobals</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj">
<Project>{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}</Project>
<Name>ICSharpCode.TextEditor</Name>
<Private>False</Private>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
</Project>

4
src/AddIns/Misc/HtmlHelp2/Project/src/Service/Help2RegistryWalker.cs

@ -55,9 +55,9 @@ namespace HtmlHelp2.RegistryWalker @@ -55,9 +55,9 @@ namespace HtmlHelp2.RegistryWalker
else
help2Collections.SelectedIndex = 0;
}
catch
catch(Exception ex)
{
LoggingService.Error("Help 2.0: cannot build namespaces list for Options dialog");
LoggingService.Error("Help 2.0: cannot build namespaces list for Options dialog", ex);
}
help2Collections.EndUpdate();

2
src/AddIns/Misc/MonoAddIn/Project/MonoAddIn.csproj

@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
<NoStdLib>False</NoStdLib>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>4194304</BaseAddress>
<BaseAddress>121110528</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<FileAlignment>4096</FileAlignment>
<WarningLevel>4</WarningLevel>

2
src/AddIns/Misc/MonoReflectionLoader/Project/MonoReflectionLoader.csproj

@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
<NoStdLib>False</NoStdLib>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>92274688</BaseAddress>
<BaseAddress>100663296</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<FileAlignment>4096</FileAlignment>
<WarningLevel>4</WarningLevel>

5
src/AddIns/Misc/NAntAddIn/Project/NAntAddIn.csproj

@ -13,12 +13,12 @@ @@ -13,12 +13,12 @@
<DebugType>Full</DebugType>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>4194304</BaseAddress>
<BaseAddress>121634816</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<FileAlignment>4096</FileAlignment>
<DebugSymbols>true</DebugSymbols>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<Optimize>False</Optimize>
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
@ -26,7 +26,6 @@ @@ -26,7 +26,6 @@
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugSymbols>False</DebugSymbols>
<Optimize>True</Optimize>
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>

10
src/AddIns/Misc/PInvokeAddIn/Project/PInvokeAddIn.csproj

@ -10,14 +10,20 @@ @@ -10,14 +10,20 @@
<WarningLevel>4</WarningLevel>
<NoStdLib>False</NoStdLib>
<NoConfig>False</NoConfig>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>122159104</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<FileAlignment>4096</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>True</DebugSymbols>
<DebugSymbols>true</DebugSymbols>
<Optimize>False</Optimize>
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
<OutputPath>..\..\..\..\..\AddIns\AddIns\Misc\PInvokeAddIn\</OutputPath>
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<DebugType>Full</DebugType>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugSymbols>False</DebugSymbols>

10
src/AddIns/Misc/RegExpTk/Project/RegExpTk.csproj

@ -12,15 +12,21 @@ @@ -12,15 +12,21 @@
<NoConfig>False</NoConfig>
<RunPostBuildEvent>OnSuccessfulBuild</RunPostBuildEvent>
<OutputType>Library</OutputType>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>122683392</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<FileAlignment>4096</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>True</DebugSymbols>
<DebugSymbols>true</DebugSymbols>
<Optimize>False</Optimize>
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
<OutputPath>..\..\..\..\..\AddIns\AddIns\Misc\RegExpTk\</OutputPath>
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<DefineConstants>DEBUG</DefineConstants>
<DebugType>Full</DebugType>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugSymbols>False</DebugSymbols>

18
src/AddIns/Misc/SharpQuery/SharpQuery.csproj

@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@
<RunPostBuildEvent>OnSuccessfulBuild</RunPostBuildEvent>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>4194304</BaseAddress>
<BaseAddress>123207680</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<FileAlignment>4096</FileAlignment>
<StartAction>Program</StartAction>
@ -80,14 +80,6 @@ @@ -80,14 +80,6 @@
</Compile>
</ItemGroup>
<ItemGroup>
<COMReference Include="Microsoft OLE DB Service Component 1.0 Type Library">
<Guid>{2206CEB0-19C1-11D1-89E0-00C04FD7A829}</Guid>
<VersionMajor>1</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>tlbimp</WrapperTool>
<Isolated>False</Isolated>
</COMReference>
<ProjectReference Include="..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj">
<Project>{2748AD25-9C63-4E12-877B-4DCE96FBED54}</Project>
<Name>ICSharpCode.SharpDevelop</Name>
@ -99,6 +91,14 @@ @@ -99,6 +91,14 @@
<Private>False</Private>
</ProjectReference>
<Content Include="PostBuildEvent.proj" />
<COMReference Include="MSDASC">
<Guid>{2206CEB0-19C1-11D1-89E0-00C04FD7A829}</Guid>
<VersionMajor>1</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>tlbimp</WrapperTool>
<Isolated>False</Isolated>
</COMReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
<Import Project="PostBuildEvent.proj" />

4
src/AddIns/Misc/SharpReport/SharpReport/Designer/SectionControls/ReportSection.cs

@ -248,7 +248,7 @@ namespace SharpReport{ @@ -248,7 +248,7 @@ namespace SharpReport{
}
private void OnItemAddeded(object sender, CollectionItemEventArgs<IItemRenderer> e){
SharpReport.Designer.IDesignable iDesignable = e.Item as SharpReport.Designer.IDesignable;
if (iDesignable != null) {
@ -259,7 +259,7 @@ namespace SharpReport{ @@ -259,7 +259,7 @@ namespace SharpReport{
iDesignable.VisualControl.Focus();
iDesignable.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler (OnPropertyChanged);
}
}
}
}
private void OnRemoveTopLevelItem(object sender, CollectionItemEventArgs<IItemRenderer> e){

2
src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ControlHelper.cs

@ -15,7 +15,7 @@ namespace SharpReport.Designer @@ -15,7 +15,7 @@ namespace SharpReport.Designer
/// <summary>
/// Description of ControlHelper.
/// </summary>
internal class ControlHelper{
public class ControlHelper{
Control control;
public ControlHelper(Control control){

4
src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportControlBase.cs

@ -129,6 +129,10 @@ namespace SharpReport.Designer{ @@ -129,6 +129,10 @@ namespace SharpReport.Designer{
this.Invalidate();
}
protected Rectangle FocusRectangle {
get {return this.controlHelper.BuildFocusRectangle;}
}
#region Windows Forms Designer generated code
/// <summary>
/// This method is required for Windows Forms designer support.

2
src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportLineControl.cs

@ -39,7 +39,7 @@ namespace SharpReport.Designer{ @@ -39,7 +39,7 @@ namespace SharpReport.Designer{
protected override void OnPaint(System.Windows.Forms.PaintEventArgs pea) {
base.OnPaint(pea);
base.DrawEdges (pea);
base.DrawDecorations(pea);
// base.DrawDecorations(pea);
shape.DrawShape(pea.Graphics,
new BaseLine (this.ForeColor,base.DashStyle,base.Thickness),

6
src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportRectangleControl.cs

@ -41,15 +41,15 @@ namespace SharpReport.Designer { @@ -41,15 +41,15 @@ namespace SharpReport.Designer {
protected override void OnPaint(System.Windows.Forms.PaintEventArgs pea) {
base.OnPaint(pea);
base.DrawEdges (pea);
base.DrawDecorations(pea);
shape.FillShape(pea.Graphics,
new SolidFillPattern(this.BackColor),
(RectangleF)this.ClientRectangle);
(RectangleF)base.FocusRectangle);
shape.DrawShape (pea.Graphics,
new BaseLine (this.ForeColor,base.DashStyle,base.Thickness),
(RectangleF)this.ClientRectangle);
(RectangleF)base.FocusRectangle);
}

23
src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportRowControl.cs

@ -21,7 +21,8 @@ namespace SharpReport.Designer{ @@ -21,7 +21,8 @@ namespace SharpReport.Designer{
/// </summary>
internal class ReportRowControl:ReportControlBase{
private RectangleShape shape = new RectangleShape();
private bool drawBorder;
public ReportRowControl():base(){
InitializeComponent();
this.SetStyle(ControlStyles.DoubleBuffer |
@ -39,10 +40,15 @@ namespace SharpReport.Designer{ @@ -39,10 +40,15 @@ namespace SharpReport.Designer{
#region overrides
protected override void OnPaint(System.Windows.Forms.PaintEventArgs pea){
base.OnPaint(pea);
Rectangle r = new Rectangle(0,5,this.ClientSize.Width - 1,this.ClientSize.Height - 6);
base.DrawEdges (pea,r);
base.DrawEdges (pea,
new Rectangle(0,5,this.ClientSize.Width - 1,this.ClientSize.Height - 6) );
base.DrawDecorations(pea);
if (this.drawBorder) {
shape.DrawShape (pea.Graphics,
new BaseLine (this.ForeColor,System.Drawing.Drawing2D.DashStyle.Solid,1),
base.FocusRectangle);
}
StringFormat fmt = GlobalValues.StandartStringFormat();
fmt.LineAlignment = StringAlignment.Near;
@ -54,11 +60,18 @@ namespace SharpReport.Designer{ @@ -54,11 +60,18 @@ namespace SharpReport.Designer{
}
public override string ToString() {
return this.Name;
return this.GetType().Name;
}
#endregion
public bool DrawBorder {
set {
drawBorder = value;
this.Invalidate();
}
}
#region Windows Forms Designer generated code
/// <summary>
/// This method is required for Windows Forms designer support.

58
src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportTextControl.cs

@ -18,7 +18,13 @@ namespace SharpReport.Designer{ @@ -18,7 +18,13 @@ namespace SharpReport.Designer{
/// Description of ReportTextItem.
/// </summary>
internal class ReportTextControl : ReportControlBase{
StringFormat stringFormat;
private StringTrimming stringTrimming;
private ContentAlignment contentAlignment;
private bool drawBorder;
private TextDrawer textDrawer = new TextDrawer();
private RectangleShape shape = new RectangleShape();
public ReportTextControl():base(){
InitializeComponent();
@ -32,36 +38,42 @@ namespace SharpReport.Designer{ @@ -32,36 +38,42 @@ namespace SharpReport.Designer{
this.Size = GlobalValues.PreferedSize;
}
public bool DrawBorder {
set {
drawBorder = value;
this.Invalidate();
}
}
public override string Text{
get { return base.Text; }
set {
base.Text = value;
}
set { base.Text = value;}
}
public StringFormat StringFormat{
public StringTrimming StringTrimming {
set {
if (this.stringFormat != value) {
this.stringFormat = value;
this.Invalidate();
}
stringTrimming = value;
this.Invalidate();
}
}
public System.Drawing.ContentAlignment ContentAlignment {
set {
this.contentAlignment = value;
this.Invalidate();
}
}
protected override void OnPaint(System.Windows.Forms.PaintEventArgs pea){
base.OnPaint(pea);
base.DrawEdges (pea);
base.DrawDecorations(pea);
if (this.stringFormat == null) {
this.stringFormat = GlobalValues.StandartStringFormat();
this.stringFormat.LineAlignment = StringAlignment.Center;
}
string str;
if (String.IsNullOrEmpty(this.Text)) {
@ -70,10 +82,16 @@ namespace SharpReport.Designer{ @@ -70,10 +82,16 @@ namespace SharpReport.Designer{
str = this.Text;
}
pea.Graphics.DrawString(str,this.Font,
new SolidBrush(this.ForeColor),
(RectangleF)this.ClientRectangle,
this.stringFormat);
if (this.drawBorder) {
shape.DrawShape (pea.Graphics,
new BaseLine (this.ForeColor,System.Drawing.Drawing2D.DashStyle.Solid,1),
base.FocusRectangle);
}
this.textDrawer.DrawString (pea.Graphics,this.Text,this.Font,
new SolidBrush(this.ForeColor),(RectangleF)this.ClientRectangle,
this.stringTrimming,this.contentAlignment);
}

15
src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ItemsHelper.cs

@ -20,10 +20,10 @@ namespace SharpReport { @@ -20,10 +20,10 @@ namespace SharpReport {
/// created by - Forstmeier Peter
/// created on - 31.08.2005 13:49:47
/// </remarks>
public class ItemsHelper : object {
internal class ItemsHelper : object {
public static void UpdateBaseFromTextControl (ReportObjectControlBase control,
internal static void UpdateBaseFromTextControl (ReportObjectControlBase control,
BaseReportItem item) {
item.Size = control.Size;
@ -32,9 +32,10 @@ namespace SharpReport { @@ -32,9 +32,10 @@ namespace SharpReport {
item.BackColor = control.BackColor;
item.ForeColor = control.ForeColor;
item.Font = control.Font;
}
public static void UpdateBaseFromGraphicControl (AbstractGraphicControl control,
internal static void UpdateBaseFromGraphicControl (AbstractGraphicControl control,
BaseGraphicItem item) {
ItemsHelper.UpdateBaseFromTextControl (control,item);
@ -43,7 +44,7 @@ namespace SharpReport { @@ -43,7 +44,7 @@ namespace SharpReport {
}
public static void UpdateControlFromTextBase (ReportObjectControlBase control,
internal static void UpdateControlFromTextBase (ReportObjectControlBase control,
BaseReportItem item) {
control.BackColor = item.BackColor;
@ -52,14 +53,10 @@ namespace SharpReport { @@ -52,14 +53,10 @@ namespace SharpReport {
control.Size = item.Size;
control.Font = item.Font;
control.Name = item.Name;
BaseTextItem b = item as BaseTextItem;
// if (b != null) {
// control. = b.StringAlignment;
// }
}
public static void UpdateControlFromGraphicBase (AbstractGraphicControl control,
internal static void UpdateControlFromGraphicBase (AbstractGraphicControl control,
BaseGraphicItem item) {
ItemsHelper.UpdateControlFromTextBase(control,item);
control.Location = item.Location;

10
src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ReportDataItem.cs

@ -38,9 +38,12 @@ namespace SharpReport.ReportItems{ @@ -38,9 +38,12 @@ namespace SharpReport.ReportItems{
visualControl = new ReportDbTextControl();
this.visualControl.Text = base.ColumnName;
visualControl.StringFormat = base.StringFormat;
this.Text = base.ColumnName;
visualControl.ContentAlignment = base.ContentAlignment;
visualControl.StringTrimming = base.StringTrimming;
ItemsHelper.UpdateBaseFromTextControl (this.visualControl,this);
this.visualControl.Click += new EventHandler(OnControlSelect);
@ -65,7 +68,10 @@ namespace SharpReport.ReportItems{ @@ -65,7 +68,10 @@ namespace SharpReport.ReportItems{
private void BasePropertyChange (object sender, PropertyChangedEventArgs e){
ItemsHelper.UpdateControlFromTextBase(this.visualControl,this);
this.visualControl.StringFormat = base.StringFormat;
this.visualControl.ContentAlignment = base.ContentAlignment;
this.visualControl.StringTrimming = base.StringTrimming;
this.HandlePropertyChanged(e.PropertyName);
}

4
src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ReportRowItem.cs

@ -108,6 +108,7 @@ namespace SharpReport.ReportItems @@ -108,6 +108,7 @@ namespace SharpReport.ReportItems
private void BasePropertyChange (object sender, PropertyChangedEventArgs e){
ItemsHelper.UpdateControlFromTextBase (this.visualControl,this);
this.visualControl.DrawBorder = base.DrawBorder;
this.HandlePropertyChanged(e.PropertyName);
}
@ -115,6 +116,7 @@ namespace SharpReport.ReportItems @@ -115,6 +116,7 @@ namespace SharpReport.ReportItems
private void OnControlChanged (object sender, EventArgs e) {
this.SuspendLayout();
ItemsHelper.UpdateBaseFromTextControl (this.visualControl,this);
this.ResumeLayout();
this.HandlePropertyChanged("OnControlChanged");
@ -206,7 +208,7 @@ namespace SharpReport.ReportItems @@ -206,7 +208,7 @@ namespace SharpReport.ReportItems
}
public override string ToString(){
return this.Name;
return this.GetType().Name;
}
#endregion

32
src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ReportTextItem.cs

@ -32,16 +32,17 @@ namespace SharpReport.ReportItems { @@ -32,16 +32,17 @@ namespace SharpReport.ReportItems {
visualControl = new ReportTextControl();
this.Text = visualControl.Name;
visualControl.StringFormat = base.StringFormat;
ItemsHelper.UpdateBaseFromTextControl (this.visualControl,this);
visualControl.ContentAlignment = base.ContentAlignment;
visualControl.StringTrimming = base.StringTrimming;
ItemsHelper.UpdateBaseFromTextControl (this.visualControl,this);
this.visualControl.Click += new EventHandler(OnControlSelect);
this.visualControl.VisualControlChanged += new EventHandler (OnControlChanged);
this.visualControl.BackColorChanged += new EventHandler (OnControlChanged);
this.visualControl.FontChanged += new EventHandler (OnControlChanged);
this.visualControl.ForeColorChanged += new EventHandler (OnControlChanged);
base.PropertyChanged += new PropertyChangedEventHandler (BasePropertyChange);
}
@ -49,11 +50,15 @@ namespace SharpReport.ReportItems { @@ -49,11 +50,15 @@ namespace SharpReport.ReportItems {
#endregion
#region events
private void BasePropertyChange (object sender, PropertyChangedEventArgs e){
ItemsHelper.UpdateControlFromTextBase(this.visualControl,this);
this.visualControl.StringFormat = base.StringFormat;
this.visualControl.ContentAlignment = base.ContentAlignment;
this.visualControl.StringTrimming = base.StringTrimming;
this.visualControl.DrawBorder = base.DrawBorder;
this.HandlePropertyChanged(e.PropertyName);
}
@ -86,20 +91,7 @@ namespace SharpReport.ReportItems { @@ -86,20 +91,7 @@ namespace SharpReport.ReportItems {
}
#endregion
public override Size Size {
get {
return base.Size;
}
set {
base.Size = value;
if (this.visualControl != null) {
this.visualControl.Size = value;
}
this.HandlePropertyChanged("Size");
}
}
public override Point Location {
get {
return base.Location;
@ -142,7 +134,7 @@ namespace SharpReport.ReportItems { @@ -142,7 +134,7 @@ namespace SharpReport.ReportItems {
this.HandlePropertyChanged("Text");
}
}
#region IDesignable
[System.Xml.Serialization.XmlIgnoreAttribute]

2
src/AddIns/Misc/SharpReport/SharpReport/SharpReport.csproj

@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
<NoStdLib>False</NoStdLib>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>4194304</BaseAddress>
<BaseAddress>124780544</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<FileAlignment>4096</FileAlignment>
<WarningLevel>4</WarningLevel>

9
src/AddIns/Misc/SharpReport/SharpReport/Visitors/LoadReportVisitor.cs

@ -115,7 +115,10 @@ namespace SharpReport.Visitors { @@ -115,7 +115,10 @@ namespace SharpReport.Visitors {
itemRenderer = designableFactory.Create(ctrlElem.GetAttribute("type"));
baseReportItem = (BaseReportItem)itemRenderer;
baseReportItem.SuspendLayout();
XmlHelper.SetReportItemValues (base.XmlFormReader,ctrlElem,baseReportItem);
if (parentContainer == null) {
baseReportItem.Parent = baseSection;
baseSection.Items.Add (baseReportItem);
@ -124,9 +127,7 @@ namespace SharpReport.Visitors { @@ -124,9 +127,7 @@ namespace SharpReport.Visitors {
parentContainer.Items.Add(baseReportItem);
}
XmlHelper.SetReportItemValues (base.XmlFormReader,ctrlElem,baseReportItem);
baseReportItem.ResumeLayout();
IContainerItem iContainer = baseReportItem as IContainerItem;
if (iContainer != null) {

2
src/AddIns/Misc/SharpReport/SharpReportAddin/SharpReportAddin.csproj

@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
<NoStdLib>False</NoStdLib>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>4194304</BaseAddress>
<BaseAddress>125829120</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<FileAlignment>4096</FileAlignment>
<WarningLevel>4</WarningLevel>

9
src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseDataItem.cs

@ -66,11 +66,10 @@ namespace SharpReportCore { @@ -66,11 +66,10 @@ namespace SharpReportCore {
// this.DbValue is formatted in the BeforePrintEvent catched in AbstractRenderer
string toPrint = CheckForNullValue();
string formattedString = base.FireFormatOutput(toPrint,this.FormatString,"");
RectangleF rect = base.PrepareRectangle (rpea,formattedString);
base.PrintTheStuff (rpea,formattedString,rect);
base.NotiyfyAfterPrint (rpea.LocationAfterDraw);
base.Text = base.FireFormatOutput(toPrint,this.FormatString,"");
base.Render (rpea);
}
public override string ToString() {

16
src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseReportItem.cs

@ -60,14 +60,17 @@ namespace SharpReportCore { @@ -60,14 +60,17 @@ namespace SharpReportCore {
#endregion
#region EventHandling
protected void NotiyfyAfterPrint (PointF afterPrintLocation) {
// System.Console.WriteLine("\tNotiyfyAfterPrint");
if (this.ItemPrinted != null) {
AfterPrintEventArgs rea = new AfterPrintEventArgs (afterPrintLocation);
ItemPrinted(this, rea);
}
}
protected void NotifyBeforePrint () {
private void NotifyBeforePrint () {
// System.Console.WriteLine("\tNotifyBeforePrint");
if (this.ItemPrinting != null) {
BeforePrintEventArgs ea = new BeforePrintEventArgs ();
ItemPrinting (this,ea);
@ -75,6 +78,15 @@ namespace SharpReportCore { @@ -75,6 +78,15 @@ namespace SharpReportCore {
}
#endregion
#region overrides
public override void Render(ReportPageEventArgs rpea){
base.Render(rpea);
this.NotifyBeforePrint();
}
#endregion
#region virtual method's
protected RectangleF DrawingRectangle (ReportPageEventArgs e,SizeF measureSize) {
@ -145,7 +157,7 @@ namespace SharpReportCore { @@ -145,7 +157,7 @@ namespace SharpReportCore {
NotifyPropertyChanged ("Font");
}
}
#endregion
#region IDisposeable

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save