From 65e30ec0f6203a56b4ab9461c9e9c7910612671c Mon Sep 17 00:00:00 2001 From: Yves Goergen Date: Tue, 13 May 2014 23:16:28 +0200 Subject: [PATCH] Added option to display metadata tokens in the tree --- ILSpy/Options/DisplaySettings.cs | 18 +++++++++++++++++- ILSpy/Options/DisplaySettingsPanel.xaml | 5 ++++- ILSpy/Options/DisplaySettingsPanel.xaml.cs | 2 ++ ILSpy/TreeNodes/AssemblyReferenceTreeNode.cs | 9 ++++++++- ILSpy/TreeNodes/BaseTypesEntryNode.cs | 9 ++++++++- ILSpy/TreeNodes/DerivedTypesEntryNode.cs | 9 ++++++++- ILSpy/TreeNodes/EventTreeNode.cs | 9 ++++++++- ILSpy/TreeNodes/FieldTreeNode.cs | 11 ++++++++++- ILSpy/TreeNodes/MethodTreeNode.cs | 5 +++++ ILSpy/TreeNodes/ModuleReferenceTreeNode.cs | 9 ++++++++- ILSpy/TreeNodes/PropertyTreeNode.cs | 9 ++++++++- ILSpy/TreeNodes/TypeTreeNode.cs | 10 +++++++++- 12 files changed, 95 insertions(+), 10 deletions(-) diff --git a/ILSpy/Options/DisplaySettings.cs b/ILSpy/Options/DisplaySettings.cs index ab2b27157..447edeb9e 100644 --- a/ILSpy/Options/DisplaySettings.cs +++ b/ILSpy/Options/DisplaySettings.cs @@ -82,12 +82,28 @@ namespace ICSharpCode.ILSpy.Options } } } - + + bool showMetadataTokens; + + public bool ShowMetadataTokens + { + get { return showMetadataTokens; } + set + { + if (showMetadataTokens != value) + { + showMetadataTokens = value; + OnPropertyChanged("ShowMetadataTokens"); + } + } + } + public void CopyValues(DisplaySettings s) { this.SelectedFont = s.selectedFont; this.SelectedFontSize = s.selectedFontSize; this.ShowLineNumbers = s.showLineNumbers; + this.ShowMetadataTokens = s.showMetadataTokens; } } } diff --git a/ILSpy/Options/DisplaySettingsPanel.xaml b/ILSpy/Options/DisplaySettingsPanel.xaml index 6c881c355..aa9c329d0 100644 --- a/ILSpy/Options/DisplaySettingsPanel.xaml +++ b/ILSpy/Options/DisplaySettingsPanel.xaml @@ -58,7 +58,10 @@ - Show line numbers + + Show line numbers + Show metadata tokens + \ No newline at end of file diff --git a/ILSpy/Options/DisplaySettingsPanel.xaml.cs b/ILSpy/Options/DisplaySettingsPanel.xaml.cs index 20826b88f..8cdfce312 100644 --- a/ILSpy/Options/DisplaySettingsPanel.xaml.cs +++ b/ILSpy/Options/DisplaySettingsPanel.xaml.cs @@ -100,6 +100,7 @@ namespace ICSharpCode.ILSpy.Options s.SelectedFont = new FontFamily((string)e.Attribute("Font") ?? "Consolas"); s.SelectedFontSize = (double?)e.Attribute("FontSize") ?? 10.0 * 4 / 3; s.ShowLineNumbers = (bool?)e.Attribute("ShowLineNumbers") ?? false; + s.ShowMetadataTokens = (bool?) e.Attribute("ShowMetadataTokens") ?? false; return s; } @@ -114,6 +115,7 @@ namespace ICSharpCode.ILSpy.Options section.SetAttributeValue("Font", s.SelectedFont.Source); section.SetAttributeValue("FontSize", s.SelectedFontSize); section.SetAttributeValue("ShowLineNumbers", s.ShowLineNumbers); + section.SetAttributeValue("ShowMetadataTokens", s.ShowMetadataTokens); XElement existingElement = root.Element("DisplaySettings"); if (existingElement != null) diff --git a/ILSpy/TreeNodes/AssemblyReferenceTreeNode.cs b/ILSpy/TreeNodes/AssemblyReferenceTreeNode.cs index 860ce9951..60a8a2359 100644 --- a/ILSpy/TreeNodes/AssemblyReferenceTreeNode.cs +++ b/ILSpy/TreeNodes/AssemblyReferenceTreeNode.cs @@ -18,6 +18,7 @@ using System; using ICSharpCode.Decompiler; +using ICSharpCode.ILSpy.Options; using Mono.Cecil; namespace ICSharpCode.ILSpy.TreeNodes @@ -42,7 +43,13 @@ namespace ICSharpCode.ILSpy.TreeNodes } public override object Text { - get { return r.Name; } + get + { + return r.Name + + (DisplaySettingsPanel.CurrentDisplaySettings.ShowMetadataTokens ? + " @" + r.MetadataToken.ToInt32().ToString("x8") : + ""); + } } public override object Icon { diff --git a/ILSpy/TreeNodes/BaseTypesEntryNode.cs b/ILSpy/TreeNodes/BaseTypesEntryNode.cs index c441a652c..a96c0caae 100644 --- a/ILSpy/TreeNodes/BaseTypesEntryNode.cs +++ b/ILSpy/TreeNodes/BaseTypesEntryNode.cs @@ -19,6 +19,7 @@ using System; using System.Linq; using ICSharpCode.Decompiler; +using ICSharpCode.ILSpy.Options; using ICSharpCode.TreeView; using Mono.Cecil; @@ -47,7 +48,13 @@ namespace ICSharpCode.ILSpy.TreeNodes public override object Text { - get { return this.Language.TypeToString(tr, true); } + get + { + return this.Language.TypeToString(tr, true) + + (DisplaySettingsPanel.CurrentDisplaySettings.ShowMetadataTokens ? + " @" + tr.MetadataToken.ToInt32().ToString("x8") : + ""); + } } public override object Icon diff --git a/ILSpy/TreeNodes/DerivedTypesEntryNode.cs b/ILSpy/TreeNodes/DerivedTypesEntryNode.cs index 8b42ee234..734f949c4 100644 --- a/ILSpy/TreeNodes/DerivedTypesEntryNode.cs +++ b/ILSpy/TreeNodes/DerivedTypesEntryNode.cs @@ -20,6 +20,7 @@ using System; using System.Collections.Generic; using System.Threading; using ICSharpCode.Decompiler; +using ICSharpCode.ILSpy.Options; using Mono.Cecil; namespace ICSharpCode.ILSpy.TreeNodes @@ -45,7 +46,13 @@ namespace ICSharpCode.ILSpy.TreeNodes public override object Text { - get { return this.Language.TypeToString(type, true); } + get + { + return this.Language.TypeToString(type, true) + + (DisplaySettingsPanel.CurrentDisplaySettings.ShowMetadataTokens ? + " @" + type.MetadataToken.ToInt32().ToString("x8") : + ""); + } } public override object Icon diff --git a/ILSpy/TreeNodes/EventTreeNode.cs b/ILSpy/TreeNodes/EventTreeNode.cs index e6517d639..9621b0816 100644 --- a/ILSpy/TreeNodes/EventTreeNode.cs +++ b/ILSpy/TreeNodes/EventTreeNode.cs @@ -19,6 +19,7 @@ using System; using System.Windows.Media; using ICSharpCode.Decompiler; +using ICSharpCode.ILSpy.Options; using Mono.Cecil; namespace ICSharpCode.ILSpy.TreeNodes @@ -55,7 +56,13 @@ namespace ICSharpCode.ILSpy.TreeNodes public override object Text { - get { return GetText(ev, this.Language); } + get + { + return GetText(ev, this.Language) + + (DisplaySettingsPanel.CurrentDisplaySettings.ShowMetadataTokens ? + " @" + ev.MetadataToken.ToInt32().ToString("x8") : + ""); + } } public static object GetText(EventDefinition eventDef, Language language) diff --git a/ILSpy/TreeNodes/FieldTreeNode.cs b/ILSpy/TreeNodes/FieldTreeNode.cs index a24fed6e3..30ab2ad0b 100644 --- a/ILSpy/TreeNodes/FieldTreeNode.cs +++ b/ILSpy/TreeNodes/FieldTreeNode.cs @@ -19,6 +19,7 @@ using System; using System.Windows.Media; using ICSharpCode.Decompiler; +using ICSharpCode.ILSpy.Options; using Mono.Cecil; namespace ICSharpCode.ILSpy.TreeNodes @@ -44,7 +45,15 @@ namespace ICSharpCode.ILSpy.TreeNodes public override object Text { - get { return HighlightSearchMatch(field.Name, " : " + this.Language.TypeToString(field.FieldType, false, field)); } + get + { + return HighlightSearchMatch( + field.Name, + " : " + this.Language.TypeToString(field.FieldType, false, field) + + (DisplaySettingsPanel.CurrentDisplaySettings.ShowMetadataTokens ? + " @" + field.MetadataToken.ToInt32().ToString("x8") : + "")); + } } public override object Icon diff --git a/ILSpy/TreeNodes/MethodTreeNode.cs b/ILSpy/TreeNodes/MethodTreeNode.cs index a77ebc4ba..1a012ffa5 100644 --- a/ILSpy/TreeNodes/MethodTreeNode.cs +++ b/ILSpy/TreeNodes/MethodTreeNode.cs @@ -21,6 +21,7 @@ using System.Text; using System.Windows.Media; using ICSharpCode.Decompiler; +using ICSharpCode.ILSpy.Options; using Mono.Cecil; namespace ICSharpCode.ILSpy.TreeNodes @@ -68,6 +69,10 @@ namespace ICSharpCode.ILSpy.TreeNodes } b.Append(") : "); b.Append(language.TypeToString(method.ReturnType, false, method.MethodReturnType)); + if (DisplaySettingsPanel.CurrentDisplaySettings.ShowMetadataTokens) + { + b.Append(" @" + method.MetadataToken.ToInt32().ToString("x8")); + } return HighlightSearchMatch(method.Name, b.ToString()); } diff --git a/ILSpy/TreeNodes/ModuleReferenceTreeNode.cs b/ILSpy/TreeNodes/ModuleReferenceTreeNode.cs index 7df81900f..d2888980b 100644 --- a/ILSpy/TreeNodes/ModuleReferenceTreeNode.cs +++ b/ILSpy/TreeNodes/ModuleReferenceTreeNode.cs @@ -18,6 +18,7 @@ using System; using ICSharpCode.Decompiler; +using ICSharpCode.ILSpy.Options; using Mono.Cecil; namespace ICSharpCode.ILSpy.TreeNodes @@ -37,7 +38,13 @@ namespace ICSharpCode.ILSpy.TreeNodes } public override object Text { - get { return r.Name; } + get + { + return r.Name + + (DisplaySettingsPanel.CurrentDisplaySettings.ShowMetadataTokens ? + " @" + r.MetadataToken.ToInt32().ToString("x8") : + ""); + } } public override object Icon { diff --git a/ILSpy/TreeNodes/PropertyTreeNode.cs b/ILSpy/TreeNodes/PropertyTreeNode.cs index c1df925d4..166a337b0 100644 --- a/ILSpy/TreeNodes/PropertyTreeNode.cs +++ b/ILSpy/TreeNodes/PropertyTreeNode.cs @@ -19,6 +19,7 @@ using System; using System.Windows.Media; using ICSharpCode.Decompiler; +using ICSharpCode.ILSpy.Options; using Mono.Cecil; namespace ICSharpCode.ILSpy.TreeNodes @@ -57,7 +58,13 @@ namespace ICSharpCode.ILSpy.TreeNodes public override object Text { - get { return GetText(property, Language, isIndexer); } + get + { + return GetText(property, Language, isIndexer) + + (DisplaySettingsPanel.CurrentDisplaySettings.ShowMetadataTokens ? + " @" + property.MetadataToken.ToInt32().ToString("x8") : + ""); + } } public static object GetText(PropertyDefinition property, Language language, bool? isIndexer = null) diff --git a/ILSpy/TreeNodes/TypeTreeNode.cs b/ILSpy/TreeNodes/TypeTreeNode.cs index cd25c916d..47e2604f0 100644 --- a/ILSpy/TreeNodes/TypeTreeNode.cs +++ b/ILSpy/TreeNodes/TypeTreeNode.cs @@ -22,6 +22,7 @@ using System.Linq; using System.Windows.Media; using ICSharpCode.Decompiler; +using ICSharpCode.ILSpy.Options; using Mono.Cecil; namespace ICSharpCode.ILSpy.TreeNodes @@ -59,7 +60,14 @@ namespace ICSharpCode.ILSpy.TreeNodes } public override object Text { - get { return HighlightSearchMatch(this.Language.FormatTypeName(type)); } + get + { + return HighlightSearchMatch( + this.Language.FormatTypeName(type), + DisplaySettingsPanel.CurrentDisplaySettings.ShowMetadataTokens ? + " @" + type.MetadataToken.ToInt32().ToString("x8") : + ""); + } } public override bool IsPublicAPI {