diff --git a/ILSpy/ILSpy.csproj b/ILSpy/ILSpy.csproj index 8b3aa84e1..4d90baba8 100644 --- a/ILSpy/ILSpy.csproj +++ b/ILSpy/ILSpy.csproj @@ -206,6 +206,7 @@ <Compile Include="TreeNodes\IMemberTreeNode.cs" /> <Compile Include="TreeNodes\ResourceNodes\CursorResourceEntryNode.cs" /> <Compile Include="TreeNodes\ResourceNodes\IconResourceEntryNode.cs" /> + <Compile Include="TreeNodes\ResourceNodes\ImageListResourceEntryNode.cs" /> <Compile Include="TreeNodes\ResourceNodes\ImageResourceEntryNode.cs" /> <Compile Include="TreeNodes\ResourceNodes\XmlResourceNode.cs" /> <Compile Include="TreeNodes\ResourceNodes\IResourceNodeFactory.cs" /> diff --git a/ILSpy/TreeNodes/ResourceNodes/ImageListResourceEntryNode.cs b/ILSpy/TreeNodes/ResourceNodes/ImageListResourceEntryNode.cs new file mode 100644 index 000000000..d8d7ed151 --- /dev/null +++ b/ILSpy/TreeNodes/ResourceNodes/ImageListResourceEntryNode.cs @@ -0,0 +1,91 @@ +// Copyright (c) 2014 AlphaSierraPapa for the SharpDevelop Team +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this +// software and associated documentation files (the "Software"), to deal in the Software +// without restriction, including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all copies or +// substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. + +using System; +using System.Collections.Generic; +using System.ComponentModel.Composition; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using ICSharpCode.Decompiler; + +namespace ICSharpCode.ILSpy.TreeNodes +{ + [Export(typeof(IResourceNodeFactory))] + sealed class ImageListResourceEntryNodeFactory : IResourceNodeFactory + { + #region IResourceNodeFactory Members + + public ILSpyTreeNode CreateNode(Mono.Cecil.Resource resource) + { + return null; + } + + public ILSpyTreeNode CreateNode(string key, object data) + { + if (data is ImageListStreamer) + return new ImageListResourceEntryNode(key, (ImageListStreamer)data); + return null; + } + + #endregion + } + + sealed class ImageListResourceEntryNode : ILSpyTreeNode + { + private readonly string key; + private readonly ImageList data; + + public ImageListResourceEntryNode(string key, ImageListStreamer data) + { + this.LazyLoading = true; + this.key = key; + this.data = new ImageList(); + this.data.ImageStream = data; + } + + public override object Text + { + get { return key; } + } + + public override object Icon + { + get { return Images.ResourceImage; } + } + + protected override void LoadChildren() + { + int i = 0; + foreach (Image image in this.data.Images) + { + var node = ResourceEntryNode.Create("Image" + i.ToString(), image); + if (node != null) + Children.Add(node); + ++i; + } + } + + + public override void Decompile(Language language, ITextOutput output, DecompilationOptions options) + { + EnsureLazyChildren(); + } + } +}