Browse Source

Merged Corsavy r1470:1511 to trunk.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@1512 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
254c8e6bd5
  1. 74
      AddIns/ICSharpCode.SharpDevelop.addin
  2. BIN
      data/resources/StringResources.cz.resources
  3. BIN
      data/resources/StringResources.de.resources
  4. BIN
      data/resources/StringResources.es-mx.resources
  5. BIN
      data/resources/StringResources.es.resources
  6. BIN
      data/resources/StringResources.fr.resources
  7. BIN
      data/resources/StringResources.hu.resources
  8. BIN
      data/resources/StringResources.it.resources
  9. BIN
      data/resources/StringResources.kr.resources
  10. BIN
      data/resources/StringResources.nl.resources
  11. BIN
      data/resources/StringResources.pt-br.resources
  12. BIN
      data/resources/StringResources.ro.resources
  13. 29
      data/templates/project/CSharp/ConsoleProject.xpt
  14. 30
      data/templates/project/CSharp/ControlLibrary.xpt
  15. 31
      data/templates/project/CSharp/DefaultAssemblyInfo.cs
  16. 29
      data/templates/project/CSharp/Direct3DProject.xpt
  17. 30
      data/templates/project/CSharp/FormsProject.xpt
  18. 30
      data/templates/project/CSharp/GladeProject.xpt
  19. 30
      data/templates/project/CSharp/GtkProject.xpt
  20. 30
      data/templates/project/CSharp/Library.xpt
  21. 65
      data/templates/project/CSharp/Service.xpt
  22. 30
      data/templates/project/CSharp/SharpDevelopAddin.xpt
  23. 25
      data/templates/project/CSharp/SharpDevelopMacro.xpt
  24. 1
      data/templates/project/VBNet/ConsoleProject.xpt
  25. 30
      data/templates/project/VBNet/ControlLibrary.xpt
  26. 31
      data/templates/project/VBNet/DefaultAssemblyInfo.vb
  27. 28
      data/templates/project/VBNet/Direct3DProject.xpt
  28. 29
      data/templates/project/VBNet/FormsProject.xpt
  29. 29
      data/templates/project/VBNet/Library.xpt
  30. 52
      data/templates/project/VBNet/Service.xpt
  31. 31
      data/templates/project/VBNet/SharpDevelopAddin.xpt
  32. 31
      data/templates/project/VBNet/SharpDevelopMacro.xpt
  33. 31
      samples/SharpReport/ReportSamples/MainForm.Designer.cs
  34. 88
      samples/SharpReport/ReportSamples/MainForm.cs
  35. 3
      samples/SharpReport/ReportSamples/MainForm.resx
  36. 1
      samples/SharpReport/Unbound/UnboundReport.srd
  37. 17
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/MyNamespaceBuilder.cs
  38. 4
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerViewContent.cs
  39. 54
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/ExceptionForm.cs
  40. 11
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/ExceptionForm.resx
  41. 14
      src/AddIns/Misc/SharpReport/SharpReport/SharpReportManager.cs
  42. 7
      src/AddIns/Misc/SharpReport/SharpReportAddin/SharpReportView.cs
  43. 27
      src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseReportObject.cs
  44. 52
      src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseSection.cs
  45. 6
      src/AddIns/Misc/SharpReport/SharpReportCore/ConnectionObject.cs
  46. 97
      src/AddIns/Misc/SharpReport/SharpReportCore/DataManager/DataManager.cs
  47. 33
      src/AddIns/Misc/SharpReport/SharpReportCore/DataManager/SqlQueryChecker.cs
  48. 4
      src/AddIns/Misc/SharpReport/SharpReportCore/Events/PrintEventArgs.cs
  49. 5
      src/AddIns/Misc/SharpReport/SharpReportCore/Events/ReportPageEventArgs.cs
  50. 52
      src/AddIns/Misc/SharpReport/SharpReportCore/Events/SectionRenderEventArgs.cs
  51. 50
      src/AddIns/Misc/SharpReport/SharpReportCore/Exceptions/IllegalQueryException.cs
  52. 4
      src/AddIns/Misc/SharpReport/SharpReportCore/Exceptions/SharpReportException.cs
  53. 53
      src/AddIns/Misc/SharpReport/SharpReportCore/Printing/AbstractDataRenderer.cs
  54. 252
      src/AddIns/Misc/SharpReport/SharpReportCore/Printing/AbstractRenderer.cs
  55. 12
      src/AddIns/Misc/SharpReport/SharpReportCore/Printing/Formatter/AbstractFormatter.cs
  56. 2
      src/AddIns/Misc/SharpReport/SharpReportCore/Printing/Formatter/DefaultFormatter.cs
  57. 5
      src/AddIns/Misc/SharpReport/SharpReportCore/Printing/Graphics/BaseShape.cs
  58. 6
      src/AddIns/Misc/SharpReport/SharpReportCore/Printing/Graphics/Border.cs
  59. 253
      src/AddIns/Misc/SharpReport/SharpReportCore/Printing/RenderDataReport.cs
  60. 122
      src/AddIns/Misc/SharpReport/SharpReportCore/Printing/RenderFormSheetReport.cs
  61. 134
      src/AddIns/Misc/SharpReport/SharpReportCore/Printing/ReportDocument.cs
  62. 10
      src/AddIns/Misc/SharpReport/SharpReportCore/ReportSettings.cs
  63. 2
      src/AddIns/Misc/SharpReport/SharpReportCore/SharpReportCore.csproj
  64. 162
      src/AddIns/Misc/SharpReport/SharpReportCore/SharpReportEngine.cs
  65. 3
      src/AddIns/Misc/SharpReport/SharpReportCore/Xml/XmlHelper.cs
  66. 71
      src/AddIns/Misc/SharpReport/SharpReportWizard/WizardPanels/BaseSettingsPanel.cs
  67. 7
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/MiscActions.cs
  68. 57
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextArea.cs
  69. 60
      src/Libraries/NRefactory/Project/Src/Output/CSharp/CSharpOutputVisitor.cs
  70. 6
      src/Libraries/NRefactory/Project/Src/Output/CodeDOM/CodeDOMOutputVisitor.cs
  71. 72
      src/Libraries/NRefactory/Project/Src/Output/VBNet/VBNetOutputVisitor.cs
  72. 25
      src/Libraries/NRefactory/Project/Src/Parser/AST/TypeReference.cs
  73. 1079
      src/Libraries/NRefactory/Project/Src/Parser/CSharp/Parser.cs
  74. 31
      src/Libraries/NRefactory/Project/Src/Parser/CSharp/cs.ATG
  75. 2411
      src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs
  76. 117
      src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG
  77. 126
      src/Libraries/NRefactory/Project/Src/Parser/Visitors/VBNetConstructsConvertVisitor.cs
  78. 20
      src/Libraries/NRefactory/Test/General/UnitTest.cs
  79. 164
      src/Libraries/NRefactory/Test/Output/CSharp/VBToCSharpConverterTest.cs
  80. 46
      src/Libraries/NRefactory/Test/Output/SpecialOutputVisitor.cs
  81. 52
      src/Libraries/NRefactory/Test/Output/VBNet/CSharpToVBConverterTest.cs
  82. 67
      src/Libraries/NRefactory/Test/Output/VBNet/VBNetOutputTest.cs
  83. 1
      src/Libraries/NRefactory/Test/Parser/Expressions/ArrayCreateExpressionTests.cs
  84. 11
      src/Libraries/NRefactory/Test/Parser/Expressions/DefaultValueExpressionTests.cs
  85. 5
      src/Libraries/NRefactory/Test/Parser/Expressions/IdentifierExpressionTests.cs
  86. 20
      src/Libraries/NRefactory/Test/Parser/Expressions/TypeReferenceExpressionTests.cs
  87. 10
      src/Libraries/NRefactory/Test/Parser/Statements/UsingStatementTests.cs
  88. 6
      src/Main/Base/Project/Src/Commands/CustomStringTagProvider.cs
  89. 3
      src/Main/Base/Project/Src/Commands/ProjectMenuCommands.cs
  90. 2
      src/Main/Base/Project/Src/Commands/VBConverter/CSharpConvertBuffer.cs
  91. 3
      src/Main/Base/Project/Src/Commands/VBConverter/ConvertBuffer.cs
  92. 4
      src/Main/Base/Project/Src/Dom/ClassFinder.cs
  93. 5
      src/Main/Base/Project/Src/Dom/Implementations/DefaultCompilationUnit.cs
  94. 6
      src/Main/Base/Project/Src/Gui/Components/SideBar/AxSideBar.cs
  95. 4
      src/Main/Base/Project/Src/Gui/Components/StatusBar/SdStatusBar.cs
  96. 3
      src/Main/Base/Project/Src/Gui/Dialogs/AbstractOptionPanel.cs
  97. 3
      src/Main/Base/Project/Src/Gui/Dialogs/NewFileDialog.cs
  98. 24
      src/Main/Base/Project/Src/Gui/Dialogs/NewProjectDialog.cs
  99. 5
      src/Main/Base/Project/Src/Gui/Dialogs/ProjectOptionsView.cs
  100. 2
      src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/ReferenceFolderNode.cs
  101. Some files were not shown because too many files have changed in this diff Show More

74
AddIns/ICSharpCode.SharpDevelop.addin

@ -196,6 +196,7 @@ @@ -196,6 +196,7 @@
<MenuItem id = "Paste"
label = "${res:XML.MainMenu.EditMenu.Paste}"
icon = "Icons.16x16.PasteIcon"
loadclasslazy = "false"
class = "ICSharpCode.SharpDevelop.Project.Commands.PasteProjectBrowserNode"/>
<MenuItem id = "Rename"
label = "${res:ProjectComponent.ContextMenu.Rename}"
@ -212,25 +213,7 @@ @@ -212,25 +213,7 @@
<Include id = "CombineAddMenu" item="/SharpDevelop/Pads/ProjectBrowser/ContextMenu/SolutionNode/CombineAddMenu"/>
<MenuItem id = "AddSeparator" type = "Separator"/>
<MenuItem id = "Cut"
label = "${res:XML.MainMenu.EditMenu.Cut}"
type = "Item"
icon = "Icons.16x16.CutIcon"
class = "ICSharpCode.SharpDevelop.Project.Commands.CutProjectBrowserNode"/>
<MenuItem id = "Paste"
label = "${res:XML.MainMenu.EditMenu.Paste}"
type = "Item"
icon = "Icons.16x16.PasteIcon"
class = "ICSharpCode.SharpDevelop.Project.Commands.PasteProjectBrowserNode"/>
<MenuItem id = "Remove"
type = "Item"
label = "${res:Global.RemoveButtonText}"
icon = "Icons.16x16.DeleteIcon"
class = "ICSharpCode.SharpDevelop.Project.Commands.DeleteProjectBrowserNode"/>
<MenuItem id = "Rename"
label = "${res:ProjectComponent.ContextMenu.Rename}"
shortcut = "F2"
class = "ICSharpCode.SharpDevelop.Project.Commands.RenameEntryEvent"/>
<Include id="CutPasteRemoveRename" path="/SharpDevelop/Pads/ProjectBrowser/ContextMenu/CutPasteRemoveRename"/>
</Path>
<Path path = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/SolutionItemNode">
@ -239,25 +222,7 @@ @@ -239,25 +222,7 @@
icon = "Icons.16x16.OpenFileIcon"
class = "ICSharpCode.SharpDevelop.Project.Commands.OpenFileEvent"/>
<MenuItem id = "OpenSeparator" type = "Separator" />
<MenuItem id = "Cut"
label = "${res:XML.MainMenu.EditMenu.Cut}"
type = "Item"
icon = "Icons.16x16.CutIcon"
class = "ICSharpCode.SharpDevelop.Project.Commands.CutProjectBrowserNode"/>
<MenuItem id = "Copy"
label = "${res:XML.MainMenu.EditMenu.Copy}"
type = "Item"
icon = "Icons.16x16.CopyIcon"
class = "ICSharpCode.SharpDevelop.Project.Commands.CopyProjectBrowserNode"/>
<MenuItem id = "Remove"
label = "${res:Global.RemoveButtonText}"
type = "Item"
icon = "Icons.16x16.DeleteIcon"
class = "ICSharpCode.SharpDevelop.Project.Commands.DeleteProjectBrowserNode"/>
<MenuItem id = "Rename"
label = "${res:ProjectComponent.ContextMenu.Rename}"
shortcut = "F2"
class = "ICSharpCode.SharpDevelop.Project.Commands.RenameEntryEvent"/>
<Include id="CutCopyRemoveRename" path="/SharpDevelop/Pads/ProjectBrowser/ContextMenu/CutCopyRemoveRename"/>
</Path>
<Path path = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/ProjectNode">
@ -271,9 +236,9 @@ @@ -271,9 +236,9 @@
<MenuItem id = "Clean project"
label = "${res:ProjectComponent.ContextMenu.Clean}"
class = "ICSharpCode.SharpDevelop.Project.Commands.CleanProject"/>
<MenuItem id = "Publish project"
<!--<MenuItem id = "Publish project"
label = "${res:XML.MainMenu.BuildMenu.PublishProject}"
class = "ICSharpCode.SharpDevelop.Project.Commands.PublishProject"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.PublishProject"/>-->
<MenuItem id = "CombineBuildGroupSeparator" type = "Separator"/>
<MenuItem id = "ProjectAddMenu" label = "${res:ProjectComponent.ContextMenu.AddMenu}" type = "Menu" >
@ -414,6 +379,31 @@ @@ -414,6 +379,31 @@
</ComplexCondition>
</Path>
<Path name = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/CutCopyRemoveRename">
<MenuItem id = "Cut"
label = "${res:XML.MainMenu.EditMenu.Cut}"
type = "Item"
icon = "Icons.16x16.CutIcon"
loadclasslazy = "false"
class = "ICSharpCode.SharpDevelop.Project.Commands.CutProjectBrowserNode"/>
<MenuItem id = "Copy"
label = "${res:XML.MainMenu.EditMenu.Copy}"
type = "Item"
icon = "Icons.16x16.CopyIcon"
loadclasslazy = "false"
class = "ICSharpCode.SharpDevelop.Project.Commands.CopyProjectBrowserNode"/>
<MenuItem id = "Remove"
label = "${res:Global.RemoveButtonText}"
type = "Item"
icon = "Icons.16x16.DeleteIcon"
loadclasslazy = "false"
class = "ICSharpCode.SharpDevelop.Project.Commands.DeleteProjectBrowserNode"/>
<MenuItem id = "Rename"
label = "${res:ProjectComponent.ContextMenu.Rename}"
shortcut = "F2"
class = "ICSharpCode.SharpDevelop.Project.Commands.RenameEntryEvent"/>
</Path>
<Path name = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/CutPasteRemoveRename">
<MenuItem id = "Cut"
label = "${res:XML.MainMenu.EditMenu.Cut}"
@ -1343,9 +1333,9 @@ @@ -1343,9 +1333,9 @@
<MenuItem id = "Clean project"
label = "${res:XML.MainMenu.BuildMenu.CleanProject}"
class = "ICSharpCode.SharpDevelop.Project.Commands.CleanProject"/>
<MenuItem id = "Publish project"
<!--<MenuItem id = "Publish project"
label = "${res:XML.MainMenu.BuildMenu.PublishProject}"
class = "ICSharpCode.SharpDevelop.Project.Commands.PublishProject"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.PublishProject"/>-->
</Condition>
<MenuItem id = "Separator2" type = "Separator" />
<MenuItem id = "SetConfiguration"

BIN
data/resources/StringResources.cz.resources

Binary file not shown.

BIN
data/resources/StringResources.de.resources

Binary file not shown.

BIN
data/resources/StringResources.es-mx.resources

Binary file not shown.

BIN
data/resources/StringResources.es.resources

Binary file not shown.

BIN
data/resources/StringResources.fr.resources

Binary file not shown.

BIN
data/resources/StringResources.hu.resources

Binary file not shown.

BIN
data/resources/StringResources.it.resources

Binary file not shown.

BIN
data/resources/StringResources.kr.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.ro.resources

Binary file not shown.

29
data/templates/project/CSharp/ConsoleProject.xpt

@ -47,34 +47,7 @@ namespace ${StandardNamespace} @@ -47,34 +47,7 @@ namespace ${StandardNamespace}
}
}
}]]></File>
<File name="AssemblyInfo.cs"><![CDATA[using System.Reflection;
using System.Runtime.CompilerServices;
// Information about this assembly is defined by the following
// attributes.
//
// change them to the information which is associated with the assembly
// you compile.
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// The assembly version has following format :
//
// Major.Minor.Build.Revision
//
// You can specify all values by your own or you can build default build and revision
// numbers with the '*' character (the default):
[assembly: AssemblyVersion("1.0.*")]
]]></File>
<File name="AssemblyInfo.cs" src="DefaultAssemblyInfo.cs"/>
</Files>
</Project>
</Combine>

30
data/templates/project/CSharp/ControlLibrary.xpt

@ -102,35 +102,7 @@ namespace ${StandardNamespace} @@ -102,35 +102,7 @@ namespace ${StandardNamespace}
}
}
]]></File>
<File name="AssemblyInfo.cs">
<![CDATA[using System.Reflection;
using System.Runtime.CompilerServices;
// Information about this assembly is defined by the following
// attributes.
//
// change them to the information which is associated with the assembly
// you compile.
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// The assembly version has following format :
//
// Major.Minor.Build.Revision
//
// You can specify all values by your own or you can build default build and revision
// numbers with the '*' character (the default):
[assembly: AssemblyVersion("1.0.*")]
]]></File>
<File name="AssemblyInfo.cs" src="DefaultAssemblyInfo.cs"/>
</Files>
</Project>
</Combine>

31
data/templates/project/CSharp/DefaultAssemblyInfo.cs

@ -0,0 +1,31 @@ @@ -0,0 +1,31 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// Information about this assembly is defined by the following
// attributes.
//
// change them to the information which is associated with the assembly
// you compile.
[assembly: AssemblyTitle("${ProjectName}")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("${ProjectName}")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// This sets the default COM visibility of types in the assembly to invisible.
// If you need to expose a type to COM, use [ComVisible(true)] on that type.
[assembly: ComVisible(false)]
// The assembly version has following format :
//
// Major.Minor.Build.Revision
//
// You can specify all values by your own or you can build default build and revision
// numbers with the '*' character (the default):
[assembly: AssemblyVersion("1.0.*")]

29
data/templates/project/CSharp/Direct3DProject.xpt

@ -171,34 +171,7 @@ namespace ${StandardNamespace} @@ -171,34 +171,7 @@ namespace ${StandardNamespace}
}
}
]]></File>
<File name="AssemblyInfo.cs"><![CDATA[using System.Reflection;
using System.Runtime.CompilerServices;
// Information about this assembly is defined by the following
// attributes.
//
// change them to the information which is associated with the assembly
// you compile.
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// The assembly version has following format :
//
// Major.Minor.Build.Revision
//
// You can specify all values by your own or you can build default build and revision
// numbers with the '*' character (the default):
[assembly: AssemblyVersion("1.0.*")]
]]></File>
<File name="AssemblyInfo.cs" src="DefaultAssemblyInfo.cs"/>
</Files>
</Project>
</Combine>

30
data/templates/project/CSharp/FormsProject.xpt

@ -112,35 +112,7 @@ namespace ${StandardNamespace} @@ -112,35 +112,7 @@ namespace ${StandardNamespace}
}
}
]]></File>
<File name="AssemblyInfo.cs" language="C#">
<![CDATA[using System.Reflection;
using System.Runtime.CompilerServices;
// Information about this assembly is defined by the following
// attributes.
//
// change them to the information which is associated with the assembly
// you compile.
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// The assembly version has following format :
//
// Major.Minor.Build.Revision
//
// You can specify all values by your own or you can build default build and revision
// numbers with the '*' character (the default):
[assembly: AssemblyVersion("1.0.*")]
]]></File>
<File name="AssemblyInfo.cs" src="DefaultAssemblyInfo.cs"/>
</Files>
</Project>
</Combine>

30
data/templates/project/CSharp/GladeProject.xpt

@ -105,35 +105,7 @@ namespace ${StandardNamespace} @@ -105,35 +105,7 @@ namespace ${StandardNamespace}
</glade-interface>
]]></File>
<File name="AssemblyInfo.cs">
<![CDATA[using System.Reflection;
using System.Runtime.CompilerServices;
// Information about this assembly is defined by the following
// attributes.
//
// change them to the information which is associated with the assembly
// you compile.
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// The assembly version has following format :
//
// Major.Minor.Build.Revision
//
// You can specify all values by your own or you can build default build and revision
// numbers with the '*' character (the default):
[assembly: AssemblyVersion("1.0.*")]
]]></File>
<File name="AssemblyInfo.cs" src="DefaultAssemblyInfo.cs"/>
</Files>
</Project>
</Solution>

30
data/templates/project/CSharp/GtkProject.xpt

@ -76,35 +76,7 @@ namespace ${StandardNamespace} @@ -76,35 +76,7 @@ namespace ${StandardNamespace}
}
}
}]]></File>
<File name="AssemblyInfo.cs">
<![CDATA[using System.Reflection;
using System.Runtime.CompilerServices;
// Information about this assembly is defined by the following
// attributes.
//
// change them to the information which is associated with the assembly
// you compile.
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// The assembly version has following format :
//
// Major.Minor.Build.Revision
//
// You can specify all values by your own or you can build default build and revision
// numbers with the '*' character (the default):
[assembly: AssemblyVersion("1.0.*")]
]]></File>
<File name="AssemblyInfo.cs" src="DefaultAssemblyInfo.cs"/>
</Files>
</Project>
</Solution>

30
data/templates/project/CSharp/Library.xpt

@ -46,35 +46,7 @@ namespace ${StandardNamespace} @@ -46,35 +46,7 @@ namespace ${StandardNamespace}
}
}]]></File>
<File name="AssemblyInfo.cs">
<![CDATA[using System.Reflection;
using System.Runtime.CompilerServices;
// Information about this assembly is defined by the following
// attributes.
//
// change them to the information which is associated with the assembly
// you compile.
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// The assembly version has following format :
//
// Major.Minor.Build.Revision
//
// You can specify all values by your own or you can build default build and revision
// numbers with the '*' character (the default):
[assembly: AssemblyVersion("1.0.*")]
]]></File>
<File name="AssemblyInfo.cs" src="DefaultAssemblyInfo.cs"/>
</Files>
</Project>
</Combine>

65
data/templates/project/CSharp/Service.xpt

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
<?xml version="1.0"?>
<Template originator = "Mike Krueger"
created = "02/01/2003"
lastModified = "14/01/2006">
lastModified = "16/06/2006">
<!-- Template Header -->
<TemplateConfiguration>
@ -29,6 +29,7 @@ @@ -29,6 +29,7 @@
<ProjectItems>
<Reference Include="System" />
<Reference Include="System.Configuration.Install" />
<Reference Include="System.Data" />
<Reference Include="System.ServiceProcess" />
<Reference Include="System.Xml" />
@ -49,6 +50,8 @@ namespace ${StandardNamespace} @@ -49,6 +50,8 @@ namespace ${StandardNamespace}
{
public class ${ProjectName} : ServiceBase
{
public const string MyServiceName = "${ProjectName}";
public ${ProjectName}()
{
InitializeComponent();
@ -56,7 +59,7 @@ namespace ${StandardNamespace} @@ -56,7 +59,7 @@ namespace ${StandardNamespace}
private void InitializeComponent()
{
this.ServiceName = "${ProjectName}";
this.ServiceName = MyServiceName;
}
/// <summary>
@ -85,6 +88,35 @@ namespace ${StandardNamespace} @@ -85,6 +88,35 @@ namespace ${StandardNamespace}
}
}
}
]]></File>
<File name="ProjectInstaller.cs"><![CDATA[${StandardHeader.C#}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using System.ServiceProcess;
namespace ${StandardNamespace}
{
[RunInstaller(true)]
public class ProjectInstaller : Installer
{
private ServiceProcessInstaller serviceProcessInstaller;
private ServiceInstaller serviceInstaller;
public ProjectInstaller()
{
serviceProcessInstaller = new ServiceProcessInstaller();
serviceInstaller = new ServiceInstaller();
// Here you can set properties on serviceProcessInstaller or register event handlers
serviceProcessInstaller.Account = ServiceAccount.LocalService;
serviceInstaller.ServiceName = ${ProjectName}.MyServiceName;
this.Installers.AddRange(new Installer[] { serviceProcessInstaller, serviceInstaller });
}
}
}
]]></File>
<File name="Program.cs"><![CDATA[${StandardHeader.C#}
@ -108,34 +140,7 @@ namespace ${ProjectName} @@ -108,34 +140,7 @@ namespace ${ProjectName}
}
}
]]></File>
<File name="AssemblyInfo.cs"><![CDATA[using System.Reflection;
using System.Runtime.CompilerServices;
// Information about this assembly is defined by the following
// attributes.
//
// change them to the information which is associated with the assembly
// you compile.
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// The assembly version has following format :
//
// Major.Minor.Build.Revision
//
// You can specify all values by your own or you can build default build and revision
// numbers with the '*' character (the default):
[assembly: AssemblyVersion("1.0.*")]
]]></File>
<File name="AssemblyInfo.cs" src="DefaultAssemblyInfo.cs"/>
</Files>
</Project>
</Combine>

30
data/templates/project/CSharp/SharpDevelopAddin.xpt

@ -157,35 +157,7 @@ namespace ${ProjectName} @@ -157,35 +157,7 @@ namespace ${ProjectName}
}
}
]]></File>
<File name="Configuration/AssemblyInfo.cs">
<![CDATA[using System.Reflection;
using System.Runtime.CompilerServices;
// Information about this assembly is defined by the following
// attributes.
//
// change them to the information which is associated with the assembly
// you compile.
[assembly: AssemblyTitle("${ProjectName}")]
[assembly: AssemblyDescription("Addin for SharpDevelop 2.0")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("SharpDevelop")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// The assembly version has following format :
//
// Major.Minor.Build.Revision
//
// You can specify all values by your own or you can build default build and revision
// numbers with the '*' character (the default):
[assembly: AssemblyVersion("1.0.*")]
]]></File>
<File name="Configuration/AssemblyInfo.cs" src="DefaultAssemblyInfo.cs"/>
</Files>
</Project>
</Combine>

25
data/templates/project/CSharp/SharpDevelopMacro.xpt

@ -100,30 +100,7 @@ namespace ${StandardNamespace} @@ -100,30 +100,7 @@ namespace ${StandardNamespace}
}
}
]]></File>
<File name="Configuration/AssemblyInfo.cs">
<![CDATA[${StandardHeader.C#}
using System.Reflection;
[assembly: AssemblyTitle("${ProjectName}")]
[assembly: AssemblyDescription("Macro AddIn for SharpDevelop 2.0")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("SharpDevelop")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// The assembly version has following format :
//
// Major.Minor.Build.Revision
//
// You can specify all values by your own or you can build default build and revision
// numbers with the '*' character (the default):
[assembly: AssemblyVersion("1.0.*")]
]]></File>
<File name="Configuration/AssemblyInfo.cs" src="DefaultAssemblyInfo.cs"/>
</Files>
</Project>
</Combine>

1
data/templates/project/VBNet/ConsoleProject.xpt

@ -51,6 +51,7 @@ Module Main @@ -51,6 +51,7 @@ Module Main
End Sub
End Module
]]></File>
<File name="AssemblyInfo.vb" src="DefaultAssemblyInfo.vb"/>
</Files>
</Project>
</Combine>

