Browse Source

Fixed SdaUser sample. Remove old ICSharpCode.TextEditor samples.

Remove some unused ICSharpCode.TextEditor-related code.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@5617 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Daniel Grunwald 16 years ago
parent
commit
d981d62c94
  1. 10
      samples/SdaUser/MainForm.cs
  2. 73
      samples/SdaUser/SdaAddIns/SdaBase.addin
  3. 23
      samples/SdaUser/SdaUser.csproj
  4. 6
      samples/SdaUser/SdaUser.sln
  5. 6
      samples/SdaUser/SharpDevelopInteraction/InteractionClass.cs
  6. 18
      samples/SdaUser/SharpDevelopInteraction/SharpDevelopInteraction.csproj
  7. 26
      samples/SharpPad/AssemblyInfo.cs
  8. 165
      samples/SharpPad/SharpPad.Designer.cs
  9. 97
      samples/SharpPad/SharpPad.cs
  10. 46
      samples/SharpPad/SharpPad.csproj
  11. BIN
      samples/SharpPad/SharpPad.ico
  12. 567
      samples/SharpPad/SharpPad.resx
  13. 31
      samples/SharpPad/SharpPad.rtf
  14. 16
      samples/SharpPad/SharpPad.sln
  15. 5
      samples/SharpSnippetCompiler/SharpSnippetCompiler.Core/SharpSnippetCompiler.Core.csproj
  16. 6
      samples/SharpSnippetCompiler/SharpSnippetCompiler.sln
  17. 5
      samples/SharpSnippetCompiler/SharpSnippetCompiler/SharpSnippetCompiler.csproj
  18. 31
      samples/TextEditorAnchors/AssemblyInfo.cs
  19. 121
      samples/TextEditorAnchors/MainForm.Designer.cs
  20. 101
      samples/TextEditorAnchors/MainForm.cs
  21. 120
      samples/TextEditorAnchors/MainForm.resx
  22. 30
      samples/TextEditorAnchors/Program.cs
  23. 48
      samples/TextEditorAnchors/TextEditorAnchors.csproj
  24. 18
      samples/TextEditorAnchors/TextEditorAnchors.sln
  25. 8
      src/AddIns/Misc/CodeAnalysis/CodeAnalysis.csproj
  26. 254
      src/AddIns/Misc/SubversionAddIn/Project/Src/Gui/HistoryViewDisplayBinding/DiffPanel.Designer.cs
  27. 153
      src/AddIns/Misc/SubversionAddIn/Project/Src/Gui/HistoryViewDisplayBinding/DiffPanel.cs
  28. 126
      src/AddIns/Misc/SubversionAddIn/Project/Src/Gui/HistoryViewDisplayBinding/DiffPanel.resx
  29. 12
      src/AddIns/Misc/SubversionAddIn/Project/SubversionAddIn.csproj
  30. 2
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  31. 44
      src/Main/Base/Project/Src/Gui/SimpleViewContent.cs
  32. 64
      src/Main/Base/Project/Src/Services/File/FileService.cs
  33. 198
      src/Main/Base/Project/Src/TextEditor/XmlFormattingStrategy.cs
  34. 7
      src/Main/ICSharpCode.SharpDevelop.Sda/ICSharpCode.SharpDevelop.Sda.csproj
  35. 16
      src/Main/ICSharpCode.SharpDevelop.Sda/Src/CallHelper.cs
  36. 5
      src/Main/ICSharpCode.SharpDevelop.Sda/Src/SharpDevelopHost.cs

10
samples/SdaUser/MainForm.cs

@ -38,7 +38,9 @@ namespace SdaUser @@ -38,7 +38,9 @@ namespace SdaUser
public partial class MainForm
{
#region Application Startup
// The LoaderOptimization hint is important - without it, loading WPF into the SD AppDomain takes very long
[STAThread]
[LoaderOptimization(LoaderOptimization.MultiDomainHost)]
public static void Main(string[] args)
{
Application.EnableVisualStyles();
@ -80,14 +82,15 @@ namespace SdaUser @@ -80,14 +82,15 @@ namespace SdaUser
if (host == null) {
StartupSettings startup = new StartupSettings();
startup.ApplicationName = "HostedSharpDevelop";
startup.ConfigDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "ICSharpCode\\HostedSharpDevelop4");
startup.DataDirectory = Path.Combine(Path.GetDirectoryName(typeof(SharpDevelopHost).Assembly.Location), "../data");
string sdaDir = Path.Combine(Path.GetDirectoryName(typeof(MainForm).Assembly.Location), "SdaAddIns");
startup.AddAddInFile(Path.Combine(sdaDir, "SdaBase.addin"));
string sdaAddInDir = Path.Combine(Path.GetDirectoryName(typeof(MainForm).Assembly.Location), "SdaAddIns");
startup.AddAddInsFromDirectory(sdaAddInDir);
host = new SharpDevelopHost(startup);
host.InvokeTarget = this;
host.BeforeRunWorkbench += delegate { groupBox1.Enabled = true; };
host.WorkbenchClosed += delegate { groupBox1.Enabled = false; runButton.Enabled = true; };
host.WorkbenchClosed += delegate { groupBox1.Enabled = false; };
}
host.RunWorkbench(wbSettings);
@ -127,6 +130,7 @@ namespace SdaUser @@ -127,6 +130,7 @@ namespace SdaUser
// disable the group box so no events are fired
groupBox1.Enabled = false;
runButton.Enabled = true;
}
void OpenFileButtonClick(object sender, System.EventArgs e)

73
samples/SdaUser/SdaAddIns/SdaBase.addin

@ -18,7 +18,7 @@ @@ -18,7 +18,7 @@
<ConditionEvaluator name="ActiveWindowState" class="ICSharpCode.SharpDevelop.ActiveWindowStateConditionEvaluator"/>
<ConditionEvaluator name="OpenWindowState" class="ICSharpCode.SharpDevelop.OpenWindowStateConditionEvaluator"/>
<Doozer name="DialogPanel" class="ICSharpCode.SharpDevelop.DialogPanelDoozer"/>
<Doozer name="OptionPanel" class="ICSharpCode.SharpDevelop.OptionPanelDoozer"/>
<Doozer name="DisplayBinding" class="ICSharpCode.SharpDevelop.DisplayBindingDoozer"/>
</Import>
</Runtime>
@ -44,9 +44,6 @@ @@ -44,9 +44,6 @@
<!-- REQUIRED to open views -->
<Path name = "/SharpDevelop/Workbench/DisplayBindings">
<DisplayBinding id = "Text"
supportedformats = "Text Files,Source Files"
class = "ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor.TextEditorDisplayBinding" />
</Path>
<!-- REQUIRED to open views -->
@ -64,53 +61,14 @@ @@ -64,53 +61,14 @@
class = "ICSharpCode.SharpDevelop.Commands.TabStrip.CloseAllButThisFileTab" />
</Path>
<!-- REQUIRED if you use the default text editor (TextEditorDisplayBinding) -->
<Path name = "/SharpDevelop/ViewContent/DefaultTextEditor/ContextMenu">
<Include id = "Cut" item = "/SharpDevelop/Workbench/MainMenu/Edit/Cut"/>
<Include id = "Copy" item = "/SharpDevelop/Workbench/MainMenu/Edit/Copy"/>
<Include id = "Paste" item = "/SharpDevelop/Workbench/MainMenu/Edit/Paste"/>
<Include id = "Delete" item = "/SharpDevelop/Workbench/MainMenu/Edit/Delete"/>
<MenuItem id = "Separator1" type = "Separator" />
<MenuItem id = "Options"
label = "${res:XML.TextAreaContextMenu.BufferOptions}"
icon = "Icons.16x16.PropertiesIcon"
class ="ICSharpCode.SharpDevelop.DefaultEditor.Commands.ShowBufferOptions"/>
</Path>
<!-- required for BufferOptions command in text editor context menu -->
<Path name = "/SharpDevelop/ViewContent/DefaultTextEditor/OptionsDialog">
<DialogPanel id = "General"
label = "${res:Dialog.Options.IDEOptions.TextEditor.General.PanelName}"
class = "ICSharpCode.SharpDevelop.DefaultEditor.Gui.OptionPanels.GeneralTextEditorPanel"/>
<DialogPanel id = "Markers"
label = "${res:Dialog.Options.IDEOptions.TextEditor.Markers.PanelName}"
class = "ICSharpCode.SharpDevelop.DefaultEditor.Gui.OptionPanels.MarkersTextEditorPanel"/>
<DialogPanel id = "Behavior"
label = "${res:Dialog.Options.IDEOptions.TextEditor.Behaviour.PanelName}"
class = "ICSharpCode.SharpDevelop.DefaultEditor.Gui.OptionPanels.BehaviorTextEditorPanel"/>
</Path>
<!-- required for main menu options command -->
<Path name = "/SharpDevelop/Dialogs/OptionsDialog">
<DialogPanel id = "ToolsOptions"
<OptionPanel id = "ToolsOptions"
label = "${res:Dialog.Options.IDEOptions.ToolsOptionsText}">
<DialogPanel id = "ExternalTools"
<OptionPanel id = "ExternalTools"
label = "${res:Dialog.Options.ExternalToolsText}"
class = "ICSharpCode.SharpDevelop.Gui.OptionPanels.ExternalToolPane"/>
</DialogPanel>
<DialogPanel id = "TextEditorOptions"
label = "${res:Dialog.Options.IDEOptions.TextEditorOptionsText}">
<DialogPanel id = "General"
label = "${res:Dialog.Options.IDEOptions.TextEditor.General.PanelName}"
class = "ICSharpCode.SharpDevelop.DefaultEditor.Gui.OptionPanels.GeneralTextEditorPanel"/>
<DialogPanel id = "Markers"
label = "${res:Dialog.Options.IDEOptions.TextEditor.Markers.PanelName}"
class = "ICSharpCode.SharpDevelop.DefaultEditor.Gui.OptionPanels.MarkersTextEditorPanel"/>
<DialogPanel id = "Behavior"
label = "${res:Dialog.Options.IDEOptions.TextEditor.Behaviour.PanelName}"
class = "ICSharpCode.SharpDevelop.DefaultEditor.Gui.OptionPanels.BehaviorTextEditorPanel"/>
</DialogPanel>
</OptionPanel>
</Path>
<!-- Main menu -->
@ -173,49 +131,42 @@ @@ -173,49 +131,42 @@
icon = "Icons.16x16.UndoIcon"
type = "Item"
shortcut = "Control|Z"
loadclasslazy = "false"
class = "ICSharpCode.SharpDevelop.Commands.Undo"/>
command = "Undo"/>
<MenuItem id = "Redo"
label = "${res:XML.MainMenu.EditMenu.Redo}"
icon = "Icons.16x16.RedoIcon"
type = "Item"
shortcut = "Control|Y"
loadclasslazy = "false"
class = "ICSharpCode.SharpDevelop.Commands.Redo"/>
command = "Redo"/>
<MenuItem id = "Separator1" type = "Separator" />
<MenuItem id = "Cut"
label = "${res:XML.MainMenu.EditMenu.Cut}"
icon = "Icons.16x16.CutIcon"
type = "Item"
shortcut = "Control|X"
loadclasslazy = "false"
class = "ICSharpCode.SharpDevelop.Commands.Cut"/>
command = "Cut"/>
<MenuItem id = "Copy"
label = "${res:XML.MainMenu.EditMenu.Copy}"
icon = "Icons.16x16.CopyIcon"
type = "Item"
shortcut = "Control|C"
loadclasslazy = "false"
class = "ICSharpCode.SharpDevelop.Commands.Copy"/>
command = "Copy"/>
<MenuItem id = "Paste"
label = "${res:XML.MainMenu.EditMenu.Paste}"
icon = "Icons.16x16.PasteIcon"
type = "Item"
shortcut = "Control|V"
loadclasslazy = "false"
class = "ICSharpCode.SharpDevelop.Commands.Paste"/>
command = "Paste"/>
<MenuItem id = "Delete"
label = "${res:XML.MainMenu.EditMenu.Delete}"
icon = "Icons.16x16.DeleteIcon"
type = "Item"
loadclasslazy = "false"
class = "ICSharpCode.SharpDevelop.Commands.Delete"/>
command = "Delete"/>
<MenuItem id = "SelectAll"
label = "${res:XML.MainMenu.EditMenu.SelectAll}"
type = "Item"
shortcut = "Control|A"
loadclasslazy = "false"
class = "ICSharpCode.SharpDevelop.Commands.SelectAll"/>
command = "SelectAll"/>
</MenuItem> <!-- end EDIT menu -->
<MenuItem id = "Tools" label = "${res:XML.MainMenu.ToolMenu}" type="Menu">
@ -236,7 +187,7 @@ @@ -236,7 +187,7 @@
</MenuItem>
</Path>
<Path name="/SharpDevelop/Workbench/ToolBar">
<Path name="/SharpDevelop/Workbench/ToolBar/Standard">
<ToolbarItem id = "New"
icon = "Icons.16x16.NewDocumentIcon"
tooltip = "${res:XML.MainMenu.FileMenu.New.File.Description}"

23
samples/SdaUser/SdaUser.csproj

@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<RootNamespace>SdaUser</RootNamespace>
@ -16,6 +17,7 @@ @@ -16,6 +17,7 @@
<WarningLevel>4</WarningLevel>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<SourceAnalysisOverrideSettingsFile>C:\Users\Daniel\AppData\Roaming\ICSharpCode/SharpDevelop3.0\Settings.SourceAnalysis</SourceAnalysisOverrideSettingsFile>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<IntermediateOutputPath>obj\Debug\</IntermediateOutputPath>
@ -38,7 +40,13 @@ @@ -38,7 +40,13 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.Data.DataSetExtensions">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
@ -46,6 +54,9 @@ @@ -46,6 +54,9 @@
<HintPath>..\..\bin\ICSharpCode.SharpDevelop.Sda.dll</HintPath>
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="System.Xml.Linq">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="MainForm.cs" />
@ -68,5 +79,15 @@ @@ -68,5 +79,15 @@
<Private>False</Private>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Content Include="..\..\AddIns\AddIns\DisplayBindings\AvalonEdit\AvalonEdit.AddIn.addin">
<Link>SdaAddIns\AvalonEdit.AddIn.addin</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="..\..\AddIns\AddIns\DisplayBindings\AvalonEdit\ICSharpCode.AvalonEdit.AddIn.dll">
<Link>SdaAddIns\ICSharpCode.AvalonEdit.AddIn.dll</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
</Project>

6
samples/SdaUser/SdaUser.sln

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
# SharpDevelop 3.0.0.2745
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
# SharpDevelop 4.0.0.5584
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SdaUser", "SdaUser.csproj", "{3FF48818-69D2-4884-8F4F-62EC72F0D5F0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpDevelopInteraction", "SharpDevelopInteraction\SharpDevelopInteraction.csproj", "{84054D5E-0B81-4C4B-AABB-DCC43030830B}"

6
samples/SdaUser/SharpDevelopInteraction/InteractionClass.cs

@ -50,9 +50,9 @@ namespace SharpDevelopInteraction @@ -50,9 +50,9 @@ namespace SharpDevelopInteraction
void MakeTransparentInternal()
{
WorkbenchSingleton.MainForm.Opacity *= 0.85;
if (WorkbenchSingleton.MainForm.Opacity < 0.2)
WorkbenchSingleton.MainForm.Opacity = 1;
WorkbenchSingleton.MainWindow.Opacity *= 0.85;
if (WorkbenchSingleton.MainWindow.Opacity < 0.2)
WorkbenchSingleton.MainWindow.Opacity = 1;
}
}
}

18
samples/SdaUser/SharpDevelopInteraction/SharpDevelopInteraction.csproj

