|
|
|
@ -24,6 +24,7 @@ using System.Linq;
@@ -24,6 +24,7 @@ using System.Linq;
|
|
|
|
|
using System.Threading; |
|
|
|
|
using System.Threading.Tasks; |
|
|
|
|
using System.Windows; |
|
|
|
|
using System.Windows.Controls; |
|
|
|
|
|
|
|
|
|
using ICSharpCode.Decompiler; |
|
|
|
|
using ICSharpCode.TreeView; |
|
|
|
@ -37,6 +38,7 @@ namespace ICSharpCode.ILSpy.TreeNodes
@@ -37,6 +38,7 @@ namespace ICSharpCode.ILSpy.TreeNodes
|
|
|
|
|
/// </summary>
|
|
|
|
|
sealed class AssemblyTreeNode : ILSpyTreeNode<ILSpyTreeNodeBase> |
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
readonly AssemblyList assemblyList; |
|
|
|
|
readonly string fileName; |
|
|
|
|
string shortName; |
|
|
|
@ -44,6 +46,9 @@ namespace ICSharpCode.ILSpy.TreeNodes
@@ -44,6 +46,9 @@ namespace ICSharpCode.ILSpy.TreeNodes
|
|
|
|
|
readonly List<TypeTreeNode> classes = new List<TypeTreeNode>(); |
|
|
|
|
readonly Dictionary<string, NamespaceTreeNode> namespaces = new Dictionary<string, NamespaceTreeNode>(); |
|
|
|
|
|
|
|
|
|
// UI
|
|
|
|
|
ContextMenu menu; |
|
|
|
|
|
|
|
|
|
public AssemblyTreeNode(string fileName, AssemblyList assemblyList) |
|
|
|
|
{ |
|
|
|
|
if (fileName == null) |
|
|
|
@ -57,6 +62,8 @@ namespace ICSharpCode.ILSpy.TreeNodes
@@ -57,6 +62,8 @@ namespace ICSharpCode.ILSpy.TreeNodes
|
|
|
|
|
assemblyTask.ContinueWith(OnAssemblyLoaded, TaskScheduler.FromCurrentSynchronizationContext()); |
|
|
|
|
|
|
|
|
|
this.LazyLoading = true; |
|
|
|
|
|
|
|
|
|
CreateRemoveItemContextMenu(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public string FileName { |
|
|
|
@ -122,6 +129,20 @@ namespace ICSharpCode.ILSpy.TreeNodes
@@ -122,6 +129,20 @@ namespace ICSharpCode.ILSpy.TreeNodes
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void CreateRemoveItemContextMenu() |
|
|
|
|
{ |
|
|
|
|
var menu = GetContextMenu(); |
|
|
|
|
|
|
|
|
|
MenuItem item = new MenuItem() { |
|
|
|
|
Header = "Remove assembly", |
|
|
|
|
Icon = new Image() { Source = Images.Delete } |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
item.Click += delegate { Delete(); }; |
|
|
|
|
|
|
|
|
|
menu.Items.Add(item); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
sealed class MyAssemblyResolver : IAssemblyResolver |
|
|
|
|
{ |
|
|
|
|
readonly AssemblyTreeNode parent; |
|
|
|
@ -156,6 +177,14 @@ namespace ICSharpCode.ILSpy.TreeNodes
@@ -156,6 +177,14 @@ namespace ICSharpCode.ILSpy.TreeNodes
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public override ContextMenu GetContextMenu() |
|
|
|
|
{ |
|
|
|
|
if (menu != null) |
|
|
|
|
return menu; |
|
|
|
|
|
|
|
|
|
return (menu = new ContextMenu()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
protected override void LoadChildren() |
|
|
|
|
{ |
|
|
|
|
try { |
|
|
|
|