30
data/templates/project/VBNet/ControlLibrary.xpt

@ -92,35 +92,7 @@ Partial Class UserControl1 @@ -92,35 +92,7 @@ Partial Class UserControl1
End Sub
End Class
]]></File>
<File name="AssemblyInfo.vb">
<![CDATA[Imports System.Reflection
Imports System.Runtime.CompilerServices
' Information about this assembly is defined by the following
' attributes.
'
' Change them to the information which is associated with the assembly
' you compile.
<assembly: AssemblyTitle("")>
<assembly: AssemblyDescription("")>
<assembly: AssemblyConfiguration("")>
<assembly: AssemblyCompany("")>
<assembly: AssemblyProduct("")>
<assembly: AssemblyCopyright("")>
<assembly: AssemblyTrademark("")>
<assembly: AssemblyCulture("")>
' The assembly version has following format :
'
' Major.Minor.Build.Revision
'
' You can specify all values by your own or you can build default build and revision
' numbers with the '*' character (the default):
<assembly: AssemblyVersion("1.0.*")>
]]></File>
<File name="AssemblyInfo.vb" src="DefaultAssemblyInfo.vb"/>
</Files>
</Project>
</Combine>

31
data/templates/project/VBNet/DefaultAssemblyInfo.vb

@ -0,0 +1,31 @@ @@ -0,0 +1,31 @@
Imports System.Reflection
Imports System.Runtime.CompilerServices
Imports System.Runtime.InteropServices
' Information about this assembly is defined by the following
' attributes.
'
' change them to the information which is associated with the assembly
' you compile.
<assembly: AssemblyTitle("${ProjectName}")>
<assembly: AssemblyDescription("")>
<assembly: AssemblyConfiguration("")>
<assembly: AssemblyCompany("")>
<assembly: AssemblyProduct("${ProjectName}")>
<assembly: AssemblyCopyright("")>
<assembly: AssemblyTrademark("")>
<assembly: AssemblyCulture("")>
' This sets the default COM visibility of types in the assembly to invisible.
' If you need to expose a type to COM, use <ComVisible(true)> on that type.
<assembly: ComVisible(False)>
' The assembly version has following format :
'
' Major.Minor.Build.Revision
'
' You can specify all values by your own or you can build default build and revision
' numbers with the '*' character (the default):
<assembly: AssemblyVersion("1.0.*")>

28
data/templates/project/VBNet/Direct3DProject.xpt

@ -154,33 +154,7 @@ Public Class MainClass @@ -154,33 +154,7 @@ Public Class MainClass
End Sub
End Class
]]></File>
<File name="AssemblyInfo.vb"><![CDATA[Imports System.Reflection
Imports System.Runtime.CompilerServices
' Information about this assembly is defined by the following
' attributes.
' <ProjectOptions Target = "WinExe" PauseConsoleOutput = "False" />
' change them to the information which is associated with the assembly
' you compile.
<assembly: AssemblyTitle("")>
<assembly: AssemblyDescription("")>
<assembly: AssemblyConfiguration("")>
<assembly: AssemblyCompany("")>
<assembly: AssemblyProduct("")>
<assembly: AssemblyCopyright("")>
<assembly: AssemblyTrademark("")>
<assembly: AssemblyCulture("")>
' The assembly version has following format :
'
' Major.Minor.Build.Revision
'
' You can specify all values by your own or you can build default build and revision
' numbers with the '*' character (the default):
<assembly: AssemblyVersion("1.0.*")>
]]></File>
<File name="AssemblyInfo.vb" src="DefaultAssemblyInfo.vb"/>
</Files>
</Project>
</Combine>

29
data/templates/project/VBNet/FormsProject.xpt

@ -116,34 +116,7 @@ Namespace My @@ -116,34 +116,7 @@ Namespace My
End Class
End Namespace
]]></File>
<File name="AssemblyInfo.vb">
<![CDATA[Imports System.Reflection
Imports System.Runtime.CompilerServices
' Information about this assembly is defined by the following
' attributes.
'
' change them to the information which is associated with the assembly
' you compile.
<assembly: AssemblyTitle("")>
<assembly: AssemblyDescription("")>
<assembly: AssemblyConfiguration("")>
<assembly: AssemblyCompany("")>
<assembly: AssemblyProduct("")>
<assembly: AssemblyCopyright("")>
<assembly: AssemblyTrademark("")>
<assembly: AssemblyCulture("")>
' The assembly version has following format :
'
' Major.Minor.Build.Revision
'
' You can specify all values by your own or you can build default build and revision
' numbers with the '*' character (the default):
<assembly: AssemblyVersion("1.0.*")>
]]></File>
<File name="AssemblyInfo.vb" src="DefaultAssemblyInfo.vb"/>
</Files>
</Project>
</Combine>

29
data/templates/project/VBNet/Library.xpt

@ -46,34 +46,7 @@ Public Class NewClass @@ -46,34 +46,7 @@ Public Class NewClass
End Class
]]></File>
<File name="AssemblyInfo.vb">
<![CDATA[Imports System.Reflection
Imports System.Runtime.CompilerServices
' Information about this assembly is defined by the following
' attributes.
'
' Change them to the information which is associated with the assembly
' you compile.
<assembly: AssemblyTitle("")>
<assembly: AssemblyDescription("")>
<assembly: AssemblyConfiguration("")>
<assembly: AssemblyCompany("")>
<assembly: AssemblyProduct("")>
<assembly: AssemblyCopyright("")>
<assembly: AssemblyTrademark("")>
<assembly: AssemblyCulture("")>
' The assembly version has following format :
'
' Major.Minor.Build.Revision
'
' You can specify all values by your own or you can build default build and revision
' numbers with the '*' character (the default):
<assembly: AssemblyVersion("1.0.*")>
]]></File>
<File name="AssemblyInfo.vb" src="DefaultAssemblyInfo.vb"/>
</Files>
</Project>
</Combine>

52
data/templates/project/VBNet/Service.xpt

@ -27,8 +27,8 @@ @@ -27,8 +27,8 @@
<ProjectItems>
<Reference Include="System" />
<Reference Include="System.Configuration.Install" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.ServiceProcess" />
<Reference Include="System.Xml" />
@ -49,6 +49,8 @@ Imports System.ServiceProcess @@ -49,6 +49,8 @@ Imports System.ServiceProcess
Public Class ${ProjectName}
Inherits ServiceBase
Public Const MyServiceName As String = "${ProjectName}"
' The main entry point for the process
<MTAThread()> _
Shared Sub Main()
@ -56,6 +58,10 @@ Public Class ${ProjectName} @@ -56,6 +58,10 @@ Public Class ${ProjectName}
ServiceBase.Run(New ServiceBase() {New ${ProjectName}})
End Sub
Public Sub New()
Me.ServiceName = MyServiceName
End Sub
Protected Overrides Sub OnStart(ByVal args() As String)
' TODO: Add start code here to start your service.
End Sub
@ -66,34 +72,30 @@ Public Class ${ProjectName} @@ -66,34 +72,30 @@ Public Class ${ProjectName}
End Class
]]></File>
<File name="AssemblyInfo.vb">
<![CDATA[Imports System.Reflection
Imports System.Runtime.CompilerServices
<File name="ProjectInstaller.vb"><![CDATA[${StandardHeader.VBNET}
' Information about this assembly is defined by the following
' attributes.
'
' change them to the information which is associated with the assembly
' you compile.
<assembly: AssemblyTitle("")>
<assembly: AssemblyDescription("")>
<assembly: AssemblyConfiguration("")>
<assembly: AssemblyCompany("")>
<assembly: AssemblyProduct("")>
<assembly: AssemblyCopyright("")>
<assembly: AssemblyTrademark("")>
<assembly: AssemblyCulture("")>
Imports System.ComponentModel
Imports System.Configuration.Install
Imports System.ServiceProcess
' The assembly version has following format :
'
' Major.Minor.Build.Revision
'
' You can specify all values by your own or you can build default build and revision
' numbers with the '*' character (the default):
<RunInstaller(True)> _
Public Class ProjectInstaller
Inherits Installer
Private serviceProcessInstaller As New ServiceProcessInstaller
Private serviceInstaller As New ServiceInstaller
Public Sub New()
' Here you can set properties on serviceProcessInstaller or register event handlers
serviceProcessInstaller.Account = ServiceAccount.LocalService
serviceInstaller.ServiceName = ${ProjectName}.MyServiceName
Me.Installers.AddRange(New Installer() { serviceProcessInstaller, serviceInstaller })
End Sub
End Class
<assembly: AssemblyVersion("1.0.*")>
]]></File>
<File name="AssemblyInfo.vb" src="DefaultAssemblyInfo.vb"/>
</Files>
</Project>
</Combine>

31
data/templates/project/VBNet/SharpDevelopAddin.xpt

@ -146,36 +146,7 @@ Public Class TestPad @@ -146,36 +146,7 @@ Public Class TestPad
End Sub
End Class
]]></File>
<File name="Configuration/AssemblyInfo.vb">
<![CDATA[Imports System.Reflection
Imports System.Runtime.CompilerServices
'Information about this assembly is defined by the following
'attributes.
'change them to the information which is associated with the assembly
'you compile.
<assembly: AssemblyTitle("${ProjectName}")>
<assembly: AssemblyDescription("Addin for SharpDevelop 2.0")>
<assembly: AssemblyConfiguration("")>
<assembly: AssemblyCompany("")>
<assembly: AssemblyProduct("SharpDevelop")>
<assembly: AssemblyCopyright("")>
<assembly: AssemblyTrademark("")>
<assembly: AssemblyCulture("")>
'The assembly version has following format :
'Major.Minor.Build.Revision
'You can specify all values by your own or you can build default build and revision
'numbers with the '*' character (the default):
<assembly: AssemblyVersion("1.0.*")>
]]>
</File>
<File name="Configuration/AssemblyInfo.vb" src="DefaultAssemblyInfo.vb"/>
</Files>
</Project>
</Combine>

31
data/templates/project/VBNet/SharpDevelopMacro.xpt

@ -98,36 +98,7 @@ Inherits AbstractMenuCommand @@ -98,36 +98,7 @@ Inherits AbstractMenuCommand
End Sub
End Class
]]></File>
<File name="Configuration/AssemblyInfo.vb">
<![CDATA[${StandardHeader.VBNET}
Imports System.Reflection
Imports System.Runtime.CompilerServices
'Information about this assembly is defined by the following
'attributes.
'
'change them to the information which is associated with the assembly
'you compile.
<assembly: AssemblyTitle("${ProjectName}")>
<assembly: AssemblyDescription("Addin for SharpDevelop 2.0")>
<assembly: AssemblyConfiguration("")>
<assembly: AssemblyCompany("")>
<assembly: AssemblyProduct("SharpDevelop")>
<assembly: AssemblyCopyright("")>
<assembly: AssemblyTrademark("")>
<assembly: AssemblyCulture("")>
'The assembly version has following format :
'
'Major.Minor.Build.Revision
'
'You can specify all values by your own or you can build default build and revision
'numbers with the '*' character (the default):
<assembly: AssemblyVersion("1.0.*")>
]]></File>
<File name="Configuration/AssemblyInfo.vb" src="DefaultAssemblyInfo.vb"/>
</Files>
</Project>
</Combine>

31
samples/SharpReport/ReportSamples/MainForm.Designer.cs generated

@ -36,6 +36,7 @@ namespace ReportSamples @@ -36,6 +36,7 @@ namespace ReportSamples
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.formSheetToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.simpleFormsSheetToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@ -45,7 +46,11 @@ namespace ReportSamples @@ -45,7 +46,11 @@ namespace ReportSamples
this.missingConnectionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.pushModelToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.emlpoyeesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.errorProvider1 = new System.Windows.Forms.ErrorProvider(this.components);
this.unboundToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.unboundToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.menuStrip1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.errorProvider1)).BeginInit();
this.SuspendLayout();
//
// menuStrip1
@ -53,7 +58,8 @@ namespace ReportSamples @@ -53,7 +58,8 @@ namespace ReportSamples
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.formSheetToolStripMenuItem,
this.pullMpToolStripMenuItem,
this.pushModelToolStripMenuItem});
this.pushModelToolStripMenuItem,
this.unboundToolStripMenuItem});
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Size = new System.Drawing.Size(518, 24);
@ -121,6 +127,25 @@ namespace ReportSamples @@ -121,6 +127,25 @@ namespace ReportSamples
this.emlpoyeesToolStripMenuItem.Text = "Employees-Push";
this.emlpoyeesToolStripMenuItem.Click += new System.EventHandler(this.EmployeesPushClick);
//
// errorProvider1
//
this.errorProvider1.ContainerControl = this;
//
// unboundToolStripMenuItem
//
this.unboundToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.unboundToolStripMenuItem1});
this.unboundToolStripMenuItem.Name = "unboundToolStripMenuItem";
this.unboundToolStripMenuItem.Size = new System.Drawing.Size(62, 20);
this.unboundToolStripMenuItem.Text = "Unbound";
//
// unboundToolStripMenuItem1
//
this.unboundToolStripMenuItem1.Name = "unboundToolStripMenuItem1";
this.unboundToolStripMenuItem1.Size = new System.Drawing.Size(152, 22);
this.unboundToolStripMenuItem1.Text = "Unbound";
this.unboundToolStripMenuItem1.Click += new System.EventHandler(this.UnboundToolStripMenuItem1Click);
//
// MainForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@ -132,9 +157,13 @@ namespace ReportSamples @@ -132,9 +157,13 @@ namespace ReportSamples
this.Text = "ReportSamples";
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.errorProvider1)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
private System.Windows.Forms.ToolStripMenuItem unboundToolStripMenuItem1;
private System.Windows.Forms.ToolStripMenuItem unboundToolStripMenuItem;
private System.Windows.Forms.ErrorProvider errorProvider1;
private System.Windows.Forms.ToolStripMenuItem emlpoyeesToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem missingConnectionToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem employeeToolStripMenuItem;

88
samples/SharpReport/ReportSamples/MainForm.cs

@ -84,6 +84,83 @@ namespace ReportSamples @@ -84,6 +84,83 @@ namespace ReportSamples
MessageBox.Show(er.ToString(),"MainForm");
}
}
private void OpenUnbound() {
try{
OpenFileDialog dg = new OpenFileDialog();
dg.Filter = "SharpReport files|*.srd";
dg.Title = "Select a report file: ";
if (dg.ShowDialog() == DialogResult.OK){
SharpReportCore.SharpReportEngine mn = new SharpReportCore.SharpReportEngine();
mn.SectionRendering += new EventHandler<SectionRenderEventArgs>(OnTestPrinting);
mn.SectionRendered += new EventHandler<SectionRenderEventArgs>(OnTestPrinted);
mn.PreviewStandartReport(dg.FileName.ToString());
}
}
catch(Exception er){
MessageBox.Show(er.ToString(),"MainForm");
}
}
private void OnTestPrinting (object sender,SectionRenderEventArgs e) {
System.Console.WriteLine("");
System.Console.WriteLine("--------------");
System.Console.WriteLine("MainForm:OnTestPrinting on PageNr <{0}>",e.PageNumber);
System.Console.WriteLine("\t SectionInUse <{0}>",e.CurrentSection);
System.Console.WriteLine("\t <{0}> Items",e.Section.Items.Count);
switch (e.CurrentSection) {
case GlobalEnums.enmSection.ReportHeader:
System.Console.WriteLine("I found the ReportHeader");
break;
case GlobalEnums.enmSection.ReportPageHeader:
BaseTextItem t = (BaseTextItem)e.Section.Items.Find("reportTextItem1");
if (t != null) {
t.Location = new Point(80,5);
t.Text = "Label";
}
BaseDataItem bb = (BaseDataItem)e.Section.Items.Find("reportDbTextItem1");
if (bb != null) {
bb.DrawBorder = true;
bb.Location = new Point(200,5);
bb.DbValue = "Hello World";
}
System.Console.WriteLine("I found the Pageheader");
break;
case GlobalEnums.enmSection.ReportDetail:
System.Console.WriteLine("I found the ReportDetail");
break;
case GlobalEnums.enmSection.ReportPageFooter:
System.Console.WriteLine("I found the PageFooter");
BaseReportItem b = (BaseReportItem)e.Section.Items.Find("pageNumber1");
if (b != null) {
b.BackColor = Color.AliceBlue;
} else {
string s = String.Format ("<{0}> not found");
MessageBox.Show (s);
}
break;
case GlobalEnums.enmSection.ReportFooter:
System.Console.WriteLine("I found the ReportFooter");
break;
default:
break;
}
System.Console.WriteLine("");
}
private void OnTestPrinted (object sender,SectionRenderEventArgs e) {
System.Console.WriteLine("MainForm:OnTestPrinted for <{0}>",e.CurrentSection);
System.Console.WriteLine("----------");
}
///<summary>Preferd Method to initialise the <see cref="SharpReportCore.ConnectionObject"></see>
/// hav a look to
/// <http://msdn2.microsoft.com/en-us/library/system.data.oledb.oledbconnectionstringbuilder(VS.80).aspx>
@ -134,8 +211,8 @@ namespace ReportSamples @@ -134,8 +211,8 @@ namespace ReportSamples
reportFileName = dg.FileName.ToString();
DataTable table = SelectData();
if (table != null) {
// mn.PreviewPushDataReport(reportFileName,table);
mn.PrintPushDataReport(reportFileName,table);
mn.PreviewPushDataReport(reportFileName,table);
// mn.PrintPushDataReport(reportFileName,table);
}
}
}
@ -143,7 +220,7 @@ namespace ReportSamples @@ -143,7 +220,7 @@ namespace ReportSamples
}
}
private DataTable SelectData()
{
OpenFileDialog dg = new OpenFileDialog();
@ -193,5 +270,10 @@ namespace ReportSamples @@ -193,5 +270,10 @@ namespace ReportSamples
{
OpenPushModell();
}
void UnboundToolStripMenuItem1Click(object sender, System.EventArgs e)
{
this.OpenUnbound();
}
}
}

3
samples/SharpReport/ReportSamples/MainForm.resx

@ -118,6 +118,9 @@ @@ -118,6 +118,9 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>141, 17</value>
</metadata>
<metadata name="errorProvider1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

1
samples/SharpReport/Unbound/UnboundReport.srd

@ -0,0 +1 @@ @@ -0,0 +1 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><SharpReport><section name="SharpReportCore.ReportSettings"><ReportType value="FormSheet" /><ConnectionString value="" /><CommandText value="" /><CommandType value="0" /><DataModel value="FormSheet" /><DefaultFont value="Microsoft Sans Serif, 10pt" /><ReportName value="SharpReport1" /><DefaultMargins value="50; 50; 50; 50" /><GridSize value="{Width=8, Height=8}" /><Padding value="{Left=5,Top=5,Right=5,Bottom=5}" /></section><section name="ReportHeader"><BackColor value="Color [Window]" /><Size value="{Width=787, Height=40}" /><SectionMargin value="50" /><PageBreakAfter value="False" /><CanGrow value="False" /><CanShrink value="False" /><Name value="ReportHeader" /><Location value="{X=0,Y=0}" /><controls /></section><section name="ReportPageHeader"><BackColor value="Color [Window]" /><Size value="{Width=787, Height=80}" /><SectionMargin value="50" /><PageBreakAfter value="False" /><CanGrow value="False" /><CanShrink value="False" /><Name value="ReportPageHeader" /><Location value="{X=0,Y=0}" /><controls><control type="SharpReport.ReportItems.ReportTextItem" basetype="SharpReportCore.BaseTextItem"><Location value="{X=0,Y=0}" /><Font value="Microsoft Sans Serif, 10pt" /><Text value="SharpReport1" /><FormatString value="" /><StringTrimming value="EllipsisCharacter" /><ContentAlignment value="MiddleLeft" /><DrawBorder value="False" /><ForeColor value="Color [ControlText]" /><Visible value="True" /><CanGrow value="False" /><CanShrink value="False" /><Name value="reportTextItem1" /><Size value="{Width=185, Height=24}" /><BackColor value="Color [White]" /></control><control type="SharpReport.ReportItems.ReportDataItem" basetype="SharpReportCore.BaseDataItem"><Size value="{Width=191, Height=24}" /><Location value="{X=267,Y=4}" /><Font value="Microsoft Sans Serif, 8.25pt" /><Text value="unbound" /><ColumnName value="unbound" /><DataType value="" /><BaseTableName value="" /><NullValue value="" /><FormatString value="" /><StringTrimming value="EllipsisCharacter" /><ContentAlignment value="MiddleLeft" /><DrawBorder value="False" /><ForeColor value="Color [ControlText]" /><Visible value="True" /><CanGrow value="False" /><CanShrink value="False" /><Name value="reportDbTextItem1" /><BackColor value="Color [White]" /></control></controls></section><section name="ReportDetail"><BackColor value="Color [Window]" /><Size value="{Width=787, Height=108}" /><SectionMargin value="50" /><PageBreakAfter value="False" /><CanGrow value="False" /><CanShrink value="False" /><Name value="ReportDetail" /><Location value="{X=0,Y=0}" /><controls /></section><section name="ReportPageFooter"><BackColor value="Color [Window]" /><Size value="{Width=787, Height=40}" /><SectionMargin value="50" /><PageBreakAfter value="False" /><CanGrow value="False" /><CanShrink value="False" /><Name value="ReportPageFooter" /><Location value="{X=0,Y=0}" /><controls><control type="SharpReport.ReportItems.Functions.PageNumber" basetype="SharpReportCore.BasePageNumber"><Size value="{Width=120, Height=20}" /><Location value="{X=0,Y=0}" /><Font value="Microsoft Sans Serif, 8.25pt" /><Text value="Seiten Nummer" /><LocalisedName value="SharpReport.Toolbar.Functions.PageNumber" /><FormatString value="" /><StringTrimming value="EllipsisCharacter" /><ContentAlignment value="MiddleLeft" /><DrawBorder value="False" /><ForeColor value="Color [ControlText]" /><Visible value="True" /><CanGrow value="False" /><CanShrink value="False" /><Name value="pageNumber1" /><BackColor value="Color [White]" /></control></controls></section><section name="ReportFooter"><BackColor value="Color [Window]" /><Size value="{Width=787, Height=40}" /><SectionMargin value="50" /><PageBreakAfter value="False" /><CanGrow value="False" /><CanShrink value="False" /><Name value="ReportFooter" /><Location value="{X=0,Y=0}" /><controls /></section></SharpReport>

17
src/AddIns/BackendBindings/VBNetBinding/Project/Src/MyNamespaceBuilder.cs