@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<OutputType>Library</OutputType>
<RootNamespace>SharpDevelopInteraction</RootNamespace>
@ -15,7 +16,7 @@ @@ -15,7 +16,7 @@
<FileAlignment>4096</FileAlignment>
<WarningLevel>4</WarningLevel>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<BaseIntermediateOutputPath>obj\</BaseIntermediateOutputPath>
@ -38,12 +39,18 @@ @@ -38,12 +39,18 @@
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
</PropertyGroup>
<ItemGroup>
<Reference Include="PresentationCore">
<RequiredTargetFramework>3.0</RequiredTargetFramework>
</Reference>
<Reference Include="PresentationFramework">
<RequiredTargetFramework>3.0</RequiredTargetFramework>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
<Reference Include="System.Xaml">
<RequiredTargetFramework>4.0</RequiredTargetFramework>
</Reference>
<Reference Include="System.Xml" />
<Reference Include="ICSharpCode.Core">
@ -65,6 +72,9 @@ @@ -65,6 +72,9 @@
<Reference Include="System.Xml.Linq">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="WindowsBase">
<RequiredTargetFramework>3.0</RequiredTargetFramework>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="InteractionClass.cs" />

26
samples/SharpPad/AssemblyInfo.cs

@ -1,26 +0,0 @@ @@ -1,26 +0,0 @@
using System.Reflection;
// 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.*")]

165
samples/SharpPad/SharpPad.Designer.cs generated

@ -1,165 +0,0 @@ @@ -1,165 +0,0 @@
// SharpDevelop samples
// Copyright (c) 2006, AlphaSierraPapa
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// - Redistributions of source code must retain the above copyright notice, this list
// of conditions and the following disclaimer.
//
// - Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other materials
// provided with the distribution.
//
// - Neither the name of the SharpDevelop team nor the names of its contributors may be used to
// endorse or promote products derived from this software without specific prior written
// permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &AS IS& AND ANY EXPRESS
// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
// AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
namespace SharpPad
{
partial class SharpPad : System.Windows.Forms.Form
{
/// <summary>
/// Designer variable used to keep track of non-visual components.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Disposes resources used by the form.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing) {
if (components != null) {
components.Dispose();
}
}
base.Dispose(disposing);
}
/// <summary>
/// This method is required for Windows Forms designer support.
/// Do not change the method contents inside the source code editor. The Forms designer might
/// not be able to load this method if it was changed manually.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SharpPad));
this.textEditorControl = new ICSharpCode.TextEditor.TextEditorControl();
this.menuStrip = new System.Windows.Forms.MenuStrip();
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.saveAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.separatorToolStripMenuItem = new System.Windows.Forms.ToolStripSeparator();
this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.menuStrip.SuspendLayout();
this.SuspendLayout();
//
// textEditorControl
//
this.textEditorControl.Dock = System.Windows.Forms.DockStyle.Fill;
this.textEditorControl.Encoding = ((System.Text.Encoding)(resources.GetObject("textEditorControl.Encoding")));
this.textEditorControl.Location = new System.Drawing.Point(0, 24);
this.textEditorControl.Name = "textEditorControl";
this.textEditorControl.ShowEOLMarkers = true;
this.textEditorControl.ShowSpaces = true;
this.textEditorControl.ShowTabs = true;
this.textEditorControl.ShowVRuler = true;
this.textEditorControl.Size = new System.Drawing.Size(511, 280);
this.textEditorControl.TabIndex = 0;
//
// menuStrip
//
this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.fileToolStripMenuItem});
this.menuStrip.Location = new System.Drawing.Point(0, 0);
this.menuStrip.Name = "menuStrip";
this.menuStrip.Size = new System.Drawing.Size(511, 24);
this.menuStrip.TabIndex = 1;
this.menuStrip.Text = "menuStrip";
//
// fileToolStripMenuItem
//
this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.openToolStripMenuItem,
this.saveToolStripMenuItem,
this.saveAsToolStripMenuItem,
this.separatorToolStripMenuItem,
this.exitToolStripMenuItem});
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
this.fileToolStripMenuItem.Size = new System.Drawing.Size(35, 20);
this.fileToolStripMenuItem.Text = "&File";
//
// openToolStripMenuItem
//
this.openToolStripMenuItem.Name = "openToolStripMenuItem";
this.openToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O)));
this.openToolStripMenuItem.Size = new System.Drawing.Size(163, 22);
this.openToolStripMenuItem.Text = "&Open...";
this.openToolStripMenuItem.Click += new System.EventHandler(this.OpenToolStripMenuItemClick);
//
// saveToolStripMenuItem
//
this.saveToolStripMenuItem.Name = "saveToolStripMenuItem";
this.saveToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S)));
this.saveToolStripMenuItem.Size = new System.Drawing.Size(163, 22);
this.saveToolStripMenuItem.Text = "&Save";
this.saveToolStripMenuItem.Click += new System.EventHandler(this.SaveToolStripMenuItemClick);
//
// saveAsToolStripMenuItem
//
this.saveAsToolStripMenuItem.Name = "saveAsToolStripMenuItem";
this.saveAsToolStripMenuItem.Size = new System.Drawing.Size(163, 22);
this.saveAsToolStripMenuItem.Text = "Save &As...";
this.saveAsToolStripMenuItem.Click += new System.EventHandler(this.SaveAsToolStripMenuItemClick);
//
// separatorToolStripMenuItem
//
this.separatorToolStripMenuItem.Name = "separatorToolStripMenuItem";
this.separatorToolStripMenuItem.Size = new System.Drawing.Size(160, 6);
//
// exitToolStripMenuItem
//
this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
this.exitToolStripMenuItem.Size = new System.Drawing.Size(163, 22);
this.exitToolStripMenuItem.Text = "E&xit";
this.exitToolStripMenuItem.Click += new System.EventHandler(this.ExitToolStripMenuItemClick);
//
// SharpPad
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(511, 304);
this.Controls.Add(this.textEditorControl);
this.Controls.Add(this.menuStrip);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MainMenuStrip = this.menuStrip;
this.Name = "SharpPad";
this.Text = "SharpPad";
this.menuStrip.ResumeLayout(false);
this.menuStrip.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
private System.Windows.Forms.ToolStripSeparator separatorToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem saveAsToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem saveToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem openToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
private System.Windows.Forms.MenuStrip menuStrip;
private ICSharpCode.TextEditor.TextEditorControl textEditorControl;
}
}

97
samples/SharpPad/SharpPad.cs

@ -1,97 +0,0 @@ @@ -1,97 +0,0 @@
// SharpDevelop samples
// Copyright (c) 2006, AlphaSierraPapa
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// - Redistributions of source code must retain the above copyright notice, this list
// of conditions and the following disclaimer.
//
// - Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other materials
// provided with the distribution.
//
// - Neither the name of the SharpDevelop team nor the names of its contributors may be used to
// endorse or promote products derived from this software without specific prior written
// permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &AS IS& AND ANY EXPRESS
// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
// AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
namespace SharpPad
{
public partial class SharpPad
{
const string SharpPadFileFilter = "Text Documents (*.txt)|*.txt|All Files (*.*)|*.*";
[STAThread]
public static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new SharpPad());
}
public SharpPad()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
}
void ExitToolStripMenuItemClick(object sender, EventArgs e)
{
Close();
}
void OpenToolStripMenuItemClick(object sender, EventArgs e)
{
using (OpenFileDialog dialog = new OpenFileDialog()) {
dialog.Filter = SharpPadFileFilter;
dialog.FilterIndex = 0;
if (DialogResult.OK == dialog.ShowDialog()) {
textEditorControl.LoadFile(dialog.FileName);
}
}
}
void SaveAsToolStripMenuItemClick(object sender, System.EventArgs e)
{
SaveAs();
}
void SaveAs()
{
using (SaveFileDialog dialog = new SaveFileDialog()) {
dialog.Filter = SharpPadFileFilter;
dialog.FilterIndex = 0;
if (DialogResult.OK == dialog.ShowDialog()) {
textEditorControl.SaveFile(dialog.FileName);
textEditorControl.FileName = dialog.FileName;
}
}
}
void SaveToolStripMenuItemClick(object sender, System.EventArgs e)
{
if (textEditorControl.FileName != null) {
textEditorControl.SaveFile(textEditorControl.FileName);
} else {
SaveAs();
}
}
}
}

46
samples/SharpPad/SharpPad.csproj

@ -1,46 +0,0 @@ @@ -1,46 +0,0 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<RootNamespace>SharpPad</RootNamespace>
<AssemblyName>SharpPad</AssemblyName>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{9EE70751-7F89-4893-8525-54004FF736CC}</ProjectGuid>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<OutputPath>bin\Debug\</OutputPath>
<Optimize>False</Optimize>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugSymbols>True</DebugSymbols>
<DebugType>Full</DebugType>
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<OutputPath>bin\Release\</OutputPath>
<Optimize>True</Optimize>
<DefineConstants>TRACE</DefineConstants>
<DebugSymbols>False</DebugSymbols>
<DebugType>None</DebugType>
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="ICSharpCode.TextEditor">
<HintPath>..\..\bin\ICSharpCode.TextEditor.dll</HintPath>
<SpecificVersion>False</SpecificVersion>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="SharpPad.cs" />
<Compile Include="SharpPad.Designer.cs">
<DependentUpon>SharpPad.cs</DependentUpon>
</Compile>
<Compile Include="AssemblyInfo.cs" />
<EmbeddedResource Include="SharpPad.resx">
<DependentUpon>SharpPad.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
</Project>

BIN
samples/SharpPad/SharpPad.ico

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

567
samples/SharpPad/SharpPad.resx

