Browse Source

Form.Controls, MenuStrip.Items and ToolStripMenuItem.DropDownItems properties are now generated in the correct alphabetical order in the python forms designer.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@3985 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Matt Ward 17 years ago
parent
commit
8c5cecd99a
  1. 41
      src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonForm.cs
  2. 2
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/GenerateAcceptButtonFormTestFixture.cs
  3. 10
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/GenerateComboBoxItemsTestFixture.cs
  4. 2
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/GenerateMenuStripFormTestFixture.cs
  5. 14
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/GenerateMenuStripItemsTestFixture.cs
  6. 6
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/GenerateNestedPanelFormTestFixture.cs
  7. 4
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/GeneratePanelFormTestFixture.cs
  8. 2
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/GenerateTextBoxFormTestFixture.cs
  9. 9
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/IgnoreDesignTimePropertiesTestFixture.cs

41
src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonForm.cs

@ -119,7 +119,7 @@ namespace ICSharpCode.PythonBinding
{ {
List<PropertyDescriptor> properties = new List<PropertyDescriptor>(); List<PropertyDescriptor> properties = new List<PropertyDescriptor>();
foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(obj, notDesignOnlyFilter).Sort()) { foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(obj, notDesignOnlyFilter).Sort()) {
if (property.SerializationVisibility == DesignerSerializationVisibility.Visible) { if (property.SerializationVisibility != DesignerSerializationVisibility.Hidden) {
if (property.ShouldSerializeValue(obj)) { if (property.ShouldSerializeValue(obj)) {
properties.Add(property); properties.Add(property);
} }
@ -167,21 +167,11 @@ namespace ICSharpCode.PythonBinding
string propertyOwnerName = GetPropertyOwnerName(control, addControlNameToProperty); string propertyOwnerName = GetPropertyOwnerName(control, addControlNameToProperty);
AppendProperties(propertyOwnerName, control); AppendProperties(propertyOwnerName, control);
foreach (Control childControl in control.Controls) {
if (IsSitedComponent(childControl)) {
AppendIndentedLine(GetPropertyName(propertyOwnerName, "Controls") + ".Add(self._" + childControl.Name + ")");
}
}
AppendEventHandlers(propertyOwnerName, control); AppendEventHandlers(propertyOwnerName, control);
MenuStrip menuStrip = control as MenuStrip; MenuStrip menuStrip = control as MenuStrip;
ComboBox comboBox = control as ComboBox;
if (menuStrip != null) { if (menuStrip != null) {
AppendMenuStripItems(menuStrip); AppendToolStripItems(menuStrip.Items);
} else if (comboBox != null) {
AppendSystemArray(comboBox.Name, "Items.AddRange", typeof(Object).FullName, comboBox.Items);
} }
if (addChildControlProperties) { if (addChildControlProperties) {
@ -200,12 +190,35 @@ namespace ICSharpCode.PythonBinding
} }
string propertyName = GetPropertyName(propertyOwnerName, propertyDescriptor.Name); string propertyName = GetPropertyName(propertyOwnerName, propertyDescriptor.Name);
if (propertyDescriptor.SerializationVisibility == DesignerSerializationVisibility.Visible) {
Control control = propertyValue as Control; Control control = propertyValue as Control;
if (control != null) { if (control != null) {
AppendIndentedLine(propertyName + " = self._" + control.Name); AppendIndentedLine(propertyName + " = self._" + control.Name);
} else { } else {
AppendIndentedLine(propertyName + " = " + PythonPropertyValueAssignment.ToString(propertyValue)); AppendIndentedLine(propertyName + " = " + PythonPropertyValueAssignment.ToString(propertyValue));
} }
} else {
// Content.
if (propertyDescriptor.Name == "Controls") {
Control parentControl = obj as Control;
foreach (Control childControl in parentControl.Controls) {
if (IsSitedComponent(childControl)) {
AppendIndentedLine(GetPropertyName(propertyOwnerName, "Controls") + ".Add(self._" + childControl.Name + ")");
}
}
} else {
MenuStrip menuStrip = obj as MenuStrip;
ComboBox comboBox = obj as ComboBox;
ToolStripMenuItem menuItem = obj as ToolStripMenuItem;
if (menuStrip != null && propertyDescriptor.Name == "Items") {
AppendMenuStripItems(menuStrip);
} else if (comboBox != null && propertyDescriptor.Name == "Items") {
AppendSystemArray(comboBox.Name, "Items.AddRange", typeof(Object).FullName, comboBox.Items);
} else if (menuItem != null && propertyDescriptor.Name == "DropDownItems") {
AppendToolStripMenuItemDropDownItems(menuItem.Name, GetSitedToolStripItems(menuItem.DropDownItems));
}
}
}
} }
static string GetPropertyName(string propertyOwnerName, string propertyName) static string GetPropertyName(string propertyOwnerName, string propertyName)
@ -400,7 +413,6 @@ namespace ICSharpCode.PythonBinding
{ {
List<ToolStripItem> items = GetSitedToolStripItems(menuStrip.Items); List<ToolStripItem> items = GetSitedToolStripItems(menuStrip.Items);
AppendMenuStripItemsAddRange(menuStrip.Name, items); AppendMenuStripItemsAddRange(menuStrip.Name, items);
AppendToolStripItems(items);
} }
void AppendSystemArray(string componentName, string methodName, string typeName, IList components) void AppendSystemArray(string componentName, string methodName, string typeName, IList components)
@ -448,9 +460,11 @@ namespace ICSharpCode.PythonBinding
void AppendToolStripItems(IList items) void AppendToolStripItems(IList items)
{ {
foreach (ToolStripItem item in items) { foreach (ToolStripItem item in items) {
if (IsSitedComponent(item)) {
AppendToolStripItem(item); AppendToolStripItem(item);
} }
} }
}
void AppendToolStripItem(ToolStripItem item) void AppendToolStripItem(ToolStripItem item)
{ {
@ -460,7 +474,6 @@ namespace ICSharpCode.PythonBinding
ToolStripMenuItem menuItem = item as ToolStripMenuItem; ToolStripMenuItem menuItem = item as ToolStripMenuItem;
if (menuItem != null) { if (menuItem != null) {
List<ToolStripItem> sitedItems = GetSitedToolStripItems(menuItem.DropDownItems); List<ToolStripItem> sitedItems = GetSitedToolStripItems(menuItem.DropDownItems);
AppendToolStripMenuItemDropDownItems(menuItem.Name, sitedItems);
AppendToolStripItems(sitedItems); AppendToolStripItems(sitedItems);
} }
} }

2
src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/GenerateAcceptButtonFormTestFixture.cs

@ -70,8 +70,8 @@ namespace PythonBinding.Tests.Designer
" # \r\n" + " # \r\n" +
" self.AcceptButton = self._button1\r\n" + " self.AcceptButton = self._button1\r\n" +
" self.ClientSize = System.Drawing.Size(200, 300)\r\n" + " self.ClientSize = System.Drawing.Size(200, 300)\r\n" +
" self.Name = \"MainForm\"\r\n" +
" self.Controls.Add(self._button1)\r\n" + " self.Controls.Add(self._button1)\r\n" +
" self.Name = \"MainForm\"\r\n" +
" self.ResumeLayout(False)\r\n" + " self.ResumeLayout(False)\r\n" +
" self.PerformLayout()\r\n"; " self.PerformLayout()\r\n";

10
src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/GenerateComboBoxItemsTestFixture.cs

@ -61,20 +61,20 @@ namespace PythonBinding.Tests.Designer
" # \r\n" + " # \r\n" +
" # comboBox1\r\n" + " # comboBox1\r\n" +
" # \r\n" + " # \r\n" +
" self._comboBox1.Location = System.Drawing.Point(0, 0)\r\n" +
" self._comboBox1.Name = \"comboBox1\"\r\n" +
" self._comboBox1.Size = System.Drawing.Size(121, 21)\r\n" +
" self._comboBox1.TabIndex = 0\r\n" +
" self._comboBox1.Items.AddRange(System.Array[System.Object](\r\n" + " self._comboBox1.Items.AddRange(System.Array[System.Object](\r\n" +
" [\"aaa\",\r\n" + " [\"aaa\",\r\n" +
" \"bbb\",\r\n" + " \"bbb\",\r\n" +
" \"ccc\"]))\r\n" + " \"ccc\"]))\r\n" +
" self._comboBox1.Location = System.Drawing.Point(0, 0)\r\n" +
" self._comboBox1.Name = \"comboBox1\"\r\n" +
" self._comboBox1.Size = System.Drawing.Size(121, 21)\r\n" +
" self._comboBox1.TabIndex = 0\r\n" +
" # \r\n" + " # \r\n" +
" # MainForm\r\n" + " # MainForm\r\n" +
" # \r\n" + " # \r\n" +
" self.ClientSize = System.Drawing.Size(200, 300)\r\n" + " self.ClientSize = System.Drawing.Size(200, 300)\r\n" +
" self.Name = \"MainForm\"\r\n" +
" self.Controls.Add(self._comboBox1)\r\n" + " self.Controls.Add(self._comboBox1)\r\n" +
" self.Name = \"MainForm\"\r\n" +
" self.ResumeLayout(False)\r\n" + " self.ResumeLayout(False)\r\n" +
" self.PerformLayout()\r\n"; " self.PerformLayout()\r\n";

2
src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/GenerateMenuStripFormTestFixture.cs

@ -71,8 +71,8 @@ namespace PythonBinding.Tests.Designer
" # MainForm\r\n" + " # MainForm\r\n" +
" # \r\n" + " # \r\n" +
" self.ClientSize = System.Drawing.Size(200, 300)\r\n" + " self.ClientSize = System.Drawing.Size(200, 300)\r\n" +
" self.Name = \"MainForm\"\r\n" +
" self.Controls.Add(self._menuStrip1)\r\n" + " self.Controls.Add(self._menuStrip1)\r\n" +
" self.Name = \"MainForm\"\r\n" +
" self.ResumeLayout(False)\r\n" + " self.ResumeLayout(False)\r\n" +
" self.PerformLayout()\r\n"; " self.PerformLayout()\r\n";

14
src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/GenerateMenuStripItemsTestFixture.cs

@ -94,23 +94,23 @@ namespace PythonBinding.Tests.Designer
" # \r\n" + " # \r\n" +
" # menuStrip1\r\n" + " # menuStrip1\r\n" +
" # \r\n" + " # \r\n" +
" self._menuStrip1.Items.AddRange(System.Array[System.Windows.Forms.ToolStripItem](\r\n" +
" [self._fileToolStripMenuItem,\r\n" +
" self._editToolStripMenuItem]))\r\n" +
" self._menuStrip1.Location = System.Drawing.Point(0, 0)\r\n" + " self._menuStrip1.Location = System.Drawing.Point(0, 0)\r\n" +
" self._menuStrip1.Name = \"menuStrip1\"\r\n" + " self._menuStrip1.Name = \"menuStrip1\"\r\n" +
" self._menuStrip1.Size = System.Drawing.Size(200, 24)\r\n" + " self._menuStrip1.Size = System.Drawing.Size(200, 24)\r\n" +
" self._menuStrip1.TabIndex = 0\r\n" + " self._menuStrip1.TabIndex = 0\r\n" +
" self._menuStrip1.Text = \"menuStrip1\"\r\n" + " self._menuStrip1.Text = \"menuStrip1\"\r\n" +
" self._menuStrip1.Items.AddRange(System.Array[System.Windows.Forms.ToolStripItem](\r\n" +
" [self._fileToolStripMenuItem,\r\n" +
" self._editToolStripMenuItem]))\r\n" +
" # \r\n" + " # \r\n" +
" # fileToolStripMenuItem\r\n" + " # fileToolStripMenuItem\r\n" +
" # \r\n" + " # \r\n" +
" self._fileToolStripMenuItem.Name = \"fileToolStripMenuItem\"\r\n" +
" self._fileToolStripMenuItem.Size = " + SizeToString(fileMenuItemSize) + "\r\n" +
" self._fileToolStripMenuItem.Text = \"&File\"\r\n" +
" self._fileToolStripMenuItem.DropDownItems.AddRange(System.Array[System.Windows.Forms.ToolStripItem](\r\n" + " self._fileToolStripMenuItem.DropDownItems.AddRange(System.Array[System.Windows.Forms.ToolStripItem](\r\n" +
" [self._openToolStripMenuItem,\r\n" + " [self._openToolStripMenuItem,\r\n" +
" self._exitToolStripMenuItem]))\r\n" + " self._exitToolStripMenuItem]))\r\n" +
" self._fileToolStripMenuItem.Name = \"fileToolStripMenuItem\"\r\n" +
" self._fileToolStripMenuItem.Size = " + SizeToString(fileMenuItemSize) + "\r\n" +
" self._fileToolStripMenuItem.Text = \"&File\"\r\n" +
" # \r\n" + " # \r\n" +
" # openToolStripMenuItem\r\n" + " # openToolStripMenuItem\r\n" +
" # \r\n" + " # \r\n" +
@ -133,8 +133,8 @@ namespace PythonBinding.Tests.Designer
" # MainForm\r\n" + " # MainForm\r\n" +
" # \r\n" + " # \r\n" +
" self.ClientSize = System.Drawing.Size(200, 300)\r\n" + " self.ClientSize = System.Drawing.Size(200, 300)\r\n" +
" self.Name = \"MainForm\"\r\n" +
" self.Controls.Add(self._menuStrip1)\r\n" + " self.Controls.Add(self._menuStrip1)\r\n" +
" self.Name = \"MainForm\"\r\n" +
" self._menuStrip1.ResumeLayout(False)\r\n" + " self._menuStrip1.ResumeLayout(False)\r\n" +
" self._menuStrip1.PerformLayout()\r\n" + " self._menuStrip1.PerformLayout()\r\n" +
" self.ResumeLayout(False)\r\n" + " self.ResumeLayout(False)\r\n" +

6
src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/GenerateNestedPanelFormTestFixture.cs

@ -74,19 +74,19 @@ namespace PythonBinding.Tests.Designer
" # \r\n" + " # \r\n" +
" # panel1\r\n" + " # panel1\r\n" +
" # \r\n" + " # \r\n" +
" self._panel1.Controls.Add(self._panel2)\r\n" +
" self._panel1.Location = System.Drawing.Point(0, 0)\r\n" + " self._panel1.Location = System.Drawing.Point(0, 0)\r\n" +
" self._panel1.Name = \"panel1\"\r\n" + " self._panel1.Name = \"panel1\"\r\n" +
" self._panel1.Size = System.Drawing.Size(200, 220)\r\n" + " self._panel1.Size = System.Drawing.Size(200, 220)\r\n" +
" self._panel1.TabIndex = 0\r\n" + " self._panel1.TabIndex = 0\r\n" +
" self._panel1.Controls.Add(self._panel2)\r\n" +
" # \r\n" + " # \r\n" +
" # panel2\r\n" + " # panel2\r\n" +
" # \r\n" + " # \r\n" +
" self._panel2.Controls.Add(self._textBox1)\r\n" +
" self._panel2.Location = System.Drawing.Point(10, 15)\r\n" + " self._panel2.Location = System.Drawing.Point(10, 15)\r\n" +
" self._panel2.Name = \"panel2\"\r\n" + " self._panel2.Name = \"panel2\"\r\n" +
" self._panel2.Size = System.Drawing.Size(100, 120)\r\n" + " self._panel2.Size = System.Drawing.Size(100, 120)\r\n" +
" self._panel2.TabIndex = 0\r\n" + " self._panel2.TabIndex = 0\r\n" +
" self._panel2.Controls.Add(self._textBox1)\r\n" +
" # \r\n" + " # \r\n" +
" # textBox1\r\n" + " # textBox1\r\n" +
" # \r\n" + " # \r\n" +
@ -98,8 +98,8 @@ namespace PythonBinding.Tests.Designer
" # MainForm\r\n" + " # MainForm\r\n" +
" # \r\n" + " # \r\n" +
" self.ClientSize = System.Drawing.Size(284, 264)\r\n" + " self.ClientSize = System.Drawing.Size(284, 264)\r\n" +
" self.Name = \"MainForm\"\r\n" +
" self.Controls.Add(self._panel1)\r\n" + " self.Controls.Add(self._panel1)\r\n" +
" self.Name = \"MainForm\"\r\n" +
" self._panel1.ResumeLayout(False)\r\n" + " self._panel1.ResumeLayout(False)\r\n" +
" self._panel1.PerformLayout()\r\n" + " self._panel1.PerformLayout()\r\n" +
" self._panel2.ResumeLayout(False)\r\n" + " self._panel2.ResumeLayout(False)\r\n" +

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

@ -70,11 +70,11 @@ namespace PythonBinding.Tests.Designer
" # \r\n" + " # \r\n" +
" # panel1\r\n" + " # panel1\r\n" +
" # \r\n" + " # \r\n" +
" self._panel1.Controls.Add(self._textBox1)\r\n" +
" self._panel1.Location = System.Drawing.Point(10, 15)\r\n" + " self._panel1.Location = System.Drawing.Point(10, 15)\r\n" +
" self._panel1.Name = \"panel1\"\r\n" + " self._panel1.Name = \"panel1\"\r\n" +
" self._panel1.Size = System.Drawing.Size(100, 120)\r\n" + " self._panel1.Size = System.Drawing.Size(100, 120)\r\n" +
" self._panel1.TabIndex = 0\r\n" + " self._panel1.TabIndex = 0\r\n" +
" self._panel1.Controls.Add(self._textBox1)\r\n" +
" self._panel1.Click += self.Panel1Click\r\n" + " self._panel1.Click += self.Panel1Click\r\n" +
" # \r\n" + " # \r\n" +
" # textBox1\r\n" + " # textBox1\r\n" +
@ -87,8 +87,8 @@ namespace PythonBinding.Tests.Designer
" # MainForm\r\n" + " # MainForm\r\n" +
" # \r\n" + " # \r\n" +
" self.ClientSize = System.Drawing.Size(284, 264)\r\n" + " self.ClientSize = System.Drawing.Size(284, 264)\r\n" +
" self.Name = \"MainForm\"\r\n" +
" self.Controls.Add(self._panel1)\r\n" + " self.Controls.Add(self._panel1)\r\n" +
" self.Name = \"MainForm\"\r\n" +
" self._panel1.ResumeLayout(False)\r\n" + " self._panel1.ResumeLayout(False)\r\n" +
" self._panel1.PerformLayout()\r\n" + " self._panel1.PerformLayout()\r\n" +
" self.ResumeLayout(False)\r\n" + " self.ResumeLayout(False)\r\n" +

2
src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/GenerateTextBoxFormTestFixture.cs

@ -63,8 +63,8 @@ namespace PythonBinding.Tests.Designer
" # MainForm\r\n" + " # MainForm\r\n" +
" # \r\n" + " # \r\n" +
" self.ClientSize = System.Drawing.Size(284, 264)\r\n" + " self.ClientSize = System.Drawing.Size(284, 264)\r\n" +
" self.Name = \"MainForm\"\r\n" +
" self.Controls.Add(self._textBox1)\r\n" + " self.Controls.Add(self._textBox1)\r\n" +
" self.Name = \"MainForm\"\r\n" +
" self.ResumeLayout(False)\r\n" + " self.ResumeLayout(False)\r\n" +
" self.PerformLayout()\r\n"; " self.PerformLayout()\r\n";

9
src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/IgnoreDesignTimePropertiesTestFixture.cs

@ -104,6 +104,15 @@ namespace PythonBinding.Tests.Designer
Assert.AreEqual(strings, unsortedStrings); Assert.AreEqual(strings, unsortedStrings);
} }
/// <summary>
/// Tests that the Controls property is returned in the GetSerializableProperties method.
/// </summary>
[Test]
public void ContainsDesignerSerializationContentProperties()
{
Assert.IsTrue(ContainsProperty(propertyDescriptors, "Controls"), "Controls property should be returned.");
}
static bool ContainsProperty(PropertyDescriptorCollection propertyDescriptors, string name) static bool ContainsProperty(PropertyDescriptorCollection propertyDescriptors, string name)
{ {
foreach (PropertyDescriptor property in propertyDescriptors) { foreach (PropertyDescriptor property in propertyDescriptors) {

Loading…
Cancel
Save