Browse Source

Text editor indent settings now used when generating event handlers in Python forms designer.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@5000 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Matt Ward 16 years ago
parent
commit
59eb977b8a
  1. 7
      src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonDesignerGenerator.cs
  2. 4
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/InsertEventHandlerTestFixtureBase.cs
  3. 65
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/InsertEventHandlerWithSpaceIndentTestFixture.cs
  4. 1
      src/AddIns/BackendBindings/Python/PythonBinding/Test/PythonBinding.Tests.csproj

7
src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonDesignerGenerator.cs

@ -132,7 +132,7 @@ namespace ICSharpCode.PythonBinding @@ -132,7 +132,7 @@ namespace ICSharpCode.PythonBinding
// Insert the event handler at the end of the class with an extra
// new line before it.
IDocument doc = viewContent.DesignerCodeFileDocument;
string eventHandler = CreateEventHandler(eventMethodName, body, "\t");
string eventHandler = CreateEventHandler(eventMethodName, body, NRefactoryToPythonConverter.GetIndentString(textEditorProperties));
int line = doc.LineSegmentCollection.Count;
LineSegment lastLineSegment = doc.GetLineSegment(line - 1);
int offset = lastLineSegment.Offset + lastLineSegment.Length;
@ -229,6 +229,7 @@ namespace ICSharpCode.PythonBinding @@ -229,6 +229,7 @@ namespace ICSharpCode.PythonBinding
/// <summary>
/// Returns the generated event handler.
/// </summary>
/// <param name="indentation">The indent string to use for the event handler.</param>
protected string CreateEventHandler(string eventMethodName, string body, string indentation)
{
if (String.IsNullOrEmpty(body)) {
@ -241,9 +242,9 @@ namespace ICSharpCode.PythonBinding @@ -241,9 +242,9 @@ namespace ICSharpCode.PythonBinding
eventHandler.Append("def ");
eventHandler.Append(eventMethodName);
eventHandler.Append("(self, sender, e):");
eventHandler.AppendLine();
eventHandler.AppendLine();
eventHandler.Append(indentation);
eventHandler.Append("\t");
eventHandler.Append(NRefactoryToPythonConverter.GetIndentString(textEditorProperties));
eventHandler.Append(body);
return eventHandler.ToString();

4
src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/InsertEventHandlerTestFixtureBase.cs

@ -26,11 +26,13 @@ namespace PythonBinding.Tests.Designer @@ -26,11 +26,13 @@ namespace PythonBinding.Tests.Designer
protected DerivedFormDesignerViewContent viewContent;
protected string fileName = @"C:\Projects\Python\mainform.py";
protected DerivedPythonDesignerGenerator generator;
protected MockTextEditorProperties textEditorProperties;
[TestFixtureSetUp]
public void SetUpFixture()
{
generator = new DerivedPythonDesignerGenerator();
textEditorProperties = new MockTextEditorProperties();
generator = new DerivedPythonDesignerGenerator(textEditorProperties);
mockViewContent = new MockTextEditorViewContent();
viewContent = new DerivedFormDesignerViewContent(mockViewContent, new MockOpenedFile(fileName));
generator.Attach(viewContent);

65
src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/InsertEventHandlerWithSpaceIndentTestFixture.cs

@ -0,0 +1,65 @@ @@ -0,0 +1,65 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using ICSharpCode.PythonBinding;
using ICSharpCode.FormsDesigner;
using ICSharpCode.SharpDevelop.Dom;
using NUnit.Framework;
using PythonBinding.Tests.Utils;
namespace PythonBinding.Tests.Designer
{
/// <summary>
/// Tests the PythonDesignerGenerator uses the text editor properties for indentation when
/// inserting an event handler into the document.
/// </summary>
[TestFixture]
public class InsertEventHandlerWithSpaceIndentTestFixture : InsertEventHandlerTestFixtureBase
{
public override void AfterSetUpFixture()
{
textEditorProperties.ConvertTabsToSpaces = true;
textEditorProperties.IndentationSize = 4;
MockEventDescriptor mockEventDescriptor = new MockEventDescriptor("Click");
insertedEventHandler = generator.InsertComponentEvent(null, mockEventDescriptor, "button1_click", String.Empty, out file, out position);
}
[Test]
public void ExpectedCodeAfterEventHandlerInserted()
{
string expectedCode = GetTextEditorCode();
string eventHandler = " def button1_click(self, sender, e):\r\n" +
" pass";
expectedCode = expectedCode + "\r\n" + eventHandler;
Assert.AreEqual(expectedCode, viewContent.DesignerCodeFileContent);
}
/// <summary>
/// Note that the text editor code already has the
/// statement:
///
/// "self._button1.Click += button1_click"
///
/// This is generated by the form designer framework and not
/// by the designer generator.
/// </summary>
protected override string GetTextEditorCode()
{
return "from System.Windows.Forms import Form\r\n" +
"\r\n" +
"class MainForm(Form):\r\n" +
" def __init__(self):\r\n" +
" self.InitializeComponents()\r\n" +
" \r\n" +
" def InitializeComponents(self):\r\n" +
" self._button1 = System.Windows.Forms.Button()\r\n" +
" self.Controls.Add(self._button1)\r\n";
}
}
}

1
src/AddIns/BackendBindings/Python/PythonBinding/Test/PythonBinding.Tests.csproj

@ -232,6 +232,7 @@ @@ -232,6 +232,7 @@
<Compile Include="Designer\GetResourcesFromDesignerLoaderTestFixture.cs" />
<Compile Include="Designer\IgnoreDesignTimePropertiesTestFixture.cs" />
<Compile Include="Designer\InsertEventHandlerTestFixtureBase.cs" />
<Compile Include="Designer\InsertEventHandlerWithSpaceIndentTestFixture.cs" />
<Compile Include="Designer\InsertNewEventHandlerTestFixture.cs" />
<Compile Include="Designer\InsertSecondEventHandlerTestFixture.cs" />
<Compile Include="Designer\IsFullyQualifiedBaseClassFormDesignableTestFixture.cs" />

Loading…
Cancel
Save