@ -1,567 +0,0 @@ @@ -1,567 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: 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">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<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">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<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">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<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.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="textEditorControl.Encoding" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAEAQAAABhTeXN0ZW0uVGV4dC5VVEY4RW5jb2RpbmcLAAAAEmVtaXRVVEY4
SWRlbnRpZmllchBpc1Rocm93RXhjZXB0aW9uCm1fY29kZVBhZ2UIZGF0YUl0ZW0PZW5jb2RlckZhbGxi
YWNrD2RlY29kZXJGYWxsYmFjaxNFbmNvZGluZyttX2NvZGVQYWdlEUVuY29kaW5nK2RhdGFJdGVtFUVu
Y29kaW5nK21faXNSZWFkT25seRhFbmNvZGluZytlbmNvZGVyRmFsbGJhY2sYRW5jb2RpbmcrZGVjb2Rl
ckZhbGxiYWNrAAAAAwMDAAMAAwMBAQglU3lzdGVtLkdsb2JhbGl6YXRpb24uQ29kZVBhZ2VEYXRhSXRl
bSZTeXN0ZW0uVGV4dC5FbmNvZGVyUmVwbGFjZW1lbnRGYWxsYmFjayZTeXN0ZW0uVGV4dC5EZWNvZGVy
UmVwbGFjZW1lbnRGYWxsYmFjawglU3lzdGVtLkdsb2JhbGl6YXRpb24uQ29kZVBhZ2VEYXRhSXRlbQEm
U3lzdGVtLlRleHQuRW5jb2RlclJlcGxhY2VtZW50RmFsbGJhY2smU3lzdGVtLlRleHQuRGVjb2RlclJl
cGxhY2VtZW50RmFsbGJhY2sBAOn9AAAKCQIAAAAJAwAAAOn9AAAKAQkCAAAACQMAAAAEAgAAACZTeXN0
ZW0uVGV4dC5FbmNvZGVyUmVwbGFjZW1lbnRGYWxsYmFjawMAAAAKc3RyRGVmYXVsdBtiSXNNaWNyb3Nv
ZnRCZXN0Rml0RmFsbGJhY2srRW5jb2RlckZhbGxiYWNrK2JJc01pY3Jvc29mdEJlc3RGaXRGYWxsYmFj
awEAAAEBBgYAAAAAAAAEAwAAACZTeXN0ZW0uVGV4dC5EZWNvZGVyUmVwbGFjZW1lbnRGYWxsYmFjawMA
AAAKc3RyRGVmYXVsdBtiSXNNaWNyb3NvZnRCZXN0Rml0RmFsbGJhY2srRGVjb2RlckZhbGxiYWNrK2JJ
c01pY3Jvc29mdEJlc3RGaXRGYWxsYmFjawEAAAEBCQYAAAAAAAs=
</value>
</data>
<metadata name="menuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAkAMDAQAAEABABoBgAAlgAAACAgEAABAAQA6AIAAP4GAAAQEBAAAQAEACgBAADmCQAAMDAAAAEA
CACoDgAADgsAACAgAAABAAgAqAgAALYZAAAQEAAAAQAIAGgFAABeIgAAMDAAAAEAIACoJQAAxicAACAg
AAABACAAqBAAAG5NAAAQEAAAAQAgAGgEAAAWXgAAKAAAADAAAABgAAAAAQAEAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAgACAAAAAgACAAICAAADAwMAAgICAAAAA/wAA/wAAAP//AP8A
AAD/AP8A//8AAP///wARERERERERERERERERERERERERERERERERERERERERERAAAAAAAAAAAAAAAAAA
ABEREREREREREYiIiIiIiIiIiIiIiIiIiAERERERERERGP//////////////////94ARERERERERGP//
/////////////////4ARERERERERGHd3d3d3d3d3d////////4ARERERERERGIiIiIiIiIiIiOfn5+fn
54ARERERERERGHd3d3d3d3d3d3///////4ARERERERERGHd3d3d3d3d3d3f//////4ARAAAAAAAAAAAA
AAAAB3d3d3f//////4AWZmZmZmZmZmZmZmZmYIiIiIh+fn5+foBnd3d3d3d3d3d3d3d3YHd3d3f/////
/4Bufn5+fn5+fn5+fn5+dgd3d3d//////4Bu5+fn5+fn5+fn5+fndgd3d3d//////4Bufn5+fn5+fn5+
fn5+d2CIiIiOfn5+foBu5+fn5+fn5+fn5+fn52B3d3d//////4AW7n5+fn5+fn5+fn5+fnYHd3d3////
/4AW5+fn5+fn5+fn5+fn53YHd3d3/////4ARbn5+fn5+fn5+fn5+fndgiIiIfn5+foARbufn5+fn5+fn
5+fn5+dgd3d3/////4ARFu5+fn5+fn5+fn5+fn52B3d3f////4ARFufn5+fn5+fn5+fn5+d2B3d3f///
/4AREW5+fn5+fn5+fn5+fn53YIiIjn5+foAREW7n5+fn5+fn5+fn5+fnYHd3f////4ARERbufn5+fn5+
fn5+fn5+dgd3d////4ARERbn5+fn5+fn5+fn5+fndgd3d////4ARERFufn5+fn5+fn5+fn5+d2CIiH5+
foARERFu5+fn5+fn5+fn5+fn52B3d////4AREREW7n5+fn5+fn5+fn5+fnYHd3///4AREREW5+fn5+fn
5+fn5+fn53YHd3///4ARERERbn5+fn5+fn5+fn5+fndgiI5+foARERERbufn5+fn5+fn5+fn5+dgd3f/
/4ARERERFu5+dmZmZmZmZmZ+fn52B3f//4ARERERFufn4AAAAAAAAADn5+d2B3f//4AREREREW5+fn5+
fn5+fn5+fn53YIiOfoAREREREW7n52ZmZmZmZmZm5+fnYHd//4ARERERERbufgAAAAAAAAAAfn5+dgd3
/4ARERERERbn5+fn5+fn5+fn5+fndgd3/4ARERERERFufn5+fn5+fn5+fn5+d2B3/4ARERERERFu5+fn
5+fn5+fn5+fn52B3f4AREREREREW7n5+fn5+fn5+fn5+fnYHf4AREREREREW5+fn5+fn5+fn5+fn53YH
f4ARERERERERbn5+fn5+fn5+fn5+fndgeAERERERERERbmbu5m7uZu7mbu5m7uZgcBERERERERERFv9m
b/Zm/2Zv9mb/Zm+IAREREREREREREYiBiIgYiIGIiBiIgYiBERERERERERERERERERERERERERERERER
ERERERERERERERERERERERERERERERERERH///////8AAP//gAAAAwAA//8AAAABAAD//gAAAAAAAP/+
AAAAAAAA//4AAAAAAAD//gAAAAAAAP/+AAAAAAAA//4AAAAAAADAAAAAAAAAAIAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAMAA
AAAAAAAA4AAAAAAAAADgAAAAAAAAAPAAAAAAAAAA8AAAAAAAAAD4AAAAAAAAAPgAAAAAAAAA/AAAAAAA
AAD8AAAAAAAAAP4AAAAAAAAA/gAAAAAAAAD/AAAAAAAAAP8AAAAAAAAA/4AAAAAAAAD/gAAAAAAAAP/A
AAAAAAAA/8AAAAAAAAD/4AAAAAAAAP/gAAAAAAAA//AAAAAAAAD/8AAAAAAAAP/4AAAAAAAA//gAAAAA
AAD//AAAAAEAAP/8AAAAAwAA//4AAAAHAAD//xCEIR8AAP///////wAA////////AAAoAAAAIAAAAEAA
AAABAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAICAAIAAAACAAIAAgIAAAMDA
wACAgIAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////ABEREREREREREREREREREREREREREREQAAAA
AAAAAAARERERERERiIiIiIiIiIiIARERERERGP//////////94AREREREYd3d3d3d/////+AERERERGH
d3d3d3d/////gBEAAAAAAAAAAIiIjn5+foAWZmZmZmZmZmYHd3f///+Abnd3d3d3d3d3YHd3////gG7n
5+fn5+fn52CIiOfn54Bufn5+fn5+fn52B3d///+AFufn5+fn5+fndgd3f///gBbufn5+fn5+fndgiI5+
foARbufn5+fn5+fnYHd3//+AEW5+fn5+fn5+fnYHd///gBEW5+fn5+fn5+d2CIjn54ARFu5+fn5+fn5+
d2B3f/+AERFu5+fn5+fn5+dgd3//gBERbn5+fn5+fn5+dgiOfoARERbn5+fn5+fn53YHd/+AEREW7n5+
fn5+fn53YHf/gBEREW7nAAAAAADn52CI54ARERFufn5+fn5+fn52B3+AERERFufgAAAAAAfndgd/gBER
ERbufn5+fn5+fndgd4ARERERbufn5+fn5+fnYHeAEREREW5+fn5+fn5+fnYHgBEREREW5+fn5+fn5+d2
B4ARERERFubububububuZ2ABERERERFvZvZvZvZvZvaIERERERERGIGIGIGIGIGIERERERERERERERER
ERERERER///////4AAP/8AAB/+AAAP/AAAD/wAAAwAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAMAA
AADAAAAA4AAAAOAAAADwAAAA8AAAAPgAAAD4AAAA/AAAAPwAAAD+AAAA/gAAAP8AAAD/AAAA/4AAAP+A
AAH/wAAD/+SST/////8oAAAAEAAAACAAAAABAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAgAAAAICAAIAAAACAAIAAgIAAAMDAwACAgIAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////ABER
EQAAAAABEREYd3d3d3ARERj/////cBEAAAAAd+5wFmZmZmYH/3Bufn5+fgd+cG7n5+fnYH9wFu5+fn5w
fnAW5+fn5+YPcBFufn5+dwdwEW7n5+fnYHARFuAAAH5wcBEW5+fn53YAERFufn5+52AREW6Hh4eHYRER
FmZmZmYR/AF3d/gAd3f4AHd3wAD/gIAA5+cAAOfnAACIiIAA54CAAH5+wAB+fsAAB3fgAP+A4ADn5/AA
5+fwAQd3+AP/gCgAAAAwAAAAYAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeGZ0AI2B
iAB5WmkAzsTJAKuboACBUV4Aq4uRAKd1fADMrrIAqmRoALFzdwDWrrAAzrCxALBVVgC9d3kAuGFhAL92
dgDRoaEA2ampANOnpwDz5eUAd3Z2AFlYWADMjo0A5cbFANKxrwDivroAmzAYAGlXUQDZeUwAqWpPAMOU
fgDLrZ8A/Y5WAPaKVQDqiFYA9ZRkAMOHaAD9uJQArHxlAPiRWwDFfVcA+qZ4AMmMZQB7ZVgAtlkcANJp
IQDSlWoA0JNlANeaawD/zacA53kdAP/YuADRj1QA1JJWANWVWQDYl1sA255lANeaZQCQd2AA5o0zAOaV
RQDbnF4A6axxAN+mbgDksn8AX1xZAN2bVADgn1gA46NbAOepZQDhpGUA8bNtAOWoaQCmimwA/+vVAIN7
cgDoplQA46NUAOeoXgDsr2YA/8B1AP/BeAD/wngA9rp0ANCkcQDCnG4A/9qsAP/jwQDqqVYA7KxaAMmS
TQDwsF4A1J1TAP+9ZQDztGAA/r5qAPCzZQD/wHEA/8Z7AP/JggCah28A/+jLAP/26gB/e3YA8LBTAPSz
VgD4t1kAwY5IAP/BZQD3umYA/9COAP/UmQD/6MYA//36ANWOHwD+vVUAs4Y/AP6+XAD5u1wA/8FgAOWv
VgD/xGUA/8VqAPK9aAD/yHAA/8hzAP/LdgD+zHsA/85/AP/TigD/3KMA8rlQALuQQQDPn0kA3alQAMeY
SQD/0YQA/9WOAP7WkQD/2JYA/9ucAP/hrAD/47IA/+a4AP/hqAD/6sAA//z2AP/9+QB3XSQA4a9HANmq
SQDlulkA9clsAP/sxQD/7cgA5bZJAOu9TgDswVsA8M55APHUjwD/7sUA//vxAKyMNQDqx2YA68pvAP/x
zAD99NsAwZ45ALqZOQD15K8A0K84AMmpOACxlDUA1rdOAOnRegDVuDwAoIkuANm7QwDavkwA6NOEAOnZ
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
AADgAAAAAD8AAOAAAAAAPwAA4AAAAAA/AADgAAAAAD8AAOAAAAAAfwAA4AAAAAB/AADgAAAAAH8AAOAA
AAAA/wAA4AAAAAD/AADgAAAAAP8AAOAAAAAB/wAA4AAAAAH/AADgAAAAAf8AAOAAAAAD/wAA4AAAAAP/
AADgAAAAA/8AAOAAAAAH/wAA4AAAAAf/AADgAAAAB/8AAOAAAAAP/wAA4AAAAA//AADgAAAAD/8AAOAA
AAAf/wAA4AAAAB//AADgAAAAH/8AAOAAAAA//wAA4AAAAD//AADgAAAAP/8AAOAAAAA//wAA4AAAAD//
AADwAAAAf/8AAPgwAAB//wAA/DGCEP//AAD//8c4//8AAP///////wAAKAAAACAAAABAAAAAAQAIAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHl4jQCMi5UAl5WaAAAAAACShZEAnXyNAM+XnQDInaEAx5aZAM+W
mQDMlZYAwYWFAMmUlACfkZEA5nx4AMGAfgDIlJIAx5ORAM2OiwC+d3EAiXh2ANOakADoo5QAxIl+AL6I
fQDBi4EAwYh6AMKJewD/0MUAwIh5AJlcRADwlGkA0HdMAN2HXQC5clAA+KN3AHpdTwDuuqEAeWJXAGln
ZgDohU8AyINdAMSHZAC7nYwAtGY3AM2RaADRr5cA0ZBgAPe4iQD4wpkA9cmpANG6qQDWmmcA0pdpAIpv
WADEdzEA3pteAOqlZQDop2wA3aFpAOSocADgomUA4qZsANCebwB4bWIA//79AN+NMQDThjUA8qZVAOum
XADNkVMA6KxpAPvVqgD417MAqp2PAPOwXQDen1YA5aZeAPq7cgDrsGwA8rh0AOezdQDTpGwAt5RsAJ+P
fADrmzQA56lVAMSOSgD7uWIA6q1bANWcUwD6t2MA+75uAPK2awD+xXsA2qtwAMuibgCsil4Aq49sAJeJ
dwDqqUgA3qFHAP26WwD3uFoA9sBzAPfLjgB1c3AAypRCAP29VQDytFMA26RNAL2QRgDLmkwA7LJZAN+s
WADuuWIA/cZxAOXOqADCkToAuYs+APe9UwDrtFEA4q1SAPfBXgD7ynQA/Mt5APXIdgD70osA7cqPAO/U
pQDstU0AyZtDANupSwDkslAA7bpbAPfHaQD+7MgA2KpEAOO0SQDEnEEAv5dAAOu5UAB4YzUA8cx5APLR
hgD52ZYA/d+hAP/kqQD55rsAxJs6ALSROADLpEEA6bxNAN2zTADuwloA9dJ/APTViwDo2bQA0qo6AMmj
OQDSqkAA27NEAOS8SQDUrkoA7MdjAMKhOAC5mTcA4btFAKqONADjv1QA6MhnAN2+YwDpym0A4MRuAO3S
gADu15AA/fHLANm0OgCukjMA3b1JANy+VQDz4aYA8+OqANm6QgDix2IA4spqAOTQfACnkiwA1bxFAN7I
ZQDjz3MA7d6dAMq0LwDCqy8A1sVhAOTVhADm2pQAzcq5AOTZiwDx7c8AzsNSANbOcQDY0noA19SEAN3b
kQDb35wA5ei9AMrUhQDO3pEAwtZ/AKnUcgDP57QA8/XxALPamQCz45cAvuunAKLkiAC7zLUA2u/XAND0
zADn+OUAq+imAMftxACt5aoAuOq3ANv22gCY65cAquyqAHvifQCh56IAp+2pAMn0ygCs7a8A7/3wAKjx
rwCJnZMAlcXFAGepsQBNzuYAWLzQAHu4xQA7q8UAR6W6ADSVrgA5wewAUpWqAHaIjgBll6oAbnh8AKWv
tACPlqcAjIyMAImJiQB/f38AeXl5AAAAAAADAwP8/vz8AgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD
CA8iICIeNiZA/vv8AwMDAwMDAwMDAwMDAwMDAwMDAwMYCDMyMjEjHyAiIh4kJ2r9/AMDAwMDAwMDAwMD
AwMDAxcQ5eLo4NPTnUlRIx8hICwkJiYnAwMDAwMDAwMDAwMDHQnU6dze4+bj6OTi050yMTAfKB78AwMD
AwMDAwMDAwMXEeDb4eHclH/E0tbW2OLi19PNHhQDAwMDAwMDAwMDAxsJ2uDl5darhHKjhl5/kb/Q2NiO
JwMDAwMDAwMDAwMDGwra3EFBx3Nwb6iWjINlenN0XihhNkBAav0DAwMDAwMXEN/m3ejPclo4b1dGRld3
d3Z2QzpRUVFSYScDAwMDAxoJ1Onc262Ei4y7soxXRkZGRlcsKS0tLTxe/QMDAwMDFxDe59vOaFlNTYtw
WoOmlpaWdywpLSoqPlL8AwMDAwMbCd7j6M+Zl5+XpotuTExMTFprNy81LS1QYgMDAwMDAxoK2ulBSFtx
enqlpZellZWLg2s3LzQvO1BUAwMDAwMDFxHg6ta0oaGFcaCEWVZWbm6XlTc4OzRPYPwDAwMDAwMdCdTp
znOGjYqhwcGeoImJhIRlQzg+PVBiAwMDAwMDAxcM4OjLhnt7e3uhgmd5iomenp9DTUdHUGMDAwMDAwMD
Gwra262pqbO3t8CxioKCgm1tZEJFT11f/AMDAwMDAwMaCtzHXn19fHR0s6KYp7GxsbGeQktdTlMDAwMD
AwMDAxcQ4NG0vb24uKS8qZp7e2ZseIJVS1xQVAMDAwMDAwMDHQbUkX6ckI+srMjItLSzs6ensVVmdF/8
AwMDAwMDAwMXCNXCuq+cf39/vax9fIeHmpqYVWZeUwMDAwMDAwMDAxoHSX6vxMPKycnIwrm5qqSkpJpV
WF5jAwMDAwMDAwMDFwqAkLW2tZKSkrqunK6+ub24tGRcUfwDAwMDAwMDAwMZEqvKzczMzMbGysrDw66u
m5t8RE5iAwMDAwMDAwMDAxkSaZSIlJS2tb/Ly8bDw7q+vr1WTmMDAwMDAwMDAwMDGRIxnYiwiIiIiM22
k5OTkpGRj0RSDQMDAwMDAwMDAwMZFTAU8LCU+uywdQLZk0nFlJNIOWH8AwMDAwMDAwMDAxgSFgfzM0n5
8cUcAPKBJfXwky739vwDAwMDAwMDAwMDPxMFC/EEEw/yBA4L8gIODfIWFvnzAwMDAwMDAwMDAwMDP+/u
8hTv7/X49+3zAAHt8QUP9vUDAwMDAwMDAwMDAwMDK/ntA+vt9gPw70oD7+4U9vTwAwMDAwMDAwMDAwMD
AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD4P///8AD///AAB//wAAD/8AAAf/AAAH/wAAB/8AA
AA/AAAAHwAAAB8AAAAfAAAAPwAAAD8AAAA/AAAAfwAAAH8AAAB/AAAA/wAAAP8AAAD/AAAB/wAAAf8AA
AH/AAAD/wAAA/8AAAP/AAAD/wAAA/8AAAf/gAAH/8RED//////8oAAAAEAAAACAAAAABAAgAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAi4mRAAAAAACWjJIAu5qcAN2ZigCbj4wAl312AI50bACXioYAlG5gAH9k
WgCuk4oAmHZpAJN+dQDLjWkAp3pcAOCtiwDDfEgA1YpRANyeagDoqHIA26BvANqrhQDQiUkAv5NtANK3
nwDSuKEA3aVsANzLugDblEkA8bJwANulbACnloMA3826AOadSADKikAAxo1HAOqoXQD+wHQAl3dRAL2Z
bwDnzKsAzcCwAMWNQwD+u2QA8blxAMOfcQDRr4QAj35oAKWXhQDMwbIA9KxJAP63UgDCjD8A2LJ8APTV
qgCmmYcAzMCuAM3BsADMwbEAzcO0AJKLgQDcpUoAzZtJAMiWSADYolAA4rBhAMzDtQDMxLcAzZg/ANak
SQDVokkAu45AAL2RQQDhqz8A1aE+AOKuSgDjr0wAyp1FAMmdSADntEAA57VGAOq4SwDbq0cA7btSAOu7
VwDwwV4A0atWAOa/agDeyp0A3LBDAM+mQgDTqkQAx6BBAO6+TwDswFYA7cReAO/JawDxzHMAmI53AOS6
RwDnvE0A68ZfAOrGZADszHQA27xsAPPSfADu04YA2rRCAOK9SwDt04QA9t2PAPLkuADhwVUA4sRdAOTK
agDn0HsA7diQAPPfmAD05rgA+u7DAObOcQDhzoYA4MxwAOTTfgDs3JYA49WFAO3fkwDo3JQA2856AOLV
hADn358A6OKhANjUmADg354A1NZ+ANzjowDX36MA2+GvAL3AtgDX6rAAv+SRAMfrnQDR67IA1O3BANL3
zwDF9skAyffQAMn60gDR+9oAz//aAKCpqACft7sAUrnSAGWKnACXoakAiIuSAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEGDA0FBQEBAQEBAQEBAQEBGopZLxgPCQcIAQEBAQEBATyWkoyN
joiFNgoBAQEBAQE5k5BCT1dpgYcnPQUBAQEBKpWJQUlIJCsjEhUbMAEBATqUej5dTj9ANREOFDgBAQE7
kVhMXFtGR0UXEx8uAQEBQ49VVGxaTVNLHR4oLgEBAUSGVmBtZFJRSiImIAEBAQEyfmhicnFfXlAzLS4B
AQEBGW51a3tzYWZlNC4BAQEBARZ/g32CfHR5ZywxAQEBAQEQcHh3hIB2b2olMQEBAQEBBJshmByXKYs3
YzEBAQEBAQuZnJkAmQKZA5oBAQEBAQEBAQEBAQEBAQEBAQEBAQGD/xcQgD/d6IAfWjiAB0ZGgAN3doAD
OlGAA1JhgAMDA4AHGgmAB9zbgA+LjIAPjFeAD0ZGgA8pLYAfPF7//wMDKAAAADAAAABgAAAAAQAgAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE1NTQFNTU0JTU1NH01NTUFNTU1OTU1NS01N
TUZNTU1ATU1NN01NTSxNTU0hTU1NGE1NTRJNTU0OTU1NCk1NTQZNTU0ETU1NAk1NTQJNTU0BTU1NAQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE1NTQJNTU0PTU1NOU1N
TXhNTU2YTU1Nl01NTZRNTU2QTU1NhU1NTXJNTU1gTU1NUk1NTUZNTU06TU1NLk1NTSJNTU0ZTU1NE01N
TQ9NTU0LTU1NB01NTQRNTU0CTU1NAk1NTQFNTU0BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE1N
TQLDQylYk2dRY2NVTqJTT03GTU1Nx01NTchNTU3MTU1NyU1NTb5NTU20TU1Nqk1NTZ1NTU2MTU1NeU1N
TWZNTU1WTU1NS01NTUBNTU0yTU1NJU1NTRpNTU0UTU1NEE1NTQxNTU0HTU1NBE1NTQJNTU0CTU1NAU1N
TQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAO+KVha/dnb/06en/+qIVvD1jFb954dW/MJ5VPeea1L1eV5P8lRQTexNTU3oTU1N5E1N
Td5NTU3UTU1NyE1NTbxNTU2xTU1Npk1NTZZNTU2BTU1Nak1NTVhNTU1MTU1NQU1NTTRNTU0lTU1NGk1N
TRRNTU0QTU1NDE1NTQZNTU0CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAMOUfv+/dnb/06en/7Z0U9XJfFT36YhW/vaNVv/qiFb+64hW/veN
V//oh1b+wHhT/ZxrUft4XU/3VFBN8U1NTe1NTU3pTU1N401NTdpNTU3NTU1Nv01NTbNNTU2nTU1NmE1N
TYNNTU1rTU1NWE1NTUxNTU1CTU1NMk1NTRxNTU0KTU1NAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMOUfv+/dnb/06en//L88v////7///36///7
9v//5tb//9G2//yxi//8mmr//pBY//yMVv/6iVP//YxV/++HUv/SeEv+qGVJ/HhdT/hTT03zTU1N7k1N
TepNTU3kTU1N201NTc5NTU3ATU1Ns01NTalNTU2ZTU1Nek1NTUtNTU0eTU1NB01NTQEAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMOUfv+/dnb/06en/2XY
Zf9Y1Vj/Zdhk/5nklv+/7bn/2fPQ///78v//+/H///ru///t2v//27///b+c/9+fXv/2kVj//o9X//yL
VP/9jlX/84ZS/9h3S/6tY0f9eF1P+VNPTfNNTU3uTU1N6k1NTeVNTU3ZTU1Nuk1NTXxNTU00TU1NDE1N
TQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMOU
fv+/dnb/06en//////////7/8vru/8zwx/+Z5JT/f917/1jUVv9Y1Fb/f915/5nikP/M7rz/8vbd/5ni
jP/M7Lf///Xe///ixP//zaf/+aF0//qRXf/+j1f//Y1W//2OVv/3h1L/4HlM/rZoSf1iT0n0TU1N1U1N
TZNNTU0/TU1NEE1NTQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAMOUfv+/dnb/06en//////////7///36///9+f///Pb///z1///78v//+/H/2fHL/7/r
s/+Z4o7/ZdZg/0zRSf9Y01P/meGK/7Lmnv/M67L///Xb///02P//9Nb//+jG///Wrf/6qnz/+ZNh//yO
V//TXDb+TU1N3E1NTZ1NTU1KTU1NGk1NTQlNTU0GTU1NA01NTQJNTU0BTU1NAQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAMOUfv+/dnb/06en/5nlmf/M8sv/5ffh///9+f///Pb///z1///7
8v//7NL//8aC///OkP//2KX//9+z/6jXe/+/6qz/zOy1/6Xkk/9/23L/ZdZc/1jTUf9y2GX/md+D/8zo
qf/l7bv///HM///xy/+jIxP9TU1N401NTa9NTU1qTU1NPk1NTSpNTU0fTU1NF01NTRFNTU0NTU1NCk1N
TQZNTU0CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMOUfv+/dnb/06en/7/vv/+Z5Zj/cttx/1jU
WP9l12P/f917/5njkv/j0Ij/9b1p//+/cv//v3D//79v/9a2Sv/qulv//8V7///Qj///2qT//+S3///q
w//l78L/v+eh/5nfgf9y12P/TNBF/2XVWP92XCP+TU1N701NTdFNTU2oTU1Nh01NTXJNTU1hTU1NUU1N
TURNTU05TU1NLE1NTRtNTU0LTU1NAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMOUfv+/dnb/06en////
//////7///36///9+f///Pb/2fPR/7/stv/TulL/w7E9/5OIIv+ikiv/sZk2/66eMP/Qq0n/97pn//++
a///vmr//75p//+9aP//vWf//8uC///Rjf//26H//+Sy///uxf+ROhn+TU1N+E1NTe5NTU3eTU1Nz01N
TcRNTU25TU1NrE1NTZxNTU2KTU1Nck1NTUtNTU0fTU1NB01NTQEAAAAAAAAAAAAAAAAAAAAAAAAAAMOU
fv+/dnb/06en//////////7///36///9+f///Pb///z1///s0v//wHP/8bJr/9maX//YmF7/x5NQ/6CI
L/+giC//m4cq/5+LLP+fjyr/v54//9apTv/msVf//71m//+9Zf//vWX//7xk//+8Y//dcCj/06Vt/qeI
Y/2Rel76cGRV9U1NTfBNTU3sTU1N5k1NTd5NTU3RTU1Nt01NTX9NTU03TU1NDU1NTQEAAAAAAAAAAAAA
AAAAAAAAAAAAAMOUfv+/dnb/06en/1jVWP9y23H/meSW/7Lqrv/M8MX///z1///aq///wHP/56hm/9yd
X//bnF7/2ppe/62NOP/BkUr/1pZb/9WUWv/Uk1r/w45M/7eLQ/+nhjb/l4Ip/6yPNf+slDL/vZs8/96r
T//jfSz//8J4///CeP//wnj//8J4///CeP/erHD+vZZo/aiJY/txZFbyTU1N1E1NTZNNTU0/TU1ND01N
TQIAAAAAAAAAAAAAAAAAAAAAAAAAAMOUfv+/dnb/06en///////l+OT/zPHI/6Xnov+M4Ij/Zddj/6W3
N//Bsjn/tJg2/7aXOv/Jmkz/0ptU/7GROP/FlUr/2Zlb/9iXWv/Xllr/1ZVZ/9STWP/Tklf/0pFW/9GP
Vf/PjlT/v4lH/7OGP/+nVx7/yYxm/9KVav/go2//6Ktx//O2dP//wnj//8J4///CeP/1u3X+TU1N0E1N
TYdNTU03TU1NDU1NTQEAAAAAAAAAAAAAAAAAAAAAAAAAAMOUfv+/dnb/06en//////////7///36///9
+f///Pb///Tl///Ac//4uW7/z6BN/8mdSP+4mTn/qJQr/5aOHf+ajiH/pJAq/7KSN/+7k0D/xJRH/9eW
WP/WlVf/1ZRW/9SSVf/SkVT/0Y9T/9COUv+1RRn/yItl/8iLZf/HimX/xYhl/8KFZf/BhGX/zZBp///C
eP/1u3X+TU1Nvk1NTWxNTU0nTU1NCE1NTQEAAAAAAAAAAAAAAAAAAAAAAAAAAMOUfv+/dnb/06en/8zy
zP////7///36///9+f///Pb//+K9///Ac//ytGn/56hg/+anX//lpl7/5KVe/7mZOP/MnEr/1p5S/8qa
Sf+6ljv/r5Iy/56OJf+YiyH/nIsl/6qNMP+tjTT/wY9D/8qQSv+8TBn/zZBl/8qNZf/Ii2X/yItl/8iL
Zf/HimX/15pr///CeP/BmWn0TU1Npk1NTVFNTU0YTU1NBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMOU
fv+/dnb/06en/4zijP9l2GX/TNFL/2XXZP9y2m//xsZn/+C5Vv/aq1D/5apb/+mqX//oqV7/56he/7ub
OP/Pn0r/46Nb/+KiWv/hoVr/359Z/96dWP/dnFf/3JtW/8aVRf/Ak0D/r440/5+LKP+oaCD/0JNl/9CT
Zf/PkmX/zI9l/8mMZf/Ii2X/6q1x///CeP+Nd1zgTU1Nik1NTTpNTU0OTU1NAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAMOUfv+/dnb/06en//////////7///36///9+f/l9t7/771l/9m2T//Gpzr/sKAn/6qe
Iv+unif/sp4r/6ubJv++njj/0qJJ/+CkVv/kpFr/46JZ/+KhWP/gn1f/355W/96cVf/dm1T/3JpT/9qY
Uv/DUxn/05Zl/9GUZf/Qk2X/0JNl/9CTZf/OkWX//L93//W7df5NTU2+TU1NbE1NTSdNTU0ITU1NAQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAMOUfv+/dnb/06en//////////7///36///9+f//6c3//8B0//q7
a//ys2H/8bJg/++wX//ur17/46xU/7egL/+3ny//waE3/6ubJv+lmSH/qZkl/6yYKf+7mjb/xJs9/82c
Rf/bnVD/351T/92bUv/EVBn/15pl/9eaZf/VmGX/05Zl/9CTZf/fomv//8J4/8GZafRNTU2mTU1NUU1N
TRhNTU0EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMOUfv+/dnb/06en/4zijP+Z5Zj/v+28/8zw
x///16X//8B0//m6Z//1tmH/9LVg//OzX//xsl7/8LFe/8amOP/ZqUr/7Kxb/+urWv/qqlr/6ahZ/96l
UP/SoUb/wp05/7ybNf+mlST/n5Mg/6OTJP+2diD/2p1l/9ibZf/XmmX/15pl/9eaZf/vsnH//8J4/413
XOBNTU2KTU1NOk1NTQ5NTU0CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMOUfv+/dnb/06en/8zy
zP/M8sv/meSW/4zhif+3t0D/u7E0/7ytJ/+7rCf/zq86/82uOv/hsUz/37BL/8mpOP/crEr/8LBb/++v
Wv/urVr/7KxZ/+uqWP/qqVf/6ahW/+imVf/npVT/5aNT/+SiUv/MXBn/4KNl/+CjZf/doGX/2p1l/9ea
Zf/6vXb/9bt1/k1NTcBNTU1tTU1NJ01NTQhNTU0BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMOU
fv+/dnb/06en//////////7///36///y4f//wHT//8Bu//2/Yv/3vFz/5rdN/+C1SP/QsDn/ya00/6+n
Hf+tpR3/tqYm/7qmKv/JqDf/zKg7/9qqR//eqUr/7atW/+uqVf/qqFT/6adT/+imUv/RYhn/46Zl/+Cj
Zf/go2X/4KNl/+Woaf//wnj/wJlp9U1NTapNTU1TTU1NGU1NTQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAMOUfv+/dnb/06en//////////7///36///jwP//wHT//8Js///CZP//wWL//r9g//2+
X//8vF7/+rte/8+wOP/js0r/97db/+yzUf/gsEj/1aw//8mpNv++pS3/sqIl/6ygIP+wnyT/uaAs/8Kh
M//Gdh7/56pl/+eqZf/kp2X/4qVl//G0cP//wnj/jHZc401NTZBNTU09TU1ND01NTQIAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAMOUfv+/dnb/06en/2XYZf9l2GX/Zdhk/7y8Tv/Wt03/27xM/+vA
V//wwFn//8Jk///BYf//wF///r5e/9S1OP/nt0r/+rpb//m4Wv/4t1r/9rZZ//W0WP/0s1f/87JW//Kw
Vf/wr1T/4KpH/9moQ//Schz/6q1l/+eqZf/nqmX/56pl//y/dv//wnj/TU1Nw01NTXNNTU0rTU1NCU1N
TQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMOUfv+/dnb/06en//////////7///ny/++9
Z//qvWH/4MFW/9a+Sv/Muj7/wrcx/7y0Kv/CtC3/wrQq/7ywIv/Lsy//47dF/+e3Sf/wuFH/+blZ//i3
WP/3tlf/9rVW//WzVf/zslT/8rBT//GvUv/cbBn/77Jl/+6xZf/sr2X/7bBp///CeP/LoGz3TU1NrE1N
TVdNTU0bTU1NBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMOUfv+/dnb/06en////
//////7//+fJ///Bdv//xnn//8x7///KeP//ynX//8hx///Hb///xmz//8Ro/8u2M//buUD/1rg7/9a3
Of/Gsir/wLAl/7qtIf++rSX/wq0p/9CvNf/OrjT/4rBD/+GvQ//fcBn/8LNl/++yZf/vsmX/+Ltw///C
eP+Yfl/lTU1NkU1NTT9NTU0RTU1NAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMOU
fv+/dnb/06en/7/vv//M8sv/6NKR///Bdv//zYH//8+C///Nfv//zHv//8t4///Kdf//yHL//8du/9a5
QP/qvlL//8Nk///CYv//wV///8Bb//++Wf/+vVf/87pO/+e2Rf/cszz/0K80/8qtL//Rih//9rll//W4
Zf/ytWX//cB2///CeP9cV1HHTU1Nc01NTStNTU0JTU1NAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAMOUfv+/dnb/06en/5nlmf+Z5Zj/xLdF/8G0PP/CxE//vMFI/8LBSv/Mw1L/1sRY/9bD
Vf/rxmX/68Vi/8u8Qf/qwVr//8Zq///FaP//w2X//8Jh///BX///wFv//79Y//69Vv/9vFT//LpT//u5
Uv/ndxn/97pl//a5Zf/4u2n//8J4/8ugbPdNTU2sTU1NV01NTRxNTU0FAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAMOUfv+/dnb/06en////////8N3//8F2///Jgf//1ZD//9SO///T
iv/wznn/68tx/+XJaf/WxFn/1sNW/7y6N/+8ujf/vLo4/8K6Of/CuTf/0btB/9a7Q//bu0T/671O/+u8
S///v1f//75V//68U//rexn//8Fl//3AZf/9wHD//8J4/5h+X+VNTU2RTU1NP01NTRFNTU0CAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMOUfv+/dnb/06en////////3LP//8F2///Q
jP//15b//9eU///Vkf//1I7//9OK///Rh///0IT//8+B/9bDV//qx2f//8t3///KdP//yXH/68Nd/+vC
Wv/gv07/1rxE/9G6Pf/Cti3/wrQr/7yyJf/Zkh///8Fl///BZf//wnb//8J4/1xXUcdNTU1zTU1NK01N
TQlNTU0BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMOUfv+/dnb/06en/2XY
Zf+3u0n/1rhO/9bQdv/g04D/69WH/+vThP/61pD//9WR///Vjv//04v//9KI/9bFW//qym3//85+///N
e///zHj//8p1///Jcf//yG///8dr///GaP//xGT//8Nh///CXv/rexn//8Fl///Baf//wnj/y6Bs901N
TaxNTU1XTU1NHE1NTQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMOU
fv+/dnb/06en///37v/1v23/6sRv/+vak//b1YL/1tN7/9bSeP/CzGL/wspf/7zIWP/CyVr/wsdY/7fC
Sv/Mxln/1sli/+DJaP/ry27/68pq//rLdP//y3b//8py///Jb///x2v//8Zo///FZf/rfR7//8Fl///C
cP//wnj/mH5f5U1NTZFNTU0/TU1NEU1NTQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAMOUfv+/dnb/06en///kxP//wXj//9SX///hrf//4Kv//9+o///epf//3aL//9ye///a
m///2Zj//9iV/9bLav/bzG3/69B5/9vLav/WyWP/1shg/8LDTP/CwUr/vL9C/8LARf/CvkH/x75D/9bA
TP/dlC3//8hz///Ddv//wnj/W1ZQyE1NTXRNTU0rTU1NCU1NTQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAMOUfv+/dnb/06en/+3QkP//wXj//9+r///ktP//47H//+Ku///g
q///36j//96k///dof//3J7//9qb/9bPcv/q0oH//9eR///Vjv//1Iv//9OI///Shf//0IL//9B+///O
e///zXf/9cls/+vGYv/niCz//8d1///CeP/LoGz3TU1Nrk1NTVlNTU0cTU1NBQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMOUfv+/dnb/06en/8a0QP/BuET/wtmB/7zX
ef/C13z/wtZ5/8LVd//W2Yj/1teE/9bWgv/r2pL/69mP/8vQb//q1Yj//9mX///YlP//15L//9aO///U
i///04j//9KF///Rgf//z37//857///Nd//riDf//8h9///CeP+Xfl/nTU1NlU1NTUJNTU0RTU1NAgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMOUfv+/dnb/06en///B
eP//1Jv//+zF///qwf//6b7//+i8//Xkr//r4aL/69+f/+XdmP/W2Yf/1teE/8HQbv+8z2f/ws9q/8LP
aP+8zGH/wsxi/8LLYP/Hy2H/1s1r/9bMaP/bzGn/681y/+vMb//njjr//8R6///CeP9bVlDLTU1NeU1N
TS9NTU0KTU1NAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMOU
fv+/dnb/06en///BeP//4bT//+zF///sxf//7MX//+rC///pv///6Lv//+e4///mtf//5LL//+Ov/9bY
h//q3Jb//9+l///eov//3Z///9yc///amf/1143/69SC/+vTf//l0Hf/1sxp/9bLZv/klkX//8J4/9an
bvlNTU2yTU1NXk1NTR9NTU0GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAMOUfv+/dnb/06en///BeP//8tX//+zF///sxf//7MX//+3I///sxf//68L//+zF///s
xf//7MX//+zF/9bYh//q3pv//+Kr///hqP//4qv//+Kr///iq///3Jz//9uZ///Zlf//2JH/+cl8//K5
aP/tkUT//8J4/6KFYutNTU2ZTU1NRk1NTRNNTU0DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAMOUfv+/dnb/06en///BeP/MjYn/eVpp/8vf4///7MX//+3I///t
yP/lxsT/y8XM///sxf//7MX//+zF/9bYh//Lxcz//+Go///hqP//4aj//+Go///hqP//4aj//+Go///h
qP//4aj//+Go///hqP/klkX//8J4/2hfVNJNTU2ATU1NM01NTQxNTU0CAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMOUfv+/dnb/06en///BeP/MjYr/RXOQ/wWt
0f/Uw8T//+3I///tyP+kTE//BKDK/0iQq///7MX//+zF/9qsrP+BUV7/B6LK/9ausP//4aj//+Go/+G8
vP+Tk6L/y9/p///hqP//4aj//+Go/9qsrP/klkX//8J4/01NTb9NTU1uTU1NKE1NTQhNTU0BAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMOUfv+/dnb/0aGh/+K+
uf/ivrn/4r65/yisy/+hjJb//+3I///tyP//7cj/v8/a/wC01f/lxcX//+zF//Pl5f+5ZGT/I6/Q/1eF
nf//4aj//+Go/8yNjf9JfZr/BazQ/8utsf//4aj//+Go/4FRXf8AqNH/ja/A/01NTbRNTU1kTU1NIk1N
TQZNTU0BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKx8
Zf+/dnb/tFlZ/7NWVv+4YWH/uGFh/x6ct/9ggJT/wHNz/8Bzc//Ac3P/vXd5/wDC3f+phIz/zpKS/9io
qP/YqKj/kZ6t/xujwP/YqKj/2Kio/9ioqP/YqKj/KrDP/9ioqP//4aj/2Kio/9qsrP/E2uX/IJq5/01N
TahNTU1XTU1NG01NTQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADKZgFpurnC72WJnv/Ssa//zrCx/wDQ5P+spbD/p3R7/6d0e//KiYn/p3Z9/wDR
5f+qZGj/uGFh/7NWVv+0WFj/eGZ0/wXC2v+3Xl7/uGFh/7hhYf+4YWH/IKC7/2CAlP/Cd3f/y4uL/86S
kv+si5P/Cr3a/01NTY9NTU1CTU1NE01NTQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwGk/nTXC2/84uND/Hcbb/zTG4/8AAAAAgrfK/w/P
5f+EprD/J8DY/zqsx/+NcF7/I7HO/1y3y/+1s7X/HrTM/02wyv+NgYj/d6/D/6uboP/Mr7P/ANPl/6in
tP+1j4//sXN3/8J3d/9wip3/OY6s/01NTWRNTU0oTU1NCk1NTQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzGYzBax8ZXpxt9P/YafB/5Fc
RAsAAAAAsl80KXi93f8k0eL/PMPc/4pSOC+gVS8Ido2X/zHN6v9Aydj/JtHj/3hPOjaPVTdKOsPe/xPO
3v8T1OX/RLXW/2dJOHBCnc/PNrbS/3eZpf8mxeH/RF1oQE1NTSlNTU0TTU1NBAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMxm
MwHMZjMGzGYzBQAAAAAAAAAAAAAAAAAAAADMZjMBzGYzAQAAAAAAAAAAzGYzCaCUjIR6u9r9grPJ9sxm
MyUAAAAAxolsQZzD1/+HsMH/xndQPQAAAADFdEwoVLzk/xzQ5/9jq8z/ymY1CwAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzGYzAQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMtmAAEAAAAAAAAAAMtmAAEAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA
AP///wAA4AAAB///AADgAAAAP/8AAOAAAAAf/wAA4AAAAA//AADgAAAAB/8AAOAAAAAH/wAA4AAAAAf/
AADgAAAAAD8AAOAAAAAADwAA4AAAAAAHAADgAAAAAAMAAOAAAAAAAwAA4AAAAAADAADgAAAAAAMAAOAA
AAAAAwAA4AAAAAAHAADgAAAAAAcAAOAAAAAABwAA4AAAAAAPAADgAAAAAA8AAOAAAAAADwAA4AAAAAAf
AADgAAAAAB8AAOAAAAAAHwAA4AAAAAA/AADgAAAAAD8AAOAAAAAAPwAA4AAAAAB/AADgAAAAAH8AAOAA
AAAAfwAA4AAAAAD/AADgAAAAAP8AAOAAAAAA/wAA4AAAAAH/AADgAAAAAf8AAOAAAAAB/wAA4AAAAAP/
AADgAAAAA/8AAOAAAAAD/wAA4AAAAAP/AADgAAAAA/8AAOAAAAAH/wAA8AAAAAf/AAD4IAAAB/8AAPgg
AAAP/wAA/HmCEH//AAD//7/t//8AACgAAAAgAAAAQAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAwAAABaAAAAhQAAAHcAAAB2AAAAbAAAAFQAAABDAAAANQAAACEAAAARAAAADQAA
AAoAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAzHlbiMB8dfG4aUPmxWY15LNfNOCARSbTZjgfxlEtGrwlFQylAAAAiAAA
AHMAAABlAAAAUgAAADIAAAAZAAAAEwAAAA0AAAAHAAAABQAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC+iHz8yZaZ/9m6oPfxyKn8/cuv//u5mv77onz97opd+dJ0
SPC0YjvlolYy3X4+ItRAIBK8BQMCnQAAAI0AAACBAAAAZgAAAEUAAAA1AAAAKgAAABIAAAABAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGEevjIlJP/oeen/5Hunf+t7rH/vey3/8rm
t//Q4rX/5d23//zQs//osn3/9aJx/+qUbPjbgVXzzWk8755LKeBfMx3JSScXujYbELEJBAKXAAAAVwAA
ABEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvYN09c+Vmv/u8+3/8f3y/+b4
4v/E8MD/q+yr/6XsqP+q7ar/r+6t/3viff+Y6JX/0e28/+far//wxqH/88CW//Wzhv32lmj88H1P+ok7
ItoQBgN/AAAAGgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBhHj1xpOR/7/p
vP/O987/2PTX/9333f/q+ej//eG9//rRkf/l2pj/qdRy/7Dgjf+75pz/oeaP/5fpj/+f7Jn/vuun/9Hl
qP/W3qH/mUcs6xsFAokAAAAiAAAACQAAAAYAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL+E
dvXPlpn/2vDW/7fvuP+g5p//oueg/6/kmv/fv2L/2ahM/9+sWP/Urkr/6rhd///Hff/60Ij/+teV/+zd
mv/O3pH/rOSG/5rjhP9rVCLpDAkFowAAAGkAAABLAAAAOAAAACkAAAAbAAAADwAAAAAAAAAAAAAAAAAA
AAAAAAAAv4N29cuWlv/a7tb/6fvo///+/f//////9OzP/+u4Yv/ImE3/vY5H/6qONP+ykTf/wJdA/8ic
QP/apEj/5atQ//C4Yv/5xHP//8R7/9+FRfebc0TfcFk3zVNAJ743KhqsHBUNmQAAAIEAAABdAAAADQAA
AAAAAAAAAAAAAAAAAADChHn1yJSS/63lqv+o7qn/q+im/67sr//O0oX/3q5U/9KbVf/enGH/vJFF/8KQ
S//Pklf/yo9S/8KOTP+5i0H/uow+/8CRPv/DkDb/1Ic7/+inbP/stXX96bBu+eGvbPTOoGLuoHpL3gAA
AJMAAAAYAAAAAAAAAAAAAAAAAAAAAL6DdfXPlpn/9PXw//P98v/l9uH/0fDI/97Fbv/aqU//wplC/76a
Pv+nkiz/rpIz/7+VQv/Fk0n/zZNR/8+RU//Oj1L/zY9T/8WGSP+3YzP/xIBc/86Sa//Qkmn/z5Jq/+So
cP/9wnj+AAAAfwAAABIAAAAAAAAAAAAAAAAAAAAAwYR49ceUkv/F68L/xvXH/8zzzf/i6b3/9sBz/+ms
Xf/kp13/5add/8OcQf/NnEr/1p5S/8iZRv+5lTv/s5E2/7SQOP+1kTv/uYo6/7ptMP/Lhl3/y49p/8aJ
ZP/ChWT/4qVu/86eYuoAAABYAAAACgAAAAAAAAAAAAAAAAAAAAC/hHb1zpaZ/8zsyf+q66n/qeyx/8XV
hf/ds0z/y6dA/8ekPf/LpEH/uJ0z/8aeQP/aolH/3KFU/92fVf/hn1n/3ZxW/9ebUf/JkkP/vnIx/8+N
Xv/Sl2n/y45k/82QZf/ytnP/j29EyQAAADYAAAAFAAAAAAAAAAAAAAAAAAAAAL6DdfXMlZf/3u/a/+v8
7f///fr//9ap//q3Y//qsVn/4q1S/+GtUv/Cozf/w6E5/8miP//Bnzn/wp06/8ScPP/GnD//y5xE/8uW
QP/HdjL/1JFd/9abaf/Rk2T/3J9p//G4c/pdRyyaAAAAGQAAAAEAAAAAAAAAAAAAAAAAAAAAwoR59ceT
kf+46LT/qPGv/7HhmP/XvFv/2LJD/9uyR//kslD/7bJY/9GqQP/cq0v/661Z/+irV//lqFX/36ZP/9mj
Sv/OoUP/xpk5/8h9Mf/bmF3/3aJp/9aZZP/qrW//xphf5xoUDGEAAAANAAAAAAAAAAAAAAAAAAAAAAAA
AAC9g3T1z5aa//j29P/u/fD/5+a9/++7Yv/vvFj/67lQ/+G1SP/cskP/wawu/8OqMP/Qqzz/0qo//9aq
Q//ZqEb/26hI/9uoSf/eoUf/1oAz/+CcXf/ip2n/4KJl//W4c/+ZdknMAAAAOgAAAAYAAAAAAAAAAAAA
AAAAAAAAAAAAAMKEePXJlJT/teay/6vurv/a0If/7rtb//XBXv/6wGH/+MBg//e/Yf/ctkP/6bVN//e4
Wv/rtFH/4rBL/9msQ//RqTz/z6g8/8qiNf/QijD/5qNf/+araf/prGn/7rVx+WFKLqMAAAAfAAAAAgAA
AAAAAAAAAAAAAAAAAAAAAAAAwIR29cyVlv/X79X/0vTO/+LCbf/mvVf/4cFU/9q9Sf/Wu0L/2bpC/8q0
L//Wtjn/57dJ/+y3Tf/ttU//7rRP//GzUf/ytFT/7KtL/+KIM//rplz/7LJp//K1bf/Uo2XtLSIVcgAA
AA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/g3X1zZWW/+P05//u7s7//MR9//3Jef/8y3j//Mpz//zH
b///x3D/3rxH/+S8Sf/pvU//4blE/9q2PP/atDr/2bI5/9ayOv/WqzX/3JEu//GtXv/yt2j/+750/6iA
UNYAAABBAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMKEePXIlJL/seu6/8LWf//dulT/3Mhl/9zI
Yv/hx2L/5cZi/+zFZf/UvUf/479S/+/DX//0wVv/+sBc//+/Wv/9vVX/971T/+61SP/qljP/9bJc//m+
bP/1unL7dFg3rAAAAB4AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvYN09c+Xnf/z9vT/89ab//TH
d//y1Yz/8tKF//DOef/rzHD/58lr/8/ATv/SwEz/3sJV/92/UP/evkz/3r1I/+G7Rv/ivUX/37Y8/+ib
MP/7uFz//sRz/9unZ/AYEgtsAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADChXn1wpeY/7Pa
mf/YwmD/5817/+3Xjf/y1ov//NWO//zTiv/70oj/4Mhl/+rJbf/6zXr/+sp0//nHbP/1xmX/8sNd/+3C
Vv/ou0r/6psy//y4W///xnj/qoFQ2AAAADsAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL6D
dvXMmqH/8924//XIdf/u15L/5tmQ/+LWhv/X0Xj/1c5x/9fOcP/JyFz/08hh/+DLa//kyWj/6Mhn/+vH
Zf/rx2H/7cdf/+7AWP/unjv/+7li//3Eef5bRSumAAAAGwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAv4V69cyWlv/tyo//8tCG//Lgqf/z4an/9d+l//repP/83aH//92j/+XSf//u0oL/99WK//DR
f//oznX/4spq/+DJZf/hyGH/3sFV/+emRP/8vm//4q9u8w8LB2UAAAANAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAC/h331y5GN/9u8ZP/c03v/2uCa/9zdlP/a2o//4NuQ/+DZi//n2Y7/0dJ2/93S
fv/n1of/5tOC/+jSf//t0oD/89F///fSfv/7y3b/8qRR//u7cP+beEvSAAAAPgAAAAYAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAL2HfPXOj4v/98uO//zuuP/67sT/+um+//fntv/05q3/8eKm/+3f
oP/U14T/2NaB/+TYif/i1YP/49SA/+HRef/h0XT/4M9x/93HZv/oqVT/+bly/mJML6cAAAAiAAAAAgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvYZ89c+Qif/5zZz/7dO2//3qyv//8cr//+zI///q
yv//7sb//+7K/+Lgmf/z5Kn//+eo///iqv//46r//+Od//3clv/52pP/8sp4//GoWP/Tm17vMycYfAAA
ABIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC+h3z205qQ//m7i/+Ec3//drTI//vw
z//747//j5an/5XFxf/+88n/5c6o/5GYn/+7zLX//+Om//XYrv/QxLT/8+O7///mqv/31Kr/6qVl/6Z9
Rd8MCQZqAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALyHfP/KiIv/6KiZ/8Og
oP88l7b/x7iu//zYsf+rrKv/PavM/8nPvv//0MX/eXiN/0Sgvv/v1KX/7rqh/1qNr/9/t8b//+Gp/9Gv
l/9nlaX/V3R03QQFBWcAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuHhVm7R2
afKieYj/woeE/z6twv+QhJL/xHBw/8OAf/9Dq77/lIaQ/916d/+/gob/QKC3/6KVnf/vfXj/ooyS/1ej
uP/mp5D/6pmU/6WtvP8Pc4zZAAYHUwAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAvXg2t2Kzzv9Kz+3/RKq2/456dv9btMz/UrnS/0Odqv9ueHz/Ypmv/2OmtP8toLb/d4CM/4yL
lf9yqLP/NqrC/5h/kf+9fH3/f4uX/xBlfLEBBQcdAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADOYBwDpoBqxHSSk65EmqXSGQ0GFomdk/9hq6f/ZYiE7FYzISdjqrDfUMfO/4Rx
XbBpSDcqW8fV/0/M3v+Le23/fIWO/znB7P9FobWwHRgWFQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAwAD//8AAAf/AAAD/wAAAf8AAAH/AAAAPwAAAB8AAAAPAAAADwAAAA8AA
AAPAAAADwAAAA8AAAAfAAAAHwAAAB8AAAA/AAAAPwAAAD8AAAB/AAAAfwAAAH8AAAD/AAAA/wAAAP8AA
AD/AAAB/wAAAf8AAAH/gAAB/4AAA//////8oAAAAEAAAACAAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAGI7MKlmNCCsSCMVlicOBnYHAABPAAAANAAAABQAAAAFAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADSuKH/2+Gv/97Knf/Rr4T/vI5m85toRuFxQC3BTCMWoSsQCX0HAgFJAAAAAwAA
AAAAAAAAAAAAAAAAAAAAAAAAzcO0/8//2v/F9sn/1+qw/7/kkf/H653/3OOj/9jUmP/Ysnz/RyETsgAA
AA0AAAAAAAAAAAAAAAAAAAAAAAAAAMzArv/J99D/1O3B/+KwYf/JnUj/0atW/9u8bP/bznr/1NZ+/4Zh
NNs7LxyOHhgObAICAUMAAAAFAAAAAAAAAADNwLD/0fva/9ffo//YolD/vZFB/7uOQP/GjUf/xY1D/8qK
QP/VilH/26Bv/92lbP9kTS+5AAAACgAAAAAAAAAAzcGw/8n60v/hzob/3KVK/8egQf/KnUX/zZtJ/8iW
SP/CjD//w3xI/8uNaf/oqHL/ZE4vkwAAAAAAAAAAAAAAAMzBsf/S98//5r9q/+KuSv/TqkT/z6ZC/9ak
Sf/Vokn/zZg//9CJSf/cnmr/2qNo+SUdEk0AAAAAAAAAAAAAAADMw7X/0euy/+u7V//tu1L/2rRC/9yw
Q//jr0z/26tH/9WhPv/blEn/8bJw/7CFU9UAAAAaAAAAAAAAAAAAAAAAzMS3/+Dfnv/wwV7/7cRe/+K9
S//kukf/6rhL/+e1Rv/hqz//5p1I//7AdP9vVDWcAAAAAgAAAAAAAAAAAAAAAMzBsv/j1YX/7Mx0//HM
c//ixF3/4cFV/+zAVv/uvk//57RA//SsSf/xuG/8KR8UVQAAAAAAAAAAAAAAAAAAAADSt5//7dOE/+3Y
kP/u04b/4Mxw/+TKav/vyWv/68Zf/+e8Tf/+t1L/uY9Z2gAAABkAAAAAAAAAAAAAAAAAAAAA2quF/+3f
k//n35//7NyW/+LVhP/k037/59B7/+bOcf/qxmT//rtk/2hQM5gAAAAAAAAAAAAAAAAAAAAAAAAAAOCt
i//y5Lj/+u7D//TmuP/o4qH/6NyU//PfmP/23Y//89J8/+qnWvssIRRZAAAAAAAAAAAAAAAAAAAAAAAA
AADdmYr/l6Gp/9/Nuv+ft7v/3Mu6/6CpqP/nzKv/vcC2//TVqv+Sh2/xBgYFQAAAAAAAAAAAAAAAAAAA
AAAAAAAApoh+52Okt/+Ii5L/aJ2q/4uJkf9mlaf/loyS/3Gcq/+7mpz/TnmN3gAFCCIAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAIB/AACADwAAgA959YABkv+AAar/gAOp/4ADpv+AA6//gAOF/4AHVP+AB1X/gA9h/4AP
Rf+AD0v/gA9X////Uv8=
</value>
</data>
</root>

