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 @@ +