From 6e3aa7825f6fb74098ade6eb98014785aade282d Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sat, 20 Aug 2011 15:28:39 +0200 Subject: [PATCH] Use gray text color for non-public types and members. Closes #143. --- ILSpy/TreeNodes/EventTreeNode.cs | 8 ++++++++ ILSpy/TreeNodes/FieldTreeNode.cs | 6 ++++++ ILSpy/TreeNodes/ILSpyTreeNode.cs | 13 +++++++++++++ ILSpy/TreeNodes/MethodTreeNode.cs | 6 ++++++ ILSpy/TreeNodes/PropertyTreeNode.cs | 13 +++++++++++++ ILSpy/TreeNodes/TypeTreeNode.cs | 2 +- ILSpy/XmlDoc/XmlDocLoader.cs | 3 +++ SharpTreeView/SharpTreeNode.cs | 5 +++++ SharpTreeView/Themes/Generic.xaml | 4 +++- 9 files changed, 58 insertions(+), 2 deletions(-) diff --git a/ILSpy/TreeNodes/EventTreeNode.cs b/ILSpy/TreeNodes/EventTreeNode.cs index 465048177..2f585369c 100644 --- a/ILSpy/TreeNodes/EventTreeNode.cs +++ b/ILSpy/TreeNodes/EventTreeNode.cs @@ -108,6 +108,14 @@ namespace ICSharpCode.ILSpy.TreeNodes language.DecompileEvent(ev, output, options); } + + public override bool IsPublicAPI { + get { + MethodDefinition accessor = ev.AddMethod ?? ev.RemoveMethod; + return accessor != null && (accessor.IsPublic || accessor.IsFamilyOrAssembly || accessor.IsFamily); + } + } + MemberReference IMemberTreeNode.Member { get { return ev; } diff --git a/ILSpy/TreeNodes/FieldTreeNode.cs b/ILSpy/TreeNodes/FieldTreeNode.cs index ecd28f28f..90942a7a9 100644 --- a/ILSpy/TreeNodes/FieldTreeNode.cs +++ b/ILSpy/TreeNodes/FieldTreeNode.cs @@ -112,6 +112,12 @@ namespace ICSharpCode.ILSpy.TreeNodes { language.DecompileField(field, output, options); } + + public override bool IsPublicAPI { + get { + return field.IsPublic || field.IsFamily || field.IsFamilyOrAssembly; + } + } MemberReference IMemberTreeNode.Member { diff --git a/ILSpy/TreeNodes/ILSpyTreeNode.cs b/ILSpy/TreeNodes/ILSpyTreeNode.cs index 8b4835fe5..f43e6fb5e 100644 --- a/ILSpy/TreeNodes/ILSpyTreeNode.cs +++ b/ILSpy/TreeNodes/ILSpyTreeNode.cs @@ -166,5 +166,18 @@ namespace ICSharpCode.ILSpy.TreeNodes ApplyFilterToChild(node); } } + + public virtual bool IsPublicAPI { + get { return true; } + } + + public override System.Windows.Media.Brush Foreground { + get { + if (IsPublicAPI) + return base.Foreground; + else + return System.Windows.SystemColors.GrayTextBrush; + } + } } } \ No newline at end of file diff --git a/ILSpy/TreeNodes/MethodTreeNode.cs b/ILSpy/TreeNodes/MethodTreeNode.cs index 6435cbfb7..d16cce924 100644 --- a/ILSpy/TreeNodes/MethodTreeNode.cs +++ b/ILSpy/TreeNodes/MethodTreeNode.cs @@ -137,6 +137,12 @@ namespace ICSharpCode.ILSpy.TreeNodes return FilterResult.Hidden; } + public override bool IsPublicAPI { + get { + return method.IsPublic || method.IsFamily || method.IsFamilyOrAssembly; + } + } + MemberReference IMemberTreeNode.Member { get { return method; } diff --git a/ILSpy/TreeNodes/PropertyTreeNode.cs b/ILSpy/TreeNodes/PropertyTreeNode.cs index 2ead5dc71..4872b93e8 100644 --- a/ILSpy/TreeNodes/PropertyTreeNode.cs +++ b/ILSpy/TreeNodes/PropertyTreeNode.cs @@ -148,6 +148,19 @@ namespace ICSharpCode.ILSpy.TreeNodes { language.DecompileProperty(property, output, options); } + + public override bool IsPublicAPI { + get { + switch (GetAttributesOfMostAccessibleMethod(property) & MethodAttributes.MemberAccessMask) { + case MethodAttributes.Public: + case MethodAttributes.Family: + case MethodAttributes.FamORAssem: + return true; + default: + return false; + } + } + } MemberReference IMemberTreeNode.Member { diff --git a/ILSpy/TreeNodes/TypeTreeNode.cs b/ILSpy/TreeNodes/TypeTreeNode.cs index 15bb054d8..cd25c916d 100644 --- a/ILSpy/TreeNodes/TypeTreeNode.cs +++ b/ILSpy/TreeNodes/TypeTreeNode.cs @@ -62,7 +62,7 @@ namespace ICSharpCode.ILSpy.TreeNodes get { return HighlightSearchMatch(this.Language.FormatTypeName(type)); } } - public bool IsPublicAPI { + public override bool IsPublicAPI { get { switch (type.Attributes & TypeAttributes.VisibilityMask) { case TypeAttributes.Public: diff --git a/ILSpy/XmlDoc/XmlDocLoader.cs b/ILSpy/XmlDoc/XmlDocLoader.cs index 3cc8384bb..4b91ad84d 100644 --- a/ILSpy/XmlDoc/XmlDocLoader.cs +++ b/ILSpy/XmlDoc/XmlDocLoader.cs @@ -99,6 +99,9 @@ namespace ICSharpCode.ILSpy.XmlDoc static string LookupLocalizedXmlDoc(string fileName) { + if (string.IsNullOrEmpty(fileName)) + return null; + string xmlFileName = Path.ChangeExtension(fileName, ".xml"); string currentCulture = System.Threading.Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName; string localizedXmlDocFile = GetLocalizedName(xmlFileName, currentCulture); diff --git a/SharpTreeView/SharpTreeNode.cs b/SharpTreeView/SharpTreeNode.cs index ae0a0e646..65561ea93 100644 --- a/SharpTreeView/SharpTreeNode.cs +++ b/SharpTreeView/SharpTreeNode.cs @@ -12,6 +12,7 @@ using System.Collections.ObjectModel; using System.Windows.Controls; using System.Collections.Specialized; using System.Windows.Input; +using System.Windows.Media; namespace ICSharpCode.TreeView { @@ -101,6 +102,10 @@ namespace ICSharpCode.TreeView get { return null; } } + public virtual Brush Foreground { + get { return SystemColors.WindowTextBrush; } + } + public virtual object Icon { get { return null; } diff --git a/SharpTreeView/Themes/Generic.xaml b/SharpTreeView/Themes/Generic.xaml index a10e19c75..00b807af0 100644 --- a/SharpTreeView/Themes/Generic.xaml +++ b/SharpTreeView/Themes/Generic.xaml @@ -181,6 +181,7 @@ @@ -210,7 +211,8 @@ --> -