31
samples/SharpPad/SharpPad.rtf

@ -1,31 +0,0 @@ @@ -1,31 +0,0 @@
{\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1031\deflangfe1031{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}
{\f37\froman\fcharset238\fprq2 Times New Roman CE;}{\f38\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f40\froman\fcharset161\fprq2 Times New Roman Greek;}{\f41\froman\fcharset162\fprq2 Times New Roman Tur;}
{\f42\froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f43\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f44\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f45\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}
{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;
\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0
\fs24\lang1031\langfe1031\cgrid\langnp1031\langfenp1031 \snext0 Normal;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\*
\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv
\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\listtable
{\list\listtemplateid-1735223192\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\'01*;}{\levelnumbers;}}{\listname ;}\listid-2}}{\*\listoverridetable{\listoverride\listid-2
\listoverridecount1{\lfolevel\listoverrideformat{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelold\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 }}\ls1}}{\*\rsidtbl \rsid6636229
\rsid9397056}{\*\generator Microsoft Word 11.0.6502;}{\info{\author Daniel Grunwald}{\operator Daniel Grunwald}{\creatim\yr2006\mo2\dy12\hr15\min16}{\revtim\yr2006\mo2\dy12\hr15\min16}{\version2}{\edmins0}{\nofpages1}{\nofwords20}{\nofchars129}
{\nofcharsws148}{\vern24579}}\margl1417\margr1417\margt1417\margb1134 \widowctrl\ftnbj\aenddoc\hyphhotz425\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3
\jcompress\viewkind4\viewscale80\nolnhtadjtbl\rsidroot6636229 \fet0\sectd \linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3
\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}
{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain
\ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 \fs24\lang1031\langfe1031\cgrid\langnp1031\langfenp1031 {\b\fs48\insrsid9397056 SharpPad}{\fs20\insrsid9397056
\par }{\insrsid9397056
\par A simple text editor application that uses the SharpDevelop Text Editor control.
\par
\par TextEditorControl methods used
\par
\par {\pntext\pard\plain\f3 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ql \fi-720\li720\ri0\nowidctlpar{\*\pn \pnlvlblt\ilvl0\ls1\pnrnot0\pnf3 {\pntxtb \'b7}}\faauto\ls1\rin0\lin720\itap0\pararsid9397056 {\insrsid9397056 OpenFile
\par {\pntext\pard\plain\f3 \loch\af3\dbch\af0\hich\f3 \'b7\tab}SaveFile
\par }\pard \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 {\insrsid9397056
\par
\par
\par
\par
\par
\par
\par }}

16
samples/SharpPad/SharpPad.sln

@ -1,16 +0,0 @@ @@ -1,16 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 9.00
# SharpDevelop 2.0.0.1084
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpPad", "SharpPad.csproj", "{9EE70751-7F89-4893-8525-54004FF736CC}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{9EE70751-7F89-4893-8525-54004FF736CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9EE70751-7F89-4893-8525-54004FF736CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9EE70751-7F89-4893-8525-54004FF736CC}.Release|Any CPU.Build.0 = Release|Any CPU
{9EE70751-7F89-4893-8525-54004FF736CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
EndGlobalSection
EndGlobal

5
samples/SharpSnippetCompiler/SharpSnippetCompiler.Core/SharpSnippetCompiler.Core.csproj

@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<ProjectGuid>{5A2EC8F7-2274-4EA3-AC7A-6D1C8598F938}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@ -10,7 +11,7 @@ @@ -10,7 +11,7 @@
<NoStdLib>False</NoStdLib>
<WarningLevel>4</WarningLevel>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<OutputPath>..\SharpSnippetCompiler\bin\</OutputPath>

6
samples/SharpSnippetCompiler/SharpSnippetCompiler.sln

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
# SharpDevelop 3.0.0.3093
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
# SharpDevelop 4.0.0.5584
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpSnippetCompiler", "SharpSnippetCompiler\SharpSnippetCompiler.csproj", "{A63633B4-2C31-4CFF-B2A3-92EAB1AB448E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpSnippetCompiler.Core", "SharpSnippetCompiler.Core\SharpSnippetCompiler.Core.csproj", "{5A2EC8F7-2274-4EA3-AC7A-6D1C8598F938}"

5
samples/SharpSnippetCompiler/SharpSnippetCompiler/SharpSnippetCompiler.csproj

@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<ProjectGuid>{A63633B4-2C31-4CFF-B2A3-92EAB1AB448E}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@ -10,7 +11,7 @@ @@ -10,7 +11,7 @@
<NoStdLib>False</NoStdLib>
<WarningLevel>4</WarningLevel>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<OutputPath>bin\</OutputPath>

31
samples/TextEditorAnchors/AssemblyInfo.cs

@ -1,31 +0,0 @@ @@ -1,31 +0,0 @@
#region Using directives
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
#endregion
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("TextEditorAnchors")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("TextEditorAnchors")]
[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 the values or you can use the default the Revision and
// Build Numbers by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.*")]

121
samples/TextEditorAnchors/MainForm.Designer.cs generated

@ -1,121 +0,0 @@ @@ -1,121 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="${USER} Grunwald" email="daniel@danielgrunwald.de"/>
// <version>$Revision$</version>
// </file>
namespace TextEditorAnchors
{
partial class MainForm
{
/// <summary>
/// Designer variable used to keep track of non-visual components.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Disposes resources used by the form.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing) {
if (components != null) {
components.Dispose();
}
}
base.Dispose(disposing);
}
/// <summary>
/// This method is required for Windows Forms designer support.
/// Do not change the method contents inside the source code editor. The Forms designer might
/// not be able to load this method if it was changed manually.
/// </summary>
private void InitializeComponent()
{
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.textEditorControl = new ICSharpCode.TextEditor.TextEditorControl();
this.anchorListBox = new System.Windows.Forms.ListBox();
this.addAnchorButton = new System.Windows.Forms.Button();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
this.SuspendLayout();
//
// splitContainer1
//
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
this.splitContainer1.Name = "splitContainer1";
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.Controls.Add(this.textEditorControl);
this.splitContainer1.Panel1MinSize = 100;
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.Controls.Add(this.anchorListBox);
this.splitContainer1.Panel2.Controls.Add(this.addAnchorButton);
this.splitContainer1.Panel2MinSize = 50;
this.splitContainer1.Size = new System.Drawing.Size(556, 322);
this.splitContainer1.SplitterDistance = 340;
this.splitContainer1.TabIndex = 1;
//
// textEditorControl
//
this.textEditorControl.Dock = System.Windows.Forms.DockStyle.Fill;
this.textEditorControl.IsReadOnly = false;
this.textEditorControl.Location = new System.Drawing.Point(0, 0);
this.textEditorControl.Name = "textEditorControl";
this.textEditorControl.Size = new System.Drawing.Size(340, 322);
this.textEditorControl.TabIndex = 0;
this.textEditorControl.Text = "Dies\r\nist ein\r\nmehrzeiliger\r\nText!";
this.textEditorControl.TextChanged += new System.EventHandler(this.TextEditorControlTextChanged);
//
// anchorListBox
//
this.anchorListBox.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)));
this.anchorListBox.FormattingEnabled = true;
this.anchorListBox.IntegralHeight = false;
this.anchorListBox.Location = new System.Drawing.Point(2, 32);
this.anchorListBox.Name = "anchorListBox";
this.anchorListBox.Size = new System.Drawing.Size(198, 278);
this.anchorListBox.TabIndex = 2;
this.anchorListBox.DoubleClick += new System.EventHandler(this.AnchorListBoxDoubleClick);
this.anchorListBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.AnchorListBoxKeyDown);
//
// addAnchorButton
//
this.addAnchorButton.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.addAnchorButton.Location = new System.Drawing.Point(2, 3);
this.addAnchorButton.Name = "addAnchorButton";
this.addAnchorButton.Size = new System.Drawing.Size(198, 23);
this.addAnchorButton.TabIndex = 0;
this.addAnchorButton.Text = "Add Anchor";
this.addAnchorButton.UseVisualStyleBackColor = true;
this.addAnchorButton.Click += new System.EventHandler(this.AddAnchorButtonClick);
//
// MainForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(556, 322);
this.Controls.Add(this.splitContainer1);
this.Name = "MainForm";
this.Text = "TextEditorAnchors";
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel2.ResumeLayout(false);
this.splitContainer1.ResumeLayout(false);
this.ResumeLayout(false);
}
private System.Windows.Forms.Button addAnchorButton;
private System.Windows.Forms.ListBox anchorListBox;
private System.Windows.Forms.SplitContainer splitContainer1;
private ICSharpCode.TextEditor.TextEditorControl textEditorControl;
}
}

