diff --git a/src/DynamoCoreWpf/Properties/Resources.Designer.cs b/src/DynamoCoreWpf/Properties/Resources.Designer.cs
index 0aca110c3d5..1f7a0df772e 100644
--- a/src/DynamoCoreWpf/Properties/Resources.Designer.cs
+++ b/src/DynamoCoreWpf/Properties/Resources.Designer.cs
@@ -1495,6 +1495,24 @@ public static string DynamoViewDebugMenuDumpNodeHelpData {
}
}
+ ///
+ /// Looks up a localized string similar to _Dump Node Icons.
+ ///
+ public static string DynamoViewDebugMenuDumpNodeIcons {
+ get {
+ return ResourceManager.GetString("DynamoViewDebugMenuDumpNodeIcons", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to NodeIconDataIsDumped.
+ ///
+ public static string NodeIconDataIsDumped {
+ get {
+ return ResourceManager.GetString("NodeIconDataIsDumped", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to _Force Re-execute.
///
diff --git a/src/DynamoCoreWpf/Properties/Resources.en-US.resx b/src/DynamoCoreWpf/Properties/Resources.en-US.resx
index ad8cce97447..37b280d6f7c 100644
--- a/src/DynamoCoreWpf/Properties/Resources.en-US.resx
+++ b/src/DynamoCoreWpf/Properties/Resources.en-US.resx
@@ -4162,4 +4162,12 @@ To make this file into a new template, save it to a different folder, then move
Enable the new floating menu for node suggestions for a more streamlined workflow. Turn off to return to the traditional pop-up dialog.
+
+ _Dump Node Icon Data
+ Debug menu | Dump all node icon data
+
+
+ Node Icon Data is dumped to \"{0}\".
+ Debug menu | Dump all node icons
+
\ No newline at end of file
diff --git a/src/DynamoCoreWpf/Properties/Resources.resx b/src/DynamoCoreWpf/Properties/Resources.resx
index dd537f95850..7e29a7fbe80 100644
--- a/src/DynamoCoreWpf/Properties/Resources.resx
+++ b/src/DynamoCoreWpf/Properties/Resources.resx
@@ -4146,4 +4146,12 @@ To make this file into a new template, save it to a different folder, then move
This group is frozen. Click to unfreeze.
+
+ _Dump Node Icon Data
+ Debug menu | Dump all node icon data
+
+
+ Node Icon Data is dumped to \"{0}\".
+ Debug menu | Dump all node icons
+
diff --git a/src/DynamoCoreWpf/PublicAPI.Unshipped.txt b/src/DynamoCoreWpf/PublicAPI.Unshipped.txt
index 86ca4813204..0445e797f91 100644
--- a/src/DynamoCoreWpf/PublicAPI.Unshipped.txt
+++ b/src/DynamoCoreWpf/PublicAPI.Unshipped.txt
@@ -2023,6 +2023,8 @@ Dynamo.ViewModels.DynamoViewModel.DumpLibraryToXmlCommand.get -> Dynamo.UI.Comma
Dynamo.ViewModels.DynamoViewModel.DumpLibraryToXmlCommand.set -> void
Dynamo.ViewModels.DynamoViewModel.DumpNodeHelpDataCommand.get -> Dynamo.UI.Commands.DelegateCommand
Dynamo.ViewModels.DynamoViewModel.DumpNodeHelpDataCommand.set -> void
+Dynamo.ViewModels.DynamoViewModel.DumpNodeIconsCommand.get -> Dynamo.UI.Commands.DelegateCommand
+Dynamo.ViewModels.DynamoViewModel.DumpNodeIconsCommand.set -> void
Dynamo.ViewModels.DynamoViewModel.DynamoViewModel(Dynamo.ViewModels.DynamoViewModel.StartConfiguration startConfiguration) -> void
Dynamo.ViewModels.DynamoViewModel.EditName.get -> string
Dynamo.ViewModels.DynamoViewModel.EditName.set -> void
@@ -4674,6 +4676,7 @@ static Dynamo.Wpf.Properties.Resources.DynamoViewDebugMenuDebugModes.get -> stri
static Dynamo.Wpf.Properties.Resources.DynamoViewDebugMenuDumpData.get -> string
static Dynamo.Wpf.Properties.Resources.DynamoViewDebugMenuDumpLibrary.get -> string
static Dynamo.Wpf.Properties.Resources.DynamoViewDebugMenuDumpNodeHelpData.get -> string
+static Dynamo.Wpf.Properties.Resources.DynamoViewDebugMenuDumpNodeIcons.get -> string
static Dynamo.Wpf.Properties.Resources.DynamoViewDebugMenuForceReExecute.get -> string
static Dynamo.Wpf.Properties.Resources.DynamoViewDebugMenuForceUpdate.get -> string
static Dynamo.Wpf.Properties.Resources.DynamoViewDebugMenuRunMutationTest.get -> string
@@ -5081,6 +5084,7 @@ static Dynamo.Wpf.Properties.Resources.NodeContextMenuPreview.get -> string
static Dynamo.Wpf.Properties.Resources.NodeContextMenuRenameNode.get -> string
static Dynamo.Wpf.Properties.Resources.NodeContextMenuShowLabels.get -> string
static Dynamo.Wpf.Properties.Resources.NodeHelpIsDumped.get -> string
+static Dynamo.Wpf.Properties.Resources.NodeIconDataIsDumped.get -> string
static Dynamo.Wpf.Properties.Resources.NodeHelpWindowNodeCategory.get -> string
static Dynamo.Wpf.Properties.Resources.NodeHelpWindowNodeDescription.get -> string
static Dynamo.Wpf.Properties.Resources.NodeHelpWindowNodeInput.get -> string
diff --git a/src/DynamoCoreWpf/ViewModels/Core/DynamoViewModel.cs b/src/DynamoCoreWpf/ViewModels/Core/DynamoViewModel.cs
index edebded999d..cad6851c739 100644
--- a/src/DynamoCoreWpf/ViewModels/Core/DynamoViewModel.cs
+++ b/src/DynamoCoreWpf/ViewModels/Core/DynamoViewModel.cs
@@ -4302,6 +4302,45 @@ internal void DumpNodeHelpData(object parameter)
File.WriteAllText(fullFileName, stat.ToString());
}
+ internal void DumpNodeIconData(object parameter)
+ {
+ //set to manual run mode to prevent execution of the nodes as wel place them
+ this.HomeSpace.RunSettings.RunType = RunType.Manual;
+
+ string nodesWithoutIconsFileName = String.Format("NodesWithoutIcons_{0}.csv", DateTime.Now.ToString("yyyyMMddHmmss"));
+ string nodesWithoutIconsFullFileName = Path.Combine(Model.PathManager.LogDirectory, nodesWithoutIconsFileName);
+
+ //creating a copy to avoid collection changed exceptions
+ var entriesCopy = Model.SearchModel.Entries.Where(n => n.IsVisibleInSearch).ToList();
+
+ StreamWriter sw = File.CreateText(nodesWithoutIconsFullFileName);
+
+ sw.WriteLine("NODE ASSEMBLY,NODE NAME");
+
+ foreach (var nse in entriesCopy)
+ {
+ var newNode = nse.CreateNode();
+ this.CurrentSpace.AddAndRegisterNode(newNode);
+ var placedNode = this.CurrentSpaceViewModel.Nodes.Last();
+ var imageSource = placedNode.ImageSource;
+
+ //if image source is null, then no icon is found
+ if (imageSource is null)
+ {
+ sw.WriteLine($"{nse.Assembly},{nse.Name}");
+ }
+ else
+ {
+ this.Model.ExecuteCommand(new DynamoModel.DeleteModelCommand(placedNode.Id));
+ }
+ }
+
+ sw.Close();
+
+ //alert user to new file location
+ MainGuideManager.CreateRealTimeInfoWindow(string.Format(Resources.NodeIconDataIsDumped, nodesWithoutIconsFullFileName), true);
+ }
+
private FileInfo GetMatchingDocFromDirectory(string nodeName, string hash, List suffix, DirectoryInfo dir)
{
FileInfo matchingFile = null;
@@ -4325,6 +4364,10 @@ internal bool CanDumpNodeHelpData(object obj)
{
return true;
}
+ internal bool CanDumpNodeIconData(object obj)
+ {
+ return true;
+ }
#region Shutdown related methods
diff --git a/src/DynamoCoreWpf/ViewModels/Core/DynamoViewModelDelegateCommands.cs b/src/DynamoCoreWpf/ViewModels/Core/DynamoViewModelDelegateCommands.cs
index 9469d13eb63..ae14486c3dc 100644
--- a/src/DynamoCoreWpf/ViewModels/Core/DynamoViewModelDelegateCommands.cs
+++ b/src/DynamoCoreWpf/ViewModels/Core/DynamoViewModelDelegateCommands.cs
@@ -93,6 +93,7 @@ private void InitializeDelegateCommands()
ShowAboutWindowCommand = new DelegateCommand(ShowAboutWindow, CanShowAboutWindow);
SetNumberFormatCommand = new DelegateCommand(SetNumberFormat, CanSetNumberFormat);
DumpNodeHelpDataCommand = new DelegateCommand(DumpNodeHelpData, CanDumpNodeHelpData);
+ DumpNodeIconsCommand = new DelegateCommand(DumpNodeIconData, CanDumpNodeIconData);
DumpLibraryToXmlCommand = new DelegateCommand(model.DumpLibraryToXml, model.CanDumpLibraryToXml);
ShowNewPresetsDialogCommand = new DelegateCommand(ShowNewPresetStateDialogAndMakePreset, CanShowNewPresetStateDialog);
NodeFromSelectionCommand = new DelegateCommand(CreateNodeFromSelection, CanCreateNodeFromSelection);
@@ -182,6 +183,7 @@ private void InitializeDelegateCommands()
public DelegateCommand CheckForLatestRenderCommand { get; set; }
public DelegateCommand DumpLibraryToXmlCommand { get; set; }
public DelegateCommand DumpNodeHelpDataCommand { get; set; }
+ public DelegateCommand DumpNodeIconsCommand { get; set; }
public DelegateCommand ShowNewPresetsDialogCommand { get; set; }
public DelegateCommand NodeFromSelectionCommand { get; set; }
public DelegateCommand OpenDocumentationLinkCommand { get; set; }
diff --git a/src/DynamoCoreWpf/Views/Core/DynamoView.xaml b/src/DynamoCoreWpf/Views/Core/DynamoView.xaml
index cbf54ad68ad..4585fc266a6 100644
--- a/src/DynamoCoreWpf/Views/Core/DynamoView.xaml
+++ b/src/DynamoCoreWpf/Views/Core/DynamoView.xaml
@@ -687,6 +687,9 @@
+