diff --git a/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonDesignerGenerator.cs b/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonDesignerGenerator.cs
index e3ebed2942..ffaa639da5 100644
--- a/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonDesignerGenerator.cs
+++ b/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonDesignerGenerator.cs
@@ -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
///
/// Returns the generated event handler.
///
+ /// The indent string to use for the event handler.
protected string CreateEventHandler(string eventMethodName, string body, string indentation)
{
if (String.IsNullOrEmpty(body)) {
@@ -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();
diff --git a/src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/InsertEventHandlerTestFixtureBase.cs b/src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/InsertEventHandlerTestFixtureBase.cs
index e94e73a310..431477ac55 100644
--- a/src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/InsertEventHandlerTestFixtureBase.cs
+++ b/src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/InsertEventHandlerTestFixtureBase.cs
@@ -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);
diff --git a/src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/InsertEventHandlerWithSpaceIndentTestFixture.cs b/src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/InsertEventHandlerWithSpaceIndentTestFixture.cs
new file mode 100644
index 0000000000..57c603284d
--- /dev/null
+++ b/src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/InsertEventHandlerWithSpaceIndentTestFixture.cs
@@ -0,0 +1,65 @@
+//
+//
+//
+//
+// $Revision$
+//
+
+using System;
+using ICSharpCode.PythonBinding;
+using ICSharpCode.FormsDesigner;
+using ICSharpCode.SharpDevelop.Dom;
+using NUnit.Framework;
+using PythonBinding.Tests.Utils;
+
+namespace PythonBinding.Tests.Designer
+{
+ ///
+ /// Tests the PythonDesignerGenerator uses the text editor properties for indentation when
+ /// inserting an event handler into the document.
+ ///
+ [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);
+ }
+
+ ///
+ /// 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.
+ ///
+ 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";
+ }
+ }
+}
diff --git a/src/AddIns/BackendBindings/Python/PythonBinding/Test/PythonBinding.Tests.csproj b/src/AddIns/BackendBindings/Python/PythonBinding/Test/PythonBinding.Tests.csproj
index de16d4dc5d..cbba547df8 100644
--- a/src/AddIns/BackendBindings/Python/PythonBinding/Test/PythonBinding.Tests.csproj
+++ b/src/AddIns/BackendBindings/Python/PythonBinding/Test/PythonBinding.Tests.csproj
@@ -232,6 +232,7 @@
+