101
samples/TextEditorAnchors/MainForm.cs

@ -1,101 +0,0 @@ @@ -1,101 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
// <version>$Revision$</version>
// </file>
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using ICSharpCode.TextEditor;
using ICSharpCode.TextEditor.Document;
namespace TextEditorAnchors
{
/// <summary>
/// This program demonstrates how TextAnchor objects can be used to refer to locations
/// in the document and how they are updated when text is added/removed.
/// </summary>
public partial class MainForm : Form
{
public MainForm()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
}
void AddAnchorButtonClick(object sender, EventArgs e)
{
Caret caret = textEditorControl.ActiveTextAreaControl.Caret;
LineSegment line = textEditorControl.Document.GetLineSegment(caret.Line);
anchorListBox.Items.Add(new AnchorWrapper(line.CreateAnchor(caret.Column)));
}
void AnchorListBoxKeyDown(object sender, KeyEventArgs e)
{
int index = anchorListBox.SelectedIndex;
if (index >= 0) {
if (e.KeyCode == Keys.Delete) {
anchorListBox.Items.RemoveAt(index);
if (index < anchorListBox.Items.Count)
anchorListBox.SelectedIndex = index;
else
anchorListBox.SelectedIndex = anchorListBox.Items.Count - 1;
} else if (e.KeyCode == Keys.Left) {
((AnchorWrapper)anchorListBox.SelectedItem).Anchor.MovementType = AnchorMovementType.BeforeInsertion;
anchorListBox.Items[index] = anchorListBox.Items[index];
} else if (e.KeyCode == Keys.Right) {
((AnchorWrapper)anchorListBox.SelectedItem).Anchor.MovementType = AnchorMovementType.AfterInsertion;
anchorListBox.Items[index] = anchorListBox.Items[index];
}
}
}
void AnchorListBoxDoubleClick(object sender, EventArgs e)
{
if (anchorListBox.SelectedIndex >= 0) {
AnchorWrapper w = (AnchorWrapper)anchorListBox.Items[anchorListBox.SelectedIndex];
if (!w.Anchor.IsDeleted) {
textEditorControl.ActiveTextAreaControl.Caret.Position = w.Anchor.Location;
textEditorControl.Focus();
}
}
}
void TextEditorControlTextChanged(object sender, EventArgs e)
{
for (int i = 0; i < anchorListBox.Items.Count; i++) {
anchorListBox.Items[i] = anchorListBox.Items[i];
}
}
/// <summary>
/// Provide a ToString() implementation for TextAnchor
/// (the implementation in TextAnchor uses 0-based coordinates)
/// </summary>
sealed class AnchorWrapper
{
public readonly TextAnchor Anchor;
public AnchorWrapper(TextAnchor anchor)
{
this.Anchor = anchor;
}
public override string ToString()
{
if (Anchor.IsDeleted)
return "Anchor deleted";
else
return "Line " + (Anchor.LineNumber+1) + ", Column " + (Anchor.ColumnNumber+1)
+ " (Offset " + Anchor.Offset + ")"
+ " (" + Anchor.MovementType + ")";
}
}
}
}

