Browse Source

Don't show PDB context menu entries on bundle nodes.

pull/2214/head
Daniel Grunwald 5 years ago
parent
commit
82bb805657
  1. 2
      ILSpy/Commands/GeneratePdbContextMenuEntry.cs
  2. 2
      ILSpy/Commands/Pdb2XmlCommand.cs
  3. 3
      ILSpy/Commands/SaveCodeContextMenuEntry.cs
  4. 3
      ILSpy/Commands/SelectPdbContextMenuEntry.cs
  5. 16
      ILSpy/LoadedAssembly.cs
  6. 4
      ILSpy/TreeNodes/AssemblyTreeNode.cs

2
ILSpy/Commands/GeneratePdbContextMenuEntry.cs

@ -51,7 +51,7 @@ namespace ICSharpCode.ILSpy
{ {
return context.SelectedTreeNodes?.Length == 1 return context.SelectedTreeNodes?.Length == 1
&& context.SelectedTreeNodes?.FirstOrDefault() is AssemblyTreeNode tn && context.SelectedTreeNodes?.FirstOrDefault() is AssemblyTreeNode tn
&& !tn.LoadedAssembly.HasLoadError; && tn.LoadedAssembly.IsLoadedAsValidAssembly;
} }
internal static void GeneratePdbForAssembly(LoadedAssembly assembly) internal static void GeneratePdbForAssembly(LoadedAssembly assembly)

2
ILSpy/Commands/Pdb2XmlCommand.cs

@ -83,7 +83,7 @@ namespace ICSharpCode.ILSpy
{ {
var selectedNodes = context.SelectedTreeNodes; var selectedNodes = context.SelectedTreeNodes;
return selectedNodes?.Any() == true return selectedNodes?.Any() == true
&& selectedNodes.All(n => n is AssemblyTreeNode asm && !asm.LoadedAssembly.HasLoadError); && selectedNodes.All(n => n is AssemblyTreeNode asm && asm.LoadedAssembly.IsLoadedAsValidAssembly);
} }
} }

3
ILSpy/Commands/SaveCodeContextMenuEntry.cs

@ -21,7 +21,6 @@ using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Windows; using System.Windows;
using System.Windows.Input;
using ICSharpCode.ILSpy.Properties; using ICSharpCode.ILSpy.Properties;
using ICSharpCode.ILSpy.TreeNodes; using ICSharpCode.ILSpy.TreeNodes;
@ -75,7 +74,7 @@ namespace ICSharpCode.ILSpy.TextView
{ {
var assemblies = selectedNodes.OfType<AssemblyTreeNode>() var assemblies = selectedNodes.OfType<AssemblyTreeNode>()
.Select(n => n.LoadedAssembly) .Select(n => n.LoadedAssembly)
.Where(a => !a.HasLoadError).ToArray(); .Where(a => a.IsLoadedAsValidAssembly).ToArray();
SolutionWriter.CreateSolution(textView, selectedPath, currentLanguage, assemblies); SolutionWriter.CreateSolution(textView, selectedPath, currentLanguage, assemblies);
} }
return; return;

3
ILSpy/Commands/SelectPdbContextMenuEntry.cs

@ -56,7 +56,8 @@ namespace ICSharpCode.ILSpy
public bool IsVisible(TextViewContext context) public bool IsVisible(TextViewContext context)
{ {
return context.SelectedTreeNodes?.Length == 1 return context.SelectedTreeNodes?.Length == 1
&& context.SelectedTreeNodes?.FirstOrDefault() is AssemblyTreeNode; && context.SelectedTreeNodes?.FirstOrDefault() is AssemblyTreeNode asm
&& asm.LoadedAssembly.IsLoadedAsValidAssembly;
} }
} }
} }

16
ILSpy/LoadedAssembly.cs

@ -234,8 +234,24 @@ namespace ICSharpCode.ILSpy
} }
} }
/// <summary>
/// Gets whether loading finished for this file (either successfully or unsuccessfully).
/// </summary>
public bool IsLoaded => loadingTask.IsCompleted; public bool IsLoaded => loadingTask.IsCompleted;
/// <summary>
/// Gets whether this file was loaded successfully as an assembly (not as a bundle).
/// </summary>
public bool IsLoadedAsValidAssembly {
get {
return loadingTask.Status == TaskStatus.RanToCompletion && loadingTask.Result.PEFile != null;
}
}
/// <summary>
/// Gets whether loading failed (file does not exist, unknown file format).
/// Returns false for valid assemblies and valid bundles.
/// </summary>
public bool HasLoadError => loadingTask.IsFaulted; public bool HasLoadError => loadingTask.IsFaulted;
public bool IsAutoLoaded { get; set; } public bool IsAutoLoaded { get; set; }

4
ILSpy/TreeNodes/AssemblyTreeNode.cs

@ -338,6 +338,8 @@ namespace ICSharpCode.ILSpy.TreeNodes
public override bool Save(TabPageModel tabPage) public override bool Save(TabPageModel tabPage)
{ {
if (!LoadedAssembly.IsLoadedAsValidAssembly)
return false;
Language language = this.Language; Language language = this.Language;
if (string.IsNullOrEmpty(language.ProjectFileExtension)) if (string.IsNullOrEmpty(language.ProjectFileExtension))
return false; return false;
@ -445,7 +447,7 @@ namespace ICSharpCode.ILSpy.TreeNodes
{ {
if (context.SelectedTreeNodes == null) if (context.SelectedTreeNodes == null)
return false; return false;
return context.SelectedTreeNodes.All(n => n is AssemblyTreeNode); return context.SelectedTreeNodes.All(n => n is AssemblyTreeNode asm && asm.LoadedAssembly.IsLoadedAsValidAssembly);
} }
public bool IsEnabled(TextViewContext context) public bool IsEnabled(TextViewContext context)

Loading…
Cancel
Save