diff --git a/ILSpy/Analyzers/TreeNodes/AnalyzedModuleTreeNode.cs b/ILSpy/Analyzers/TreeNodes/AnalyzedModuleTreeNode.cs index 1c7c50175..606b72f80 100644 --- a/ILSpy/Analyzers/TreeNodes/AnalyzedModuleTreeNode.cs +++ b/ILSpy/Analyzers/TreeNodes/AnalyzedModuleTreeNode.cs @@ -33,7 +33,7 @@ namespace ICSharpCode.ILSpy.Analyzers.TreeNodes this.LazyLoading = true; } - public override object Icon => Images.GetIcon(Images.Assembly); + public override object Icon => Images.Assembly; public override object Text => analyzedModule.AssemblyName; diff --git a/ILSpy/Images/AssemblyList.xaml b/ILSpy/Images/AssemblyList.xaml index fc8715236..33a32f40a 100644 --- a/ILSpy/Images/AssemblyList.xaml +++ b/ILSpy/Images/AssemblyList.xaml @@ -1,20 +1,10 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + \ No newline at end of file diff --git a/ILSpy/Images/AssemblyListGAC.svg b/ILSpy/Images/AssemblyListGAC.svg index 696a704f8..da520a820 100644 --- a/ILSpy/Images/AssemblyListGAC.svg +++ b/ILSpy/Images/AssemblyListGAC.svg @@ -15,10 +15,10 @@ style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;" id="svg34" sodipodi:docname="AssemblyListGAC.svg" - inkscape:version="0.92.2 (5c3e80d, 2017-08-06)">image/svg+xml \ No newline at end of file + inkscape:current-layer="svg34" /> \ No newline at end of file diff --git a/ILSpy/Images/AssemblyListGAC.xaml b/ILSpy/Images/AssemblyListGAC.xaml index 82885d089..4c8026cc8 100644 --- a/ILSpy/Images/AssemblyListGAC.xaml +++ b/ILSpy/Images/AssemblyListGAC.xaml @@ -1,97 +1,44 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ILSpy/Images/Back.xaml b/ILSpy/Images/Back.xaml index ac68f11e4..7ddf0a4df 100644 --- a/ILSpy/Images/Back.xaml +++ b/ILSpy/Images/Back.xaml @@ -1,20 +1,10 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + \ No newline at end of file diff --git a/ILSpy/Images/CollapseAll.xaml b/ILSpy/Images/CollapseAll.xaml index 8fefbcf4f..e0d9a09cd 100644 --- a/ILSpy/Images/CollapseAll.xaml +++ b/ILSpy/Images/CollapseAll.xaml @@ -1,21 +1,11 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + \ No newline at end of file diff --git a/ILSpy/Images/Forward.xaml b/ILSpy/Images/Forward.xaml index 77f14b469..85efa5c2a 100644 --- a/ILSpy/Images/Forward.xaml +++ b/ILSpy/Images/Forward.xaml @@ -1,20 +1,10 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + \ No newline at end of file diff --git a/ILSpy/Images/Images.cs b/ILSpy/Images/Images.cs index bf6442bc1..bd32b3fbb 100644 --- a/ILSpy/Images/Images.cs +++ b/ILSpy/Images/Images.cs @@ -37,100 +37,89 @@ namespace ICSharpCode.ILSpy return image; } - static object Load(string icon) + static ImageSource Load(string icon) { icon = "Images/" + icon; if (icon.EndsWith(".png", StringComparison.OrdinalIgnoreCase)) return LoadImage(null, icon); Uri uri = GetUri(null, icon + ".xaml"); if (ResourceExists(uri)) { - return LoadDrawingGroup(null, icon); + return new DrawingImage(LoadDrawingGroup(null, icon)); } return LoadImage(null, icon + ".png"); } - public static readonly BitmapImage Breakpoint = LoadBitmap("Breakpoint"); - public static readonly BitmapImage CurrentLine = LoadBitmap("CurrentLine"); + public static readonly ImageSource Breakpoint = LoadBitmap("Breakpoint"); + public static readonly ImageSource CurrentLine = LoadBitmap("CurrentLine"); - public static readonly BitmapImage ViewCode = LoadBitmap("ViewCode"); - public static readonly BitmapImage Save = LoadBitmap("SaveFile"); - public static readonly BitmapImage OK = LoadBitmap("OK"); + public static readonly ImageSource ViewCode = LoadBitmap("ViewCode"); + public static readonly ImageSource Save = LoadBitmap("SaveFile"); + public static readonly ImageSource OK = LoadBitmap("OK"); - public static readonly BitmapImage Delete = LoadBitmap("Delete"); - public static readonly BitmapImage Search = LoadBitmap("Search"); + public static readonly ImageSource Delete = LoadBitmap("Delete"); + public static readonly ImageSource Search = LoadBitmap("Search"); - public static readonly object Assembly = Load("Assembly"); - public static readonly object AssemblyWarning = Load("AssemblyWarning"); - public static readonly object AssemblyLoading = Load("FindAssembly"); + public static readonly ImageSource Assembly = Load("Assembly"); + public static readonly ImageSource AssemblyWarning = Load("AssemblyWarning"); + public static readonly ImageSource AssemblyLoading = Load("FindAssembly"); - public static readonly object Library = Load("Library"); - public static readonly object Namespace = Load("Namespace"); + public static readonly ImageSource Library = Load("Library"); + public static readonly ImageSource Namespace = Load("Namespace"); - public static readonly object ReferenceFolder = Load("ReferenceFolder"); + public static readonly ImageSource ReferenceFolder = Load("ReferenceFolder"); - public static readonly object SubTypes = Load("SubTypes"); - public static readonly object SuperTypes = Load("SuperTypes"); + public static readonly ImageSource SubTypes = Load("SubTypes"); + public static readonly ImageSource SuperTypes = Load("SuperTypes"); - public static readonly object FolderOpen = Load("Folder.Open"); - public static readonly object FolderClosed = Load("Folder.Closed"); + public static readonly ImageSource FolderOpen = Load("Folder.Open"); + public static readonly ImageSource FolderClosed = Load("Folder.Closed"); - public static readonly object Resource = Load("Resource"); - public static readonly object ResourceImage = Load("ResourceImage"); - public static readonly object ResourceResourcesFile = Load("ResourceResourcesFile"); - public static readonly object ResourceXml = Load("ResourceXml"); - public static readonly object ResourceXsd = Load("ResourceXslt"); - public static readonly object ResourceXslt = Load("ResourceXslt"); + public static readonly ImageSource Resource = Load("Resource"); + public static readonly ImageSource ResourceImage = Load("ResourceImage"); + public static readonly ImageSource ResourceResourcesFile = Load("ResourceResourcesFile"); + public static readonly ImageSource ResourceXml = Load("ResourceXml"); + public static readonly ImageSource ResourceXsd = Load("ResourceXslt"); + public static readonly ImageSource ResourceXslt = Load("ResourceXslt"); - public static readonly object Class = Load("Class"); - public static readonly object Struct = Load("Struct"); - public static readonly object Interface = Load("Interface"); - public static readonly object Delegate = Load("Delegate"); - public static readonly object Enum = Load("Enum"); + public static readonly ImageSource Class = Load("Class"); + public static readonly ImageSource Struct = Load("Struct"); + public static readonly ImageSource Interface = Load("Interface"); + public static readonly ImageSource Delegate = Load("Delegate"); + public static readonly ImageSource Enum = Load("Enum"); - public static readonly object Field = Load("Field"); - public static readonly object FieldReadOnly = Load("Field"); - public static readonly object Literal = Load("Literal"); - public static readonly object EnumValue = Load("EnumValue"); + public static readonly ImageSource Field = Load("Field"); + public static readonly ImageSource FieldReadOnly = Load("Field"); + public static readonly ImageSource Literal = Load("Literal"); + public static readonly ImageSource EnumValue = Load("EnumValue"); - public static readonly object Method = Load("Method"); - public static readonly object Constructor = Load("Method"); - public static readonly object VirtualMethod = Load("Method"); - public static readonly object Operator = Load("Operator"); - public static readonly object ExtensionMethod = Load("ExtensionMethod"); - public static readonly object PInvokeMethod = Load("Method"); + public static readonly ImageSource Method = Load("Method"); + public static readonly ImageSource Constructor = Load("Method"); + public static readonly ImageSource VirtualMethod = Load("Method"); + public static readonly ImageSource Operator = Load("Operator"); + public static readonly ImageSource ExtensionMethod = Load("ExtensionMethod"); + public static readonly ImageSource PInvokeMethod = Load("Method"); - public static readonly object Property = Load("Property"); - public static readonly object Indexer = Load("Indexer"); + public static readonly ImageSource Property = Load("Property"); + public static readonly ImageSource Indexer = Load("Indexer"); - public static readonly object Event = Load("Event"); + public static readonly ImageSource Event = Load("Event"); - private static readonly object OverlayProtected = Load("OverlayProtected"); - private static readonly object OverlayInternal = Load("OverlayInternal"); - private static readonly object OverlayProtectedInternal = Load("OverlayProtectedInternal"); - private static readonly object OverlayPrivate = Load("OverlayPrivate"); - private static readonly object OverlayPrivateProtected = Load("OverlayPrivateProtected"); - private static readonly object OverlayCompilerControlled = Load("OverlayCompilerControlled"); + private static readonly ImageSource OverlayProtected = Load("OverlayProtected"); + private static readonly ImageSource OverlayInternal = Load("OverlayInternal"); + private static readonly ImageSource OverlayProtectedInternal = Load("OverlayProtectedInternal"); + private static readonly ImageSource OverlayPrivate = Load("OverlayPrivate"); + private static readonly ImageSource OverlayPrivateProtected = Load("OverlayPrivateProtected"); + private static readonly ImageSource OverlayCompilerControlled = Load("OverlayCompilerControlled"); - private static readonly object OverlayStatic = Load("OverlayStatic"); + private static readonly ImageSource OverlayStatic = Load("OverlayStatic"); - public static object GetIcon(object imageOrVector) - { - if (imageOrVector is BitmapImage img) - return img; - return new Rectangle { - Width = 16, - Height = 16, - Fill = new DrawingBrush((DrawingGroup)imageOrVector) - }; - } - - public static object Load(object part, string icon) + public static ImageSource Load(object part, string icon) { if (icon.EndsWith(".png", StringComparison.OrdinalIgnoreCase)) return LoadImage(part, icon); Uri uri = GetUri(part, icon + ".xaml"); if (ResourceExists(uri)) { - return LoadVector(part, icon); + return new DrawingImage(LoadDrawingGroup(part, icon)); } return LoadImage(part, icon + ".png"); } @@ -143,14 +132,9 @@ namespace ICSharpCode.ILSpy return image; } - public static Viewbox LoadVector(object part, string icon) - { - return (Viewbox)Application.LoadComponent(GetUri(part, icon + ".xaml", absolute: false)); - } - - public static DrawingGroup LoadDrawingGroup(object part, string icon) + public static Drawing LoadDrawingGroup(object part, string icon) { - return (DrawingGroup)Application.LoadComponent(GetUri(part, icon + ".xaml", absolute: false)); + return (Drawing)Application.LoadComponent(GetUri(part, icon + ".xaml", absolute: false)); } private static Uri GetUri(object part, string icon, bool absolute = true) @@ -189,13 +173,13 @@ namespace ICSharpCode.ILSpy private static readonly TypeIconCache typeIconCache = new TypeIconCache(); private static readonly MemberIconCache memberIconCache = new MemberIconCache(); - public static object GetIcon(TypeIcon icon, AccessOverlayIcon overlay, bool isStatic = false) + public static ImageSource GetIcon(TypeIcon icon, AccessOverlayIcon overlay, bool isStatic = false) { lock (typeIconCache) return typeIconCache.GetIcon(icon, overlay, isStatic); } - public static object GetIcon(MemberIcon icon, AccessOverlayIcon overlay, bool isStatic) + public static ImageSource GetIcon(MemberIcon icon, AccessOverlayIcon overlay, bool isStatic) { lock (memberIconCache) return memberIconCache.GetIcon(icon, overlay, isStatic); @@ -214,9 +198,9 @@ namespace ICSharpCode.ILSpy PreloadPublicIconToCache(TypeIcon.Delegate, Images.Delegate); } - protected override object GetBaseImage(TypeIcon icon) + protected override ImageSource GetBaseImage(TypeIcon icon) { - object baseImage; + ImageSource baseImage; switch (icon) { case TypeIcon.Class: baseImage = Images.Class; @@ -260,9 +244,9 @@ namespace ICSharpCode.ILSpy PreloadPublicIconToCache(MemberIcon.Event, Images.Event); } - protected override object GetBaseImage(MemberIcon icon) + protected override ImageSource GetBaseImage(MemberIcon icon) { - object baseImage; + ImageSource baseImage; switch (icon) { case MemberIcon.Field: baseImage = Images.Field; @@ -313,42 +297,39 @@ namespace ICSharpCode.ILSpy private abstract class IconCache { - private readonly Dictionary<(T, AccessOverlayIcon, bool), object> cache = new Dictionary<(T, AccessOverlayIcon, bool), object>(); + private readonly Dictionary<(T, AccessOverlayIcon, bool), ImageSource> cache = new Dictionary<(T, AccessOverlayIcon, bool), ImageSource>(); - protected void PreloadPublicIconToCache(T icon, object image) + protected void PreloadPublicIconToCache(T icon, ImageSource image) { var iconKey = (icon, AccessOverlayIcon.Public, false); - if (image is ImageSource img) - cache.Add(iconKey, img); - else - cache.Add(iconKey, new DrawingImage((DrawingGroup)image)); + cache.Add(iconKey, image); } - public object GetIcon(T icon, AccessOverlayIcon overlay, bool isStatic) + public ImageSource GetIcon(T icon, AccessOverlayIcon overlay, bool isStatic) { var iconKey = (icon, overlay, isStatic); if (cache.ContainsKey(iconKey)) { return cache[iconKey]; } else { - object result = BuildMemberIcon(icon, overlay, isStatic); + ImageSource result = BuildMemberIcon(icon, overlay, isStatic); cache.Add(iconKey, result); return result; } } - private object BuildMemberIcon(T icon, AccessOverlayIcon overlay, bool isStatic) + private ImageSource BuildMemberIcon(T icon, AccessOverlayIcon overlay, bool isStatic) { - object baseImage = GetBaseImage(icon); - object overlayImage = GetOverlayImage(overlay); + ImageSource baseImage = GetBaseImage(icon); + ImageSource overlayImage = GetOverlayImage(overlay); return CreateOverlayImage(baseImage, overlayImage, isStatic); } - protected abstract object GetBaseImage(T icon); + protected abstract ImageSource GetBaseImage(T icon); - private static object GetOverlayImage(AccessOverlayIcon overlay) + private static ImageSource GetOverlayImage(AccessOverlayIcon overlay) { - object overlayImage; + ImageSource overlayImage; switch (overlay) { case AccessOverlayIcon.Public: overlayImage = null; @@ -379,16 +360,11 @@ namespace ICSharpCode.ILSpy private static readonly Rect iconRect = new Rect(0, 0, 16, 16); - private static ImageSource CreateOverlayImage(object baseImage, object overlay, bool isStatic) + private static ImageSource CreateOverlayImage(ImageSource baseImage, ImageSource overlay, bool isStatic) { var group = new DrawingGroup(); - Drawing baseDrawing; - if (baseImage is ImageSource img) { - baseDrawing = new ImageDrawing(img, iconRect); - } else { - baseDrawing = (DrawingGroup)baseImage; - } + Drawing baseDrawing = new ImageDrawing(baseImage, iconRect); if (overlay != null || isStatic) { var nestedGroup = new DrawingGroup { Transform = new ScaleTransform(0.8, 0.8) }; @@ -399,17 +375,11 @@ namespace ICSharpCode.ILSpy } if (overlay != null) { - if (overlay is ImageSource overlayImage) - group.Children.Add(new ImageDrawing(overlayImage, iconRect)); - else - group.Children.Add((DrawingGroup)overlay); + group.Children.Add(new ImageDrawing(overlay, iconRect)); } if (isStatic) { - if (Images.OverlayStatic is ImageSource staticImg) - group.Children.Add(new ImageDrawing(staticImg, iconRect)); - else - group.Children.Add((DrawingGroup)Images.OverlayStatic); + group.Children.Add(new ImageDrawing(Images.OverlayStatic, iconRect)); } var image = new DrawingImage(group); diff --git a/ILSpy/Images/Open.xaml b/ILSpy/Images/Open.xaml index 624c8619f..7c2b6b50e 100644 --- a/ILSpy/Images/Open.xaml +++ b/ILSpy/Images/Open.xaml @@ -1,20 +1,10 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + \ No newline at end of file diff --git a/ILSpy/Images/Refresh.xaml b/ILSpy/Images/Refresh.xaml index 99eeaa8c5..e6e13697a 100644 --- a/ILSpy/Images/Refresh.xaml +++ b/ILSpy/Images/Refresh.xaml @@ -1,19 +1,9 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + \ No newline at end of file diff --git a/ILSpy/Images/Save.xaml b/ILSpy/Images/Save.xaml index 5742adf56..2a74dc9d4 100644 --- a/ILSpy/Images/Save.xaml +++ b/ILSpy/Images/Save.xaml @@ -1,20 +1,10 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + \ No newline at end of file diff --git a/ILSpy/Images/Search.xaml b/ILSpy/Images/Search.xaml index b86ad5db5..f1bb3be67 100644 --- a/ILSpy/Images/Search.xaml +++ b/ILSpy/Images/Search.xaml @@ -1,20 +1,10 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + \ No newline at end of file diff --git a/ILSpy/Images/Sort.xaml b/ILSpy/Images/Sort.xaml index 440c50a3d..7c8ebee2e 100644 --- a/ILSpy/Images/Sort.xaml +++ b/ILSpy/Images/Sort.xaml @@ -1,21 +1,11 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + \ No newline at end of file diff --git a/ILSpy/Search/AbstractSearchStrategy.cs b/ILSpy/Search/AbstractSearchStrategy.cs index 1f0b13352..3ac17a179 100644 --- a/ILSpy/Search/AbstractSearchStrategy.cs +++ b/ILSpy/Search/AbstractSearchStrategy.cs @@ -157,9 +157,7 @@ namespace ICSharpCode.ILSpy.Search return new SearchResult { Member = item, Fitness = CalculateFitness(item), - Image = GetIcon(item), Name = GetLanguageSpecificName(item), - LocationImage = declaringType != null ? TypeTreeNode.GetIcon(declaringType) : Images.Namespace, Location = declaringType != null ? language.TypeToString(declaringType, includeNamespace: true) : item.Namespace, ToolTip = item.ParentModule.PEFile?.FileName }; @@ -204,7 +202,7 @@ namespace ICSharpCode.ILSpy.Search } } - object GetIcon(IEntity member) + internal static object GetIcon(IEntity member) { switch (member) { case ITypeDefinition t: diff --git a/ILSpy/Search/SearchPane.cs b/ILSpy/Search/SearchPane.cs index bb2250ef7..44f7f8a77 100644 --- a/ILSpy/Search/SearchPane.cs +++ b/ILSpy/Search/SearchPane.cs @@ -373,22 +373,41 @@ namespace ICSharpCode.ILSpy public sealed class SearchResult : IMemberTreeNode { - public static readonly System.Collections.Generic.IComparer Comparer = new SearchResultComparer(); - + object image; + object locationImage; + + public static readonly IComparer Comparer = new SearchResultComparer(); + public IEntity Member { get; set; } public float Fitness { get; set; } - + public string Location { get; set; } public string Name { get; set; } public object ToolTip { get; set; } - public object Image { get; set; } - public object LocationImage { get; set; } - + + public object Image { + get { + if (image == null) { + image = AbstractSearchStrategy.GetIcon(Member); + } + return image; + } + } + + public object LocationImage { + get { + if (locationImage == null) { + locationImage = Member.DeclaringTypeDefinition != null ? TypeTreeNode.GetIcon(Member.DeclaringTypeDefinition) : Images.Namespace; + } + return locationImage; + } + } + public override string ToString() { return Name; } - + class SearchResultComparer : System.Collections.Generic.IComparer { public int Compare(SearchResult x, SearchResult y) diff --git a/ILSpy/TreeNodes/AssemblyReferenceTreeNode.cs b/ILSpy/TreeNodes/AssemblyReferenceTreeNode.cs index 2aee874dd..0a64b9ea7 100644 --- a/ILSpy/TreeNodes/AssemblyReferenceTreeNode.cs +++ b/ILSpy/TreeNodes/AssemblyReferenceTreeNode.cs @@ -43,7 +43,7 @@ namespace ICSharpCode.ILSpy.TreeNodes get { return r.Name + ((System.Reflection.Metadata.EntityHandle)r.Handle).ToSuffixString(); } } - public override object Icon => Images.GetIcon(Images.Assembly); + public override object Icon => Images.Assembly; public override bool ShowExpander { get { diff --git a/ILSpy/TreeNodes/AssemblyTreeNode.cs b/ILSpy/TreeNodes/AssemblyTreeNode.cs index 2db72b09e..c138c614e 100644 --- a/ILSpy/TreeNodes/AssemblyTreeNode.cs +++ b/ILSpy/TreeNodes/AssemblyTreeNode.cs @@ -70,9 +70,9 @@ namespace ICSharpCode.ILSpy.TreeNodes public override object Icon { get { if (LoadedAssembly.IsLoaded) { - return LoadedAssembly.HasLoadError ? Images.GetIcon(Images.AssemblyWarning) : Images.GetIcon(Images.Assembly); + return LoadedAssembly.HasLoadError ? Images.AssemblyWarning : Images.Assembly; } else { - return Images.GetIcon(Images.AssemblyLoading); + return Images.AssemblyLoading; } } } diff --git a/ILSpy/TreeNodes/BaseTypesEntryNode.cs b/ILSpy/TreeNodes/BaseTypesEntryNode.cs index 70aaa280e..df8121e84 100644 --- a/ILSpy/TreeNodes/BaseTypesEntryNode.cs +++ b/ILSpy/TreeNodes/BaseTypesEntryNode.cs @@ -70,7 +70,7 @@ namespace ICSharpCode.ILSpy.TreeNodes public override object Text => this.Language.TypeToString(type, includeNamespace: true) + handle.ToSuffixString(); public override object Icon => - isInterface ? Images.GetIcon(Images.Interface) : Images.GetIcon(Images.Class); + isInterface ? Images.Interface : Images.Class; protected override void LoadChildren() { diff --git a/ILSpy/TreeNodes/BaseTypesTreeNode.cs b/ILSpy/TreeNodes/BaseTypesTreeNode.cs index 1ae86016d..8cbdb2304 100644 --- a/ILSpy/TreeNodes/BaseTypesTreeNode.cs +++ b/ILSpy/TreeNodes/BaseTypesTreeNode.cs @@ -44,7 +44,7 @@ namespace ICSharpCode.ILSpy.TreeNodes public override object Text => "Base Types"; - public override object Icon => Images.GetIcon(Images.SuperTypes); + public override object Icon => Images.SuperTypes; protected override void LoadChildren() { diff --git a/ILSpy/TreeNodes/DerivedTypesTreeNode.cs b/ILSpy/TreeNodes/DerivedTypesTreeNode.cs index 0e85a1c5e..3b6e50a30 100644 --- a/ILSpy/TreeNodes/DerivedTypesTreeNode.cs +++ b/ILSpy/TreeNodes/DerivedTypesTreeNode.cs @@ -46,7 +46,7 @@ namespace ICSharpCode.ILSpy.TreeNodes public override object Text => Resources.DerivedTypes; - public override object Icon => Images.GetIcon(Images.SubTypes); + public override object Icon => Images.SubTypes; protected override void LoadChildren() { diff --git a/ILSpy/TreeNodes/ModuleReferenceTreeNode.cs b/ILSpy/TreeNodes/ModuleReferenceTreeNode.cs index 4a5f5a6e7..4d51f46af 100644 --- a/ILSpy/TreeNodes/ModuleReferenceTreeNode.cs +++ b/ILSpy/TreeNodes/ModuleReferenceTreeNode.cs @@ -61,7 +61,7 @@ namespace ICSharpCode.ILSpy.TreeNodes get { return moduleName + ((EntityHandle)handle).ToSuffixString(); } } - public override object Icon => Images.GetIcon(Images.Library); + public override object Icon => Images.Library; public override void ActivateItem(System.Windows.RoutedEventArgs e) { diff --git a/ILSpy/TreeNodes/NamespaceTreeNode.cs b/ILSpy/TreeNodes/NamespaceTreeNode.cs index a189b79b3..d054603dc 100644 --- a/ILSpy/TreeNodes/NamespaceTreeNode.cs +++ b/ILSpy/TreeNodes/NamespaceTreeNode.cs @@ -45,7 +45,7 @@ namespace ICSharpCode.ILSpy.TreeNodes } public override object Icon { - get { return Images.GetIcon(Images.Namespace); } + get { return Images.Namespace; } } public override FilterResult Filter(FilterSettings settings) diff --git a/ILSpy/TreeNodes/ReferenceFolderTreeNode.cs b/ILSpy/TreeNodes/ReferenceFolderTreeNode.cs index e59a409f0..a23a4bfe5 100644 --- a/ILSpy/TreeNodes/ReferenceFolderTreeNode.cs +++ b/ILSpy/TreeNodes/ReferenceFolderTreeNode.cs @@ -18,7 +18,6 @@ using System; using System.Linq; -using SRM = System.Reflection.Metadata; using System.Windows.Threading; using ICSharpCode.Decompiler; using ICSharpCode.Decompiler.Metadata; @@ -40,15 +39,11 @@ namespace ICSharpCode.ILSpy.TreeNodes this.parentAssembly = parentAssembly; this.LazyLoading = true; } - - public override object Text { - get { return Resources.References; } - } - - public override object Icon { - get { return Images.GetIcon(Images.ReferenceFolder); } - } - + + public override object Text => Resources.References; + + public override object Icon => Images.ReferenceFolder; + protected override void LoadChildren() { var metadata = module.Metadata; diff --git a/ILSpy/TreeNodes/ResourceListTreeNode.cs b/ILSpy/TreeNodes/ResourceListTreeNode.cs index 8f9b21f91..e379160a2 100644 --- a/ILSpy/TreeNodes/ResourceListTreeNode.cs +++ b/ILSpy/TreeNodes/ResourceListTreeNode.cs @@ -37,19 +37,13 @@ namespace ICSharpCode.ILSpy.TreeNodes this.LazyLoading = true; this.module = module; } - - public override object Text { - get { return Resources._Resources; } - } - - public override object Icon { - get { return Images.GetIcon(Images.FolderClosed); } - } - public override object ExpandedIcon { - get { return Images.GetIcon(Images.FolderOpen); } - } - + public override object Text => Resources._Resources; + + public override object Icon => Images.FolderClosed; + + public override object ExpandedIcon => Images.FolderOpen; + protected override void LoadChildren() { foreach (Resource r in module.Resources.OrderBy(m => m.Name, NaturalStringComparer.Instance)) diff --git a/ILSpy/TreeNodes/ResourceNodes/CursorResourceEntryNode.cs b/ILSpy/TreeNodes/ResourceNodes/CursorResourceEntryNode.cs index 1095a7ab8..156590b8d 100644 --- a/ILSpy/TreeNodes/ResourceNodes/CursorResourceEntryNode.cs +++ b/ILSpy/TreeNodes/ResourceNodes/CursorResourceEntryNode.cs @@ -59,10 +59,7 @@ namespace ICSharpCode.ILSpy.TreeNodes { } - public override object Icon - { - get { return Images.GetIcon(Images.ResourceImage); } - } + public override object Icon => Images.ResourceImage; public override bool View(DecompilerTextView textView) { diff --git a/ILSpy/TreeNodes/ResourceNodes/IconResourceEntryNode.cs b/ILSpy/TreeNodes/ResourceNodes/IconResourceEntryNode.cs index bacdb7689..989450c7b 100644 --- a/ILSpy/TreeNodes/ResourceNodes/IconResourceEntryNode.cs +++ b/ILSpy/TreeNodes/ResourceNodes/IconResourceEntryNode.cs @@ -58,10 +58,7 @@ namespace ICSharpCode.ILSpy.TreeNodes { } - public override object Icon - { - get { return Images.GetIcon(Images.ResourceImage); } - } + public override object Icon => Images.ResourceImage; public override bool View(DecompilerTextView textView) { diff --git a/ILSpy/TreeNodes/ResourceNodes/ImageListResourceEntryNode.cs b/ILSpy/TreeNodes/ResourceNodes/ImageListResourceEntryNode.cs index 8781fc913..97710629f 100644 --- a/ILSpy/TreeNodes/ResourceNodes/ImageListResourceEntryNode.cs +++ b/ILSpy/TreeNodes/ResourceNodes/ImageListResourceEntryNode.cs @@ -58,10 +58,7 @@ namespace ICSharpCode.ILSpy.TreeNodes get { return key; } } - public override object Icon - { - get { return Images.GetIcon(Images.ResourceImage); } - } + public override object Icon => Images.ResourceImage; protected override void LoadChildren() { diff --git a/ILSpy/TreeNodes/ResourceNodes/ImageResourceEntryNode.cs b/ILSpy/TreeNodes/ResourceNodes/ImageResourceEntryNode.cs index c572e5782..2e7578e8f 100644 --- a/ILSpy/TreeNodes/ResourceNodes/ImageResourceEntryNode.cs +++ b/ILSpy/TreeNodes/ResourceNodes/ImageResourceEntryNode.cs @@ -65,10 +65,7 @@ namespace ICSharpCode.ILSpy.TreeNodes { } - public override object Icon - { - get { return Images.GetIcon(Images.ResourceImage); } - } + public override object Icon => Images.ResourceImage; public override bool View(DecompilerTextView textView) { diff --git a/ILSpy/TreeNodes/ResourceNodes/ResourceEntryNode.cs b/ILSpy/TreeNodes/ResourceNodes/ResourceEntryNode.cs index 9fd431838..5e0db07d1 100644 --- a/ILSpy/TreeNodes/ResourceNodes/ResourceEntryNode.cs +++ b/ILSpy/TreeNodes/ResourceNodes/ResourceEntryNode.cs @@ -32,21 +32,11 @@ namespace ICSharpCode.ILSpy.TreeNodes private readonly string key; private readonly Stream data; - public override object Text - { - get { return this.key; } - } + public override object Text => this.key; - public override object Icon - { - get { return Images.GetIcon(Images.Resource); } - } - - protected Stream Data - { - get { return data; } - } + public override object Icon => Images.Resource; + protected Stream Data => data; public ResourceEntryNode(string key, Stream data) { diff --git a/ILSpy/TreeNodes/ResourceNodes/ResourceTreeNode.cs b/ILSpy/TreeNodes/ResourceNodes/ResourceTreeNode.cs index 348d093bc..ff57aa944 100644 --- a/ILSpy/TreeNodes/ResourceNodes/ResourceTreeNode.cs +++ b/ILSpy/TreeNodes/ResourceNodes/ResourceTreeNode.cs @@ -36,48 +36,40 @@ namespace ICSharpCode.ILSpy.TreeNodes /// public class ResourceTreeNode : ILSpyTreeNode { - readonly Resource r; - public ResourceTreeNode(Resource r) { if (r.IsNil) throw new ArgumentNullException(nameof(r)); - this.r = r; + this.Resource = r; } - - public Resource Resource { - get { return r; } - } - - public override object Text { - get { return r.Name; } - } - - public override object Icon { - get { return Images.GetIcon(Images.Resource); } - } - + + public Resource Resource { get; } + + public override object Text => Resource.Name; + + public override object Icon => Images.Resource; + public override FilterResult Filter(FilterSettings settings) { - if (settings.ShowApiLevel == ApiVisibility.PublicOnly && (r.Attributes & ManifestResourceAttributes.VisibilityMask) == ManifestResourceAttributes.Private) + if (settings.ShowApiLevel == ApiVisibility.PublicOnly && (Resource.Attributes & ManifestResourceAttributes.VisibilityMask) == ManifestResourceAttributes.Private) return FilterResult.Hidden; - if (settings.SearchTermMatches(r.Name)) + if (settings.SearchTermMatches(Resource.Name)) return FilterResult.Match; else return FilterResult.Hidden; } - + public override void Decompile(Language language, ITextOutput output, DecompilationOptions options) { - language.WriteCommentLine(output, string.Format("{0} ({1}, {2})", r.Name, r.ResourceType, r.Attributes)); - + language.WriteCommentLine(output, string.Format("{0} ({1}, {2})", Resource.Name, Resource.ResourceType, Resource.Attributes)); + ISmartTextOutput smartOutput = output as ISmartTextOutput; if (smartOutput != null) { smartOutput.AddButton(Images.Save, Resources.Save, delegate { Save(MainWindow.Instance.TextView); }); output.WriteLine(); } } - + public override bool View(DecompilerTextView textView) { Stream s = Resource.TryOpenStream(); @@ -99,7 +91,7 @@ namespace ICSharpCode.ILSpy.TreeNodes } return false; } - + public override bool Save(DecompilerTextView textView) { Stream s = Resource.TryOpenStream(); @@ -115,7 +107,7 @@ namespace ICSharpCode.ILSpy.TreeNodes } return true; } - + public static ILSpyTreeNode Create(Resource resource) { ILSpyTreeNode result = null; diff --git a/ILSpy/TreeNodes/ResourceNodes/ResourcesFileTreeNode.cs b/ILSpy/TreeNodes/ResourceNodes/ResourcesFileTreeNode.cs index 1d28bbfcb..74ec9e049 100644 --- a/ILSpy/TreeNodes/ResourceNodes/ResourcesFileTreeNode.cs +++ b/ILSpy/TreeNodes/ResourceNodes/ResourcesFileTreeNode.cs @@ -60,9 +60,7 @@ namespace ICSharpCode.ILSpy.TreeNodes this.LazyLoading = true; } - public override object Icon { - get { return Images.GetIcon(Images.ResourceResourcesFile); } - } + public override object Icon => Images.ResourceResourcesFile; protected override void LoadChildren() { diff --git a/ILSpy/TreeNodes/ResourceNodes/XmlResourceNode.cs b/ILSpy/TreeNodes/ResourceNodes/XmlResourceNode.cs index c252f4eb3..7af53dd99 100644 --- a/ILSpy/TreeNodes/ResourceNodes/XmlResourceNode.cs +++ b/ILSpy/TreeNodes/ResourceNodes/XmlResourceNode.cs @@ -69,13 +69,13 @@ namespace ICSharpCode.ILSpy.Xaml { string text = (string)Text; if (text.EndsWith(".xml", StringComparison.OrdinalIgnoreCase)) - return Images.GetIcon(Images.ResourceXml); + return Images.ResourceXml; else if (text.EndsWith(".xsd", StringComparison.OrdinalIgnoreCase)) - return Images.GetIcon(Images.ResourceXsd); + return Images.ResourceXsd; else if (text.EndsWith(".xslt", StringComparison.OrdinalIgnoreCase)) - return Images.GetIcon(Images.ResourceXslt); + return Images.ResourceXslt; else - return Images.GetIcon(Images.Resource); + return Images.Resource; } } diff --git a/SharpTreeView/ICSharpCode.TreeView.csproj b/SharpTreeView/ICSharpCode.TreeView.csproj index e04823753..77bf6c271 100644 --- a/SharpTreeView/ICSharpCode.TreeView.csproj +++ b/SharpTreeView/ICSharpCode.TreeView.csproj @@ -46,7 +46,6 @@ - diff --git a/SharpTreeView/IconDataTemplateSelector.cs b/SharpTreeView/IconDataTemplateSelector.cs deleted file mode 100644 index c8883468b..000000000 --- a/SharpTreeView/IconDataTemplateSelector.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Media; - -namespace ICSharpCode.TreeView -{ - class IconDataTemplateSelector : DataTemplateSelector - { - public DataTemplate ImageDataTemplate { get; set; } - - public DataTemplate VectorDataTemplate { get; set; } - - public override DataTemplate SelectTemplate(object item, DependencyObject container) - { - if (item is ImageSource) - return ImageDataTemplate; - if (item is DrawingGroup) - return VectorDataTemplate; - - return base.SelectTemplate(item, container); - } - } -} diff --git a/SharpTreeView/Themes/Generic.xaml b/SharpTreeView/Themes/Generic.xaml index b089d2c2c..46c49793d 100644 --- a/SharpTreeView/Themes/Generic.xaml +++ b/SharpTreeView/Themes/Generic.xaml @@ -257,24 +257,13 @@ Margin="0 0 5 1" VerticalAlignment="Center" Focusable="False"> - - - - - - - - - - - - - - - - + + + + + -