120
samples/TextEditorAnchors/MainForm.resx

@ -1,120 +0,0 @@ @@ -1,120 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: 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">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<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">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<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">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<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.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

30
samples/TextEditorAnchors/Program.cs

@ -1,30 +0,0 @@ @@ -1,30 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="${USER} Grunwald" email="daniel@danielgrunwald.de"/>
// <version>$Revision$</version>
// </file>
using System;
using System.Windows.Forms;
namespace TextEditorAnchors
{
/// <summary>
/// Class with program entry point.
/// </summary>
internal sealed class Program
{
/// <summary>
/// Program entry point.
/// </summary>
[STAThread]
private static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
}

48
samples/TextEditorAnchors/TextEditorAnchors.csproj

@ -1,48 +0,0 @@ @@ -1,48 +0,0 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{BC48E973-B9B5-4331-B67B-1609B1AF0B9B}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<OutputType>WinExe</OutputType>
<RootNamespace>TextEditorAnchors</RootNamespace>
<AssemblyName>TextEditorAnchors</AssemblyName>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<OutputPath>bin\Debug\</OutputPath>
<DebugSymbols>True</DebugSymbols>
<DebugType>Full</DebugType>
<Optimize>False</Optimize>
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
<DefineConstants>DEBUG;TRACE</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<OutputPath>bin\Release\</OutputPath>
<DebugSymbols>False</DebugSymbols>
<DebugType>None</DebugType>
<Optimize>True</Optimize>
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
<DefineConstants>TRACE</DefineConstants>
</PropertyGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
<ItemGroup>
<Reference Include="ICSharpCode.TextEditor">
<HintPath>..\..\bin\ICSharpCode.TextEditor.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="AssemblyInfo.cs" />
<Compile Include="MainForm.cs" />
<Compile Include="MainForm.Designer.cs">
<DependentUpon>MainForm.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
</Project>

18
samples/TextEditorAnchors/TextEditorAnchors.sln

@ -1,18 +0,0 @@ @@ -1,18 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005
# SharpDevelop 3.0.0.2677
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TextEditorAnchors", "TextEditorAnchors.csproj", "{BC48E973-B9B5-4331-B67B-1609B1AF0B9B}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{BC48E973-B9B5-4331-B67B-1609B1AF0B9B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BC48E973-B9B5-4331-B67B-1609B1AF0B9B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BC48E973-B9B5-4331-B67B-1609B1AF0B9B}.Release|Any CPU.Build.0 = Release|Any CPU
{BC48E973-B9B5-4331-B67B-1609B1AF0B9B}.Release|Any CPU.ActiveCfg = Release|Any CPU
EndGlobalSection
EndGlobal

8
src/AddIns/Misc/CodeAnalysis/CodeAnalysis.csproj

@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<OutputType>Library</OutputType>
<RootNamespace>ICSharpCode.CodeAnalysis</RootNamespace>
@ -79,11 +80,6 @@ @@ -79,11 +80,6 @@
<Name>ICSharpCode.Core</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj">
<Project>{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}</Project>
<Name>ICSharpCode.TextEditor</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\Libraries\NRefactory\Project\NRefactory.csproj">
<Project>{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}</Project>
<Name>NRefactory</Name>

254
src/AddIns/Misc/SubversionAddIn/Project/Src/Gui/HistoryViewDisplayBinding/DiffPanel.Designer.cs generated

@ -1,254 +0,0 @@ @@ -1,254 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
// <version>$Revision$</version>
// </file>
namespace ICSharpCode.Svn
{
partial class DiffPanel : System.Windows.Forms.UserControl
{
/// <summary>
/// Designer variable used to keep track of non-visual components.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Disposes resources used by the control.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing) {
if (components != null) {
components.Dispose();
}
}
base.Dispose(disposing);
}
/// <summary>
/// This method is required for Windows Forms designer support.
/// Do not change the method contents inside the source code editor. The Forms designer might
/// not be able to load this method if it was changed manually.
/// </summary>
private void InitializeComponent()
{
System.Windows.Forms.ColumnHeader revisionColumnHeader;
System.Windows.Forms.ColumnHeader columnHeader1;
this.mainSplitContainer = new System.Windows.Forms.SplitContainer();
this.topSplitContainer = new System.Windows.Forms.SplitContainer();
this.leftListView = new System.Windows.Forms.ListView();
this.authorColumnHeader = new System.Windows.Forms.ColumnHeader();
this.dateColumnHeader = new System.Windows.Forms.ColumnHeader();
this.commentColumnHeader = new System.Windows.Forms.ColumnHeader();
this.label1 = new System.Windows.Forms.Label();
this.rightListView = new System.Windows.Forms.ListView();
this.columnHeader2 = new System.Windows.Forms.ColumnHeader();
this.columnHeader3 = new System.Windows.Forms.ColumnHeader();
this.columnHeader4 = new System.Windows.Forms.ColumnHeader();
this.label2 = new System.Windows.Forms.Label();
this.diffViewPanel = new System.Windows.Forms.Panel();
this.diffLabel = new System.Windows.Forms.Label();
revisionColumnHeader = new System.Windows.Forms.ColumnHeader();
columnHeader1 = new System.Windows.Forms.ColumnHeader();
this.mainSplitContainer.Panel1.SuspendLayout();
this.mainSplitContainer.Panel2.SuspendLayout();
this.mainSplitContainer.SuspendLayout();
this.topSplitContainer.Panel1.SuspendLayout();
this.topSplitContainer.Panel2.SuspendLayout();
this.topSplitContainer.SuspendLayout();
this.SuspendLayout();
//
// revisionColumnHeader
//
revisionColumnHeader.Text = "Revision";
//
// columnHeader1
//
columnHeader1.Text = "Revision";
//
// mainSplitContainer
//
this.mainSplitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
this.mainSplitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
this.mainSplitContainer.Location = new System.Drawing.Point(0, 0);
this.mainSplitContainer.Name = "mainSplitContainer";
this.mainSplitContainer.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// mainSplitContainer.Panel1
//
this.mainSplitContainer.Panel1.Controls.Add(this.topSplitContainer);
this.mainSplitContainer.Panel1MinSize = 75;
//
// mainSplitContainer.Panel2
//
this.mainSplitContainer.Panel2.Controls.Add(this.diffViewPanel);
this.mainSplitContainer.Panel2.Controls.Add(this.diffLabel);
this.mainSplitContainer.Panel2MinSize = 75;
this.mainSplitContainer.Size = new System.Drawing.Size(600, 400);
this.mainSplitContainer.SplitterDistance = 177;
this.mainSplitContainer.TabIndex = 0;
//
// topSplitContainer
//
this.topSplitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
this.topSplitContainer.Location = new System.Drawing.Point(0, 0);
this.topSplitContainer.Name = "topSplitContainer";
//
// topSplitContainer.Panel1
//
this.topSplitContainer.Panel1.Controls.Add(this.leftListView);
this.topSplitContainer.Panel1.Controls.Add(this.label1);
this.topSplitContainer.Panel1MinSize = 75;
//
// topSplitContainer.Panel2
//
this.topSplitContainer.Panel2.Controls.Add(this.rightListView);
this.topSplitContainer.Panel2.Controls.Add(this.label2);
this.topSplitContainer.Panel2MinSize = 75;
this.topSplitContainer.Size = new System.Drawing.Size(600, 177);
this.topSplitContainer.SplitterDistance = 297;
this.topSplitContainer.TabIndex = 0;
//
// leftListView
//
this.leftListView.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)));
this.leftListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
revisionColumnHeader,
this.authorColumnHeader,
this.dateColumnHeader,
this.commentColumnHeader});
this.leftListView.FullRowSelect = true;
this.leftListView.GridLines = true;
this.leftListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
this.leftListView.HideSelection = false;
this.leftListView.Location = new System.Drawing.Point(3, 25);
this.leftListView.MultiSelect = false;
this.leftListView.Name = "leftListView";
this.leftListView.Size = new System.Drawing.Size(291, 149);
this.leftListView.TabIndex = 1;
this.leftListView.UseCompatibleStateImageBehavior = false;
this.leftListView.View = System.Windows.Forms.View.Details;
this.leftListView.SelectedIndexChanged += new System.EventHandler(this.LeftListViewSelectedIndexChanged);
//
// authorColumnHeader
//
this.authorColumnHeader.Text = "Author";
this.authorColumnHeader.Width = 77;
//
// dateColumnHeader
//
this.dateColumnHeader.Text = "Date";
this.dateColumnHeader.Width = 82;
//
// commentColumnHeader
//
this.commentColumnHeader.Text = "Comment";
this.commentColumnHeader.Width = 144;
//
// label1
//
this.label1.Location = new System.Drawing.Point(3, 9);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(100, 23);
this.label1.TabIndex = 0;
this.label1.Text = "Diff &from:";
//
// rightListView
//
this.rightListView.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)));
this.rightListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
columnHeader1,
this.columnHeader2,
this.columnHeader3,
this.columnHeader4});
this.rightListView.FullRowSelect = true;
this.rightListView.GridLines = true;
this.rightListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
this.rightListView.HideSelection = false;
this.rightListView.Location = new System.Drawing.Point(5, 25);
this.rightListView.MultiSelect = false;
this.rightListView.Name = "rightListView";
this.rightListView.Size = new System.Drawing.Size(291, 149);
this.rightListView.TabIndex = 2;
this.rightListView.UseCompatibleStateImageBehavior = false;
this.rightListView.View = System.Windows.Forms.View.Details;
this.rightListView.SelectedIndexChanged += new System.EventHandler(this.RightListViewSelectedIndexChanged);
//
// columnHeader2
//
this.columnHeader2.Text = "Author";
this.columnHeader2.Width = 77;
//
// columnHeader3
//
this.columnHeader3.Text = "Date";
this.columnHeader3.Width = 82;
//
// columnHeader4
//
this.columnHeader4.Text = "Comment";
this.columnHeader4.Width = 144;
//
// label2
//
this.label2.Location = new System.Drawing.Point(3, 9);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(100, 23);
this.label2.TabIndex = 1;
this.label2.Text = "Diff &to:";
//
// diffViewPanel
//
this.diffViewPanel.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)));
this.diffViewPanel.Location = new System.Drawing.Point(3, 21);
this.diffViewPanel.Name = "diffViewPanel";
this.diffViewPanel.Size = new System.Drawing.Size(594, 195);
this.diffViewPanel.TabIndex = 1;
//
// diffLabel
//
this.diffLabel.Location = new System.Drawing.Point(3, 6);
this.diffLabel.Name = "diffLabel";
this.diffLabel.Size = new System.Drawing.Size(100, 23);
this.diffLabel.TabIndex = 0;
this.diffLabel.Text = "Diff:";
//
// DiffPanel
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.mainSplitContainer);
this.Name = "DiffPanel";
this.Size = new System.Drawing.Size(600, 400);
this.mainSplitContainer.Panel1.ResumeLayout(false);
this.mainSplitContainer.Panel2.ResumeLayout(false);
this.mainSplitContainer.ResumeLayout(false);
this.topSplitContainer.Panel1.ResumeLayout(false);
this.topSplitContainer.Panel2.ResumeLayout(false);
this.topSplitContainer.ResumeLayout(false);
this.ResumeLayout(false);
}
private System.Windows.Forms.Label diffLabel;
private System.Windows.Forms.Panel diffViewPanel;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.ColumnHeader columnHeader4;
private System.Windows.Forms.ColumnHeader columnHeader3;
private System.Windows.Forms.ColumnHeader columnHeader2;
private System.Windows.Forms.ListView rightListView;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.ColumnHeader commentColumnHeader;
private System.Windows.Forms.ColumnHeader dateColumnHeader;
private System.Windows.Forms.ColumnHeader authorColumnHeader;
private System.Windows.Forms.ListView leftListView;
private System.Windows.Forms.SplitContainer topSplitContainer;
private System.Windows.Forms.SplitContainer mainSplitContainer;
}
}