@ -22,7 +22,7 @@ namespace VBNetBinding @@ -22,7 +22,7 @@ namespace VBNetBinding
public static void BuildNamespace(IProject project, IProjectContent pc)
{
ICompilationUnit cu = new DefaultCompilationUnit(pc);
cu.FileName = "GeneratedMyNamespace.vb";
//cu.FileName = "GeneratedMyNamespace.vb"; // leave FileName null - fixes SD2-854
string ns;
if (project.RootNamespace == null || project.RootNamespace.Length == 0)
ns = "My";
@ -41,7 +41,7 @@ namespace VBNetBinding @@ -41,7 +41,7 @@ namespace VBNetBinding
}
DefaultClass c = new DefaultClass(cu, ns + ".MyProject");
c.ClassType = ClassType.Module;
c.Modifiers = ModifierEnum.Internal | ModifierEnum.Partial | ModifierEnum.Sealed;
c.Modifiers = ModifierEnum.Internal | ModifierEnum.Partial | ModifierEnum.Sealed | ModifierEnum.Synthetic;
c.Attributes.Add(new DefaultAttribute("Microsoft.VisualBasic.HideModuleNameAttribute"));
// we need to use GetClassReturnType instead of DefaultReturnType because we need
@ -72,7 +72,7 @@ namespace VBNetBinding @@ -72,7 +72,7 @@ namespace VBNetBinding
{
DefaultClass c = new DefaultClass(cu, ns + ".MyApplication");
c.ClassType = ClassType.Class;
c.Modifiers = ModifierEnum.Internal | ModifierEnum.Sealed | ModifierEnum.Partial;
c.Modifiers = ModifierEnum.Internal | ModifierEnum.Sealed | ModifierEnum.Partial | ModifierEnum.Synthetic;
c.Attributes.Add(new DefaultAttribute("Microsoft.VisualBasic.HideModuleNameAttribute"));
switch (project.OutputType) {
case OutputType.WinExe:
@ -97,7 +97,7 @@ namespace VBNetBinding @@ -97,7 +97,7 @@ namespace VBNetBinding
{
DefaultClass c = new DefaultClass(cu, ns + ".MyComputer");
c.ClassType = ClassType.Class;
c.Modifiers = ModifierEnum.Internal | ModifierEnum.Sealed | ModifierEnum.Partial;
c.Modifiers = ModifierEnum.Internal | ModifierEnum.Sealed | ModifierEnum.Partial | ModifierEnum.Synthetic;
c.Attributes.Add(new DefaultAttribute("Microsoft.VisualBasic.HideModuleNameAttribute"));
c.BaseTypes.Add(CreateBaseType(cu, "Microsoft.VisualBasic.Devices.Computer"));
return c;
@ -107,7 +107,7 @@ namespace VBNetBinding @@ -107,7 +107,7 @@ namespace VBNetBinding
{
DefaultClass c = new MyFormsClass(cu, ns + ".MyForms");
c.ClassType = ClassType.Class;
c.Modifiers = ModifierEnum.Internal | ModifierEnum.Sealed; //| ModifierEnum.Partial;
c.Modifiers = ModifierEnum.Internal | ModifierEnum.Sealed | ModifierEnum.Synthetic;
c.Attributes.Add(new DefaultAttribute("Microsoft.VisualBasic.HideModuleNameAttribute"));
return c;
}
@ -119,14 +119,11 @@ namespace VBNetBinding @@ -119,14 +119,11 @@ namespace VBNetBinding
public override List<IProperty> Properties {
get {
List<IProperty> properties = new List<IProperty>();
IProjectContent pc = ProjectContentRegistry.GetExistingProjectContent(new System.Reflection.AssemblyName("System.Windows.Forms"));
if (pc == null)
return properties;
IClass formClass = pc.GetClass("System.Windows.Forms.Form");
IClass formClass = this.ProjectContent.GetClass("System.Windows.Forms.Form");
if (formClass == null)
return properties;
foreach (IClass c in this.ProjectContent.Classes) {
if (c.BaseClass == formClass) {
if (c.IsTypeInInheritanceTree(formClass)) {
properties.Add(new DefaultProperty(c.Name,
new GetClassReturnType(this.ProjectContent, c.FullyQualifiedName, 0),
ModifierEnum.Public | ModifierEnum.Static,

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

@ -251,7 +251,7 @@ namespace ICSharpCode.FormsDesigner @@ -251,7 +251,7 @@ namespace ICSharpCode.FormsDesigner
} else if (e is FormsDesignerLoadException) {
errorText.Text = e.Message;
} else if (!designSurface.IsLoaded && designSurface.LoadErrors != null) {
errorText.Text = "Error loading designer:\r\n\r\n";
errorText.Text = StringParser.Parse("${res:ICSharpCode.SharpDevelop.FormDesigner.ErrorLoadingDesigner}\r\n\r\n");
foreach(Exception le in designSurface.LoadErrors) {
errorText.Text += le.ToString();
errorText.Text += "\r\n";
@ -263,7 +263,7 @@ namespace ICSharpCode.FormsDesigner @@ -263,7 +263,7 @@ namespace ICSharpCode.FormsDesigner
errorText.Dock = DockStyle.Fill;
p.Controls.Add(errorText);
Control title = new Label();
title.Text = "Failed to load designer. Check the source code for syntax errors and check if all references are available.";
title.Text = StringParser.Parse("${res:ICSharpCode.SharpDevelop.FormDesigner.LoadErrorCheckSourceCodeForErrors}");
title.Dock = DockStyle.Top;
p.Controls.Add(title);
}

54
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/ExceptionForm.cs

@ -28,19 +28,23 @@ namespace ICSharpCode.SharpDevelop.Services @@ -28,19 +28,23 @@ namespace ICSharpCode.SharpDevelop.Services
private ExceptionForm()
{
InitializeComponent();
this.Text = StringParser.Parse(this.Text);
buttonContinue.Text = StringParser.Parse(buttonContinue.Text);
buttonIgnore.Text = StringParser.Parse(buttonIgnore.Text);
buttonBreak.Text = StringParser.Parse(buttonBreak.Text);
}
public static Result Show(Debugger.Exception exception)
{
ExceptionForm form = new ExceptionForm();
form.textBox.Text = "Exception " +
exception.Type +
" was thrown in debugee:\r\n" +
exception.Message + "\r\n\r\n" +
exception.Callstack.Replace("\n","\r\n");
form.pictureBox.Image = ResourceService.GetBitmap((exception.ExceptionType != ExceptionType.DEBUG_EXCEPTION_UNHANDLED)?"Icons.32x32.Warning":"Icons.32x32.Error");
form.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm);
return form.result;
using (ExceptionForm form = new ExceptionForm()) {
form.textBox.Text =
ResourceService.GetString("MainWindow.Windows.Debug.ExceptionForm.Message").Replace("{0}", exception.Type) + "\r\n" +
exception.Message + "\r\n\r\n" +
exception.Callstack.Replace("\n","\r\n");
form.pictureBox.Image = ResourceService.GetBitmap((exception.ExceptionType != ExceptionType.DEBUG_EXCEPTION_UNHANDLED)?"Icons.32x32.Warning":"Icons.32x32.Error");
form.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm);
return form.result;
}
}
#region Windows Forms Designer generated code
@ -65,7 +69,7 @@ namespace ICSharpCode.SharpDevelop.Services @@ -65,7 +69,7 @@ namespace ICSharpCode.SharpDevelop.Services
this.buttonBreak.Name = "buttonBreak";
this.buttonBreak.Size = new System.Drawing.Size(91, 32);
this.buttonBreak.TabIndex = 0;
this.buttonBreak.Text = "Break";
this.buttonBreak.Text = "${res:XML.MainMenu.DebugMenu.Break}";
this.buttonBreak.Click += new System.EventHandler(this.buttonBreak_Click);
//
// pictureBox
@ -80,12 +84,12 @@ namespace ICSharpCode.SharpDevelop.Services @@ -80,12 +84,12 @@ namespace ICSharpCode.SharpDevelop.Services
// buttonIgnore
//
this.buttonIgnore.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
this.buttonIgnore.Enabled = true;
this.buttonIgnore.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.buttonIgnore.Location = new System.Drawing.Point(372, 160);
this.buttonIgnore.Name = "buttonIgnore";
this.buttonIgnore.Size = new System.Drawing.Size(91, 32);
this.buttonIgnore.TabIndex = 2;
this.buttonIgnore.Text = "Ignore";
this.buttonIgnore.Text = "${res:Global.IgnoreButtonText}";
this.buttonIgnore.Click += new System.EventHandler(this.buttonIgnore_Click);
//
// buttonContinue
@ -95,26 +99,26 @@ namespace ICSharpCode.SharpDevelop.Services @@ -95,26 +99,26 @@ namespace ICSharpCode.SharpDevelop.Services
this.buttonContinue.Name = "buttonContinue";
this.buttonContinue.Size = new System.Drawing.Size(91, 32);
this.buttonContinue.TabIndex = 1;
this.buttonContinue.Text = "Continue";
this.buttonContinue.Text = "${res:ICSharpCode.SharpDevelop.ExceptionBox.Continue}";
this.buttonContinue.Click += new System.EventHandler(this.buttonContinue_Click);
//
// label
// textBox
//
this.textBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.textBox.Location = new System.Drawing.Point(91, 16);
this.textBox.Name = "textBox";
this.textBox.Multiline = true;
this.textBox.WordWrap = false;
this.textBox.Name = "textBox";
this.textBox.ReadOnly = true;
this.textBox.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.textBox.Size = new System.Drawing.Size(528, 138);
this.textBox.TabIndex = 4;
this.textBox.Text = "";
this.textBox.ScrollBars = ScrollBars.Both;
this.textBox.WordWrap = false;
//
// ExceptionForm
//
this.CancelButton = this.buttonIgnore;
this.ClientSize = new System.Drawing.Size(638, 203);
this.Controls.Add(this.textBox);
this.Controls.Add(this.pictureBox);
@ -125,27 +129,27 @@ namespace ICSharpCode.SharpDevelop.Services @@ -125,27 +129,27 @@ namespace ICSharpCode.SharpDevelop.Services
this.MinimizeBox = false;
this.Name = "ExceptionForm";
this.ShowInTaskbar = false;
this.Text = "Exception";
this.Text = "${res:MainWindow.Windows.Debug.ExceptionHistory.Exception}";
this.TopMost = true;
((System.ComponentModel.ISupportInitialize)(this.pictureBox)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private void buttonBreak_Click(object sender, System.EventArgs e)
private void buttonBreak_Click(object sender, System.EventArgs e)
{
result = Result.Break;
Close();
}
private void buttonContinue_Click(object sender, System.EventArgs e)
private void buttonContinue_Click(object sender, System.EventArgs e)
{
result = Result.Continue;
Close();
}
private void buttonIgnore_Click(object sender, System.EventArgs e)
private void buttonIgnore_Click(object sender, System.EventArgs e)
{
result = Result.Ignore;
Close();

11
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/ExceptionForm.resx

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
@ -60,6 +60,7 @@ @@ -60,6 +60,7 @@
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
@ -71,6 +72,7 @@ @@ -71,6 +72,7 @@
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
@ -88,6 +90,7 @@ @@ -88,6 +90,7 @@
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
@ -109,9 +112,9 @@ @@ -109,9 +112,9 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
</root>

14
src/AddIns/Misc/SharpReport/SharpReport/SharpReportManager.cs

@ -100,7 +100,7 @@ namespace SharpReport{ @@ -100,7 +100,7 @@ namespace SharpReport{
} catch (Exception ) {
throw;
} finally {
System.Console.WriteLine("ReportManager:ReadColumnCollection in finally");
// System.Console.WriteLine("ReportManager:ReadColumnCollection in finally");
}
}
break;
@ -189,26 +189,31 @@ namespace SharpReport{ @@ -189,26 +189,31 @@ namespace SharpReport{
/// <param name="model"><see cref="">ReportModel</see></param>
/// <param name="showInUserControl"></param>
public void ReportPreview (ReportModel model,bool standAlone) {
System.Console.WriteLine("Manager:ReportPreview");
if (model == null) {
throw new ArgumentNullException("model");
}
try {
AbstractRenderer abstr = this.BuildStandartRenderer (model);
if (abstr != null) {
PreviewControl.ShowPreview (abstr,1.5,standAlone);
}
} catch (Exception ) {
throw;
} catch (Exception e) {
MessageService.ShowError (e,"SharpReportManager:ReportPreview");
}
}
private AbstractRenderer BuildStandartRenderer (ReportModel model) {
System.Console.WriteLine("Manager:BuildStandartRenderr");
if (model == null) {
throw new ArgumentNullException("model");
}
if (base.ConnectionObject == null) {
base.ConnectionObject = this.BuildConnectionObject(model.ReportSettings);
}
@ -240,7 +245,6 @@ namespace SharpReport{ @@ -240,7 +245,6 @@ namespace SharpReport{
try {
AbstractRenderer abstr = GetRendererForPushDataReports (model,dataSet);
if (abstr != null) {
PreviewControl.ShowPreview (abstr,1.5,standAlone);
}

7
src/AddIns/Misc/SharpReport/SharpReportAddin/SharpReportView.cs

@ -568,7 +568,12 @@ namespace SharpReportAddin{ @@ -568,7 +568,12 @@ namespace SharpReportAddin{
SharpReportView.DataSetFromFile());
} else {
renderer = reportManager.GetRendererForStandartReports(this.designerControl.ReportModel);
try {
renderer = reportManager.GetRendererForStandartReports(this.designerControl.ReportModel);
} catch (Exception e) {
MessageService.ShowError (e,"SharpReportManager:ReportPreview");
return null;
}
}
return renderer.ReportDocument;
}

27
src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseReportObject.cs

@ -33,8 +33,8 @@ namespace SharpReportCore { @@ -33,8 +33,8 @@ namespace SharpReportCore {
private bool visible = true;
private bool canGrow ;
private bool canShrink ;
private bool pageBreakBefore;
private bool pageBreakAfter;
private bool suspend;
private Size size;
private Point location;
@ -44,7 +44,9 @@ namespace SharpReportCore { @@ -44,7 +44,9 @@ namespace SharpReportCore {
#region SharpReportCore.IPropertyChange interface implementation
public event PropertyChangedEventHandler PropertyChanged;
#endregion
public BaseReportObject() {
@ -68,6 +70,7 @@ namespace SharpReportCore { @@ -68,6 +70,7 @@ namespace SharpReportCore {
}
#region properties
public virtual bool Visible {
get {
return visible;
@ -109,26 +112,6 @@ namespace SharpReportCore { @@ -109,26 +112,6 @@ namespace SharpReportCore {
}
}
public virtual bool PageBreakAfter {
get {
return pageBreakAfter;
}
set {
pageBreakAfter = value;
NotifyPropertyChanged ("PageBreakAfter");
}
}
public virtual bool PageBreakBefore {
get {
return pageBreakBefore;
}
set {
pageBreakBefore = value;
NotifyPropertyChanged ("PageBreakBefore");
}
}

52
src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseSection.cs

@ -21,47 +21,54 @@ namespace SharpReportCore { @@ -21,47 +21,54 @@ namespace SharpReportCore {
public class BaseSection : SharpReportCore.BaseReportObject {
private int sectionMargin;
// private bool pageBreakBefore;
private bool pageBreakAfter;
private ReportItemCollection items;
public event EventHandler<SectionPrintingEventArgs> SectionPrinting;
public event EventHandler<SectionPrintingEventArgs> SectionPrinted;
public event EventHandler<SectionEventArgs> SectionPrinting;
public event EventHandler<SectionEventArgs> SectionPrinted;
#region Constructors
public BaseSection(): base() {
this.Name = String.Empty;
base.Name = String.Empty;
}
public BaseSection (string sectionName) :base(){
this.Name = sectionName;
base.Name = sectionName;
}
#endregion
#region Rendering
public override void Render(ReportPageEventArgs rpea){
this.NotifyPrinting();
base.Render(rpea);
this.NotifyPrinted();
}
#region properties
public void NotifyPrinting () {
private void NotifyPrinting () {
if (this.SectionPrinting != null) {
SectionPrintingEventArgs ea = new SectionPrintingEventArgs (this);
SectionEventArgs ea = new SectionEventArgs (this);
SectionPrinting (this,ea);
}
}
}
public void NotifyPrinted () {
private void NotifyPrinted () {
if (this.SectionPrinted != null) {
SectionPrintingEventArgs ea = new SectionPrintingEventArgs (this);
SectionEventArgs ea = new SectionEventArgs (this);
SectionPrinted (this,ea);
}
}
#endregion
#region properties
public int SectionMargin {
get {
return this.sectionMargin;
@ -82,6 +89,29 @@ namespace SharpReportCore { @@ -82,6 +89,29 @@ namespace SharpReportCore {
return items;
}
}
/*
public virtual bool PageBreakBefore {
get {
return pageBreakBefore;
}
set {
pageBreakBefore = value;
NotifyPropertyChanged ("PageBreakBefore");
}
}
*/
public virtual bool PageBreakAfter {
get {
return pageBreakAfter;
}
set {
pageBreakAfter = value;
NotifyPropertyChanged ("PageBreakAfter");
}
}
#endregion
#region System.IDisposable interface implementation

6
src/AddIns/Misc/SharpReport/SharpReportCore/ConnectionObject.cs

@ -36,6 +36,9 @@ namespace SharpReportCore { @@ -36,6 +36,9 @@ namespace SharpReportCore {
}
public ConnectionObject( OleDbConnectionStringBuilder oleDbConnectionStringBuilder){
if (oleDbConnectionStringBuilder == null) {
throw new ArgumentNullException("oleDbConnectionStringBuilder");
}
this.oleDbConnectionStringBuilder = oleDbConnectionStringBuilder;
try {
this.connection = new OleDbConnection (this.oleDbConnectionStringBuilder.ConnectionString);
@ -45,6 +48,9 @@ namespace SharpReportCore { @@ -45,6 +48,9 @@ namespace SharpReportCore {
}
public ConnectionObject(IDbConnection connection){
if (connection == null) {
throw new ArgumentNullException("connection");
}
this.connection = connection;
this.connectionString = this.connection.ConnectionString;
}

97
src/AddIns/Misc/SharpReport/SharpReportCore/DataManager/DataManager.cs

@ -32,11 +32,8 @@ namespace SharpReportCore { @@ -32,11 +32,8 @@ namespace SharpReportCore {
ConnectionObject connectionObject;
IDbConnection connection;
IDataViewStrategy dataViewStrategy;
GroupSeperator groupSeperator;
public event EventHandler <ListChangedEventArgs> ListChanged;
// public event EventHandler <GroupChangedEventArgs> GroupChanged;
// public event EventHandler <EventArgs> GroupChanging;
/// <summary>
/// use this Constructor for PullDataReports
@ -53,16 +50,25 @@ namespace SharpReportCore { @@ -53,16 +50,25 @@ namespace SharpReportCore {
if (reportSettings == null) {
throw new ArgumentNullException("reportSettings");
}
try {
this.connectionObject = connectionObject;
CheckConnection (this.connectionObject);
CheckReportSettings(reportSettings);
CheckDataSource(this.FillDataSet().Tables[0]);
this.connectionObject = connectionObject;
CheckConnection (this.connectionObject);
CheckReportSettings(reportSettings);
CheckDataSource(this.FillDataSet().Tables[0]);
this.dataViewStrategy = new TableStrategy((DataTable)this.dataSource,
reportSettings);
this.dataViewStrategy.ListChanged += new EventHandler <ListChangedEventArgs> (NotifyListChanged);
this.dataViewStrategy = new TableStrategy((DataTable)this.dataSource,
reportSettings);
this.dataViewStrategy.ListChanged += new EventHandler <ListChangedEventArgs> (NotifyListChanged);
// this.dataViewStrategy.GroupChanged += new EventHandler<GroupChangedEventArgs> (OnGroupChange);
}
catch (Exception) {
throw;
} finally {
if (this.connectionObject.Connection.State == ConnectionState.Open) {
this.connectionObject.Connection.Close();
}
}
}
public DataManager(DataTable dataSource, ReportSettings reportSettings){
@ -118,11 +124,13 @@ namespace SharpReportCore { @@ -118,11 +124,13 @@ namespace SharpReportCore {
void CheckReportSettings(ReportSettings settings) {
try {
if (settings.DataModel != GlobalEnums.enmPushPullModel.PushData) {
SqlQueryChecker checker = new SqlQueryChecker();
checker.Check(settings.CommandText);
SqlQueryChecker.Check(settings.CommandText);
}
} catch (Exception) {
} catch (IllegalQueryException) {
throw;
}
catch (Exception) {
throw;
}
this.reportSettings = settings;
@ -199,16 +207,19 @@ namespace SharpReportCore { @@ -199,16 +207,19 @@ namespace SharpReportCore {
if (this.connection.State == ConnectionState.Closed) {
this.connection.Open();
}
OleDbCommand command = ((OleDbConnection)this.connection).CreateCommand();
command.CommandText = reportSettings.CommandText;
command.CommandType = reportSettings.CommandType;
// We have to check if there are parameters for this Query, if so
// add them to the command
CheckForAndBuildParams(command,reportSettings);
BuildQueryParameters(command,reportSettings);
OleDbDataAdapter adapter = new OleDbDataAdapter(command);
DataSet ds = new DataSet();
ds.Locale = CultureInfo.CurrentCulture;
adapter.Fill (ds);
return ds;
@ -222,7 +233,7 @@ namespace SharpReportCore { @@ -222,7 +233,7 @@ namespace SharpReportCore {
}
private static void CheckForAndBuildParams (OleDbCommand cmd,ReportSettings reportSettings) {
private static void BuildQueryParameters (OleDbCommand cmd,ReportSettings reportSettings) {
if (reportSettings.SqlParametersCollection != null && reportSettings.SqlParametersCollection.Count > 0) {
SqlParameter rpPar;
OleDbParameter oleDBPar = null;
@ -287,7 +298,6 @@ namespace SharpReportCore { @@ -287,7 +298,6 @@ namespace SharpReportCore {
}
private void OnGroupChange (object sender,GroupChangedEventArgs e) {
this.groupSeperator = e.GroupSeperator;
this.NotifyGroupChanging();
}
#endregion
@ -311,56 +321,7 @@ namespace SharpReportCore { @@ -311,56 +321,7 @@ namespace SharpReportCore {
return this.dataSource;
}
}
/*
public int CurrentRow {
get {
return this.dataViewStrategy.CurrentRow;
}
}
*/
/*
public int Count {
get {
return this.dataViewStrategy.Count;
}
}
*/
/*
public bool HasMoreData {
get {
if (this.dataViewStrategy.CurrentRow < this.dataViewStrategy.Count ){
return true;
} else {
return false;
}
}
}
*/
// public void Skip() {
// this.dataViewStrategy.CurrentRow ++;
// }
//
/*
public void FetchData(ReportItemCollection collection) {
foreach (IItemRenderer item in collection) {
this.dataViewStrategy.Fill(item);
}
this.NotifyGroupChanged();
}
*/
/*
/// <summary>
/// Indicate's if the current <see cref="GroupSeperator"></see> has ChildRows
/// </summary>
public bool HasChilds {
get {
return this.dataViewStrategy.HasChilds;
}
}
*/
/// <summary>
/// Returns a <see cref="SharpArrayList"></see>, be carefull, this list is only a Indexlist

33
src/AddIns/Misc/SharpReport/SharpReportCore/DataManager/SqlQueryChecker.cs

@ -11,44 +11,23 @@ using System; @@ -11,44 +11,23 @@ using System;
using System.Globalization;
using System.Windows.Forms;
namespace SharpReportCore
{
namespace SharpReportCore{
/// <summary>
/// This Class checks for invalid SqlStatements
/// </summary>
internal class SqlQueryChecker{
internal string UPDATE = "UPDATE";
internal string DELETE = "DELETE";
internal string INSERT = "INSERT";
internal string noValidMessage = "is no valid Member of SqlString";
internal string noValidMessage = "Query should start with 'Select'";
public SqlQueryChecker(){
private SqlQueryChecker () {
}
public void Check (string queryString) {
public static void Check (string queryString) {
if (!String.IsNullOrEmpty(queryString)) {
queryString = queryString.ToUpper(CultureInfo.CurrentCulture);
if (queryString.IndexOf (this.UPDATE) > -1) {
this.Invalid (this.UPDATE);
}
if (queryString.IndexOf(this.DELETE) > -1) {
this.Invalid (this.DELETE);
}
if (queryString.IndexOf(this.INSERT) > -1) {
this.Invalid (this.INSERT);
if (queryString.IndexOf("SELECT") < 0) {
throw new SharpReportCore.IllegalQueryException();
}
}
}
private void Invalid (string invalidArgument) {
string str = String.Format(CultureInfo.CurrentCulture,
"{0} {1}",invalidArgument,this.noValidMessage);
throw new SharpReportCore.SharpReportException(str);
}
}
}

4
src/AddIns/Misc/SharpReport/SharpReportCore/Events/PrintEventArgs.cs

@ -23,10 +23,10 @@ using System.Drawing; @@ -23,10 +23,10 @@ using System.Drawing;
namespace SharpReportCore {
public class SectionPrintingEventArgs : System.EventArgs {
public class SectionEventArgs : System.EventArgs {
BaseSection section;
public SectionPrintingEventArgs(BaseSection section){
public SectionEventArgs(BaseSection section){
this.section = section;
}

5
src/AddIns/Misc/SharpReport/SharpReportCore/Events/ReportPageEventArgs.cs

@ -30,6 +30,7 @@ namespace SharpReportCore { @@ -30,6 +30,7 @@ namespace SharpReportCore {
PrintPageEventArgs printEventArgs;
int pageNumber;
bool forceNewPage;
PointF locationAfterDraw;
public ReportPageEventArgs(PrintPageEventArgs e,
@ -49,6 +50,8 @@ namespace SharpReportCore { @@ -49,6 +50,8 @@ namespace SharpReportCore {
return pageNumber;
}
}
public PrintPageEventArgs PrintPageEventArgs {
get {
return printEventArgs;
@ -62,6 +65,8 @@ namespace SharpReportCore { @@ -62,6 +65,8 @@ namespace SharpReportCore {
forceNewPage = value;
}
}
public PointF LocationAfterDraw {
get {
return locationAfterDraw;

52
src/AddIns/Misc/SharpReport/SharpReportCore/Events/SectionRenderEventArgs.cs

@ -0,0 +1,52 @@ @@ -0,0 +1,52 @@
/*
* Created by SharpDevelop.
* User: Forstmeier Helmut
* Date: 20.06.2006
* Time: 13:07
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
namespace SharpReportCore {
/// <summary>
/// Description of SectionRenderEventArgs.
/// </summary>
public class SectionRenderEventArgs:SectionEventArgs{
private int pageNumber;
private int rowNumber;
private GlobalEnums.enmSection currentSection;
public SectionRenderEventArgs(BaseSection section,
int pageNumber,int rowNumber,
GlobalEnums.enmSection currentSection):base(section){
this.pageNumber = pageNumber;
this.currentSection = currentSection;
this.rowNumber = rowNumber;
}
public int PageNumber {
get {
return pageNumber;
}
}
public int RowNumber {
get {
return rowNumber;
}
}
public SharpReportCore.GlobalEnums.enmSection CurrentSection {
get {
return currentSection;
}
}
}
}

50
src/AddIns/Misc/SharpReport/SharpReportCore/Exceptions/IllegalQueryException.cs

@ -0,0 +1,50 @@ @@ -0,0 +1,50 @@
/*
* Created by SharpDevelop.
* User: Forstmeier Helmut
* Date: 15.06.2006
* Time: 17:53
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Runtime.Serialization;
namespace SharpReportCore
{
/// <summary>
/// IllegalQueryException is thrown when a QueryString contains other statements as
/// Select. So it should not happen do alter a Database while doing a Query with SharpReport
/// </summary>
public class IllegalQueryException: System.Exception{
private const string message = "Query should start with 'Select'";
string errorMessage;
public IllegalQueryException():base(message){
}
public IllegalQueryException(string errorMessage) :base (errorMessage){
this.errorMessage = errorMessage;
}
public IllegalQueryException(string errorMessage,
Exception exception):base (errorMessage,exception){
}
protected IllegalQueryException(SerializationInfo info,
StreamingContext context) : base(info, context){
// Implement type-specific serialization constructor logic.
}
public string ErrorMessage {
get {
if (String.IsNullOrEmpty(this.errorMessage)) {
return IllegalQueryException.message;
} else {
return this.errorMessage;
}
}
}
}
}

4
src/AddIns/Misc/SharpReport/SharpReportCore/Exceptions/SharpReportException.cs

@ -41,13 +41,11 @@ namespace SharpReportCore { @@ -41,13 +41,11 @@ namespace SharpReportCore {
StreamingContext context) : base(info, context){
// Implement type-specific serialization constructor logic.
}
public string ErrorMessage {
get {
return errorMessage;
}
set {
errorMessage = value;
}
}
}

53
src/AddIns/Misc/SharpReport/SharpReportCore/Printing/AbstractDataRenderer.cs

@ -9,15 +9,14 @@ @@ -9,15 +9,14 @@
using System;
using System.Drawing;
using System.Drawing.Printing;
namespace SharpReportCore{
/// <summary>
/// Description of AbstractDataRenderer.
/// </summary>
public class AbstractDataRenderer : AbstractRenderer{
DataManager dataManager;
DataNavigator navigator;
DataNavigator dataNavigator;
public AbstractDataRenderer(ReportModel model,DataManager dataManager):base(model){
if (dataManager == null) {
@ -26,22 +25,22 @@ namespace SharpReportCore{ @@ -26,22 +25,22 @@ namespace SharpReportCore{
this.dataManager = dataManager;
}
protected override void ReportBegin(object sender, ReportPageEventArgs e){
base.ReportBegin(sender, e);
#region overrides
protected override void ReportBegin(object sender, PrintEventArgs pea){
base.ReportBegin(sender, pea);
}
protected override void BeginPrintPage(object sender, ReportPageEventArgs e)
{
base.BeginPrintPage(sender, e);
protected override int RenderSection(ReportPageEventArgs rpea){
return 0;
}
protected override int RenderSection(BaseSection section, ReportPageEventArgs rpea){
bool hasContainer = false;
#endregion
protected int DoItems (ReportPageEventArgs rpea) {
IContainerItem container = null;
foreach (BaseReportItem item in section.Items) {
bool hasContainer = false;
foreach (BaseReportItem item in this.CurrentSection.Items) {
container = item as IContainerItem;
if (container != null) {
hasContainer = true;
@ -49,13 +48,13 @@ namespace SharpReportCore{ @@ -49,13 +48,13 @@ namespace SharpReportCore{
}
}
if (hasContainer) {
return DoContainerControl(section,container,rpea);
return DoContainerControl(this.CurrentSection,container,rpea);
} else {
return base.RenderSection(section, rpea);
return base.RenderSection(rpea);
}
}
private int DoContainerControl (BaseSection section,
IContainerItem container,
ReportPageEventArgs rpea) {
@ -95,23 +94,25 @@ namespace SharpReportCore{ @@ -95,23 +94,25 @@ namespace SharpReportCore{
}
protected DataNavigator DataNavigator{
get {return this.navigator;}
set {this.navigator = value;}
get {return this.dataNavigator;}
set {this.dataNavigator = value;}
}
#endregion
#region IDisposable
public override void Dispose()
{
if (this.dataManager != null) {
this.dataManager.Dispose();
this.dataManager = null;
}
if (this.navigator != null) {
this.navigator= null;
public new void Dispose(){
try {
if (this.dataManager != null) {
this.dataManager.Dispose();
this.dataManager = null;
}
if (this.dataNavigator != null) {
this.dataNavigator= null;
}
} finally {
base.Dispose();
}
base.Dispose();
}
#endregion
}

252
src/AddIns/Misc/SharpReport/SharpReportCore/Printing/AbstractRenderer.cs

@ -3,20 +3,7 @@ @@ -3,20 +3,7 @@
//
// Copyright (C) 2005 Peter Forstmeier
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// Peter Forstmeier (Peter.Forstmeier@t-online.de)
@ -51,8 +38,10 @@ namespace SharpReportCore { @@ -51,8 +38,10 @@ namespace SharpReportCore {
private Point detailEnds;
private DefaultFormatter defaultFormatter;
private bool cancel;
private bool cancel;
public event EventHandler<SectionRenderEventArgs> SectionRendering;
public event EventHandler<SectionRenderEventArgs> SectionRendered;
protected AbstractRenderer(ReportModel model){
if (model == null) {
@ -70,24 +59,107 @@ namespace SharpReportCore { @@ -70,24 +59,107 @@ namespace SharpReportCore {
void Init() {
reportDocument = new SharpReportCore.ReportDocument();
reportDocument.DocumentName = reportSettings.ReportName;
reportDocument.QueryPage += new QueryPageSettingsEventHandler (ReportQueryPage);
// Events from ReportDocument
reportDocument.QueryPageSettings += new QueryPageSettingsEventHandler (ReportQueryPage);
reportDocument.BeginPrint += new PrintEventHandler(ReportBegin);
reportDocument.EndPrint += new PrintEventHandler(ReportEnd);
reportDocument.ReportBegin += new EventHandler<ReportPageEventArgs> (ReportBegin);
reportDocument.PrintPageBegin += new EventHandler<ReportPageEventArgs>(BeginPrintPage);
reportDocument.PrintPageBodyStart += new EventHandler<ReportPageEventArgs> (PrintBodyStart);
reportDocument.PrintPageBodyEnd += new EventHandler<ReportPageEventArgs> (PrintBodyEnd);
reportDocument.PrintPageEnd += new EventHandler<ReportPageEventArgs> (PrintPageEnd);
reportDocument.DocumentName = reportSettings.ReportName;
// homemade events
reportDocument.PrintPageBodyStart += new EventHandler<ReportPageEventArgs> (BodyStart);
reportDocument.PrintPageBodyEnd += new EventHandler<ReportPageEventArgs> (OnBodyEnd);
//
reportDocument.RenderReportHeader += new EventHandler<ReportPageEventArgs> (PrintReportHeader);
reportDocument.RenderPageHeader += new EventHandler<ReportPageEventArgs> (PrintPageHeader);
reportDocument.RenderDetails += new EventHandler<ReportPageEventArgs> (PrintDetail);
reportDocument.RenderPageEnd += new EventHandler<ReportPageEventArgs> (PrintPageEnd);
reportDocument.RenderReportEnd += new EventHandler<ReportPageEventArgs> (PrintReportFooter);
}
#region Event handling for SectionRendering
protected void AddSectionEvents () {
this.CurrentSection.SectionPrinting += new EventHandler<SectionEventArgs>(OnSectionPrinting);
this.CurrentSection.SectionPrinted += new EventHandler<SectionEventArgs>(OnSectionPrinted);
}
protected void RemoveSectionEvents () {
this.CurrentSection.SectionPrinting -= new EventHandler<SectionEventArgs>(OnSectionPrinting);
this.CurrentSection.SectionPrinted -= new EventHandler<SectionEventArgs>(OnSectionPrinted);
}
private void OnSectionPrinting (object sender,SectionEventArgs e) {
if (this.SectionRendering != null) {
SectionRenderEventArgs ea = new SectionRenderEventArgs (e.Section,
this.reportDocument.PageNumber,0,
(GlobalEnums.enmSection)this.sectionInUse);
this.SectionRendering(this,ea);
}
}
private void OnSectionPrinted (object sender,SectionEventArgs e) {
if (this.SectionRendered != null) {
SectionRenderEventArgs ea = new SectionRenderEventArgs (e.Section,
this.reportDocument.PageNumber,0,
(GlobalEnums.enmSection)this.sectionInUse);
this.SectionRendered(this,ea);
}
}
#endregion
protected virtual void PrintReportHeader (object sender, ReportPageEventArgs e) {
SectionInUse = Convert.ToInt16(GlobalEnums.enmSection.ReportHeader,
CultureInfo.InvariantCulture);
this.AddSectionEvents();
}
protected void PageBreak(ReportPageEventArgs pea, BaseSection sec) {
protected virtual void PrintPageHeader (object sender, ReportPageEventArgs e) {
SectionInUse = Convert.ToInt16(GlobalEnums.enmSection.ReportPageHeader,
CultureInfo.InvariantCulture);
this.AddSectionEvents();
}
protected virtual void PrintDetail (object sender,ReportPageEventArgs rpea) {
SectionInUse = Convert.ToInt16(GlobalEnums.enmSection.ReportDetail,
CultureInfo.InvariantCulture);
this.AddSectionEvents();
// System.Console.WriteLine("\tAbstract - PrintDetail");
}
protected virtual void PrintPageEnd (object sender,ReportPageEventArgs rpea) {
SectionInUse = Convert.ToInt16(GlobalEnums.enmSection.ReportPageFooter,
CultureInfo.InvariantCulture);
// System.Console.WriteLine("\tAbstract:PrintPageEnd");
this.AddSectionEvents();
}
protected virtual void PrintReportFooter (object sender,ReportPageEventArgs rpea) {
SectionInUse = Convert.ToInt16(GlobalEnums.enmSection.ReportFooter,
CultureInfo.InvariantCulture);
// System.Console.WriteLine("\tAbstract:PrintReportFooter");
this.AddSectionEvents();
}
protected static void PageBreak(ReportPageEventArgs pea) {
if (pea == null) {
throw new ArgumentNullException("pea");
}
pea.PrintPageEventArgs.HasMorePages = true;
pea.ForceNewPage = true;
sec.PageBreakBefore = false;
}
protected bool CheckPageBreakAfter () {
if (this.CurrentSection.PageBreakAfter) {
return true;
}
return false;
}
protected int CalculateDrawAreaHeight(ReportPageEventArgs rpea){
if (rpea == null) {
throw new ArgumentNullException("rpea");
@ -108,38 +180,42 @@ namespace SharpReportCore { @@ -108,38 +180,42 @@ namespace SharpReportCore {
/// Use this function to draw controlling rectangles
/// </summary>
protected void DebugRectangle (ReportPageEventArgs rpea,Rectangle rectangle) {
protected static void DebugRectangle (ReportPageEventArgs rpea,Rectangle rectangle) {
if (rpea == null) {
throw new ArgumentNullException("rpea");
}
// System.Console.WriteLine("Debug Rectangle {0}",rectangle);
rpea.PrintPageEventArgs.Graphics.DrawRectangle (Pens.Black,rectangle);
}
/// <summary>
/// Calculates the rectangle wich can be used by Detail
/// </summary>
/// <returns></returns>
protected Rectangle DetailRectangle (ReportPageEventArgs e) {
sectionInUse = Convert.ToInt16(GlobalEnums.enmSection.ReportDetail,CultureInfo.InvariantCulture);
protected Rectangle DetailRectangle (ReportPageEventArgs rpea) {
if (rpea == null) {
throw new ArgumentNullException("rpea");
}
sectionInUse = Convert.ToInt16(GlobalEnums.enmSection.ReportDetail,
CultureInfo.InvariantCulture);
Rectangle rect = new Rectangle (e.PrintPageEventArgs.MarginBounds.Left,
CurrentSection.SectionOffset ,
e.PrintPageEventArgs.MarginBounds.Width,
Rectangle rect = new Rectangle (rpea.PrintPageEventArgs.MarginBounds.Left,
this.detailStart.Y ,
rpea.PrintPageEventArgs.MarginBounds.Width,
detailEnds.Y - detailStart.Y - (3 * gap));
return rect;
}
protected PointF MeasureReportHeader (ReportPageEventArgs e) {
protected PointF MeasureReportHeader (ReportPageEventArgs rpea) {
if (rpea == null) {
throw new ArgumentNullException("rpea");
}
PointF endAt = new PointF();
if (e.PageNumber == 1) {
if (rpea.PageNumber == 1) {
sectionInUse = Convert.ToInt16(GlobalEnums.enmSection.ReportHeader,
CultureInfo.InvariantCulture);
if (this.CurrentSection.Items.Count > 0) {
this.CurrentSection.SectionOffset = reportSettings.DefaultMargins.Top;
FitSectionToItems (this.CurrentSection,e);
FitSectionToItems (this.CurrentSection,rpea);
endAt = new PointF (0,
reportSettings.DefaultMargins.Top + this.CurrentSection.Size.Height + Gap);
} else {
@ -154,18 +230,20 @@ namespace SharpReportCore { @@ -154,18 +230,20 @@ namespace SharpReportCore {
///</summary>
/// <param name="startAt">Section start at this PointF</param>
/// <param name="e">ReportPageEventArgs</param>
protected PointF MeasurePageHeader (PointF startat,ReportPageEventArgs e) {
protected PointF MeasurePageHeader (PointF startat,ReportPageEventArgs rpea) {
if (rpea == null) {
throw new ArgumentNullException("rpea");
}
sectionInUse = Convert.ToInt16(GlobalEnums.enmSection.ReportPageHeader,
CultureInfo.InvariantCulture);
if (e.PageNumber == 1) {
if (rpea.PageNumber == 1) {
this.CurrentSection.SectionOffset = (int)startat.Y + Gap;
} else {
this.CurrentSection.SectionOffset = reportSettings.DefaultMargins.Top;
}
FitSectionToItems (this.CurrentSection,e);
FitSectionToItems (this.CurrentSection,rpea);
return new PointF (0,
this.CurrentSection.SectionOffset + this.CurrentSection.Size.Height + Gap);
}
@ -187,39 +265,36 @@ namespace SharpReportCore { @@ -187,39 +265,36 @@ namespace SharpReportCore {
return new PointF(0,this.CurrentSection.SectionOffset + this.CurrentSection.Size.Height);
}
protected virtual int RenderSection (BaseSection section,ReportPageEventArgs rpea) {
protected virtual int RenderSection (ReportPageEventArgs rpea) {
Point drawPoint = new Point(0,0);
if (section.Visible){
section.Render (rpea);
if (this.CurrentSection.Visible){
this.CurrentSection.Render (rpea);
foreach (BaseReportItem item in section.Items) {
foreach (BaseReportItem item in this.CurrentSection.Items) {
if (item.Parent == null) {
item.Parent = section;
item.Parent = this.CurrentSection;
}
item.SectionOffset = section.SectionOffset;
item.SectionOffset = this.CurrentSection.SectionOffset;
this.DrawSingleItem (rpea,item);
drawPoint.Y = section.SectionOffset + section.Size.Height;
rpea.LocationAfterDraw = new PointF (rpea.LocationAfterDraw.X,section.SectionOffset + section.Size.Height);
drawPoint.Y = this.CurrentSection.SectionOffset + this.CurrentSection.Size.Height;
rpea.LocationAfterDraw = new PointF (rpea.LocationAfterDraw.X,this.CurrentSection.SectionOffset + this.CurrentSection.Size.Height);
}
if ((section.CanGrow == false)&& (section.CanShrink == false)) {
return section.Size.Height;
if ((this.CurrentSection.CanGrow == false)&& (this.CurrentSection.CanShrink == false)) {
return this.CurrentSection.Size.Height;
}
return drawPoint.Y;
}
return drawPoint.Y;
}
protected void DrawSingleItem (ReportPageEventArgs rpea,BaseReportItem item){
item.SuspendLayout();
// System.Console.WriteLine("\tDrawSingleItem {0}",item.Name);
item.FormatOutput -= new EventHandler<FormatOutputEventArgs> (FormatBaseReportItem);
item.FormatOutput += new EventHandler<FormatOutputEventArgs> (FormatBaseReportItem);
item.Render(rpea);
@ -234,7 +309,6 @@ namespace SharpReportCore { @@ -234,7 +309,6 @@ namespace SharpReportCore {
if (!String.IsNullOrEmpty(baseDataItem.FormatString)) {
rpea.FormatedValue = defaultFormatter.FormatItem (baseDataItem);
// System.Console.WriteLine("\tFormated Value = {0}",rpea.FormatedValue);
} else {
rpea.FormatedValue = rpea.ValueToFormat;
}
@ -256,33 +330,32 @@ namespace SharpReportCore { @@ -256,33 +330,32 @@ namespace SharpReportCore {
section.Size.Height);
if ((section.CanGrow == true)||(section.CanShrink == true)) {
AdjustSection (section,rpea);
AbstractRenderer.AdjustSection (section,rpea);
} else {
AdjustItems (section,rpea);
AbstractRenderer.AdjustItems (section,rpea);
}
}
private void AdjustItems (BaseSection section,ReportPageEventArgs e){
private static void AdjustItems (BaseSection section,ReportPageEventArgs e){
int toFit = section.Size.Height;
foreach (BaseReportItem rItem in section.Items) {
if (!CheckItemInSection (section,rItem,e)){
if (!AbstractRenderer.CheckItemInSection (section,rItem,e)){
rItem.Size = new Size (rItem.Size.Width,
toFit - rItem.Location.Y);
}
}
}
private void AdjustSection (BaseSection section,ReportPageEventArgs e){
private static void AdjustSection (BaseSection section,ReportPageEventArgs e){
foreach (BaseReportItem rItem in section.Items) {
if (!CheckItemInSection (section,rItem,e)){
if (!AbstractRenderer.CheckItemInSection (section,rItem,e)){
SizeF size = MeasureReportItem (rItem,e);
SizeF size = AbstractRenderer.MeasureReportItem (rItem,e);
section.Size = new Size (section.Size.Width,
Convert.ToInt32(rItem.Location.Y + size.Height));
@ -292,9 +365,9 @@ namespace SharpReportCore { @@ -292,9 +365,9 @@ namespace SharpReportCore {
}
private bool CheckItemInSection (BaseSection section,BaseReportItem item ,ReportPageEventArgs e) {
private static bool CheckItemInSection (BaseSection section,BaseReportItem item ,ReportPageEventArgs e) {
Rectangle secRect = new Rectangle (0,0,section.Size.Width,section.Size.Height);
SizeF size = MeasureReportItem(item,e);
SizeF size = AbstractRenderer.MeasureReportItem(item,e);
Rectangle itemRect = new Rectangle (item.Location.X,
item.Location.Y,
(int)size.Width,
@ -305,12 +378,13 @@ namespace SharpReportCore { @@ -305,12 +378,13 @@ namespace SharpReportCore {
return false;
}
private SizeF MeasureReportItem(IItemRenderer item,
private static SizeF MeasureReportItem(IItemRenderer item,
ReportPageEventArgs e) {
SizeF sizeF = new SizeF ();
BaseTextItem myItem = item as BaseTextItem;
if (myItem != null) {
string str = String.Empty;
if (item is BaseTextItem) {
BaseTextItem it = item as BaseTextItem;
str = it.Text;
@ -318,7 +392,7 @@ namespace SharpReportCore { @@ -318,7 +392,7 @@ namespace SharpReportCore {
BaseDataItem it = item as BaseDataItem;
str = it.DbValue;
}
sizeF = e.PrintPageEventArgs.Graphics.MeasureString(str,
myItem.Font,
myItem.Size.Width,
@ -331,38 +405,38 @@ namespace SharpReportCore { @@ -331,38 +405,38 @@ namespace SharpReportCore {
}
#endregion
#region virtuals
protected virtual void ReportQueryPage (object sender,QueryPageSettingsEventArgs e) {
e.PageSettings.Margins = reportSettings.DefaultMargins;
protected virtual void ReportQueryPage (object sender,QueryPageSettingsEventArgs qpea) {
qpea.PageSettings.Margins = reportSettings.DefaultMargins;
}
protected virtual void ReportBegin (object sender,ReportPageEventArgs e) {
protected virtual void ReportBegin (object sender,PrintEventArgs pea) {
// System.Console.WriteLine("\tAbstract - ReportBegin");
}
protected virtual void BeginPrintPage (object sender,ReportPageEventArgs e) {
SectionInUse = Convert.ToInt16(GlobalEnums.enmSection.ReportPageHeader,CultureInfo.InvariantCulture);
}
protected virtual void PrintBodyStart (object sender,ReportPageEventArgs e) {
this.SectionInUse = Convert.ToInt16(GlobalEnums.enmSection.ReportDetail,
protected virtual void BodyStart (object sender,ReportPageEventArgs rpea) {
// System.Console.WriteLine("\tAbstract - PrintBodyStart");
this.SectionInUse = Convert.ToInt16(GlobalEnums.enmSection.ReportDetail,
CultureInfo.InvariantCulture);
}
protected virtual void PrintBodyEnd (object sender,ReportPageEventArgs e) {
}
protected virtual void PrintPageEnd (object sender,ReportPageEventArgs e) {
// BaseSection section = null;
// section = CurrentSection;
// section.SectionOffset = reportSettings.PageSettings.Bounds.Height - reportSettings.DefaultMargins.Top - reportSettings.DefaultMargins.Bottom;
// FitSectionToItems (section,e);
// RenderSection (section,e);
protected virtual void OnBodyEnd (object sender,ReportPageEventArgs rpea) {
// System.Console.WriteLine("\tAbstarct - PrintBodyEnd");
this.SectionInUse = Convert.ToInt16(GlobalEnums.enmSection.ReportFooter,
CultureInfo.InvariantCulture);
}
protected virtual void ReportEnd (object sender,PrintEventArgs e) {
// System.Console.WriteLine("\tAbstract - ReportEnd");
}
#endregion
@ -408,11 +482,12 @@ namespace SharpReportCore { @@ -408,11 +482,12 @@ namespace SharpReportCore {
}
}
protected int Gap {
protected static int Gap {
get {
return gap;
}
}
protected Point DetailEnds {
get {
return detailEnds;
@ -433,7 +508,8 @@ namespace SharpReportCore { @@ -433,7 +508,8 @@ namespace SharpReportCore {
#endregion
#region IDispoable
public virtual void Dispose(){
public void Dispose(){
System.Console.WriteLine("base:Dispose()");
if (this.reportDocument != null) {
this.reportDocument.Dispose();
}

12
src/AddIns/Misc/SharpReport/SharpReportCore/Printing/Formatter/AbstractFormatter.cs

@ -39,19 +39,17 @@ namespace SharpReportCore { @@ -39,19 +39,17 @@ namespace SharpReportCore {
}
protected bool CheckFormat (string format) {
if (format.Length > 0) {
return true;
} else {
if (String.IsNullOrEmpty(format)) {
return false;
}
}
return true;
}
protected bool CheckValue (string toFormat) {
if ((toFormat == null)||(toFormat.Length == 0) ) {
if (String.IsNullOrEmpty(toFormat)) {
return false;
} else {
return true;
}
return true;
}
}
}

2
src/AddIns/Misc/SharpReport/SharpReportCore/Printing/Formatter/DefaultFormatter.cs

@ -43,7 +43,7 @@ namespace SharpReportCore{ @@ -43,7 +43,7 @@ namespace SharpReportCore{
///<param name="item">A ReportDataItem</param>
///
public string FormatItem (BaseDataItem item) {
System.Console.WriteLine("FormatItem {0} / {1}",item.DataType,item.FormatString);
if (item == null) {
throw new ArgumentNullException("item");
}

5
src/AddIns/Misc/SharpReport/SharpReportCore/Printing/Graphics/BaseShape.cs

@ -33,11 +33,6 @@ namespace SharpReportCore { @@ -33,11 +33,6 @@ namespace SharpReportCore {
public abstract class BaseShape : object {
public BaseShape() {
}
public void FillShape (Graphics graphics, Brush brush,RectangleF rectangle) {
GraphicsPath path1 = this.CreatePath(rectangle);

6
src/AddIns/Misc/SharpReport/SharpReportCore/Printing/Graphics/Border.cs

@ -44,6 +44,9 @@ namespace SharpReportCore { @@ -44,6 +44,9 @@ namespace SharpReportCore {
}
public void DrawBorder (Graphics graphics, RectangleF rectangle) {
if (graphics == null) {
throw new ArgumentNullException("graphics");
}
using (Pen p = new Pen(baseLine.Color,baseLine.Thickness)) {
p.DashStyle = baseLine.DashStyle;
graphics.DrawRectangle (p,rectangle.Left,
@ -54,6 +57,9 @@ namespace SharpReportCore { @@ -54,6 +57,9 @@ namespace SharpReportCore {
}
public void DrawBorder (Graphics graphics, Rectangle rectangle ) {
if (graphics == null) {
throw new ArgumentNullException("graphics");
}
using (Pen p = new Pen(baseLine.Color,baseLine.Thickness)) {
p.DashStyle = baseLine.DashStyle;
graphics.DrawRectangle (p,rectangle);

253
src/AddIns/Misc/SharpReport/SharpReportCore/Printing/RenderDataReport.cs

@ -27,17 +27,17 @@ using System.Drawing; @@ -27,17 +27,17 @@ using System.Drawing;
using System.ComponentModel;
using System.Globalization;
using System.Drawing.Printing;
using SharpReportCore;
/// <summary>
/// Renderer for DataReports
/// </summary>
/// <remarks>
/// created by - Forstmeier Peter
/// created on - 13.12.2004 11:07:59
/// </remarks>
///
/// <summary>
/// Renderer for DataReports
/// </summary>
/// <remarks>
/// created by - Forstmeier Peter
/// created on - 13.12.2004 11:07:59
/// </remarks>
///
namespace SharpReportCore {
public class RenderDataReport : AbstractDataRenderer {
@ -49,17 +49,19 @@ namespace SharpReportCore { @@ -49,17 +49,19 @@ namespace SharpReportCore {
public RenderDataReport(ReportModel model,DataManager dataManager):base (model,dataManager){
// base.DataManager.GroupChanged += new EventHandler<GroupChangedEventArgs>(OnGroupChanged);
// base.DataManager.GroupChanging += new EventHandler <EventArgs> (OnGroupChanging);
}
void OnGroupChanged (object sender,GroupChangedEventArgs e) {
System.Console.WriteLine("OnGroupChanged");
System.Console.WriteLine("OnGroupChanged");
}
void OnGroupChanging (object sender, EventArgs e) {
System.Console.WriteLine("OnGroupChanging");
System.Console.WriteLine("OnGroupChanging");
}
private void OnListChanged (object sender,System.ComponentModel.ListChangedEventArgs e) {
@ -68,86 +70,93 @@ namespace SharpReportCore { @@ -68,86 +70,93 @@ namespace SharpReportCore {
// e.ListChangedType);
}
private void OnSectionPrinting (object sender,SectionPrintingEventArgs e) {
// System.Console.WriteLine("");
// System.Console.WriteLine("Begin Print <{0}> with <{1}> Items ",e.Section.Name,
// e.Section.Items.Count);
}
private void OnSectionPrinted (object sender,SectionPrintingEventArgs e) {
// System.Console.WriteLine("Section Printed <{0}> ",e.Section.Name);
}
private void AddSectionEvents () {
base.CurrentSection.SectionPrinting += new EventHandler<SectionPrintingEventArgs>(OnSectionPrinting);
base.CurrentSection.SectionPrinted += new EventHandler<SectionPrintingEventArgs>(OnSectionPrinted);
}
private void RemoveSectionEvents () {
base.CurrentSection.SectionPrinting -= new EventHandler<SectionPrintingEventArgs>(OnSectionPrinting);
base.CurrentSection.SectionPrinted -= new EventHandler<SectionPrintingEventArgs>(OnSectionPrinted);
}
#region overrides
#region Draw the different report Sections
private PointF DoReportHeader (ReportPageEventArgs rpea){
PointF endAt = base.MeasureReportHeader (rpea);
this.AddSectionEvents();
base.RenderSection (base.CurrentSection,rpea);
this.RemoveSectionEvents();
base.RenderSection (rpea);
base.DoItems(rpea);
if (base.CurrentSection.PageBreakAfter) {
base.PageBreak(rpea,base.CurrentSection);
base.CurrentSection.PageBreakAfter = false;
return new PointF();
}
return endAt;
}
private PointF DoPageHeader (PointF startAt,ReportPageEventArgs rpea){
PointF endAt = base.MeasurePageHeader (startAt,rpea);
this.AddSectionEvents();
base.RenderSection (base.CurrentSection,rpea);
this.RemoveSectionEvents();
base.RenderSection (rpea);
base.DoItems(rpea);
return endAt;
}
private void DoPageEnd (ReportPageEventArgs rpea){
// System.Console.WriteLine("\tDoPageEnd");
base.PrintPageEnd(this,rpea);
// System.Console.WriteLine("DataRenderer:DoPageEnd");
base.MeasurePageEnd (rpea);
this.AddSectionEvents();
base.RenderSection (base.CurrentSection,rpea);
this.RemoveSectionEvents();
base.RenderSection (rpea);
base.DoItems(rpea);
}
//TODO how should we handle ReportFooter, print it on an seperate page ????
private void DoReportFooter (PointF startAt,ReportPageEventArgs rpea){
// System.Console.WriteLine("DoReportFooter");
base.MeasureReportFooter(rpea);
this.AddSectionEvents();
base.RenderSection (base.CurrentSection,rpea);
this.RemoveSectionEvents();
base.RenderSection (rpea);
base.DoItems(rpea);
}
#endregion
#region test
protected override void PrintReportHeader (object sender, ReportPageEventArgs e) {
base.PrintReportHeader (sender,e);
this.currentPoint = DoReportHeader (e);
base.RemoveSectionEvents();
}
protected override void PrintPageHeader (object sender, ReportPageEventArgs e) {
base.PrintPageHeader (sender,e);
this.currentPoint = DoPageHeader (this.currentPoint,e);
base.DetailStart = new Point ((int)currentPoint.X,(int)currentPoint.Y +1);
base.RemoveSectionEvents();
}
protected override void PrintPageEnd(object sender, ReportPageEventArgs rpea) {
// System.Console.WriteLine("DataRenderer:PrintPageEnd");
base.PrintPageEnd(sender,rpea);
this.DoPageEnd (rpea);
base.RemoveSectionEvents();
}
protected override void PrintReportFooter(object sender, ReportPageEventArgs rpea){
System.Console.WriteLine("DataRenderer:PrintReportFooter");
base.PrintReportFooter(sender, rpea);
DoReportFooter (new PointF(0,base.CurrentSection.SectionOffset + base.CurrentSection.Size.Height),
rpea);
base.RemoveSectionEvents();
}
protected override void ReportEnd(object sender, PrintEventArgs e){
// System.Console.WriteLine("DataRenderer:ReportEnd");
base.ReportEnd(sender, e);
}
#endregion
#region overrides
protected override void ReportQueryPage(object sender, QueryPageSettingsEventArgs qpea) {
base.ReportQueryPage (sender,qpea);
}
protected override void ReportBegin(object sender, ReportPageEventArgs rpea) {
base.ReportBegin (sender,rpea);
protected override void ReportBegin(object sender, PrintEventArgs pea) {
// System.Console.WriteLine("");
// System.Console.WriteLine("ReportBegin (BeginPrint)");
base.ReportBegin (sender,pea);
base.DataManager.ListChanged += new EventHandler<ListChangedEventArgs> (OnListChanged);
dataNavigator = base.DataManager.GetNavigator;
dataNavigator.ListChanged += new EventHandler<ListChangedEventArgs> (OnListChanged);
@ -155,98 +164,88 @@ namespace SharpReportCore { @@ -155,98 +164,88 @@ namespace SharpReportCore {
base.DataNavigator = dataNavigator;
}
protected override void BeginPrintPage(object sender, ReportPageEventArgs rpea) {
// System.Console.WriteLine("!!! BeginPrintpage");
if (rpea == null) {
throw new ArgumentNullException("rpea");
}
base.BeginPrintPage (sender,rpea);
if (rpea.PageNumber == 1) {
//Draw ReportHeader
this.currentPoint = DoReportHeader (rpea);
}
//Draw Pageheader
this.currentPoint = DoPageHeader (this.currentPoint,rpea);
base.DetailStart = new Point ((int)currentPoint.X,(int)currentPoint.Y);
}
protected override void BodyStart(object sender, ReportPageEventArgs rpea) {
// System.Console.WriteLine("DataRenderer:PrintBodyStart");
base.BodyStart (sender,rpea);
this.currentPoint = new PointF (base.CurrentSection.Location.X,
this.DetailStart.Y);
protected override void PrintBodyStart(object sender, ReportPageEventArgs rpea) {
base.CurrentSection.SectionOffset = (int)this.DetailStart.Y + AbstractRenderer.Gap;
}
protected override void PrintDetail(object sender, ReportPageEventArgs rpea){
Rectangle sectionRect;
Rectangle detailRect;
base.PrintBodyStart (sender,rpea);
BaseSection section = base.CurrentSection;
section.SectionOffset = (int)this.currentPoint.Y + base.Gap;
detailRect = base.DetailRectangle (rpea);
//this is only for the first record, zhe other details will be calculated
sectionRect = new Rectangle (rpea.PrintPageEventArgs.MarginBounds.Left,
section.SectionOffset,
rpea.PrintPageEventArgs.MarginBounds.Width,
section.Size.Height);
// DebugRectangle (e,detailRect);
bool firstOnPage = true;
// System.Console.WriteLine("RenderDataReport:PrintDetail");
base.PrintDetail(sender, rpea);
// base.DebugRectangle(rpea,base.DetailRectangle(rpea));
// no loop if there is no data
if (! this.dataNavigator.HasMoreData ) {
rpea.PrintPageEventArgs.HasMorePages = false;
return;
}
// first element
if (rpea.PageNumber == 1) {
this.dataNavigator.MoveNext();
}
do {
this.dataNavigator.Fill (base.CurrentSection.Items);
while (this.dataNavigator.MoveNext()) {
this.dataNavigator.Fill (base.CurrentSection.Items);
base.RenderSection (section,rpea);
section.SectionOffset = section.SectionOffset + section.Size.Height + 2 * base.Gap;
base.RenderSection (rpea);
if (!firstOnPage) {
base.CurrentSection.SectionOffset = base.CurrentSection.SectionOffset + base.CurrentSection.Size.Height + 2 * AbstractRenderer.Gap;
}
base.FitSectionToItems (base.CurrentSection,rpea);
sectionRect = new Rectangle (rpea.PrintPageEventArgs.MarginBounds.Left,
section.SectionOffset,
base.CurrentSection.SectionOffset,
rpea.PrintPageEventArgs.MarginBounds.Width,
section.Size.Height);
base.CurrentSection.Size.Height);
if (!detailRect.Contains(sectionRect)) {
base.PageBreak(rpea,section);
if (!base.DetailRectangle(rpea).Contains(sectionRect)) {
AbstractRenderer.PageBreak(rpea);
return;
}
}
}
DoReportFooter (new PointF(0,section.SectionOffset + section.Size.Height),
rpea);
rpea.PrintPageEventArgs.HasMorePages = false;
int i = base.DoItems(rpea);
this.currentPoint = new PointF (base.CurrentSection.Location.X, i);
firstOnPage = false;
//Did we have a pagebreak
if (base.CurrentSection.PageBreakAfter) {
base.PageBreak(rpea,section);
base.CurrentSection.PageBreakAfter = false;
return;
if (this.dataNavigator.CurrentRow < this.dataNavigator.Count -1) {
if (base.CurrentSection.PageBreakAfter) {
AbstractRenderer.PageBreak(rpea);;
return;
}
}
}
while (this.dataNavigator.MoveNext());
this.RemoveSectionEvents();
}
protected override void PrintBodyEnd(object sender, ReportPageEventArgs rpea) {
// System.Console.WriteLine("PrintBodyEnd");
base.PrintBodyEnd (sender,rpea);
protected override void OnBodyEnd(object sender, ReportPageEventArgs rpea) {
// System.Console.WriteLine("PrintBodyEnd ????");
base.OnBodyEnd (sender,rpea);
// DoReportFooter (new PointF(0,base.CurrentSection.SectionOffset + base.CurrentSection.Size.Height),
// rpea);
rpea.PrintPageEventArgs.HasMorePages = false;
}
protected override void PrintPageEnd(object sender, ReportPageEventArgs rpea) {
System.Console.WriteLine("!! Page End");
this.DoPageEnd (rpea);
}
#endregion
public override string ToString() {
base.ToString();
return "RenderDataReport";

122
src/AddIns/Misc/SharpReport/SharpReportCore/Printing/RenderFormSheetReport.cs

@ -46,39 +46,14 @@ namespace SharpReportCore { @@ -46,39 +46,14 @@ namespace SharpReportCore {
}
private void OnSectionPrinting (object sender,SectionPrintingEventArgs e) {
System.Console.WriteLine("");
System.Console.WriteLine("Begin Print <{0}> with <{1}> Items ",e.Section.Name,
e.Section.Items.Count);
}
private void OnSectionPrinted (object sender,SectionPrintingEventArgs e) {
System.Console.WriteLine("Section Printed {0} ",e.Section.Name);
}
private void AddSectionEvents () {
base.CurrentSection.SectionPrinting += new EventHandler<SectionPrintingEventArgs>(OnSectionPrinting);
base.CurrentSection.SectionPrinted += new EventHandler<SectionPrintingEventArgs>(OnSectionPrinted);
}
private void RemoveSectionEvents () {
base.CurrentSection.SectionPrinting -= new EventHandler<SectionPrintingEventArgs>(OnSectionPrinting);
base.CurrentSection.SectionPrinted -= new EventHandler<SectionPrintingEventArgs>(OnSectionPrinted);
}
#region Draw the different report Sections
private PointF DoReportHeader (ReportPageEventArgs rpea){
PointF endAt = base.MeasureReportHeader (rpea);
base.RenderSection (rpea);
this.AddSectionEvents();
base.RenderSection (base.CurrentSection,rpea);
this.RemoveSectionEvents();
if (base.CurrentSection.PageBreakAfter) {
base.PageBreak(rpea,base.CurrentSection);
if (base.CheckPageBreakAfter()) {
AbstractRenderer.PageBreak(rpea);
base.CurrentSection.PageBreakAfter = false;
return new PointF();
}
@ -88,96 +63,57 @@ namespace SharpReportCore { @@ -88,96 +63,57 @@ namespace SharpReportCore {
private PointF DoPageHeader (PointF startAt,ReportPageEventArgs rpea){
PointF endAt = base.MeasurePageHeader (startAt,rpea);
this.AddSectionEvents();
base.RenderSection (base.CurrentSection,rpea);
this.RemoveSectionEvents();
base.RenderSection (rpea);
return endAt;
}
private void DoPageEnd (ReportPageEventArgs rpea){
base.PrintPageEnd(this,rpea);
base.MeasurePageEnd (rpea);
this.AddSectionEvents();
base.RenderSection (base.CurrentSection,rpea);
this.RemoveSectionEvents();
base.RenderSection (rpea);
}
//TODO how should we handle ReportFooter, print it on an seperate page ????
private void DoReportFooter (PointF startAt,ReportPageEventArgs rpea){
base.MeasureReportFooter(rpea);
this.AddSectionEvents();
base.RenderSection (base.CurrentSection,rpea);
base.RenderSection (rpea);
this.RemoveSectionEvents();
}
#endregion
#region event's
protected override void ReportQueryPage (object sender,QueryPageSettingsEventArgs qpea) {
base.ReportQueryPage (sender,qpea);
}
#region test
protected override void ReportBegin (object sender,ReportPageEventArgs rpea) {
base.ReportBegin (sender,rpea);
protected override void PrintReportHeader (object sender, ReportPageEventArgs e) {
base.PrintReportHeader (sender,e);
this.currentPoint = DoReportHeader (e);
}
/// <summary>
/// ReportHeader and if PageHeader
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
///
protected override void BeginPrintPage (object sender,ReportPageEventArgs rpea) {
if (rpea == null) {
throw new ArgumentNullException("rpea");
}
base.BeginPrintPage (sender,rpea);
//Draw ReportHeader
if (rpea.PageNumber == 1) {
//Draw ReportHeader
this.currentPoint = DoReportHeader (rpea);
}
if (base.CurrentSection.PageBreakAfter) {
base.PageBreak(rpea,base.CurrentSection);
base.CurrentSection.PageBreakAfter = false;
return;
}
//Draw Pageheader
this.currentPoint = DoPageHeader (this.currentPoint,rpea);
protected override void PrintPageHeader (object sender, ReportPageEventArgs e) {
base.PrintPageHeader (sender,e);
this.currentPoint = DoPageHeader (this.currentPoint,e);
base.DetailStart = new Point ((int)currentPoint.X,(int)currentPoint.Y);
}
#endregion
#region event's
/// <summary>
/// Detail Section
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected override void PrintBodyStart (object sender,ReportPageEventArgs rpea) {
base.PrintBodyStart (sender,rpea);
protected override void BodyStart (object sender,ReportPageEventArgs rpea) {
base.BodyStart (sender,rpea);
base.CurrentSection.SectionOffset = (int)this.currentPoint.Y + AbstractRenderer.Gap;
BaseSection section = base.CurrentSection;
section.SectionOffset = (int)this.currentPoint.Y + base.Gap;
Rectangle detailRect = base.DetailRectangle (rpea);
FitSectionToItems (section,rpea);
this.AddSectionEvents();
base.RenderSection (section,rpea);
this.RemoveSectionEvents();
FitSectionToItems (base.CurrentSection,rpea);
base.RenderSection (rpea);
}
/// <summary>
/// Print the PageFooter
@ -190,13 +126,17 @@ namespace SharpReportCore { @@ -190,13 +126,17 @@ namespace SharpReportCore {
protected override void PrintBodyEnd (object sender,ReportPageEventArgs rpea) {
base.PrintBodyEnd (sender,rpea);
protected override void OnBodyEnd (object sender,ReportPageEventArgs rpea) {
base.OnBodyEnd (sender,rpea);
this.DoReportFooter (new PointF(0,base.CurrentSection.SectionOffset + base.CurrentSection.Size.Height),
rpea);
}
protected override void ReportEnd(object sender, PrintEventArgs e){
base.ReportEnd(sender, e);
}
#endregion

134
src/AddIns/Misc/SharpReport/SharpReportCore/Printing/ReportDocument.cs

@ -5,7 +5,7 @@ using System; @@ -5,7 +5,7 @@ using System;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Printing;
using SharpReportCore;
/// <summary>
/// Derived from PrintDocument to have more control about printing
@ -14,46 +14,80 @@ using SharpReportCore; @@ -14,46 +14,80 @@ using SharpReportCore;
/// created by - Forstmeier Peter
/// created on - 21.11.2004 14:47:20
/// </remarks>
namespace SharpReportCore {
public class ReportDocument : PrintDocument {
public event QueryPageSettingsEventHandler QueryPage;
public event EventHandler<ReportPageEventArgs> ReportBegin;
public event EventHandler<ReportPageEventArgs> PrintPageBegin;
public event EventHandler<ReportPageEventArgs> PrintPageBodyStart;
public event EventHandler<ReportPageEventArgs> PrintPageBodyEnd;
public event EventHandler<ReportPageEventArgs> PrintPageEnd;
public event EventHandler<ReportPageEventArgs> ReportEnd;
int pageNr;
public event EventHandler<ReportPageEventArgs> RenderReportHeader;
public event EventHandler<ReportPageEventArgs> RenderPageHeader;
public event EventHandler<ReportPageEventArgs> RenderDetails;
public event EventHandler<ReportPageEventArgs> RenderPageEnd;
public event EventHandler<ReportPageEventArgs> RenderReportEnd;
int pageNumber;
public ReportDocument():base() {
base.BeginPrint += new PrintEventHandler (ReportDocumentBeginPrint);
base.PrintPage += new PrintPageEventHandler (ReportDocumentPrintPage);
}
#region overriede's
protected override void OnQueryPageSettings(QueryPageSettingsEventArgs e){
base.OnQueryPageSettings(e);
}
protected override void OnBeginPrint(PrintEventArgs e){
base.OnBeginPrint(e);
pageNumber = 0;
}
protected override void OnPrintPage(PrintPageEventArgs e){
base.OnPrintPage(e);
pageNumber ++;
ReportPageEventArgs pea = new ReportPageEventArgs (e,pageNumber,
false,new PointF (0,0));
GeneratePage (pea);
base.EndPrint += new PrintEventHandler (ReportDocumentEndPrint);
base.QueryPageSettings += new QueryPageSettingsEventHandler (ReportDocumentQueryPage);
if (pea.PrintPageEventArgs.HasMorePages == false) {
if (this.RenderReportEnd != null) {
this.RenderReportEnd(this,pea);
}
// this.OnEndPrint (new PrintEventArgs());
}
}
void GeneratePage (SharpReportCore.ReportPageEventArgs page) {
if (PrintPageBegin != null) {
PrintPageBegin (this,page);
protected override void OnEndPrint(PrintEventArgs e){
base.OnEndPrint(e);
}
#endregion
private void GeneratePage (SharpReportCore.ReportPageEventArgs page) {
if (this.pageNumber == 1) {
if (this.RenderReportHeader != null) {
this.RenderReportHeader(this,page);
}
}
if (page.ForceNewPage == true) {
page.PrintPageEventArgs.HasMorePages = true;
return;
if (this.RenderPageHeader != null) {
this.RenderPageHeader (this,page);
}
// print PageFooter before DetailSection
//so it's much easyer to calculate size of DetailSection
if (PrintPageEnd != null) {
PrintPageEnd (this,page);
if (RenderPageEnd != null) {
RenderPageEnd (this,page);
}
@ -61,56 +95,28 @@ namespace SharpReportCore { @@ -61,56 +95,28 @@ namespace SharpReportCore {
PrintPageBodyStart (this,page);
}
if (PrintPageBodyEnd != null) {
PrintPageBodyEnd (this,page);
}
}
#region events
//this events are also used by PrintPreviewControl
public void ReportDocumentBeginPrint (object sender,PrintEventArgs e) {
pageNr = 0;
}
public void ReportDocumentQueryPage (object sender, QueryPageSettingsEventArgs e) {
if (QueryPage != null) {
QueryPage (this,e);
}
}
public void ReportDocumentPrintPage (object sender, PrintPageEventArgs e) {
pageNr ++;
ReportPageEventArgs pea = new ReportPageEventArgs (e,pageNr,false,new PointF (0,0));
if (pageNr == 1) {
if (ReportBegin != null) {
ReportBegin (this,pea);
}
}
GeneratePage (pea);
if ((pea.ForceNewPage == true) && (pea.PrintPageEventArgs.HasMorePages == true)) {
pea.ForceNewPage = false;
return;
if (this.RenderDetails != null) {
this.RenderDetails(this,page);
}
if (pea.PrintPageEventArgs.HasMorePages == false) {
if (ReportEnd != null) {
ReportEnd (this,pea);
if (page.PrintPageEventArgs.HasMorePages == false) {
if (PrintPageBodyEnd != null) {
PrintPageBodyEnd (this,page);
}
}
}
public void ReportDocumentEndPrint (object sender,PrintEventArgs e) {
// System.Console.WriteLine("\tReportDocument EndPrint");
pageNr = 0;
if (ReportEnd != null) {
ReportEnd (this,null);
#region Property's
public int PageNumber {
get {
return pageNumber;
}
}
#endregion
#endregion
}
}

10
src/AddIns/Misc/SharpReport/SharpReportCore/ReportSettings.cs

@ -210,6 +210,9 @@ namespace SharpReportCore{ @@ -210,6 +210,9 @@ namespace SharpReportCore{
public void SetSettings(XmlElement xmlSettings) {
if (xmlSettings == null) {
throw new ArgumentNullException("xmlSettings");
}
XmlNodeList nodeList = xmlSettings.ChildNodes;
XmlFormReader xmlFormReader = new XmlFormReader();
base.InitDone = false;
@ -492,6 +495,7 @@ namespace SharpReportCore{ @@ -492,6 +495,7 @@ namespace SharpReportCore{
return reportType;
}
set {
System.Console.WriteLine("ReportType set to {0}",value);
if (reportType != value) {
reportType = value;
this.NotifyPropertyChanged("ReportType");
@ -622,6 +626,12 @@ namespace SharpReportCore{ @@ -622,6 +626,12 @@ namespace SharpReportCore{
set {
if (dataModel != value) {
dataModel = value;
System.Console.WriteLine("DataModel type = {0}",this.dataModel.ToString());
if (this.dataModel != GlobalEnums.enmPushPullModel.FormSheet) {
this.reportType = GlobalEnums.enmReportType.DataReport;
} else {
this.reportType = GlobalEnums.enmReportType.FormSheet;
}
this.NotifyPropertyChanged("DataModel");
}
}

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

@ -133,6 +133,8 @@ @@ -133,6 +133,8 @@
<Compile Include="Interfaces\IDataNavigator.cs" />
<Compile Include="Events\PrintEventArgs.cs" />
<Compile Include="BaseItems\TableItem.cs" />
<Compile Include="Exceptions\IllegalQueryException.cs" />
<Compile Include="Events\SectionRenderEventArgs.cs" />
</ItemGroup>
<ItemGroup>
<Folder Include="BaseItems" />

162
src/AddIns/Misc/SharpReport/SharpReportCore/SharpReportEngine.cs

@ -45,6 +45,16 @@ namespace SharpReportCore { @@ -45,6 +45,16 @@ namespace SharpReportCore {
public event EventHandler <SharpReportEventArgs> NoData;
public event EventHandler <SharpReportParametersEventArgs> ParametersRequest;
/// <summary>
/// This event is fired before a Section is Rendered, you can use
/// it to modify items to be printed
/// </summary>
public event EventHandler<SectionRenderEventArgs> SectionRendering;
/// <summary>
/// This event is fired after a section's output is done
/// </summary>
public event EventHandler<SectionRenderEventArgs> SectionRendered;
public SharpReportEngine() {
if (SharpReportCore.GlobalValues.IsValidPrinter() == false) {
@ -59,7 +69,7 @@ namespace SharpReportCore { @@ -59,7 +69,7 @@ namespace SharpReportCore {
if (model.ReportSettings.ReportType != GlobalEnums.enmReportType.FormSheet) {
if (this.connectionObject == null) {
if (model.ReportSettings.ConnectionString != "") {
if (!String.IsNullOrEmpty(model.ReportSettings.ConnectionString)) {
this.connectionObject = new ConnectionObject (model.ReportSettings.ConnectionString);
}
@ -93,7 +103,7 @@ namespace SharpReportCore { @@ -93,7 +103,7 @@ namespace SharpReportCore {
}
void SetSqlParameters (ReportModel model,AbstractParametersCollection sqlParams) {
private static void SetSqlParameters (ReportModel model,AbstractParametersCollection sqlParams) {
if ((sqlParams == null)||(sqlParams.Count == 0)) {
return;
}
@ -112,18 +122,6 @@ namespace SharpReportCore { @@ -112,18 +122,6 @@ namespace SharpReportCore {
}
private void ApplyReportParameters (ReportModel model,ReportParameters parameters){
if (model == null) {
throw new MissingModelException();
}
if (parameters == null ){
throw new ArgumentNullException("parameters");
}
SetSqlParameters (model,parameters.SqlParameters);
SetCustomSorting (model,parameters.SortColumnCollection);
}
#endregion
#region Setup for print/preview
@ -136,7 +134,7 @@ namespace SharpReportCore { @@ -136,7 +134,7 @@ namespace SharpReportCore {
}
private void InitDataContainer (ReportSettings settings) {
System.Console.WriteLine("Engine:InitDataContainer ReportType <{0}>",settings.ReportType);
if (settings.ReportType == GlobalEnums.enmReportType.DataReport) {
if (settings.CommandText != null) {
try {
@ -147,8 +145,6 @@ namespace SharpReportCore { @@ -147,8 +145,6 @@ namespace SharpReportCore {
settings);
this.dataManager.DataBind();
}else {
throw new NullReferenceException("SetupContainer:connectionObject is missing");
}
}
@ -183,52 +179,71 @@ namespace SharpReportCore { @@ -183,52 +179,71 @@ namespace SharpReportCore {
protected SharpReportCore.AbstractRenderer SetupStandartRenderer (ReportModel model) {
AbstractRenderer abstr = null;
switch (model.ReportSettings.ReportType) {
//FormSheets reports
case GlobalEnums.enmReportType.FormSheet:
abstr = new RendererFactory().Create (model,null);
break;
//Databased reports
case GlobalEnums.enmReportType.DataReport :
// DataManager dataManager = SetupDataContainer (model.ReportSettings);
InitDataContainer (model.ReportSettings);
if (this.dataManager != null) {
if (this.dataManager.DataSource != null) {
abstr = new RendererFactory().Create (model,dataManager);
}
} else {
if (NoData != null) {
SharpReportEventArgs e = new SharpReportEventArgs();
e.PageNumber = 0;
e.Cancel = false;
NoData (this,e);
if (e.Cancel == true) {
// If we cancel, we have to create an instance of any kind of renderer
//to set the cancel flag to true
abstr = new RendererFactory().Create (model,null);
abstr.Cancel = true;
} else {
// Print the report only as Formsheet -> only Text and Graphic Items
abstr = new RendererFactory().Create (model,null);
try {
switch (model.ReportSettings.ReportType) {
//FormSheets reports
case GlobalEnums.enmReportType.FormSheet:
abstr = new RendererFactory().Create (model,null);
break;
//Databased reports
case GlobalEnums.enmReportType.DataReport :
InitDataContainer (model.ReportSettings);
if (this.dataManager != null) {
if (this.dataManager.DataSource != null) {
abstr = new RendererFactory().Create (model,dataManager);
}
} else {
if (NoData != null) {
SharpReportEventArgs e = new SharpReportEventArgs();
e.PageNumber = 0;
e.Cancel = false;
NoData (this,e);
if (e.Cancel == true) {
// If we cancel, we have to create an instance of any kind of renderer
//to set the cancel flag to true
abstr = new RendererFactory().Create (model,null);
abstr.Cancel = true;
} else {
// Print the report only as Formsheet -> only Text and Graphic Items
abstr = new RendererFactory().Create (model,null);
}
}
}
}
break;
default:
throw new SharpReportException ("SharpReportmanager:SetupRenderer -> Unknown Reporttype");
break;
default:
throw new SharpReportException ("SharpReportmanager:SetupRenderer -> Unknown Reporttype");
}
abstr.SectionRendering += new EventHandler<SectionRenderEventArgs>(OnSectionPrinting);
abstr.SectionRendered +=new EventHandler<SectionRenderEventArgs>(OnSectionPrinted);
return abstr;
} catch (Exception) {
throw;
}
return abstr;
}
private void OnSectionPrinting (object sender,SectionRenderEventArgs e) {
if (this.SectionRendering != null) {
this.SectionRendering(this,e);
}
}
private void OnSectionPrinted (object sender,SectionRenderEventArgs e) {
if (this.SectionRendered != null) {
this.SectionRendered (this,e);
}
}
protected SharpReportCore.AbstractRenderer SetupPushDataRenderer (ReportModel model,
DataTable dataTable) {
if (model == null) {
throw new ArgumentNullException("model");
}
if (model.ReportSettings.ReportType != GlobalEnums.enmReportType.DataReport) {
throw new ArgumentException("SetupPushDataRenderer <No valid ReportModel>");
}
@ -265,8 +280,13 @@ namespace SharpReportCore { @@ -265,8 +280,13 @@ namespace SharpReportCore {
if (model == null) {
throw new MissingModelException();
}
AbstractRenderer abstr = SetupStandartRenderer(model);
return abstr;
try {
AbstractRenderer abstr = SetupStandartRenderer(model);
return abstr;
} catch (Exception) {
throw;
}
}
@ -305,7 +325,7 @@ namespace SharpReportCore { @@ -305,7 +325,7 @@ namespace SharpReportCore {
/// <param name="fileName">Path to ReportFile</param>
public void PreviewStandartReport (string fileName) {
if (fileName.Length == 0) {
if (String.IsNullOrEmpty(fileName)) {
throw new ArgumentNullException("fileName");
}
PreviewStandartReport (fileName,null);
@ -313,7 +333,8 @@ namespace SharpReportCore { @@ -313,7 +333,8 @@ namespace SharpReportCore {
public void PreviewStandartReport (string fileName,ReportParameters reportParameters) {
if (fileName.Length == 0) {
if (String.IsNullOrEmpty(fileName)) {
throw new ArgumentNullException("fileName");
}
@ -323,6 +344,10 @@ namespace SharpReportCore { @@ -323,6 +344,10 @@ namespace SharpReportCore {
model = ModelFromFile (fileName);
if (CheckReportParameters (model,reportParameters)) {
renderer = SetupStandartRenderer (model);
//
// renderer.SectionRendering += new EventHandler<SectionPrintingEventArgs>(OnTestPrinting);
// System.Console.WriteLine("Event should be set");
if (renderer != null) {
PreviewControl.ShowPreview(renderer,1.5,false);
}
@ -330,8 +355,10 @@ namespace SharpReportCore { @@ -330,8 +355,10 @@ namespace SharpReportCore {
} catch (Exception) {
throw;
}
}
/// <summary>
/// Preview a "PushModel - Report"
/// </summary>
@ -358,7 +385,7 @@ namespace SharpReportCore { @@ -358,7 +385,7 @@ namespace SharpReportCore {
PreviewControl.ShowPreview(renderer,1.5,false);
}
} catch (Exception) {
throw;
}
}
@ -366,16 +393,18 @@ namespace SharpReportCore { @@ -366,16 +393,18 @@ namespace SharpReportCore {
#region Printing
private void ReportToPrinter (AbstractRenderer renderer,ReportModel model) {
private static void ReportToPrinter (AbstractRenderer renderer,ReportModel model) {
if (renderer == null) {
throw new NullReferenceException("SparpReportEngine:ReportToPrinter: No valid Renderer");
throw new ArgumentNullException("renderer");
}
if (model == null) {
throw new ArgumentNullException("model");
}
PrintDocument doc = null;
if (renderer.Cancel == false) {
doc = renderer.ReportDocument;
using (PrintDialog dlg = new PrintDialog()) {
dlg.Document = doc;
// MessageBox.Show (model.ReportSettings.UseStandartPrinter.ToString());
if (model.ReportSettings.UseStandartPrinter == true) {
dlg.Document.Print();
} else {
@ -414,12 +443,13 @@ namespace SharpReportCore { @@ -414,12 +443,13 @@ namespace SharpReportCore {
model = ModelFromFile (fileName);
if (CheckReportParameters (model,reportParameters)) {
renderer = SetupStandartRenderer (model);
this.ReportToPrinter (renderer,model);
SharpReportEngine.ReportToPrinter (renderer,model);
}
} catch (Exception) {
throw;
}
}
/// <summary>
/// Print a PullModel Report
/// </summary>
@ -447,9 +477,10 @@ namespace SharpReportCore { @@ -447,9 +477,10 @@ namespace SharpReportCore {
}
renderer = SetupPushDataRenderer (model,dataTable);
this.ReportToPrinter(renderer,model);
SharpReportEngine.ReportToPrinter(renderer,model);
} catch (Exception) {
throw;
}
@ -462,7 +493,7 @@ namespace SharpReportCore { @@ -462,7 +493,7 @@ namespace SharpReportCore {
/// <param name="fileName"></param>
/// <param name="dataTable"></param>
public void PrintPushDataReport (string fileName,DataTable dataTable) {
if (fileName.Length == 0) {
if (String.IsNullOrEmpty(fileName)) {
throw new ArgumentNullException("fileName");
}
if (dataTable == null) {
@ -478,9 +509,10 @@ namespace SharpReportCore { @@ -478,9 +509,10 @@ namespace SharpReportCore {
}
renderer = this.SetupPushDataRenderer (model,dataTable);
this.ReportToPrinter(renderer,model);
SharpReportEngine.ReportToPrinter(renderer,model);
} catch (Exception) {
throw;
}
}

3
src/AddIns/Misc/SharpReport/SharpReportCore/Xml/XmlHelper.cs

@ -43,6 +43,9 @@ namespace SharpReportCore { @@ -43,6 +43,9 @@ namespace SharpReportCore {
/// <returns>"Report is SharpReport or not</returns>/returns>
///
public static bool IsSharpReport (XmlElement elem) {
if (elem == null) {
throw new ArgumentNullException("elem");
}
return (elem.Name.Equals (SharpReportCore.GlobalValues.SharpReportString));
}

71
src/AddIns/Misc/SharpReport/SharpReportWizard/WizardPanels/BaseSettingsPanel.cs

@ -8,6 +8,7 @@ @@ -8,6 +8,7 @@
*/
using System;
using System.ComponentModel;
using System.Drawing;
using System.Globalization;
using System.Windows.Forms;
@ -29,7 +30,7 @@ namespace ReportGenerator{ @@ -29,7 +30,7 @@ namespace ReportGenerator{
private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.TextBox txtReportName;
private System.Windows.Forms.ComboBox cboReportType;
// private System.Windows.Forms.ComboBox cboReportType;
private System.Windows.Forms.ComboBox cboGraphicsUnit;
private System.Windows.Forms.TextBox txtFileName;
private System.Windows.Forms.TextBox txtPath;
@ -40,6 +41,8 @@ namespace ReportGenerator{ @@ -40,6 +41,8 @@ namespace ReportGenerator{
private System.Windows.Forms.Label label4;
private System.Windows.Forms.RadioButton radioFormSheet;
private System.Windows.Forms.ErrorProvider errorProvider;
ReportGenerator generator;
Properties customizer;
@ -47,12 +50,24 @@ namespace ReportGenerator{ @@ -47,12 +50,24 @@ namespace ReportGenerator{
public BaseSettingsPanel(){
InitializeComponent();
Localise();
errorProvider = new ErrorProvider();
errorProvider.ContainerControl = this;
this.txtFileName.KeyUp += new KeyEventHandler(OnKeyUp);
Localise();
DoInit();
base.VisibleChanged += new EventHandler (ChangedEvent );
}
private void OnKeyUp (object sender,KeyEventArgs e) {
if (this.txtFileName.Text.Length == 0) {
this.errorProvider.SetError(this.txtFileName,"aaaaa");
this.EnableNext = false;
}else {
this.errorProvider.SetError(this.txtFileName,"");
}
}
private void Localise() {
this.radioFormSheet.Text = ResourceService.GetString("SharpReport.Wizard.BaseSettings.ReportModel.FormSheet");
@ -103,11 +118,8 @@ namespace ReportGenerator{ @@ -103,11 +118,8 @@ namespace ReportGenerator{
void DoInit(){
txtFileName.Text = GlobalValues.SharpReportPlainFileName;
txtReportName.Text = GlobalValues.SharpReportStandartFileName;
cboReportType.Items.AddRange(Enum.GetNames (typeof(GlobalEnums.enmReportType)));
cboReportType.SelectedIndex = cboReportType.FindString(GlobalEnums.enmReportType.DataReport.ToString());
cboGraphicsUnit.Items.Add (GraphicsUnit.Millimeter);
cboGraphicsUnit.Items.Add (GraphicsUnit.Inch);
this.cboGraphicsUnit.Items.AddRange(Enum.GetNames(typeof (GraphicsUnit)));
cboGraphicsUnit.SelectedIndex = cboGraphicsUnit.FindString(GraphicsUnit.Millimeter.ToString());
this.radioPullModell.Checked = true;
@ -115,15 +127,20 @@ namespace ReportGenerator{ @@ -115,15 +127,20 @@ namespace ReportGenerator{
}
void ChangedEvent(object sender, EventArgs e){
if (initDone) {
generator.ReportName = txtReportName.Text;
generator.FileName = txtFileName.Text;
if (!this.txtFileName.Text.EndsWith(GlobalValues.SharpReportExtension)){
generator.FileName = txtFileName.Text + GlobalValues.SharpReportExtension;
} else {
generator.FileName = txtFileName.Text;
}
generator.Path = this.txtPath.Text;
generator.GraphicsUnit = (GraphicsUnit)Enum.Parse(typeof(GraphicsUnit),this.cboGraphicsUnit.Text);
generator.GraphicsUnit = (GraphicsUnit)Enum.Parse(typeof(GraphicsUnit),
this.cboGraphicsUnit.Text);
SetSuccessor (this,new EventArgs());
}
}
@ -155,21 +172,16 @@ namespace ReportGenerator{ @@ -155,21 +172,16 @@ namespace ReportGenerator{
///<summary>Browse for Report Folder</summary>
void Button1Click(object sender, System.EventArgs e) {
try {
ICSharpCode.SharpDevelop.Gui.FolderDialog ff = new ICSharpCode.SharpDevelop.Gui.FolderDialog();
ff.DisplayDialog(String.Empty);
if (!String.IsNullOrEmpty(ff.Path)) {
if (!ff.Path.EndsWith(@"\")){
this.txtPath.Text = ff.Path + @"\";
} else {
this.txtPath.Text = ff.Path;
}
generator.Path = this.txtPath.Text;
ICSharpCode.SharpDevelop.Gui.FolderDialog ff = new ICSharpCode.SharpDevelop.Gui.FolderDialog();
ff.DisplayDialog(String.Empty);
if (!String.IsNullOrEmpty(ff.Path)) {
if (!ff.Path.EndsWith(@"\")){
this.txtPath.Text = ff.Path + @"\";
} else {
this.txtPath.Text = ff.Path;
}
} catch (Exception ) {
throw ;
generator.Path = this.txtPath.Text;
}
}
@ -190,7 +202,7 @@ namespace ReportGenerator{ @@ -190,7 +202,7 @@ namespace ReportGenerator{
this.txtPath = new System.Windows.Forms.TextBox();
this.txtFileName = new System.Windows.Forms.TextBox();
this.cboGraphicsUnit = new System.Windows.Forms.ComboBox();
this.cboReportType = new System.Windows.Forms.ComboBox();
// this.cboReportType = new System.Windows.Forms.ComboBox();
this.txtReportName = new System.Windows.Forms.TextBox();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.groupBox2 = new System.Windows.Forms.GroupBox();
@ -271,16 +283,19 @@ namespace ReportGenerator{ @@ -271,16 +283,19 @@ namespace ReportGenerator{
this.cboGraphicsUnit.Size = new System.Drawing.Size(248, 21);
this.cboGraphicsUnit.TabIndex = 17;
this.cboGraphicsUnit.TextChanged += new System.EventHandler(this.ChangedEvent);
this.cboGraphicsUnit.DropDownStyle = ComboBoxStyle.DropDownList;
//
// cboReportType
//
/*
this.cboReportType.Location = new System.Drawing.Point(112, 120);
this.cboReportType.Name = "cboReportType";
this.cboReportType.Size = new System.Drawing.Size(248, 21);
this.cboReportType.TabIndex = 16;
this.cboReportType.Visible = false;
this.cboReportType.SelectedIndexChanged += new System.EventHandler(this.ChangedEvent);
//
*/
//
// txtReportName
//
this.txtReportName.Location = new System.Drawing.Point(120, 40);
@ -295,7 +310,7 @@ namespace ReportGenerator{ @@ -295,7 +310,7 @@ namespace ReportGenerator{
this.groupBox1.Controls.Add(this.groupBox2);
this.groupBox1.Controls.Add(this.button1);
this.groupBox1.Controls.Add(this.cboGraphicsUnit);
this.groupBox1.Controls.Add(this.cboReportType);
// this.groupBox1.Controls.Add(this.cboReportType);
this.groupBox1.Controls.Add(this.label4);
this.groupBox1.Controls.Add(this.label3);
this.groupBox1.Controls.Add(this.txtPath);

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

@ -905,9 +905,10 @@ namespace ICSharpCode.TextEditor.Actions @@ -905,9 +905,10 @@ namespace ICSharpCode.TextEditor.Actions
{
public override void Execute(TextArea textArea)
{
if (textArea.TextView.Highlight != null) {
Point p1 = new Point(textArea.TextView.Highlight.CloseBrace.X + 1, textArea.TextView.Highlight.CloseBrace.Y);
Point p2 = new Point(textArea.TextView.Highlight.OpenBrace.X + 1, textArea.TextView.Highlight.OpenBrace.Y);
Highlight highlight = textArea.FindMatchingBracketHighlight();
if (highlight != null) {
Point p1 = new Point(highlight.CloseBrace.X + 1, highlight.CloseBrace.Y);
Point p2 = new Point(highlight.OpenBrace.X + 1, highlight.OpenBrace.Y);
if (p1 == textArea.Caret.Position) {
if (textArea.Document.TextEditorProperties.BracketMatchingStyle == BracketMatchingStyle.After) {
textArea.Caret.Position = p2;

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

@ -229,42 +229,39 @@ namespace ICSharpCode.TextEditor @@ -229,42 +229,39 @@ namespace ICSharpCode.TextEditor
textView.Highlight = null;
return;
}
bool changed = false;
if (caret.Offset == 0) {
if (textView.Highlight != null) {
int line = textView.Highlight.OpenBrace.Y;
int line2 = textView.Highlight.CloseBrace.Y;
textView.Highlight = null;
UpdateLine(line);
UpdateLine(line2);
}
return;
int oldLine1 = -1, oldLine2 = -1;
if (textView.Highlight != null && textView.Highlight.OpenBrace.Y >=0 && textView.Highlight.OpenBrace.Y < Document.TotalNumberOfLines) {
oldLine1 = textView.Highlight.OpenBrace.Y;
}
if (textView.Highlight != null && textView.Highlight.CloseBrace.Y >=0 && textView.Highlight.CloseBrace.Y < Document.TotalNumberOfLines) {
oldLine2 = textView.Highlight.CloseBrace.Y;
}
textView.Highlight = FindMatchingBracketHighlight();
if (oldLine1 >= 0)
UpdateLine(oldLine1);
if (oldLine2 >= 0 && oldLine2 != oldLine1)
UpdateLine(oldLine2);
if (textView.Highlight != null) {
int newLine1 = textView.Highlight.OpenBrace.Y;
int newLine2 = textView.Highlight.CloseBrace.Y;
if (newLine1 != oldLine1 && newLine1 != oldLine2)
UpdateLine(newLine1);
if (newLine2 != oldLine1 && newLine2 != oldLine2 && newLine2 != newLine1)
UpdateLine(newLine2);
}
}
public Highlight FindMatchingBracketHighlight()
{
if (Caret.Offset == 0)
return null;
foreach (BracketHighlightingSheme bracketsheme in bracketshemes) {
// if (bracketsheme.IsInside(textareapainter.Document, textareapainter.Document.Caret.Offset)) {
Highlight highlight = bracketsheme.GetHighlight(Document, Caret.Offset - 1);
if (textView.Highlight != null && textView.Highlight.OpenBrace.Y >=0 && textView.Highlight.OpenBrace.Y < Document.TotalNumberOfLines) {
UpdateLine(textView.Highlight.OpenBrace.Y);
}
if (textView.Highlight != null && textView.Highlight.CloseBrace.Y >=0 && textView.Highlight.CloseBrace.Y < Document.TotalNumberOfLines) {
UpdateLine(textView.Highlight.CloseBrace.Y);
}
textView.Highlight = highlight;
if (highlight != null) {
changed = true;
break;
}
// }
}
if (changed || textView.Highlight != null) {
int line = textView.Highlight.OpenBrace.Y;
int line2 = textView.Highlight.CloseBrace.Y;
if (!changed) {
textView.Highlight = null;
return highlight;
}
UpdateLine(line);
UpdateLine(line2);
}
return null;
}
public void SetDesiredColumn()

60
src/Libraries/NRefactory/Project/Src/Output/CSharp/CSharpOutputVisitor.cs

@ -468,7 +468,6 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -468,7 +468,6 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
#region Type level
public object Visit(FieldDeclaration fieldDeclaration, object data)
{
// TODO: use FieldDeclaration.GetTypeForField and VB.NET fields aren't that easy....
if (!fieldDeclaration.TypeReference.IsNull) {
VisitAttributes(fieldDeclaration.Attributes, data);
outputFormatter.Indent();
@ -479,13 +478,13 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -479,13 +478,13 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
outputFormatter.PrintToken(Tokens.Semicolon);
outputFormatter.NewLine();
} else {
foreach (VariableDeclaration varDecl in fieldDeclaration.Fields) {
for (int i = 0; i < fieldDeclaration.Fields.Count; i++) {
VisitAttributes(fieldDeclaration.Attributes, data);
outputFormatter.Indent();
OutputModifier(fieldDeclaration.Modifier);
nodeTracker.TrackedVisit(varDecl.TypeReference, data);
nodeTracker.TrackedVisit(fieldDeclaration.GetTypeForField(i), data);
outputFormatter.Space();
nodeTracker.TrackedVisit(varDecl, data);
nodeTracker.TrackedVisit(fieldDeclaration.Fields[i], data);
outputFormatter.PrintToken(Tokens.Semicolon);
outputFormatter.NewLine();
}
@ -868,7 +867,6 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -868,7 +867,6 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
if (blockStatement.IsNull) {
outputFormatter.PrintToken(Tokens.Semicolon);
outputFormatter.NewLine();
nodeTracker.EndNode(blockStatement);
} else {
outputFormatter.BeginBrace(braceStyle);
foreach (Statement stmt in blockStatement.Children) {
@ -877,9 +875,9 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -877,9 +875,9 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
if (!outputFormatter.LastCharacterIsNewLine)
outputFormatter.NewLine();
}
nodeTracker.EndNode(blockStatement);
outputFormatter.EndBrace();
}
nodeTracker.EndNode(blockStatement);
}
public object Visit(BlockStatement blockStatement, object data)
@ -999,7 +997,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -999,7 +997,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
outputFormatter.Indent();
}
OutputModifier(localVariableDeclaration.Modifier);
nodeTracker.TrackedVisit(localVariableDeclaration.GetTypeForVariable(i), data);
nodeTracker.TrackedVisit(localVariableDeclaration.GetTypeForVariable(i) ?? new TypeReference("object"), data);
outputFormatter.Space();
nodeTracker.TrackedVisit(v, data);
outputFormatter.PrintToken(Tokens.Semicolon);
@ -1240,6 +1238,30 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -1240,6 +1238,30 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
nodeTracker.TrackedVisit(caseLabel.Label, data);
}
outputFormatter.PrintToken(Tokens.Colon);
if (!caseLabel.ToExpression.IsNull) {
PrimitiveExpression pl = caseLabel.Label as PrimitiveExpression;
PrimitiveExpression pt = caseLabel.ToExpression as PrimitiveExpression;
if (pl != null && pt != null && pl.Value is int && pt.Value is int) {
int plv = (int)pl.Value;
int prv = (int)pt.Value;
if (plv < prv && plv + 12 > prv) {
for (int i = plv + 1; i <= prv; i++) {
outputFormatter.NewLine();
outputFormatter.Indent();
outputFormatter.PrintToken(Tokens.Case);
outputFormatter.Space();
outputFormatter.PrintText(i.ToString(NumberFormatInfo.InvariantInfo));
outputFormatter.PrintToken(Tokens.Colon);
}
} else {
outputFormatter.PrintText(" // TODO: to ");
nodeTracker.TrackedVisit(caseLabel.ToExpression, data);
}
} else {
outputFormatter.PrintText(" // TODO: to ");
nodeTracker.TrackedVisit(caseLabel.ToExpression, data);
}
}
outputFormatter.NewLine();
return null;
}
@ -1303,9 +1325,18 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -1303,9 +1325,18 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
if (doLoopStatement.ConditionType == ConditionType.Until) {
outputFormatter.PrintToken(Tokens.Not);
outputFormatter.PrintToken(Tokens.OpenParenthesis);
}
if (doLoopStatement.Condition.IsNull) {
outputFormatter.PrintToken(Tokens.True);
} else {
nodeTracker.TrackedVisit(doLoopStatement.Condition, null);
}
nodeTracker.TrackedVisit(doLoopStatement.Condition, null);
if (doLoopStatement.ConditionType == ConditionType.Until) {
outputFormatter.PrintToken(Tokens.CloseParenthesis);
}
outputFormatter.PrintToken(Tokens.CloseParenthesis);
}
@ -1321,11 +1352,10 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -1321,11 +1352,10 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
outputFormatter.PrintToken(Tokens.Do);
}
++outputFormatter.IndentationLevel;
WriteEmbeddedStatement(doLoopStatement.EmbeddedStatement);
--outputFormatter.IndentationLevel;
if (doLoopStatement.ConditionPosition == ConditionPosition.End) {
outputFormatter.Indent();
PrintLoopCheck(doLoopStatement);
outputFormatter.PrintToken(Tokens.Semicolon);
outputFormatter.NewLine();
@ -1495,7 +1525,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -1495,7 +1525,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
outputFormatter.PrintToken(Tokens.Break);
}
outputFormatter.PrintToken(Tokens.Semicolon);
outputFormatter.PrintText("// might not be correct. Was : Exit " + exitStatement.ExitType);
outputFormatter.PrintText(" // TODO: might not be correct. Was : Exit " + exitStatement.ExitType);
outputFormatter.NewLine();
return null;
}
@ -1503,6 +1533,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -1503,6 +1533,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
public object Visit(ForNextStatement forNextStatement, object data)
{
outputFormatter.PrintToken(Tokens.For);
outputFormatter.Space();
outputFormatter.PrintToken(Tokens.OpenParenthesis);
if (!forNextStatement.TypeReference.IsNull) {
nodeTracker.TrackedVisit(forNextStatement.TypeReference, data);
@ -1518,7 +1549,8 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -1518,7 +1549,8 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
outputFormatter.PrintIdentifier(forNextStatement.VariableName);
outputFormatter.Space();
PrimitiveExpression pe = forNextStatement.Step as PrimitiveExpression;
if (pe == null || !(pe.Value is int) || ((int)pe.Value) >= 0)
if ((pe == null || !(pe.Value is int) || ((int)pe.Value) >= 0)
&& !(forNextStatement.Step is UnaryOperatorExpression))
outputFormatter.PrintToken(Tokens.LessEqual);
else
outputFormatter.PrintToken(Tokens.GreaterEqual);
@ -1537,7 +1569,8 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -1537,7 +1569,8 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
}
outputFormatter.PrintToken(Tokens.CloseParenthesis);
return nodeTracker.TrackedVisit(forNextStatement.EmbeddedStatement, data);
WriteEmbeddedStatement(forNextStatement.EmbeddedStatement);
return null;
}
#endregion
@ -1989,6 +2022,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -1989,6 +2022,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
outputFormatter.PrintToken(Tokens.TimesAssign);
break;
case AssignmentOperatorType.Divide:
case AssignmentOperatorType.DivideInteger:
outputFormatter.PrintToken(Tokens.DivAssign);
break;
case AssignmentOperatorType.ShiftLeft:

6
src/Libraries/NRefactory/Project/Src/Output/CodeDOM/CodeDOMOutputVisitor.cs

@ -215,6 +215,10 @@ namespace ICSharpCode.NRefactory.Parser @@ -215,6 +215,10 @@ namespace ICSharpCode.NRefactory.Parser
}
TypeReference fieldType = fieldDeclaration.GetTypeForField(i);
if (fieldType.IsNull) {
fieldType = new TypeReference(typeDeclarations.Peek().Name);
}
CodeMemberField memberField = new CodeMemberField(ConvType(fieldType), field.Name);
memberField.Attributes = ConvMemberAttributes(fieldDeclaration.Modifier);
if (!field.Initializer.IsNull) {
@ -283,7 +287,7 @@ namespace ICSharpCode.NRefactory.Parser @@ -283,7 +287,7 @@ namespace ICSharpCode.NRefactory.Parser
CodeVariableDeclarationStatement declStmt = null;
for (int i = 0; i < localVariableDeclaration.Variables.Count; ++i) {
CodeTypeReference type = ConvType(localVariableDeclaration.GetTypeForVariable(i));
CodeTypeReference type = ConvType(localVariableDeclaration.GetTypeForVariable(i) ?? new TypeReference("object"));
VariableDeclaration var = (VariableDeclaration)localVariableDeclaration.Variables[i];
if (!var.Initializer.IsNull) {
declStmt = new CodeVariableDeclarationStatement(type,

72
src/Libraries/NRefactory/Project/Src/Output/VBNet/VBNetOutputVisitor.cs

@ -309,7 +309,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -309,7 +309,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
VisitAttributes(typeDeclaration.Attributes, data);
outputFormatter.Indent();
OutputModifier(typeDeclaration.Modifier);
OutputModifier(typeDeclaration.Modifier, true);
int typeToken = GetTypeToken(typeDeclaration);
outputFormatter.PrintToken(typeToken);
@ -330,13 +330,17 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -330,13 +330,17 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
}
outputFormatter.NewLine();
++outputFormatter.IndentationLevel;
if (typeDeclaration.BaseTypes != null && typeDeclaration.Type != ClassType.Enum) {
foreach (TypeReference baseTypeRef in typeDeclaration.BaseTypes) {
outputFormatter.Indent();
string baseType = baseTypeRef.Type;
bool baseTypeIsInterface = baseType.StartsWith("I") && (baseType.Length <= 1 || Char.IsUpper(baseType[1]));
if (baseType.IndexOf('.') >= 0) {
baseType = baseType.Substring(baseType.LastIndexOf('.') + 1);
}
bool baseTypeIsInterface = baseType.Length >= 2 && baseType[0] == 'I' && Char.IsUpper(baseType[1]);
if (!baseTypeIsInterface || typeDeclaration.Type == ClassType.Interface) {
outputFormatter.PrintToken(Tokens.Inherits);
@ -349,7 +353,6 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -349,7 +353,6 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
}
}
++outputFormatter.IndentationLevel;
TypeDeclaration oldType = currentType;
currentType = typeDeclaration;
@ -409,7 +412,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -409,7 +412,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
public object Visit(DelegateDeclaration delegateDeclaration, object data)
{
VisitAttributes(delegateDeclaration.Attributes, data);
OutputModifier(delegateDeclaration.Modifier);
OutputModifier(delegateDeclaration.Modifier, true);
outputFormatter.PrintToken(Tokens.Delegate);
outputFormatter.Space();
@ -485,6 +488,9 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -485,6 +488,9 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
if (fieldDeclaration.Modifier == Modifier.None) {
outputFormatter.PrintToken(Tokens.Private);
outputFormatter.Space();
} else if (fieldDeclaration.Modifier == Modifier.Dim) {
outputFormatter.PrintToken(Tokens.Dim);
outputFormatter.Space();
} else {
OutputModifier(fieldDeclaration.Modifier);
}
@ -500,14 +506,24 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -500,14 +506,24 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
public object Visit(VariableDeclaration variableDeclaration, object data)
{
outputFormatter.PrintIdentifier(variableDeclaration.Name);
outputFormatter.Space();
outputFormatter.PrintToken(Tokens.As);
outputFormatter.Space();
if (variableDeclaration.TypeReference.IsNull && currentVariableType != null) {
nodeTracker.TrackedVisit(currentVariableType, data);
} else {
nodeTracker.TrackedVisit(variableDeclaration.TypeReference, data);
TypeReference varType = currentVariableType;
if (varType != null && varType.IsNull)
varType = null;
if (varType == null && !variableDeclaration.TypeReference.IsNull)
varType = variableDeclaration.TypeReference;
if (varType != null) {
outputFormatter.Space();
outputFormatter.PrintToken(Tokens.As);
outputFormatter.Space();
ObjectCreateExpression init = variableDeclaration.Initializer as ObjectCreateExpression;
if (init != null && TypeReference.AreEqualReferences(init.CreateType, varType)) {
nodeTracker.TrackedVisit(variableDeclaration.Initializer, data);
return null;
} else {
nodeTracker.TrackedVisit(varType, data);
}
}
if (!variableDeclaration.Initializer.IsNull) {
@ -811,9 +827,10 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -811,9 +827,10 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
outputFormatter.NewLine();
if (!IsAbstract(methodDeclaration)) {
nodeTracker.BeginNode(methodDeclaration.Body);
++outputFormatter.IndentationLevel;
exitTokenStack.Push(isSub ? Tokens.Sub : Tokens.Function);
nodeTracker.TrackedVisit(methodDeclaration.Body, data);
methodDeclaration.Body.AcceptVisitor(this, data);
exitTokenStack.Pop();
--outputFormatter.IndentationLevel;
@ -826,6 +843,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -826,6 +843,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
outputFormatter.PrintToken(Tokens.Function);
}
outputFormatter.NewLine();
nodeTracker.EndNode(methodDeclaration.Body);
}
return null;
}
@ -1437,6 +1455,8 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -1437,6 +1455,8 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
exitTokenStack.Push(Tokens.Select);
outputFormatter.PrintToken(Tokens.Select);
outputFormatter.Space();
outputFormatter.PrintToken(Tokens.Case);
outputFormatter.Space();
nodeTracker.TrackedVisit(switchStatement.SwitchExpression, data);
outputFormatter.NewLine();
++outputFormatter.IndentationLevel;
@ -1593,7 +1613,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -1593,7 +1613,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
PrintIndentedBlock(doLoopStatement.EmbeddedStatement);
outputFormatter.Indent();
if (doLoopStatement.ConditionType == ConditionType.While) {
if (doLoopStatement.ConditionPosition == ConditionPosition.Start && doLoopStatement.ConditionType == ConditionType.While) {
outputFormatter.PrintToken(Tokens.End);
outputFormatter.Space();
outputFormatter.PrintToken(Tokens.While);
@ -1601,7 +1621,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -1601,7 +1621,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
outputFormatter.PrintToken(Tokens.Loop);
}
if (doLoopStatement.ConditionPosition == ConditionPosition.End) {
if (doLoopStatement.ConditionPosition == ConditionPosition.End && !doLoopStatement.Condition.IsNull) {
outputFormatter.Space();
switch (doLoopStatement.ConditionType) {
case ConditionType.While:
@ -2040,6 +2060,16 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -2040,6 +2060,16 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
outputFormatter.Space();
nodeTracker.TrackedVisit(binaryOperatorExpression.Right, data);
return null;
case BinaryOperatorType.NullCoalescing:
outputFormatter.PrintText("IIf(");
nodeTracker.TrackedVisit(binaryOperatorExpression.Left, data);
outputFormatter.PrintText(" Is Nothing, ");
nodeTracker.TrackedVisit(binaryOperatorExpression.Right, data);
outputFormatter.PrintToken(Tokens.Comma);
outputFormatter.Space();
nodeTracker.TrackedVisit(binaryOperatorExpression.Left, data);
outputFormatter.PrintToken(Tokens.CloseParenthesis);
return null;
case BinaryOperatorType.LessThan:
op = Tokens.LessThan;
break;
@ -2117,13 +2147,11 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -2117,13 +2147,11 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
case UnaryOperatorType.Minus:
outputFormatter.PrintToken(Tokens.Minus);
outputFormatter.Space();
nodeTracker.TrackedVisit(unaryOperatorExpression.Expression, data);
return null;
case UnaryOperatorType.Plus:
outputFormatter.PrintToken(Tokens.Plus);
outputFormatter.Space();
nodeTracker.TrackedVisit(unaryOperatorExpression.Expression, data);
return null;
@ -2144,7 +2172,10 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -2144,7 +2172,10 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
return null;
case UnaryOperatorType.Star:
outputFormatter.PrintToken(Tokens.Times);
break;
case UnaryOperatorType.BitWiseAnd:
outputFormatter.PrintToken(Tokens.AddressOf);
break;
}
throw new System.NotSupportedException();
@ -2514,6 +2545,11 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -2514,6 +2545,11 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
}
void OutputModifier(Modifier modifier)
{
OutputModifier(modifier, false);
}
void OutputModifier(Modifier modifier, bool forTypeDecl)
{
if ((modifier & Modifier.Public) == Modifier.Public) {
outputFormatter.PrintToken(Tokens.Public);
@ -2543,7 +2579,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -2543,7 +2579,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
outputFormatter.Space();
}
if ((modifier & Modifier.Abstract) == Modifier.Abstract) {
outputFormatter.PrintToken(Tokens.MustOverride);
outputFormatter.PrintToken(forTypeDecl ? Tokens.MustInherit : Tokens.MustOverride);
outputFormatter.Space();
}
if ((modifier & Modifier.Override) == Modifier.Override) {
@ -2558,7 +2594,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -2558,7 +2594,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
}
if ((modifier & Modifier.Sealed) == Modifier.Sealed) {
outputFormatter.PrintToken(Tokens.NotInheritable);
outputFormatter.PrintToken(forTypeDecl ? Tokens.NotInheritable : Tokens.NotOverridable);
outputFormatter.Space();
}

25
src/Libraries/NRefactory/Project/Src/Parser/AST/TypeReference.cs

@ -293,6 +293,29 @@ namespace ICSharpCode.NRefactory.Parser.AST @@ -293,6 +293,29 @@ namespace ICSharpCode.NRefactory.Parser.AST
}
return b.ToString();
}
public static bool AreEqualReferences(TypeReference a, TypeReference b)
{
if (a == b) return true;
if (a == null || b == null) return false;
if (a is InnerClassTypeReference) a = ((InnerClassTypeReference)a).CombineToNormalTypeReference();
if (b is InnerClassTypeReference) b = ((InnerClassTypeReference)b).CombineToNormalTypeReference();
if (a.systemType != b.systemType) return false;
if (a.pointerNestingLevel != b.pointerNestingLevel) return false;
if (a.IsArrayType != b.IsArrayType) return false;
if (a.IsArrayType) {
if (a.rankSpecifier.Length != b.rankSpecifier.Length) return false;
for (int i = 0; i < a.rankSpecifier.Length; i++) {
if (a.rankSpecifier[i] != b.rankSpecifier[i]) return false;
}
}
if (a.genericTypes.Count != b.genericTypes.Count) return false;
for (int i = 0; i < a.genericTypes.Count; i++) {
if (!AreEqualReferences(a.genericTypes[i], b.genericTypes[i]))
return false;
}
return true;
}
}
public class NullTypeReference : TypeReference
@ -305,7 +328,7 @@ namespace ICSharpCode.NRefactory.Parser.AST @@ -305,7 +328,7 @@ namespace ICSharpCode.NRefactory.Parser.AST
}
public override object AcceptVisitor(IAstVisitor visitor, object data)
{
return data;
return null;
}
public static NullTypeReference Instance {
get {

1079
src/Libraries/NRefactory/Project/Src/Parser/CSharp/Parser.cs

File diff suppressed because it is too large Load Diff

31
src/Libraries/NRefactory/Project/Src/Parser/CSharp/cs.ATG

@ -1715,8 +1715,6 @@ VariableInitializer<out Expression initializerExpression> @@ -1715,8 +1715,6 @@ VariableInitializer<out Expression initializerExpression>
Expr<out initializerExpression>
| ArrayInitializer<out initializerExpression>
| "stackalloc" Type<out type> "[" Expr<out expr> "]" (. initializerExpression = new StackAllocExpression(type, expr); .)
| /* workaround for coco bug? doesn't work in Expr production in this case. */
"default" "(" Type<out type> ")" (. initializerExpression = new DefaultValueExpression(type); .)
.
OverloadableOperator<out OverloadableOperatorType op>
@ -1890,7 +1888,7 @@ EmbeddedStatement<out Statement statement> @@ -1890,7 +1888,7 @@ EmbeddedStatement<out Statement statement>
} .)
| "switch" (. List<SwitchSection> switchSections = new List<SwitchSection>(); SwitchSection switchSection; .)
"(" Expr<out expr> ")"
"{" { SwitchSection<out switchSection> (. switchSections.Add(switchSection); .) }
"{" SwitchSections<switchSections>
"}" (. statement = new SwitchStatement(expr, switchSections); .)
/*--- iteration statements (while, do, for, foreach): */
| "while" "(" Expr<out expr> ")"
@ -1964,22 +1962,29 @@ ForIterator<out List<Statement> iterator> @@ -1964,22 +1962,29 @@ ForIterator<out List<Statement> iterator>
StatementExpr<out stmt> (. iterator.Add(stmt);.) { "," StatementExpr<out stmt> (. iterator.Add(stmt); .) }
.
SwitchSection<out SwitchSection stmt>
SwitchSections<List<SwitchSection> switchSections>
(.
SwitchSection switchSection = new SwitchSection();
CaseLabel label;
.)
=
SwitchLabel<out label> (. if (label != null) { switchSection.SwitchLabels.Add(label); } .)
(. compilationUnit.BlockStart(switchSection); .)
{
SwitchLabel<out label> (. if (label != null) { switchSection.SwitchLabels.Add(label); } .)
( SwitchLabel<out label>
(. if (label != null) {
if (switchSection.Children.Count > 0) {
// open new section
compilationUnit.BlockEnd(); switchSections.Add(switchSection);
switchSection = new SwitchSection();
compilationUnit.BlockStart(switchSection);
}
switchSection.SwitchLabels.Add(label);
}
.)
| Statement)
}
(. compilationUnit.BlockStart(switchSection); .)
Statement { Statement }
(.
compilationUnit.BlockEnd();
stmt = switchSection;
.)
(. compilationUnit.BlockEnd(); switchSections.Add(switchSection); .)
.
SwitchLabel<out CaseLabel label>
@ -2218,9 +2223,7 @@ PrimaryExpr<out Expression pexpr> @@ -2218,9 +2223,7 @@ PrimaryExpr<out Expression pexpr>
| TypeWithRestriction<out type, true, true>
) ")" (. pexpr = new TypeOfExpression(type); .)
| IF (la.kind == Tokens.Default && Peek(1).kind == Tokens.OpenParenthesis)
/* possible conflict with switch's default */
"default" "(" Type<out type> ")" (. pexpr = new DefaultValueExpression(type); .)
| "default" "(" Type<out type> ")" (. pexpr = new DefaultValueExpression(type); .)
| "sizeof" "(" Type<out type> ")" (. pexpr = new SizeOfExpression(type); .)
| "checked" "(" Expr<out expr> ")" (. pexpr = new CheckedExpression(expr); .)
| "unchecked" "(" Expr<out expr> ")" (. pexpr = new UncheckedExpression(expr); .)

2411
src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs

File diff suppressed because it is too large Load Diff

117
src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG

@ -19,12 +19,14 @@ public string ContainingAssembly @@ -19,12 +19,14 @@ public string ContainingAssembly
}
Token t
{
[System.Diagnostics.DebuggerStepThrough]
get {
return lexer.Token;
}
}
Token la
{
[System.Diagnostics.DebuggerStepThrough]
get {
return lexer.LookAhead;
}
@ -957,9 +959,10 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes> @@ -957,9 +959,10 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes>
Statement stmt = null;
List<VariableDeclaration> variableDeclarators = new List<VariableDeclaration>();
List<TemplateDefinition> templates = new List<TemplateDefinition>();
.)=
.)
=
NonModuleDeclaration<m, attributes>
| /* 9.2.1 */
| /* 9.2.1 */
"Sub"
(.
Point startPos = t.Location;
@ -1038,7 +1041,7 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes> @@ -1038,7 +1041,7 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes>
compilationUnit.AddChild(cd);
.)
)
|
|
/* 9.2.1 */
"Function"
(.
@ -1112,7 +1115,7 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes> @@ -1112,7 +1115,7 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes>
.)
EOL
)
|
|
/* 9.2.2. */
"Declare"
(.
@ -1152,7 +1155,7 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes> @@ -1152,7 +1155,7 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes>
compilationUnit.AddChild(declareDeclaration);
.)
)
|
|
/* 9. 4 */
"Event"
(.
@ -1176,14 +1179,15 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes> @@ -1176,14 +1179,15 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes>
compilationUnit.AddChild(eventDeclaration);
.)
EOL
| /* 9.6 */
| /* 9.6 */
(. Point startPos = t.Location; .)
(.
m.Check(Modifier.Fields);
FieldDeclaration fd = new FieldDeclaration(attributes, type, m.Modifier);
fd.StartLocation = m.GetDeclarationLocation(startPos);
.)
VariableDeclarator<variableDeclarators>
IdentifierForFieldDeclaration (. string name = t.val; .)
VariableDeclaratorPartAfterIdentifier<variableDeclarators, name>
{ "," VariableDeclarator<variableDeclarators> }
EOL
(.
@ -1210,7 +1214,7 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes> @@ -1210,7 +1214,7 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes>
fd.EndLocation = t.EndLocation;
compilationUnit.AddChild(fd);
.)
| /* 9.7 */
| /* 9.7 */
"Property"
(.
m.Check(Modifier.VBProperties);
@ -1261,7 +1265,7 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes> @@ -1261,7 +1265,7 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes>
compilationUnit.AddChild(pDecl);
.)
)
|
|
"Custom" (. Point startPos = t.Location; .) "Event"
(.
m.Check(Modifier.VBCustomEvents);
@ -1317,9 +1321,9 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes> @@ -1317,9 +1321,9 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes>
decl.RaiseRegion = raiseEventAccessorDeclaration;
compilationUnit.AddChild(decl);
.)
| (. ConversionType opConversionType = ConversionType.None; .)
[ "Widening" (. opConversionType = ConversionType.Implicit; .)
| "Narrowing" (. opConversionType = ConversionType.Explicit;.) ]
| (. ConversionType opConversionType = ConversionType.None; .)
[ "Widening" (. opConversionType = ConversionType.Implicit; .)
| "Narrowing" (. opConversionType = ConversionType.Explicit;.) ]
"Operator"
(.
m.Check(Modifier.VBOperators);
@ -1363,7 +1367,7 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes> @@ -1363,7 +1367,7 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes>
operatorDeclaration.Body.EndLocation = t.Location;
compilationUnit.AddChild(operatorDeclaration);
.)
.
.
OverloadableOperator<out OverloadableOperatorType operatorType>
(. operatorType = OverloadableOperatorType.None; .)
@ -1536,13 +1540,18 @@ ConstantDeclarator<List<VariableDeclaration> constantDeclaration> @@ -1536,13 +1540,18 @@ ConstantDeclarator<List<VariableDeclaration> constantDeclaration>
/* 9.6 */
VariableDeclarator<List<VariableDeclaration> fieldDeclaration>
=
Identifier (. string name = t.val; .)
VariableDeclaratorPartAfterIdentifier<fieldDeclaration, name>
.
VariableDeclaratorPartAfterIdentifier<List<VariableDeclaration> fieldDeclaration, string name>
(.
Expression expr = null;
TypeReference type = null;
ArrayList rank = null;
List<Expression> dimension = null;
.) =
Identifier (. string name = t.val; .)
[ IF(IsSize() && !IsDims()) ArrayInitializationModifier<out dimension> ]
[ IF(IsDims()) ArrayNameModifier<out rank> ]
(
@ -1770,7 +1779,7 @@ SimpleExpr<out Expression pexpr> @@ -1770,7 +1779,7 @@ SimpleExpr<out Expression pexpr>
| /* 11.4.2 */ "(" Expr<out expr> ")" (. pexpr = new ParenthesizedExpression(expr); .)
| /* 11.4.4 */ Identifier (. pexpr = new IdentifierExpression(t.val); .)
| (. string val = String.Empty; .)
PrimitiveTypeName<out val>
[ PrimitiveTypeName<out val> | "Object" (. val = "Object"; .) ]
"." (. t.val = ""; .) Identifier (. pexpr = new FieldReferenceExpression(new TypeReferenceExpression(val), t.val); .)
| "Me" (. pexpr = new ThisReferenceExpression(); .)
| (. Expression retExpr = null; .)
@ -2024,12 +2033,14 @@ ObjectCreateExpression<out Expression oce> @@ -2024,12 +2033,14 @@ ObjectCreateExpression<out Expression oce>
oce = null;
.) =
"New" NonArrayTypeName<out type, false>
["(" [ ArgumentList<out arguments> ] ")" ]
[ IF (la.kind == Tokens.OpenParenthesis)
ArrayTypeModifiers<out dimensions>
ArrayInitializer<out initializer>
| ArrayInitializer<out initializer> ]
["(" ArgumentList<out arguments> ")"
[ IF (la.kind == Tokens.OpenParenthesis)
ArrayTypeModifiers<out dimensions>
ArrayInitializer<out initializer>
| ArrayInitializer<out initializer> ]
]
(.
if (type == null) type = new TypeReference("Object"); // fallback type on parser errors
if (initializer == null) {
oce = new ObjectCreateExpression(type, arguments);
} else {
@ -2049,14 +2060,13 @@ ArgumentList<out List<Expression> arguments> @@ -2049,14 +2060,13 @@ ArgumentList<out List<Expression> arguments>
arguments = new List<Expression>();
Expression expr = null;
.) =
[
Argument<out expr> (. if (expr != null) { arguments.Add(expr); } .)
{
","
Argument<out expr> (. if (expr != null) { arguments.Add(expr); } .)
}
]
.
[ Argument<out expr> ]
{ "," (. arguments.Add(expr ?? Expression.Null); expr = null; .)
[ Argument<out expr> ]
(. if (expr == null) expr = Expression.Null; .)
}
(. if (expr != null) arguments.Add(expr); .)
.
/* Spec, 11.8 */
Argument<out Expression argumentexpr>
@ -2071,7 +2081,7 @@ Argument<out Expression argumentexpr> @@ -2071,7 +2081,7 @@ Argument<out Expression argumentexpr>
.)
|
Expr<out argumentexpr>
.
.
/* 7.1. */
TypeName<out TypeReference typeref>
@ -2664,27 +2674,17 @@ EmbeddedStatement<out Statement statement> @@ -2664,27 +2674,17 @@ EmbeddedStatement<out Statement statement>
statement = new StatementExpression(expr);
.)
| "Call" SimpleExpr<out expr> (. statement = new StatementExpression(expr); .)
| "Using" Identifier (.
string resourcename = t.val, typeName;
Statement resourceAquisition = null, block = null;
.) "As" (
"New" Qualident<out typeName>
(. List<Expression> initializer = null; .)
["(" [ ArgumentList<out initializer> ] ")" ]
(.
resourceAquisition = new LocalVariableDeclaration(new VariableDeclaration(resourcename, new ArrayInitializerExpression(initializer), new TypeReference(typeName)));
.) |
Qualident<out typeName> "=" Expr<out expr>
(.
resourceAquisition = new LocalVariableDeclaration(new VariableDeclaration(resourcename, expr, new TypeReference(typeName)));
.) )
| "Using"
(. LocalVariableDeclaration resourceAquisition = new LocalVariableDeclaration(Modifier.None); .)
(. Statement block; .)
VariableDeclarator<resourceAquisition.Variables>
{ ","
VariableDeclarator<resourceAquisition.Variables>
}
Block<out block>
"End" "Using"
(. statement = new UsingStatement(resourceAquisition, block); .)
.
.
/* 10.9.2 */
LoopControlVariable<out TypeReference type, out string name>
@ -2702,12 +2702,6 @@ LoopControlVariable<out TypeReference type, out string name> @@ -2702,12 +2702,6 @@ LoopControlVariable<out TypeReference type, out string name>
} else if (arrayModifiers != null) {
type.RankSpecifier = (int[])arrayModifiers.ToArray(typeof(int));
}
} else {
if (arrayModifiers != null) {
type = new TypeReference("Integer", (int[])arrayModifiers.ToArray(typeof(int)));
} else {
type = new TypeReference("Integer");
}
}
.)
.
@ -2927,13 +2921,28 @@ Identifier = @@ -2927,13 +2921,28 @@ Identifier =
| "Text"
| "Binary"
| "Compare"
| "Custom"
| "Assembly"
| "Ansi"
| "Auto"
| "Preserve"
| "Unicode"
| "Until"
.
.
IdentifierForFieldDeclaration =
ident
| "Text"
| "Binary"
| "Compare"
/*| "Custom" Custom is not valid for field declaration */
| "Assembly"
| "Ansi"
| "Auto"
| "Preserve"
| "Unicode"
| "Until"
.
/* 2.2 */

126
src/Libraries/NRefactory/Project/Src/Parser/Visitors/VBNetConstructsConvertVisitor.cs

@ -30,8 +30,6 @@ namespace ICSharpCode.NRefactory.Parser @@ -30,8 +30,6 @@ namespace ICSharpCode.NRefactory.Parser
// Override Finalize => Destructor
// IIF(cond, true, false) => ConditionalExpression
// Built-in methods => Prefix with class name
// The following conversions should be implemented in the future:
// Function A() \n A = SomeValue \n End Function -> convert to return statement
Dictionary<string, string> usings;
@ -192,17 +190,125 @@ namespace ICSharpCode.NRefactory.Parser @@ -192,17 +190,125 @@ namespace ICSharpCode.NRefactory.Parser
}
}
if (methodDeclaration.TypeReference.SystemType != "System.Void" && methodDeclaration.Body.Children.Count > 0) {
if (IsAssignmentTo(methodDeclaration.Body.Children[methodDeclaration.Body.Children.Count - 1], methodDeclaration.Name))
{
ReturnStatement rs = new ReturnStatement(GetAssignmentFromStatement(methodDeclaration.Body.Children[methodDeclaration.Body.Children.Count - 1]).Right);
methodDeclaration.Body.Children.RemoveAt(methodDeclaration.Body.Children.Count - 1);
methodDeclaration.Body.AddChild(rs);
} else {
methodDeclaration.Body.AcceptVisitor(new ReturnStatementForFunctionAssignment(methodDeclaration.Name), null);
Expression init;
switch (methodDeclaration.TypeReference.SystemType) {
case "System.Int16":
case "System.Int32":
case "System.Int64":
case "System.Byte":
case "System.UInt16":
case "System.UInt32":
case "System.UInt64":
init = new PrimitiveExpression(0, "0");
break;
case "System.Boolean":
init = new PrimitiveExpression(false, "false");
break;
default:
init = new PrimitiveExpression(null, "null");
break;
}
methodDeclaration.Body.Children.Insert(0, new LocalVariableDeclaration(new VariableDeclaration(FunctionReturnValueName, init, methodDeclaration.TypeReference)));
methodDeclaration.Body.Children[0].Parent = methodDeclaration.Body;
methodDeclaration.Body.AddChild(new ReturnStatement(new IdentifierExpression(FunctionReturnValueName)));
}
}
return base.Visit(methodDeclaration, data);
}
public const string FunctionReturnValueName = "functionReturnValue";
static AssignmentExpression GetAssignmentFromStatement(INode statement)
{
StatementExpression se = statement as StatementExpression;
if (se == null) return null;
return se.Expression as AssignmentExpression;
}
static bool IsAssignmentTo(INode statement, string varName)
{
AssignmentExpression ass = GetAssignmentFromStatement(statement);
if (ass == null) return false;
IdentifierExpression ident = ass.Left as IdentifierExpression;
if (ident == null) return false;
return ident.Identifier.Equals(varName, StringComparison.InvariantCultureIgnoreCase);
}
#region Create return statement for assignment to function name
class ReturnStatementForFunctionAssignment : AbstractAstTransformer
{
string functionName;
public ReturnStatementForFunctionAssignment(string functionName)
{
this.functionName = functionName;
}
public override object Visit(AssignmentExpression assignmentExpression, object data)
{
IdentifierExpression ident = assignmentExpression.Left as IdentifierExpression;
if (ident != null) {
if (ident.Identifier.Equals(functionName, StringComparison.InvariantCultureIgnoreCase)) {
ident.Identifier = FunctionReturnValueName;
}
}
return base.Visit(assignmentExpression, data);
}
}
#endregion
public override object Visit(FieldDeclaration fieldDeclaration, object data)
{
fieldDeclaration.Modifier &= ~Modifier.Dim; // remove "Dim" flag
return base.Visit(fieldDeclaration, data);
}
public override object Visit(PropertyDeclaration propertyDeclaration, object data)
{
if ((propertyDeclaration.Modifier & Modifier.Visibility) == 0)
propertyDeclaration.Modifier = Modifier.Public;
if (propertyDeclaration.HasSetRegion) {
string from = "Value";
if (propertyDeclaration.SetRegion.Parameters.Count > 0) {
ParameterDeclarationExpression p = propertyDeclaration.SetRegion.Parameters[0];
from = p.ParameterName;
p.ParameterName = "Value";
}
propertyDeclaration.SetRegion.AcceptVisitor(new RenameIdentifierVisitor(from, "value"), null);
}
return base.Visit(propertyDeclaration, data);
}
class RenameIdentifierVisitor : AbstractAstVisitor
{
string from, to;
public RenameIdentifierVisitor(string from, string to)
{
this.from = from;
this.to = to;
}
public override object Visit(IdentifierExpression identifierExpression, object data)
{
if (string.Equals(identifierExpression.Identifier, from, StringComparison.InvariantCultureIgnoreCase)) {
identifierExpression.Identifier = to;
}
return base.Visit(identifierExpression, data);
}
}
static volatile Dictionary<string, Expression> constantTable;
static volatile Dictionary<string, Expression> methodTable;
@ -288,5 +394,21 @@ namespace ICSharpCode.NRefactory.Parser @@ -288,5 +394,21 @@ namespace ICSharpCode.NRefactory.Parser
}
return null;
}
public override object Visit(UsingStatement usingStatement, object data)
{
LocalVariableDeclaration lvd = usingStatement.ResourceAcquisition as LocalVariableDeclaration;
if (lvd != null && lvd.Variables.Count > 1) {
usingStatement.ResourceAcquisition = new LocalVariableDeclaration(lvd.Variables[0]);
for (int i = 1; i < lvd.Variables.Count; i++) {
UsingStatement n = new UsingStatement(new LocalVariableDeclaration(lvd.Variables[i]),
usingStatement.EmbeddedStatement);
usingStatement.EmbeddedStatement = new BlockStatement();
usingStatement.EmbeddedStatement.AddChild(n);
usingStatement = n;
}
}
return base.Visit(usingStatement, data);
}
}
}

20
src/Libraries/NRefactory/Test/General/UnitTest.cs

@ -29,11 +29,29 @@ namespace ICSharpCode.NRefactory.Tests @@ -29,11 +29,29 @@ namespace ICSharpCode.NRefactory.Tests
}
}
[Test]
public void TestUnitTests()
{
Type[] allTypes = typeof(StructuralTest).Assembly.GetTypes();
foreach (Type type in allTypes) {
if (type.GetCustomAttributes(typeof(TestFixtureAttribute), true).Length > 0) {
foreach (MethodInfo m in type.GetMethods()) {
if (m.IsPublic && m.ReturnType == typeof(void) && m.GetParameters().Length == 0) {
if (m.GetCustomAttributes(typeof(TestAttribute), true).Length == 0) {
Assert.Fail(type.Name + "." + m.Name + " should have the [Test] attribute!");
}
}
}
}
}
}
// [Test]
// public void TestAcceptVisitorMethods()
// {
// Type[] allTypes = typeof(AbstractNode).Assembly.GetTypes();
//
//
// foreach (Type type in allTypes) {
// if (type.IsClass && !type.IsAbstract && type.GetInterface(typeof(INode).FullName) != null) {
// MethodInfo methodInfo = type.GetMethod("AcceptVisitor", BindingFlags.Instance | BindingFlags.DeclaredOnly | BindingFlags.Public);

164
src/Libraries/NRefactory/Test/Output/CSharp/VBToCSharpConverterTest.cs

@ -146,6 +146,43 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter @@ -146,6 +146,43 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter
"public object A {\n\tget {\n\t\treturn null;\n\t}\n}");
}
[Test]
public void ValueInPropertySetter()
{
TestMember("WriteOnly Property A()\nSet\nDim x As Object = Value\nEnd Set\nEnd Property",
"public object A {\n\tset {\n\t\tobject x = value;\n\t}\n}");
}
[Test]
public void ValueInPropertySetter2()
{
TestMember("WriteOnly Property A()\nSet(ByVal otherName)\nDim x As Object = otherName\nEnd Set\nEnd Property",
"public object A {\n\tset {\n\t\tobject x = value;\n\t}\n}");
}
[Test]
public void FieldDeclaredWithDim()
{
TestMember("Dim f as String",
"string f;");
}
[Test]
public void MultipleFields()
{
TestMember("Private example, test As Single",
"private float example;\n" +
"private float test;");
}
[Test]
public void MultipleVariables()
{
TestStatement("Dim example, test As Single",
"float example;\n" +
"float test;");
}
[Test]
public void PInvoke()
{
@ -246,11 +283,138 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter @@ -246,11 +283,138 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter
"x = \"Hello \" + \"World\";");
}
[Test]
public void IntegerDivision()
{
TestStatement(@"x = x \ b",
"x = x / b;");
TestStatement(@"x \= b",
"x /= b;");
}
[Test]
public void VBConstants()
{
TestStatement("a = vbYesNo",
"a = Constants.vbYesNo;");
}
[Test]
public void ForNextLoop()
{
TestStatement("For i = 0 To 10\n" +
"Next",
"for (i = 0; i <= 10; i++) {\n" +
"}");
TestStatement("For l As Long = 0 To 10 Step 2\n" +
"Next",
"for (long l = 0; l <= 10; l += 2) {\n" +
"}");
TestStatement("For l As Long = 10 To 0 Step -1\n" +
"Next",
"for (long l = 10; l >= 0; l += -1) {\n" +
"}");
}
[Test]
public void DoLoop()
{
TestStatement("Do \n Loop",
"do {\n" +
"}\n" +
"while (true);");
TestStatement("Do \n Loop Until i = 10000",
"do {\n" +
"}\n" +
"while (!(i == 10000));");
}
[Test]
public void UsingStatement()
{
TestStatement("Using r1 As New StreamReader(file1), r2 As New StreamReader(file2)\n" +
"End Using",
"using (StreamReader r1 = new StreamReader(file1)) {\n" +
"\tusing (StreamReader r2 = new StreamReader(file2)) {\n" +
"\t}\n" +
"}");
}
[Test]
public void SwitchStatement()
{
TestStatement(@"Select Case i
Case 0 To 5
i = 10
Case 11
i = 0
Case Else
i = 9
End Select",
"switch (i) {\n" +
"\tcase 0:\n" +
"\tcase 1:\n" +
"\tcase 2:\n" +
"\tcase 3:\n" +
"\tcase 4:\n" +
"\tcase 5:\n" +
"\t\ti = 10;\n" +
"\t\tbreak;\n" +
"\tcase 11:\n" +
"\t\ti = 0;\n" +
"\t\tbreak;\n" +
"\tdefault:\n" +
"\t\ti = 9;\n" +
"\t\tbreak;\n" +
"}");
}
[Test]
public void FunctionWithImplicitReturn()
{
TestMember("Public Function run(i As Integer) As Integer\n" +
" run = 0\n" +
"End Function",
"public int run(int i)\n" +
"{\n" +
"\treturn 0;\n" +
"}");
}
[Test]
public void FunctionWithImplicitReturn2()
{
TestMember("Public Function run(i As Integer) As Integer\n" +
" While something\n" +
" run += i\n" +
" End While\n" +
"End Function",
"public int run(int i)\n" +
"{\n" +
"\tint " + VBNetConstructsConvertVisitor.FunctionReturnValueName + " = 0;\n" +
"\twhile (something) {\n" +
"\t\t" + VBNetConstructsConvertVisitor.FunctionReturnValueName + " += i;\n" +
"\t}\n" +
"\treturn " + VBNetConstructsConvertVisitor.FunctionReturnValueName + ";\n" +
"}");
}
[Test]
public void FunctionWithImplicitReturn3()
{
TestMember("Public Function run(i As Integer) As CustomType\n" +
" While something\n" +
" run = New CustomType()\n" +
" End While\n" +
"End Function",
"public CustomType run(int i)\n" +
"{\n" +
"\tCustomType " + VBNetConstructsConvertVisitor.FunctionReturnValueName + " = null;\n" +
"\twhile (something) {\n" +
"\t\t" + VBNetConstructsConvertVisitor.FunctionReturnValueName + " = new CustomType();\n" +
"\t}\n" +
"\treturn " + VBNetConstructsConvertVisitor.FunctionReturnValueName + ";\n" +
"}");
}
}
}

46
src/Libraries/NRefactory/Test/Output/SpecialOutputVisitor.cs

@ -28,7 +28,7 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter @@ -28,7 +28,7 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter
outputVisitor.Visit(parser.CompilationUnit, null);
}
Assert.AreEqual("", outputVisitor.Errors.ErrorOutput);
Assert.AreEqual(program, outputVisitor.Text.TrimEnd().Replace("\r", ""));
Assert.AreEqual(program.Replace("\r", ""), outputVisitor.Text.TrimEnd().Replace("\r", ""));
parser.Dispose();
}
@ -43,7 +43,7 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter @@ -43,7 +43,7 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter
outputVisitor.Visit(parser.CompilationUnit, null);
}
Assert.AreEqual("", outputVisitor.Errors.ErrorOutput);
Assert.AreEqual(program, outputVisitor.Text.TrimEnd().Replace("\r", ""));
Assert.AreEqual(program.Replace("\r", ""), outputVisitor.Text.TrimEnd().Replace("\r", ""));
parser.Dispose();
}
@ -97,13 +97,41 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter @@ -97,13 +97,41 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter
public void EnumVB()
{
TestProgramVB("Enum Test\n" +
"\t' a\n" +
"\tm1\n" +
"\t' b\n" +
"\tm2\n" +
"\t' c\n" +
"End Enum\n" +
"' d");
"\t' a\n" +
"\tm1\n" +
"\t' b\n" +
"\tm2\n" +
"\t' c\n" +
"End Enum\n" +
"' d");
}
[Test]
public void RegionInsideMethod()
{
TestProgram(@"public class Class1
{
private bool test(int l, int lvw)
{
#region Metodos Auxiliares
int i = 1;
return false;
#endregion
}
}");
}
[Test]
public void RegionInsideMethodVB()
{
TestProgramVB(@"Public Class Class1
Private Function test(ByVal l As Integer, ByVal lvw As Integer) As Boolean
' Begin
Dim i As Integer = 1
Return False
' End of method
End Function
End Class");
}
}
}

52
src/Libraries/NRefactory/Test/Output/VBNet/CSharpToVBConverterTest.cs

@ -71,6 +71,42 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter @@ -71,6 +71,42 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter
"End Namespace\r\n");
}
[Test]
public void ClassImplementsInterface()
{
TestProgram("class test : IComparable { }",
"Class test\r\n" +
"\tImplements IComparable\r\n" +
"End Class\r\n");
}
[Test]
public void ClassImplementsInterface2()
{
TestProgram("class test : System.IComparable { }",
"Class test\r\n" +
"\tImplements System.IComparable\r\n" +
"End Class\r\n");
}
[Test]
public void ClassInheritsClass()
{
TestProgram("class test : InvalidDataException { }",
"Class test\r\n" +
"\tInherits InvalidDataException\r\n" +
"End Class\r\n");
}
[Test]
public void ClassInheritsClass2()
{
TestProgram("class test : System.IO.InvalidDataException { }",
"Class test\r\n" +
"\tInherits System.IO.InvalidDataException\r\n" +
"End Class\r\n");
}
[Test]
public void ForWithUnknownConditionAndSingleStatement()
{
@ -293,5 +329,21 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter @@ -293,5 +329,21 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter
"\tNext\n" +
"End Sub");
}
[Test]
public void NullCoalescing()
{
TestStatement("c = a ?? b;",
"c = IIf(a Is Nothing, b, a)");
}
[Test]
public void ConvertedLoop()
{
TestStatement("while (cond) example();",
"While cond\n" +
"\texample()\n" +
"End While");
}
}
}

67
src/Libraries/NRefactory/Test/Output/VBNet/VBNetOutputTest.cs

@ -78,6 +78,12 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter @@ -78,6 +78,12 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter
TestProgram("Public Partial Class Foo\nEnd Class");
}
[Test]
public void MustInheritClass()
{
TestProgram("Public MustInherit Class Foo\nEnd Class");
}
[Test]
public void GenericClassDefinition()
{
@ -106,6 +112,14 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter @@ -106,6 +112,14 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter
public void ArrayInitialization()
{
TestStatement("Dim a As Object() = New Object(10) {}");
TestTypeMember("Private MultiDim As Integer(,) = {{1, 2}, {1, 3}}");
TestExpression("New Integer(, ) {{1, 1}, {1, 1}}");
}
[Test]
public void MethodCallWithOptionalArguments()
{
TestExpression("M(, )");
}
[Test]
@ -120,6 +134,54 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter @@ -120,6 +134,54 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter
"End If");
}
[Test]
public void ForNextLoop()
{
TestStatement("For i = 0 To 10\n" +
"Next");
TestStatement("For i As Long = 10 To 0 Step -1\n" +
"Next");
}
[Test]
public void DoLoop()
{
TestStatement("Do\n" +
"Loop");
TestStatement("Do\n" +
"Loop While Not (i = 10)");
}
[Test]
public void SelectCase()
{
TestStatement(@"Select Case i
Case 0
Case 1 To 4
Case Else
End Select");
}
[Test]
public void UsingStatement()
{
TestStatement(@"Using nf As New Font(), nf2 As New List(Of Font)(), nf3 = Nothing
Bla(nf)
End Using");
}
[Test]
public void UntypedVariable()
{
TestStatement("Dim x = 0");
}
[Test]
public void UntypedField()
{
TestTypeMember("Dim x = 0");
}
[Test]
public void Assignment()
{
@ -130,7 +192,8 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter @@ -130,7 +192,8 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter
public void SpecialIdentifiers()
{
// Assembly, Ansi and Until are contextual keywords
TestExpression("Assembly = Ansi * [For] + Until");
// Custom is valid inside methods, but not valid for field names
TestExpression("Assembly = Ansi * [For] + Until - [Custom]");
}
[Test]
@ -178,7 +241,7 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter @@ -178,7 +241,7 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter
[Test]
public void Using()
{
TestStatement("Using a As A = New A()\na.Work()\nEnd Using");
TestStatement("Using a As New A()\na.Work()\nEnd Using");
}
[Test]

1
src/Libraries/NRefactory/Test/Parser/Expressions/ArrayCreateExpressionTests.cs

@ -28,6 +28,7 @@ namespace ICSharpCode.NRefactory.Tests.AST @@ -28,6 +28,7 @@ namespace ICSharpCode.NRefactory.Tests.AST
#endregion
#region VB.NET
[Test]
public void VBNetArrayCreateExpressionTest1()
{

11
src/Libraries/NRefactory/Test/Parser/Expressions/DefaultValueExpressionTests.cs

@ -26,7 +26,8 @@ namespace ICSharpCode.NRefactory.Tests.AST @@ -26,7 +26,8 @@ namespace ICSharpCode.NRefactory.Tests.AST
[Test]
public void CSharpFullQualifiedDefaultValue()
{
DefaultValueExpression toe = ParseUtilCSharp.ParseExpression<DefaultValueExpression>("default(MyNamespace.N1.MyType)");
DefaultValueExpression toe = ParseUtilCSharp.ParseExpression<DefaultValueExpression>("default(global::MyNamespace.N1.MyType)");
Assert.IsTrue(toe.TypeReference.IsGlobal);
Assert.AreEqual("MyNamespace.N1.MyType", toe.TypeReference.Type);
}
@ -46,5 +47,13 @@ namespace ICSharpCode.NRefactory.Tests.AST @@ -46,5 +47,13 @@ namespace ICSharpCode.NRefactory.Tests.AST
DefaultValueExpression dve = (DefaultValueExpression)lvd.Variables[0].Initializer;
Assert.AreEqual("T", dve.TypeReference.Type);
}
[Test]
public void CSharpDefaultValueInReturnStatement()
{
ReturnStatement rs = ParseUtilCSharp.ParseStatement<ReturnStatement>("return default(T);");
DefaultValueExpression dve = (DefaultValueExpression)rs.Expression;
Assert.AreEqual("T", dve.TypeReference.Type);
}
}
}

5
src/Libraries/NRefactory/Test/Parser/Expressions/IdentifierExpressionTests.cs

@ -50,10 +50,9 @@ namespace ICSharpCode.NRefactory.Tests.AST @@ -50,10 +50,9 @@ namespace ICSharpCode.NRefactory.Tests.AST
[Test]
public void VBNetAssemblyIdentifierExpressionTest()
{
IdentifierExpression ie = ParseUtilVBNet.ParseExpression<IdentifierExpression>("Assembly");
Assert.AreEqual("Assembly", ie.Identifier);
Assert.AreEqual("Assembly", ParseUtilVBNet.ParseExpression<IdentifierExpression>("Assembly").Identifier);
Assert.AreEqual("Custom", ParseUtilVBNet.ParseExpression<IdentifierExpression>("Custom").Identifier);
}
#endregion
}
}

20
src/Libraries/NRefactory/Test/Parser/Expressions/TypeReferenceExpressionTests.cs

@ -81,7 +81,25 @@ namespace ICSharpCode.NRefactory.Tests.AST @@ -81,7 +81,25 @@ namespace ICSharpCode.NRefactory.Tests.AST
Assert.AreEqual("", fre.FieldName);
Assert.AreEqual("System.Int32", ((TypeReferenceExpression)fre.TargetObject).TypeReference.SystemType);
}
#endregion
[Test]
public void VBObjectReferenceExpression()
{
FieldReferenceExpression fre = ParseUtilVBNet.ParseExpression<FieldReferenceExpression>("Object.ReferenceEquals");
Assert.AreEqual("ReferenceEquals", fre.FieldName);
Assert.AreEqual("System.Object", ((TypeReferenceExpression)fre.TargetObject).TypeReference.SystemType);
}
[Test]
public void VBStandaloneObjectReferenceExpression()
{
// this is propably not what really should be returned for a standalone int
// reference, but it has to stay consistent because NRefactoryResolver depends
// on this trick.
FieldReferenceExpression fre = ParseUtilVBNet.ParseExpression<FieldReferenceExpression>("obJeCt", true);
Assert.AreEqual("", fre.FieldName);
Assert.AreEqual("System.Object", ((TypeReferenceExpression)fre.TargetObject).TypeReference.SystemType);
}
#endregion
}
}

10
src/Libraries/NRefactory/Test/Parser/Statements/UsingStatementTests.cs

@ -43,6 +43,16 @@ End Using"; @@ -43,6 +43,16 @@ End Using";
string usingText = @"
Using nf As Font = New Font()
Bla(nf)
End Using";
UsingStatement usingStmt = ParseUtilVBNet.ParseStatement<UsingStatement>(usingText);
// TODO : Extend test.
}
[Test]
public void VBNetUsingStatementTest3()
{
string usingText = @"
Using nf As New Font(), nf2 As New List(Of Font)(), nf3 = Nothing
Bla(nf)
End Using";
UsingStatement usingStmt = ParseUtilVBNet.ParseStatement<UsingStatement>(usingText);
// TODO : Extend test.

6
src/Main/Base/Project/Src/Commands/CustomStringTagProvider.cs

@ -71,8 +71,10 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -71,8 +71,10 @@ namespace ICSharpCode.SharpDevelop.Commands
case "TaskService.Messages":
return TaskService.GetCount(TaskType.Message).ToString();
case "CurrentProjectName":
// TODO: Translate "<empty>"!!!!
return ProjectService.CurrentProject == null ? "<empty>" : ProjectService.CurrentProject.Name;
if (ProjectService.CurrentProject == null)
return "<no current project>";
else
return ProjectService.CurrentProject.Name;
}
switch (tag.ToUpperInvariant()) {

3
src/Main/Base/Project/Src/Commands/ProjectMenuCommands.cs

@ -42,8 +42,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -42,8 +42,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
ProjectOptionsView projectOptions = new ProjectOptionsView(projectOptionsNode, project);
WorkbenchSingleton.Workbench.ShowView(projectOptions);
} catch (TreePathNotFoundException) {
// TODO: Translate me!
MessageService.ShowError("No installed project options panels were found.");
MessageService.ShowError("${res:Dialog.ProjectOptions.NoPanelsInstalledForProject}");
}
}
}

2
src/Main/Base/Project/Src/Commands/VBConverter/CSharpConvertBuffer.cs

@ -36,7 +36,7 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -36,7 +36,7 @@ namespace ICSharpCode.SharpDevelop.Commands
p.Parse();
if (p.Errors.count > 0) {
MessageService.ShowError("Correct source code errors first (only correct source code would convert).");
MessageService.ShowError("${res:ICSharpCode.SharpDevelop.Commands.Convert.CorrectSourceCodeErrors}\n" + p.Errors.ErrorOutput);
return;
}
ICSharpCode.NRefactory.PrettyPrinter.CSharpOutputVisitor output = new ICSharpCode.NRefactory.PrettyPrinter.CSharpOutputVisitor();

3
src/Main/Base/Project/Src/Commands/VBConverter/ConvertBuffer.cs

@ -36,8 +36,7 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -36,8 +36,7 @@ namespace ICSharpCode.SharpDevelop.Commands
ICSharpCode.NRefactory.Parser.IParser p = ICSharpCode.NRefactory.Parser.ParserFactory.CreateParser(SupportedLanguage.CSharp, new StringReader(((IEditable)window.ViewContent).Text));
p.Parse();
if (p.Errors.count > 0) {
MessageService.ShowError("Correct source code errors first (only correct source code would convert).");
MessageService.ShowError("${res:ICSharpCode.SharpDevelop.Commands.Convert.CorrectSourceCodeErrors}\n" + p.Errors.ErrorOutput);
return;
}

4
src/Main/Base/Project/Src/Dom/ClassFinder.cs

@ -55,6 +55,8 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -55,6 +55,8 @@ namespace ICSharpCode.SharpDevelop.Dom
this.callingClass = callingClass;
this.cu = callingClass.CompilationUnit;
this.projectContent = cu.ProjectContent;
if (projectContent == null)
throw new ArgumentException("callingClass must have a project content!");
}
// currently callingMember is not required
@ -78,6 +80,8 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -78,6 +80,8 @@ namespace ICSharpCode.SharpDevelop.Dom
} else {
projectContent = ParserService.CurrentProjectContent;
}
if (projectContent == null)
throw new ArgumentException("projectContent not found!");
}
public IClass GetClass(string fullName, int typeParameterCount)

5
src/Main/Base/Project/Src/Dom/Implementations/DefaultCompilationUnit.cs

@ -29,12 +29,15 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -29,12 +29,15 @@ namespace ICSharpCode.SharpDevelop.Dom
string fileName = null;
IProjectContent projectContent;
/// <summary>
/// Source code file this compilation unit was created from. For compiled are compiler-generated
/// code, this property returns null.
/// </summary>
public string FileName {
get {
return fileName;
}
set {
Debug.Assert(value != null);
fileName = value;
}
}

6
src/Main/Base/Project/Src/Gui/Components/SideBar/AxSideBar.cs

@ -912,8 +912,10 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -912,8 +912,10 @@ namespace ICSharpCode.SharpDevelop.Gui
protected override void OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
mouseDownPos = e.Location;
sideBar.activeTab.ChoosedItem = sideBar.activeTab.SelectedItem;
if (e.Button == MouseButtons.Left) {
mouseDownPos = e.Location;
sideBar.activeTab.ChoosedItem = sideBar.activeTab.SelectedItem;
}
Refresh();
}

4
src/Main/Base/Project/Src/Gui/Components/StatusBar/SdStatusBar.cs

@ -132,7 +132,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -132,7 +132,7 @@ namespace ICSharpCode.SharpDevelop.Gui
{
statusProgressBar.Value = 0;
statusProgressBar.Maximum = totalWork;
jobNamePanel.Text = taskName;
SetTaskName();
jobNamePanel.Visible = true;
statusProgressBar.Visible = true;
}
@ -187,7 +187,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -187,7 +187,7 @@ namespace ICSharpCode.SharpDevelop.Gui
void SetTaskName()
{
jobNamePanel.Text = taskName;
jobNamePanel.Text = StringParser.Parse(taskName);
}
}
}

3
src/Main/Base/Project/Src/Gui/Dialogs/AbstractOptionPanel.cs

@ -115,8 +115,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -115,8 +115,7 @@ namespace ICSharpCode.SharpDevelop.Gui
protected void ConnectBrowseFolder(string browseButton, string target)
{
// TODO: Translation:
ConnectBrowseFolder(browseButton, target, "Select folder");
ConnectBrowseFolder(browseButton, target, "${res:Dialog.ProjectOptions.SelectFolderTitle}");
}
protected void ConnectBrowseFolder(string browseButton, string target, string description)
{

3
src/Main/Base/Project/Src/Gui/Dialogs/NewFileDialog.cs

@ -376,7 +376,8 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -376,7 +376,8 @@ namespace ICSharpCode.SharpDevelop.Gui
public void SaveFile(FileDescriptionTemplate newfile, string content)
{
string parsedFileName = StringParser.Parse(newfile.Name);
string parsedContent = StringParser.Parse(content);
// Parse twice so that tags used in included standard header are parsed
string parsedContent = StringParser.Parse(StringParser.Parse(content));
if (parsedFileName.StartsWith("/") || parsedFileName.StartsWith("\\"))
parsedFileName = parsedFileName.Substring(1);
if (newfile.IsDependentFile && Path.IsPathRooted(parsedFileName)) {

24
src/Main/Base/Project/Src/Gui/Dialogs/NewProjectDialog.cs

@ -251,11 +251,6 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs @@ -251,11 +251,6 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs
((ListView)ControlDictionary["templateListView"]).View = ((RadioButton)ControlDictionary["smallIconsRadioButton"]).Checked ? View.List : View.LargeIcon;
}
public bool IsFilenameAvailable(string fileName)
{
return true;
}
public string NewProjectLocation;
public string NewCombineLocation;
@ -271,12 +266,25 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs @@ -271,12 +266,25 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs
string solution = ((TextBox)ControlDictionary["solutionNameTextBox"]).Text;
string name = ((TextBox)ControlDictionary["nameTextBox"]).Text;
string location = ((TextBox)ControlDictionary["locationTextBox"]).Text;
if (!FileUtility.IsValidFileName(solution) || solution.IndexOf(Path.DirectorySeparatorChar) >= 0 ||
!FileUtility.IsValidFileName(name) || name.IndexOf(Path.DirectorySeparatorChar) >= 0 ||
!FileUtility.IsValidFileName(location)) {
if (!FileUtility.IsValidFileName(solution)
|| solution.IndexOf(Path.DirectorySeparatorChar) >= 0
|| solution.IndexOf(Path.AltDirectorySeparatorChar) >= 0
|| !FileUtility.IsValidFileName(name)
|| name.IndexOf(Path.AltDirectorySeparatorChar) >= 0
|| name.IndexOf(Path.DirectorySeparatorChar) >= 0
|| !FileUtility.IsValidFileName(location))
{
MessageService.ShowError("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.NewProjectDialog.IllegalProjectNameError}");
return;
}
if (!char.IsLetter(name[0]) && name[0] != '_') {
MessageService.ShowError("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.NewProjectDialog.ProjectNameMustStartWithLetter}");
return;
}
if (name.EndsWith(".")) {
MessageService.ShowError("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.NewProjectDialog.ProjectNameMustNotEndWithDot}");
return;
}
PropertyService.Set("ICSharpCode.SharpDevelop.Gui.NewProjectDialog.AutoCreateProjectSubdir", ((CheckBox)ControlDictionary["autoCreateSubDirCheckBox"]).Checked);
if (((ListView)ControlDictionary["templateListView"]).SelectedItems.Count == 1 && ((TextBox)ControlDictionary["locationTextBox"]).Text.Length > 0 && ((TextBox)ControlDictionary["solutionNameTextBox"]).Text.Length > 0) {

5
src/Main/Base/Project/Src/Gui/Dialogs/ProjectOptionsView.cs

@ -125,6 +125,11 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs @@ -125,6 +125,11 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs
this.IsDirty = dirty;
}
public override void Load(string fileName)
{
// TODO: reload project file
}
public override void Save(string fileName)
{
foreach (IDialogPanelDescriptor pane in descriptors) {

2
src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/ReferenceFolderNode.cs

@ -45,7 +45,7 @@ namespace ICSharpCode.SharpDevelop.Gui.ClassBrowser @@ -45,7 +45,7 @@ namespace ICSharpCode.SharpDevelop.Gui.ClassBrowser
sortOrder = -1;
this.project = project;
Text = "References";
Text = ResourceService.GetString("ICSharpCode.SharpDevelop.Commands.ProjectBrowser.ReferencesNodeText");
OpenedIcon = "ProjectBrowser.ReferenceFolder.Open";
ClosedIcon = "ProjectBrowser.ReferenceFolder.Closed";

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

Loading…
Cancel
Save