Browse Source

ListViewItems with imageIndex or imageKey set are now created correctly in generated python forms designer code.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@4403 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Matt Ward 16 years ago
parent
commit
242b00a787
  1. 26
      src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonListViewComponent.cs
  2. 99
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/GenerateListViewWithImageListTestFixture.cs
  3. 1
      src/AddIns/BackendBindings/Python/PythonBinding/Test/PythonBinding.Tests.csproj

26
src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonListViewComponent.cs

@ -57,8 +57,10 @@ namespace ICSharpCode.PythonBinding @@ -57,8 +57,10 @@ namespace ICSharpCode.PythonBinding
/// <remarks>
/// The constructors that are used:
/// ListViewItem()
/// ListViewItem(String text)
/// ListViewItem(string text)
/// ListViewItem(string[] subItems)
/// ListViewItem(string text, int imageIndex)
/// ListViewItem(string text, string imageKey)
/// </remarks>
object[] GetConstructorParameters(ListViewItem item)
{
@ -69,12 +71,34 @@ namespace ICSharpCode.PythonBinding @@ -69,12 +71,34 @@ namespace ICSharpCode.PythonBinding
}
return new object[] {subItems};
}
if (item.ImageIndex != -1) {
return GetConstructorParameters(item.Text, item.ImageIndex);
}
if (!String.IsNullOrEmpty(item.ImageKey)) {
return GetConstructorParameters(item.Text, item.ImageKey);
}
if (String.IsNullOrEmpty(item.Text)) {
return new object[0];
}
return new object[] {item.Text};
}
/// <summary>
/// Creates an object array:
/// [0] = text.
/// [1] = obj.
/// </summary>
object[] GetConstructorParameters(string text, object obj)
{
if (String.IsNullOrEmpty(text)) {
text = String.Empty;
}
return new object[] {text, obj};
}
static ListView.ListViewItemCollection GetListViewItems(IComponent component)
{
ListView listView = (ListView)component;

99
src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/GenerateListViewWithImageListTestFixture.cs

@ -0,0 +1,99 @@ @@ -0,0 +1,99 @@
// <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 System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.ComponentModel.Design.Serialization;
using System.Drawing;
using System.Windows.Forms;
using ICSharpCode.PythonBinding;
using NUnit.Framework;
using PythonBinding.Tests.Utils;
namespace PythonBinding.Tests.Designer
{
[TestFixture]
public class GenerateListViewWithImageListFormTestFixture
{
string createListViewCode;
[TestFixtureSetUp]
public void SetUpFixture()
{
using (DesignSurface designSurface = new DesignSurface(typeof(Form))) {
IDesignerHost host = (IDesignerHost)designSurface.GetService(typeof(IDesignerHost));
IEventBindingService eventBindingService = new MockEventBindingService(host);
Form form = (Form)host.RootComponent;
form.ClientSize = new Size(200, 300);
PropertyDescriptorCollection descriptors = TypeDescriptor.GetProperties(form);
PropertyDescriptor namePropertyDescriptor = descriptors.Find("Name", false);
namePropertyDescriptor.SetValue(form, "MainForm");
// Add list view.
ListView listView = (ListView)host.CreateComponent(typeof(ListView), "listView1");
listView.TabIndex = 0;
listView.Location = new Point(0, 0);
listView.ClientSize = new Size(200, 100);
descriptors = TypeDescriptor.GetProperties(listView);
PropertyDescriptor descriptor = descriptors.Find("UseCompatibleStateImageBehavior", false);
descriptor.SetValue(listView, true);
descriptor = descriptors.Find("View", false);
descriptor.SetValue(listView, View.Details);
form.Controls.Add(listView);
// Add ImageList.
Icon icon = new Icon(typeof(GenerateFormResourceTestFixture), "App.ico");
ImageList imageList = (ImageList)host.CreateComponent(typeof(ImageList), "imageList1");
imageList.Images.Add("App.ico", icon);
imageList.Images.Add("b.ico", icon);
imageList.Images.Add("c.ico", icon);
// Add list view items.
ListViewItem item = new ListViewItem("aaa");
item.ImageIndex = 1;
listView.Items.Add(item);
ListViewItem item2 = new ListViewItem("bbb");
item2.ImageKey = "App.ico";
listView.Items.Add(item2);
ListViewItem item3 = new ListViewItem();
item3.ImageIndex = 2;
listView.Items.Add(item3);
ListViewItem item4 = new ListViewItem();
item4.ImageKey = "b.ico";
listView.Items.Add(item4);
// Get list view creation code.
PythonCodeBuilder codeBuilder = new PythonCodeBuilder();
codeBuilder.IndentString = " ";
PythonListViewComponent listViewComponent = new PythonListViewComponent(listView);
listViewComponent.AppendCreateInstance(codeBuilder);
createListViewCode = codeBuilder.ToString();
}
}
/// <summary>
/// Should include the column header and list view item creation.
/// </summary>
[Test]
public void ListViewCreationCode()
{
string expectedCode = "listViewItem1 = System.Windows.Forms.ListViewItem(\"aaa\", 1)\r\n" +
"listViewItem2 = System.Windows.Forms.ListViewItem(\"bbb\", \"App.ico\")\r\n" +
"listViewItem3 = System.Windows.Forms.ListViewItem(\"\", 2)\r\n" +
"listViewItem4 = System.Windows.Forms.ListViewItem(\"\", \"b.ico\")\r\n" +
"self._listView1 = System.Windows.Forms.ListView()\r\n";
Assert.AreEqual(expectedCode, createListViewCode, createListViewCode);
}
}
}

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

@ -195,6 +195,7 @@ @@ -195,6 +195,7 @@
<Compile Include="Designer\GenerateImeModeFormTestFixture.cs" />
<Compile Include="Designer\GenerateListViewItemTestFixture.cs" />
<Compile Include="Designer\GenerateListViewSubItemsTestFixture.cs" />
<Compile Include="Designer\GenerateListViewWithImageListTestFixture.cs" />
<Compile Include="Designer\GenerateLocalImageResourceTestFixture.cs" />
<Compile Include="Designer\GenerateMenuStripFormTestFixture.cs" />
<Compile Include="Designer\GenerateMenuStripItemsTestFixture.cs" />

Loading…
Cancel
Save