153
src/AddIns/Misc/SubversionAddIn/Project/Src/Gui/HistoryViewDisplayBinding/DiffPanel.cs

@ -1,153 +0,0 @@ @@ -1,153 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
// <version>$Revision$</version>
// </file>
using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using ICSharpCode.TextEditor;
using ICSharpCode.TextEditor.Document;
using ICSharpCode.TextEditor.Gui;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor;
using System.IO;
using System.Text;
namespace ICSharpCode.Svn
{
public partial class DiffPanel
{
IViewContent viewContent;
TextEditorControl textEditor;
public DiffPanel(IViewContent viewContent)
{
this.viewContent = viewContent;
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
textEditor = new TextEditorControl();
textEditor.Dock = DockStyle.Fill;
diffViewPanel.Controls.Add(textEditor);
textEditor.TextEditorProperties = SharpDevelopTextEditorProperties.Instance;
textEditor.Document.ReadOnly = true;
textEditor.Enabled = false;
textEditor.Document.HighlightingStrategy = HighlightingManager.Manager.FindHighlighter("Patch");
ListViewItem newItem;
newItem = new ListViewItem(new string[] { "Base", "", "", "" });
newItem.Tag = Revision.Base;
leftListView.Items.Add(newItem);
newItem.Selected = true;
newItem = new ListViewItem(new string[] { "Work", "", "", "" });
newItem.Tag = Revision.Working;
rightListView.Items.Add(newItem);
}
void LeftListViewSelectedIndexChanged(object sender, EventArgs e)
{
ShowDiff();
}
void RightListViewSelectedIndexChanged(object sender, EventArgs e)
{
ShowDiff();
}
/*
protected override void OnLoad(EventArgs e)
{
// fix sizing problems
Get<ListView>("toRevision").Width -= 13;
ControlDictionary["fromRevisionPanel"].Width = ControlDictionary["topPanel"].Width / 2 - 2;
}
*/
string output = null;
string fileName = null;
Revision fromRevision;
Revision toRevision;
void DoDiffOperation()
{
output = null;
MemoryStream outStream = new MemoryStream();
MemoryStream errStream = new MemoryStream();
// SvnClient.Instance.Client.Diff(new string [] {} ,
// fileName,
// fromRevision,
// fileName,
// toRevision,
// Recurse.None,
// false,
// true,
// outStream,
// errStream);
output = Encoding.Default.GetString(outStream.ToArray());
WorkbenchSingleton.SafeThreadCall(SetOutput);
}
void SetOutput()
{
textEditor.Enabled = true;
diffLabel.Text = "Diff from revision " + fromRevision + " to " + toRevision + ":";
textEditor.Text = output;
}
void Disable()
{
textEditor.Enabled = false;
diffLabel.Text = "Diff:";
textEditor.Text = "";
}
void ShowDiff()
{
Disable();
if (leftListView.SelectedItems.Count == 0 || rightListView.SelectedItems.Count == 0 ) {
return;
}
fromRevision = leftListView.SelectedItems[0].Tag as Revision;
toRevision = rightListView.SelectedItems[0].Tag as Revision;
fileName = Path.GetFullPath(viewContent.PrimaryFileName);
if (fromRevision.ToString() == toRevision.ToString()) {
output = "";
} else {
//SvnClient.Instance.OperationStart("Diff", DoDiffOperation);
}
}
public void AddLogMessage(LogMessage logMessage)
{
ListViewItem newItem = new ListViewItem(new string[] {
logMessage.Revision.ToString(),
logMessage.Author,
logMessage.Date.ToString(),
logMessage.Message
});
newItem.Tag = Revision.FromNumber(logMessage.Revision);
leftListView.Items.Add(newItem);
ListViewItem newItem2 = new ListViewItem(new string[] {
logMessage.Revision.ToString(),
logMessage.Author,
logMessage.Date.ToString(),
logMessage.Message
});
newItem2.Tag = Revision.FromNumber(logMessage.Revision);
rightListView.Items.Add(newItem2);
}
}
}

126
src/AddIns/Misc/SubversionAddIn/Project/Src/Gui/HistoryViewDisplayBinding/DiffPanel.resx

@ -1,126 +0,0 @@ @@ -1,126 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: 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">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<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">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<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">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<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.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="revisionColumnHeader.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="columnHeader1.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
</root>

12
src/AddIns/Misc/SubversionAddIn/Project/SubversionAddIn.csproj

@ -82,15 +82,8 @@ @@ -82,15 +82,8 @@
<Compile Include="..\..\..\..\Main\GlobalAssemblyInfo.cs">
<Link>Configuration\GlobalAssemblyInfo.cs</Link>
</Compile>
<Compile Include="Src\Gui\HistoryViewDisplayBinding\DiffPanel.Designer.cs">
<DependentUpon>DiffPanel.cs</DependentUpon>
</Compile>
<Compile Include="Src\Gui\HistoryViewDisplayBinding\DiffPanel.cs" />
<Compile Include="Src\SvnClientWrapper.cs" />
<Compile Include="Src\SvnMessageView.cs" />
<EmbeddedResource Include="Src\Gui\HistoryViewDisplayBinding\DiffPanel.resx">
<DependentUpon>DiffPanel.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Src\Gui\HistoryViewDisplayBinding\InfoPanel.resx">
<DependentUpon>InfoPanel.cs</DependentUpon>
</EmbeddedResource>
@ -116,11 +109,6 @@ @@ -116,11 +109,6 @@
<Name>ICSharpCode.SharpDevelop.Dom</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj">
<Project>{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}</Project>
<Name>ICSharpCode.TextEditor</Name>
<Private>False</Private>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
</Project>

2
src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj

@ -213,6 +213,7 @@ @@ -213,6 +213,7 @@
<Compile Include="Src\Gui\Pads\TaskList\TaskListPadCommands.cs" />
<Compile Include="Src\Gui\Pads\ToolsPad.cs" />
<Compile Include="Src\Gui\ProgressCollector.cs" />
<Compile Include="Src\Gui\SimpleViewContent.cs" />
<Compile Include="Src\Gui\Workbench\FullScreenEnabledWindow.cs" />
<Compile Include="Src\Gui\Workbench\Layouts\AvalonDockLayout.cs" />
<Compile Include="Src\Gui\Workbench\Layouts\AvalonPadContent.cs" />
@ -580,7 +581,6 @@ @@ -580,7 +581,6 @@
<Compile Include="Src\TextEditor\Gui\Editor\SharpDevelopTextEditorProperties.cs" />
<Compile Include="Src\TextEditor\CharacterEncodings.cs" />
<Compile Include="Src\TextEditor\Gui\TextEditorAdapter.cs" />
<Compile Include="Src\TextEditor\XmlFormattingStrategy.cs" />
<Compile Include="Src\Services\Tasks\TaskEventHandler.cs" />
<Compile Include="Src\Gui\Pads\DefinitionViewPad.cs" />
<Compile Include="Src\Project\MSBuildEnums.cs" />

44
src/Main/Base/Project/Src/Gui/SimpleViewContent.cs

@ -0,0 +1,44 @@ @@ -0,0 +1,44 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <author name="Daniel Grunwald"/>
// <version>$Revision$</version>
// </file>
using System;
namespace ICSharpCode.SharpDevelop.Gui
{
/// <summary>
/// A simple view content that does not use any files and simply displays a fixed control.
/// </summary>
public class SimpleViewContent : AbstractViewContent
{
readonly object content;
public override object Control {
get {
return content;
}
}
public SimpleViewContent(object content)
{
if (content == null)
throw new ArgumentNullException("content");
this.content = content;
}
// make this method public
/// <inheritdoc/>
public new void SetLocalizedTitle(string text)
{
base.SetLocalizedTitle("${res:StartPage.StartPageContentName}");
}
public new string TitleName {
get { return base.TitleName; }
set { base.TitleName = value; }
}
}
}

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

@ -96,7 +96,7 @@ namespace ICSharpCode.SharpDevelop @@ -96,7 +96,7 @@ namespace ICSharpCode.SharpDevelop
return file;
}
/// <summary>
/// <summary>
/// Gets or creates an opened file.
/// Warning: the opened file will be a file without any views attached.
/// Make sure to attach a view to it, or call CloseIfAllViewsClosed on the OpenedFile to
@ -258,12 +258,11 @@ namespace ICSharpCode.SharpDevelop @@ -258,12 +258,11 @@ namespace ICSharpCode.SharpDevelop
IDisplayBinding binding = DisplayBindingService.GetBindingPerFileName(fileName);
if (binding != null) {
if (FileUtility.ObservedLoad(new NamedFileOperationDelegate(new LoadFileWrapper(binding, switchToOpenedView).Invoke), fileName) == FileOperationResult.OK) {
FileService.RecentOpen.AddLastFile(fileName);
}
} else {
throw new ApplicationException("Cannot open " + fileName + ", no display codon found.");
if (binding == null) {
binding = new ErrorFallbackBinding("Could not find any display binding for " + Path.GetFileName(fileName));
}
if (FileUtility.ObservedLoad(new NamedFileOperationDelegate(new LoadFileWrapper(binding, switchToOpenedView).Invoke), fileName) == FileOperationResult.OK) {
FileService.RecentOpen.AddLastFile(fileName);
}
return GetOpenFile(fileName);
}
@ -292,23 +291,22 @@ namespace ICSharpCode.SharpDevelop @@ -292,23 +291,22 @@ namespace ICSharpCode.SharpDevelop
IDisplayBinding binding = DisplayBindingService.GetBindingPerFileName(defaultName);
if (binding != null) {
OpenedFile file = CreateUntitledOpenedFile(defaultName, content);
IViewContent newContent = binding.CreateContentForFile(file);
if (newContent == null) {
LoggingService.Warn("Created view content was null - DefaultName:" + defaultName);
file.CloseIfAllViewsClosed();
return null;
}
DisplayBindingService.AttachSubWindows(newContent, false);
WorkbenchSingleton.Workbench.ShowView(newContent);
return newContent;
} else {
throw new ApplicationException("Can't create display binding for file " + defaultName);
if (binding == null) {
binding = new ErrorFallbackBinding("Can't create display binding for file " + defaultName);
}
OpenedFile file = CreateUntitledOpenedFile(defaultName, content);
IViewContent newContent = binding.CreateContentForFile(file);
if (newContent == null) {
LoggingService.Warn("Created view content was null - DefaultName:" + defaultName);
file.CloseIfAllViewsClosed();
return null;
}
DisplayBindingService.AttachSubWindows(newContent, false);
WorkbenchSingleton.Workbench.ShowView(newContent);
return newContent;
}
/// <summary>
@ -654,6 +652,26 @@ namespace ICSharpCode.SharpDevelop @@ -654,6 +652,26 @@ namespace ICSharpCode.SharpDevelop
public static event EventHandler<FileEventArgs> FileReplaced;
#endregion Events
sealed class ErrorFallbackBinding : IDisplayBinding
{
string errorMessage;
public ErrorFallbackBinding(string errorMessage)
{
this.errorMessage = errorMessage;
}
public bool CanCreateContentForFile(string fileName)
{
return true;
}
public IViewContent CreateContentForFile(OpenedFile file)
{
return new SimpleViewContent(errorMessage) { TitleName = Path.GetFileName(file.FileName) };
}
}
}
}

198
src/Main/Base/Project/Src/TextEditor/XmlFormattingStrategy.cs

@ -1,198 +0,0 @@ @@ -1,198 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Mike Krüger" email="mike@icsharpcode.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.Collections;
using System.Diagnostics;
using System.IO;
using System.Text;
using System.Xml;
using ICSharpCode.Core;
using ICSharpCode.TextEditor;
using ICSharpCode.TextEditor.Actions;
using ICSharpCode.TextEditor.Document;
namespace ICSharpCode.SharpDevelop.DefaultEditor
{
/*
/// <summary>
/// This class currently inserts the closing tags to typed openening tags
/// and does smart indentation for xml files.
/// </summary>
public class XmlFormattingStrategy : DefaultFormattingStrategy
{
public override void FormatLine(TextArea textArea, int lineNr, int caretOffset, char charTyped) // used for comment tag formater/inserter
{
textArea.Document.UndoStack.StartUndoGroup();
try {
if (charTyped == '>') {
StringBuilder stringBuilder = new StringBuilder();
int offset = Math.Min(caretOffset - 2, textArea.Document.TextLength - 1);
while (true) {
if (offset < 0) {
break;
}
char ch = textArea.Document.GetCharAt(offset);
if (ch == '<') {
string reversedTag = stringBuilder.ToString().Trim();
if (!reversedTag.StartsWith("/") && !reversedTag.EndsWith("/")) {
bool validXml = true;
try {
XmlDocument doc = new XmlDocument();
doc.LoadXml(textArea.Document.TextContent);
} catch (Exception) {
validXml = false;
}
// only insert the tag, if something is missing
if (!validXml) {
StringBuilder tag = new StringBuilder();
for (int i = reversedTag.Length - 1; i >= 0 && !Char.IsWhiteSpace(reversedTag[i]); --i) {
tag.Append(reversedTag[i]);
}
string tagString = tag.ToString();
if (tagString.Length > 0 && !tagString.StartsWith("!") && !tagString.StartsWith("?")) {
textArea.Document.Insert(caretOffset, "</" + tagString + ">");
}
}
}
break;
}
stringBuilder.Append(ch);
--offset;
}
}
} catch (Exception e) { // Insanity check
Debug.Assert(false, e.ToString());
}
if (charTyped == '\n') {
textArea.Caret.Column = IndentLine(textArea, lineNr);
}
textArea.Document.UndoStack.EndUndoGroup();
}
/// <summary>
/// Define XML specific smart indenting for a line :)
/// </summary>
protected override int SmartIndentLine(TextArea textArea, int lineNr)
{
if (lineNr <= 0) return AutoIndentLine(textArea, lineNr);
try {
TryIndent(textArea, lineNr, lineNr);
return GetIndentation(textArea, lineNr).Length;
} catch (XmlException) {
return AutoIndentLine(textArea, lineNr);
}
}
/// <summary>
/// This function sets the indentlevel in a range of lines.
/// </summary>
public override void IndentLines(TextArea textArea, int begin, int end)
{
textArea.Document.UndoStack.StartUndoGroup();
try {
TryIndent(textArea, begin, end);
} catch (XmlException ex) {
LoggingService.Debug(ex.ToString());
} finally {
textArea.Document.UndoStack.EndUndoGroup();
}
}
#region Smart Indentation
private void TryIndent(TextArea textArea, int begin, int end)
{
string currentIndentation = "";
Stack tagStack = new Stack();
IDocument document = textArea.Document;
string tab = Tab.GetIndentationString(document);
int nextLine = begin; // in #dev coordinates
bool wasEmptyElement = false;
XmlNodeType lastType = XmlNodeType.XmlDeclaration;
// TextReader line number begin with 1, #dev line numbers with 0
using (StringReader stringReader = new StringReader(document.TextContent)) {
XmlTextReader r = new XmlTextReader(stringReader);
r.XmlResolver = null; // prevent XmlTextReader from loading external DTDs
while (r.Read()) {
if (wasEmptyElement) {
wasEmptyElement = false;
if (tagStack.Count == 0)
currentIndentation = "";
else
currentIndentation = (string)tagStack.Pop();
}
if (r.NodeType == XmlNodeType.EndElement) {
if (tagStack.Count == 0)
currentIndentation = "";
else
currentIndentation = (string)tagStack.Pop();
}
while (r.LineNumber > nextLine) { // caution: here we compare 1-based and 0-based line numbers
if (nextLine > end) break;
if (lastType == XmlNodeType.CDATA || lastType == XmlNodeType.Comment) {
nextLine += 1;
continue;
}
// set indentation of 'nextLine'
LineSegment line = document.GetLineSegment(nextLine);
string lineText = document.GetText(line);
string newText;
// special case: opening tag has closing bracket on extra line: remove one indentation level
if (lineText.Trim() == ">")
newText = (string)tagStack.Peek() + lineText.Trim();
else
newText = currentIndentation + lineText.Trim();
if (newText != lineText) {
document.Replace(line.Offset, line.Length, newText);
}
nextLine += 1;
}
if (r.LineNumber > end)
break;
wasEmptyElement = r.NodeType == XmlNodeType.Element && r.IsEmptyElement;
string attribIndent = null;
if (r.NodeType == XmlNodeType.Element) {
tagStack.Push(currentIndentation);
if (r.LineNumber < begin)
currentIndentation = GetIndentation(textArea, r.LineNumber - 1);
if (r.Name.Length < 16)
attribIndent = currentIndentation + new String(' ', 2 + r.Name.Length);
else
attribIndent = currentIndentation + tab;
currentIndentation += tab;
}
lastType = r.NodeType;
if (r.NodeType == XmlNodeType.Element && r.HasAttributes) {
int startLine = r.LineNumber;
r.MoveToAttribute(0); // move to first attribute
if (r.LineNumber != startLine)
attribIndent = currentIndentation; // change to tab-indentation
r.MoveToAttribute(r.AttributeCount - 1);
while (r.LineNumber > nextLine) { // caution: here we compare 1-based and 0-based line numbers
if (nextLine > end) break;
// set indentation of 'nextLine'
LineSegment line = document.GetLineSegment(nextLine);
string lineText = document.GetText(line);
string newText = attribIndent + lineText.Trim();
if (newText != lineText) {
document.Replace(line.Offset, line.Length, newText);
}
nextLine += 1;
}
}
}
r.Close();
}
}
#endregion
}
*/
}

7
src/Main/ICSharpCode.SharpDevelop.Sda/ICSharpCode.SharpDevelop.Sda.csproj

@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<OutputType>Library</OutputType>
<RootNamespace>ICSharpCode.SharpDevelop.Sda</RootNamespace>
@ -57,10 +58,10 @@ @@ -57,10 +58,10 @@
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml" />
<Reference Include="System.Xaml" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="System.Xaml" />
<Reference Include="WindowsBase">
<RequiredTargetFramework>3.0</RequiredTargetFramework>
</Reference>

16
src/Main/ICSharpCode.SharpDevelop.Sda/Src/CallHelper.cs

@ -14,12 +14,13 @@ using System.Linq; @@ -14,12 +14,13 @@ using System.Linq;
using System.Reflection;
using System.Resources;
using System.Threading;
using System.Windows;
using System.Windows.Threading;
using ICSharpCode.Core;
using ICSharpCode.Core.WinForms;
using ICSharpCode.SharpDevelop.Commands;
using ICSharpCode.SharpDevelop.Gui;
using System.Windows;
namespace ICSharpCode.SharpDevelop.Sda
{
@ -266,19 +267,18 @@ namespace ICSharpCode.SharpDevelop.Sda @@ -266,19 +267,18 @@ namespace ICSharpCode.SharpDevelop.Sda
}
bool CloseWorkbenchInternal(bool force)
{
if (force) {
foreach (IWorkbenchWindow window in WorkbenchSingleton.Workbench.WorkbenchWindowCollection.ToArray()) {
window.CloseWindow(true);
}
foreach (IWorkbenchWindow window in WorkbenchSingleton.Workbench.WorkbenchWindowCollection.ToArray()) {
if (!window.CloseWindow(force))
return false;
}
WorkbenchSingleton.MainWindow.Close();
return WorkbenchSingleton.MainWindow == null;
return true;
}
[SuppressMessage("Microsoft.Performance", "CA1822:MarkMembersAsStatic")]
[SuppressMessage("Microsoft.Performance", "CA1822:MarkMembersAsStatic", Justification = "needs to be run in correct AppDomain")]
public void KillWorkbench()
{
System.Windows.Forms.Application.Exit();
Dispatcher.CurrentDispatcher.BeginInvokeShutdown(DispatcherPriority.Normal);
}
public bool WorkbenchVisible {

5
src/Main/ICSharpCode.SharpDevelop.Sda/Src/SharpDevelopHost.cs

@ -57,6 +57,7 @@ namespace ICSharpCode.SharpDevelop.Sda @@ -57,6 +57,7 @@ namespace ICSharpCode.SharpDevelop.Sda
CoreInitialized,
WorkbenchInitialized,
Busy,
WorkbenchUnloaded,
AppDomainUnloaded
}
#endregion
@ -200,7 +201,7 @@ namespace ICSharpCode.SharpDevelop.Sda @@ -200,7 +201,7 @@ namespace ICSharpCode.SharpDevelop.Sda
/// <returns>True when the workbench was closed.</returns>
public bool CloseWorkbench(bool force)
{
if (initStatus == SDInitStatus.CoreInitialized) {
if (initStatus == SDInitStatus.CoreInitialized || initStatus == SDInitStatus.WorkbenchUnloaded) {
// Workbench not loaded/already closed: do nothing
return true;
}
@ -371,7 +372,7 @@ namespace ICSharpCode.SharpDevelop.Sda @@ -371,7 +372,7 @@ namespace ICSharpCode.SharpDevelop.Sda
internal void WorkbenchClosed()
{
if (InvokeRequired) { Invoke(WorkbenchClosed); return; }
host.initStatus = SDInitStatus.CoreInitialized;
host.initStatus = SDInitStatus.WorkbenchUnloaded;
if (host.WorkbenchClosed != null) host.WorkbenchClosed(host, EventArgs.Empty);
}

Loading…
Cancel
Save