From da45f11c689d935a9ebc2c8700b84da3842027e7 Mon Sep 17 00:00:00 2001 From: Michael Kirschner <508936+mjkkirschner@users.noreply.github.com> Date: Wed, 16 Oct 2024 14:31:49 -0400 Subject: [PATCH 1/8] add new debug service core runtime nuspec with portable symbols (#15548) --- src/Config/CS_SDK.props | 8 ++++-- tools/NuGet/BuildPackages.bat | 13 +++++++++- ...rogramming.ServiceCoreRuntime-debug.nuspec | 25 +++++++++++++++++++ 3 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 tools/NuGet/template-service-core/DynamoVisualProgramming.ServiceCoreRuntime-debug.nuspec diff --git a/src/Config/CS_SDK.props b/src/Config/CS_SDK.props index 5ad2265ce79..9eb8d9a18f9 100644 --- a/src/Config/CS_SDK.props +++ b/src/Config/CS_SDK.props @@ -35,8 +35,12 @@ true false - - full + + + full + + + portable false diff --git a/tools/NuGet/BuildPackages.bat b/tools/NuGet/BuildPackages.bat index d6ba089a87a..775c93c2dcf 100644 --- a/tools/NuGet/BuildPackages.bat +++ b/tools/NuGet/BuildPackages.bat @@ -1,3 +1,5 @@ +:: PLEASE SOMEONE FIND THE TIME TO REPLACE THIS WITH ANOTHER SCRIPTING LANGUAGE :( + :: Argument %1: path to template folder :: Argument %2: path to dynamo build directory :: @@ -37,6 +39,9 @@ for /f %%f in ('cscript //Nologo ..\install\GetFileVersion.vbs %harvestPath%\Dyn setlocal DisableDelayedExpansion set version=%Major%.%Minor%.%Build%-beta%Revision% +for /f %%i in ('git rev-parse HEAD') do set COMMIT=%%i + +echo %COMMIT% :: Get target framework from build.xml for /f %%f in ('cscript //Nologo .\GetTargetFramework.vbs ..\..\src\build.xml') do ( setlocal EnableDelayedExpansion @@ -47,12 +52,18 @@ setlocal DisableDelayedExpansion :: Clean files generated from the previous run if exist *.nupkg ( del *.nupkg ) +echo %1|find ".nuspec" >nul +if errorlevel 1 (goto :packfolder) else (goto:packsingle_nuspec) + +:packsingle_nuspec +nuget pack %1 -basepath %harvestPath% -properties gitcommitid=%COMMIT%;Version=%version%;TargetFramework=%targetFramework% +:packfolder :: Pack .nupkg files based on each .nuspec in the "nuspec" folder for %%f in (%1\*.nuspec) do ( :: Check if nuspec file name containing "Symbols" echo %%f|find "Symbols" >nul :: When nuget pack symbols, set to release path where the symbol files live - if errorlevel 1 ( nuget pack %%f -basepath %harvestPath% -properties Version=%version%;TargetFramework=%targetFramework%) else (nuget pack %%f -basepath %releasePath% -properties Version=%version%;TargetFramework=%targetFramework%) + if errorlevel 1 ( nuget pack %%f -basepath %harvestPath% -properties gitcommitid=%COMMIT%;Version=%version%;TargetFramework=%targetFramework%) else (nuget pack %%f -basepath %releasePath% -properties Version=%version%;TargetFramework=%targetFramework%) if not exist %%~nf.%version%.nupkg ( exit /b 1 ) diff --git a/tools/NuGet/template-service-core/DynamoVisualProgramming.ServiceCoreRuntime-debug.nuspec b/tools/NuGet/template-service-core/DynamoVisualProgramming.ServiceCoreRuntime-debug.nuspec new file mode 100644 index 00000000000..d4611fd0ddf --- /dev/null +++ b/tools/NuGet/template-service-core/DynamoVisualProgramming.ServiceCoreRuntime-debug.nuspec @@ -0,0 +1,25 @@ + + + + DynamoVisualProgramming.ServiceCoreRuntime-debug + $Version$ + Autodesk + Autodesk + Apache-2.0 + https://github.com/DynamoDS/Dynamo + false + Assemblies required to start a DynamoModel and execute DesignScript code bundled along with their dependencies. + Built targeting linux. + Copyright Autodesk 2023 + + + + + + + + + + From 7ae94eaaabf0781db6e8a097a9bd06cd4b052fd8 Mon Sep 17 00:00:00 2001 From: Michael Kirschner <508936+mjkkirschner@users.noreply.github.com> Date: Wed, 16 Oct 2024 20:12:40 -0400 Subject: [PATCH 2/8] allow custom nodes to load in service mode (#15551) --- src/DynamoCore/Models/DynamoModel.cs | 13 +++++++++++-- src/DynamoCore/Utilities/LuceneSearchUtility.cs | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/DynamoCore/Models/DynamoModel.cs b/src/DynamoCore/Models/DynamoModel.cs index 1914c756cc0..c1b267cd378 100644 --- a/src/DynamoCore/Models/DynamoModel.cs +++ b/src/DynamoCore/Models/DynamoModel.cs @@ -1472,11 +1472,18 @@ private void InitializeCustomNodeManager() var customNodeSearchRegistry = new HashSet(); CustomNodeManager.InfoUpdated += info => { + //just bail in service mode. + if (IsServiceMode) + { + return; + } + if (customNodeSearchRegistry.Contains(info.FunctionId) || !info.IsVisibleInDynamoLibrary) return; - var elements = SearchModel.Entries.OfType(). + + var elements = SearchModel?.Entries.OfType(). Where(x => { // Search for common paths and get rid of empty paths. @@ -1494,6 +1501,7 @@ private void InitializeCustomNodeManager() } return; } + customNodeSearchRegistry.Add(info.FunctionId); var searchElement = new CustomNodeSearchElement(CustomNodeManager, info); @@ -1530,6 +1538,7 @@ private void InitializeCustomNodeManager() } }; }; + CustomNodeManager.DefinitionUpdated += UpdateCustomNodeDefinition; } @@ -2807,7 +2816,7 @@ internal void DumpLibraryToXml(object parameter) string fileName = String.Format("LibrarySnapshot_{0}.xml", DateTime.Now.ToString("yyyyMMddHmmss")); string fullFileName = Path.Combine(pathManager.LogDirectory, fileName); - SearchModel.DumpLibraryToXml(fullFileName, PathManager.DynamoCoreDirectory); + SearchModel?.DumpLibraryToXml(fullFileName, PathManager.DynamoCoreDirectory); Logger.Log(string.Format(Resources.LibraryIsDumped, fullFileName)); } diff --git a/src/DynamoCore/Utilities/LuceneSearchUtility.cs b/src/DynamoCore/Utilities/LuceneSearchUtility.cs index b4db72395df..953e76e4e91 100644 --- a/src/DynamoCore/Utilities/LuceneSearchUtility.cs +++ b/src/DynamoCore/Utilities/LuceneSearchUtility.cs @@ -390,7 +390,7 @@ internal string CreateSearchQuery(string[] fields, string SearchTerm, bool IsPac foreach (string s in searchTerm.Split(' ')) { //If is a ByEmptySpace search and the split words match with more than MaxNodeNamesRepeated nodes then the word is skipped (otherwise the results will be polluted with hundred of not related nodes) - int nodesFrequency = dynamoModel.SearchModel.Entries.Where(entry => entry.Name.ToLower().Contains(s) && !string.IsNullOrEmpty(s)).Count(); + int? nodesFrequency = dynamoModel.SearchModel?.Entries.Where(entry => entry.Name.ToLower().Contains(s) && !string.IsNullOrEmpty(s)).Count(); if (nodesFrequency > MaxNodeNamesRepeated) continue; if (string.IsNullOrEmpty(s)) continue; From da01d401422c23d2f669a2d60156cd64f7d4d1a4 Mon Sep 17 00:00:00 2001 From: Ashish Aggarwal Date: Thu, 17 Oct 2024 12:47:20 -0400 Subject: [PATCH 3/8] DYN-7535 Record python engine package information in graphs when using engines served from them (#15535) --- src/DynamoCore/Graph/Nodes/NodeModel.cs | 14 +++ .../Graph/Nodes/ZeroTouch/DSFunctionBase.cs | 21 +++- .../Graph/Workspaces/WorkspaceModel.cs | 2 +- src/DynamoPackages/PackageManagerExtension.cs | 46 ++++++++ src/Libraries/PythonNodeModels/PythonNode.cs | 20 +++- .../DynamoCoreTests/PackageDependencyTests.cs | 67 +++++++++++ .../PythonDependency.dyn | 106 ++++++++++++++++++ .../bin/DSPythonNet3Empty.dll | Bin 0 -> 14624 bytes .../extra/DSPythonNet3.dll | Bin 0 -> 40216 bytes .../extra/DSPythonNet3Extension.dll | Bin 0 -> 19232 bytes ...ythonNet3Extension_ExtensionDefinition.xml | 4 + .../extra/Python.Runtime.dll | Bin 0 -> 452376 bytes .../PythonEnginePackage/pkg.json | 23 ++++ 13 files changed, 300 insertions(+), 3 deletions(-) create mode 100644 test/core/packageDependencyTests/PythonDependency.dyn create mode 100644 test/core/packageDependencyTests/PythonEnginePackage/bin/DSPythonNet3Empty.dll create mode 100644 test/core/packageDependencyTests/PythonEnginePackage/extra/DSPythonNet3.dll create mode 100644 test/core/packageDependencyTests/PythonEnginePackage/extra/DSPythonNet3Extension.dll create mode 100644 test/core/packageDependencyTests/PythonEnginePackage/extra/DSPythonNet3Extension_ExtensionDefinition.xml create mode 100644 test/core/packageDependencyTests/PythonEnginePackage/extra/Python.Runtime.dll create mode 100644 test/core/packageDependencyTests/PythonEnginePackage/pkg.json diff --git a/src/DynamoCore/Graph/Nodes/NodeModel.cs b/src/DynamoCore/Graph/Nodes/NodeModel.cs index b7e1edaf75a..8131c81469a 100644 --- a/src/DynamoCore/Graph/Nodes/NodeModel.cs +++ b/src/DynamoCore/Graph/Nodes/NodeModel.cs @@ -1222,6 +1222,20 @@ protected NodeModel(IEnumerable inPorts, IEnumerable outPo RaisesModificationEvents = true; } + /// + /// The method returns the assembly name from which the node originated. + /// + /// Assembly Name + internal virtual AssemblyName GetNameOfAssemblyReferencedByNode() + { + AssemblyName assemblyName = null; + + var assembly = this.GetType().Assembly; + assemblyName = AssemblyName.GetAssemblyName(assembly.Location); + + return assemblyName; + } + /// /// Here we try to find the correct port names and tooltips. /// ideally we'd use the runtime information to correctly update or localize diff --git a/src/DynamoCore/Graph/Nodes/ZeroTouch/DSFunctionBase.cs b/src/DynamoCore/Graph/Nodes/ZeroTouch/DSFunctionBase.cs index a87667d2bce..26ccfea9c91 100644 --- a/src/DynamoCore/Graph/Nodes/ZeroTouch/DSFunctionBase.cs +++ b/src/DynamoCore/Graph/Nodes/ZeroTouch/DSFunctionBase.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Reflection; using System.Xml; using Dynamo.Engine; using Dynamo.Engine.CodeGeneration; @@ -76,6 +77,24 @@ public override IdentifierNode GetAstIdentifierForOutputIndex(int outputIndex) } } + /// + /// The method returns the assembly name from which the node originated. + /// Only if the node was added from a package + /// + /// Assembly Name + internal override AssemblyName GetNameOfAssemblyReferencedByNode() + { + AssemblyName assemblyName = null; + + var descriptor = this.Controller.Definition; + if (descriptor.IsPackageMember) + { + assemblyName = AssemblyName.GetAssemblyName(descriptor.Assembly); + } + + return assemblyName; + } + /// /// Copy command will call it to serialize this node to xml data. /// @@ -358,4 +377,4 @@ protected override AssociativeNode GetFunctionApplication(NodeModel model, List< return rhs; } } -} \ No newline at end of file +} diff --git a/src/DynamoCore/Graph/Workspaces/WorkspaceModel.cs b/src/DynamoCore/Graph/Workspaces/WorkspaceModel.cs index bc856d3685b..bb58ac0a0b9 100644 --- a/src/DynamoCore/Graph/Workspaces/WorkspaceModel.cs +++ b/src/DynamoCore/Graph/Workspaces/WorkspaceModel.cs @@ -2174,7 +2174,7 @@ internal PackageInfo GetNodePackage(NodeModel node) throw new Exception("There are multiple subscribers to Workspace.CollectingNodePackageDependencies. " + "Only PackageManagerExtension should subscribe to this event."); } - var assemblyName = GetNameOfAssemblyReferencedByNode(node); + var assemblyName = node.GetNameOfAssemblyReferencedByNode(); if (assemblyName != null) { return CollectingNodePackageDependencies(assemblyName); diff --git a/src/DynamoPackages/PackageManagerExtension.cs b/src/DynamoPackages/PackageManagerExtension.cs index 6a46bd1f1cf..bd2d02a89f0 100644 --- a/src/DynamoPackages/PackageManagerExtension.cs +++ b/src/DynamoPackages/PackageManagerExtension.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Collections.Specialized; using System.Linq; using System.Reflection; using Dynamo.Extensions; @@ -145,6 +146,7 @@ public void Startup(StartupParams startupParams) PackageLoader.PackagesLoaded += LoadPackagesHandler; PackageLoader.RequestLoadNodeLibrary += RequestLoadNodeLibraryHandler; PackageLoader.RequestLoadCustomNodeDirectory += RequestLoadCustomNodeDirectoryHandler; + PythonServices.PythonEngineManager.Instance.AvailableEngines.CollectionChanged += PythonEngineAdded; var dirBuilder = new PackageDirectoryBuilder( new MutatingFileSystem(), @@ -163,6 +165,49 @@ public void Startup(StartupParams startupParams) noNetworkMode = startupParams.NoNetworkMode; } + /// + /// When a new engine is added from a package, add its dependency to the respective package in the dictionary. + /// + /// + /// + internal void PythonEngineAdded(object sender, NotifyCollectionChangedEventArgs e) + { + if (e.Action == NotifyCollectionChangedAction.Add) + { + try + { + var assem = e.NewItems[0]?.GetType().Assembly; + if (assem == null) return; + + var assemLoc = assem.Location; + foreach (var pkg in PackageLoader.LocalPackages) + { + if (assemLoc.StartsWith(pkg.RootDirectory)) + { + if (NodePackageDictionary.ContainsKey(assem.FullName)) + { + var assemName = AssemblyName.GetAssemblyName(assem.Location); + OnMessageLogged(LogMessage.Info( + string.Format("{0} contains the python engine library {1}, which has already been loaded " + + "by another package. This may cause inconsistent results when determining which " + + "python engine the nodes are dependent on.", pkg.Name, assemName.Name) + )); + } + else + { + NodePackageDictionary[assem.FullName] = new List(); + } + NodePackageDictionary[assem.FullName].Add(new PackageInfo(pkg.Name, new Version(pkg.VersionName))); + } + } + } + catch(Exception ex) + { + OnMessageLogged(LogMessage.Info("Error occurred while recording python engine and package mapping. " + ex.Message)); + } + } + } + private PackageInfo handleCustomNodeOwnerQuery(Guid customNodeFunctionID) { return GetCustomNodePackageFromID(customNodeFunctionID); @@ -180,6 +225,7 @@ public void Ready(ReadyParams sp) public void Shutdown() { + PythonServices.PythonEngineManager.Instance.AvailableEngines.CollectionChanged -= PythonEngineAdded; //this.Dispose(); } diff --git a/src/Libraries/PythonNodeModels/PythonNode.cs b/src/Libraries/PythonNodeModels/PythonNode.cs index 4089c40cd9b..d7427ac9d26 100644 --- a/src/Libraries/PythonNodeModels/PythonNode.cs +++ b/src/Libraries/PythonNodeModels/PythonNode.cs @@ -4,6 +4,7 @@ using System.ComponentModel; using System.IO; using System.Linq; +using System.Reflection; using System.Xml; using System.Xml.Serialization; using Autodesk.DesignScript.Runtime; @@ -59,8 +60,25 @@ public string EngineName { engine = value; RaisePropertyChanged(nameof(EngineName)); - } + } + } + } + + /// + /// The method returns the assembly name from which the node originated. + /// + /// Assembly Name + internal override AssemblyName GetNameOfAssemblyReferencedByNode() + { + AssemblyName assemblyName = null; + + var pyEng = PythonEngineManager.Instance.AvailableEngines.Where(x => x.Name.Equals(this.EngineName)).FirstOrDefault(); + if (pyEng != null) + { + assemblyName = AssemblyName.GetAssemblyName(pyEng.GetType().Assembly.Location); } + + return assemblyName; } /// diff --git a/test/DynamoCoreTests/PackageDependencyTests.cs b/test/DynamoCoreTests/PackageDependencyTests.cs index 624b82e09af..ddedef357a7 100644 --- a/test/DynamoCoreTests/PackageDependencyTests.cs +++ b/test/DynamoCoreTests/PackageDependencyTests.cs @@ -6,10 +6,12 @@ using Dynamo.Graph.Workspaces; using Dynamo.Interfaces; using Dynamo.Models; +using Dynamo.PythonServices; using Dynamo.Scheduler; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using NUnit.Framework; +using PythonNodeModels; namespace Dynamo.Tests { @@ -22,9 +24,17 @@ protected override void GetLibrariesToPreload(List libraries) libraries.Add("ProtoGeometry.dll"); libraries.Add("DesignScriptBuiltin.dll"); libraries.Add("DSCoreNodes.dll"); + libraries.Add("DSCPython.dll"); base.GetLibrariesToPreload(libraries); } + private void UpdatePythonEngineAndRun(PythonNode pythonNode, string pythonEngineVersion) + { + pythonNode.EngineName = pythonEngineVersion; + //to kick off a run node modified must be called + pythonNode.OnNodeModified(); + } + private PackageDependencyInfo GetPackageInfo(string packageName) { var loader = GetPackageLoader(); @@ -94,6 +104,63 @@ public void ZeroTouchPackageDependencyIsCollectedAndSerialized() Assert.AreEqual(package.Nodes.Select(n => n.ToString("N")), nodes); } + [Test] + public void PythonEnginePackageDependencyIsCollectedAndSerialized() + { + // Load JSON file graph + string path = Path.Combine(TestDirectory, @"core\packageDependencyTests\PythonDependency.dyn"); + + // Assert package dependency is not already serialized to .dyn + using (StreamReader file = new StreamReader(path)) + { + var data = file.ReadToEnd(); + var json = (JObject)JsonConvert.DeserializeObject(data); + Assert.IsEmpty(json[WorkspaceReadConverter.NodeLibraryDependenciesPropString]); + } + + string packageDirectory = Path.Combine(TestDirectory, @"core\packageDependencyTests\PythonEnginePackage"); + LoadPackage(packageDirectory); + + OpenModel(path); + + //TO-DO: Force load binaries or mock the python engine instead of loading a package + //assert that default python engine was selected, and 2 different engines are loaded + var currentws = CurrentDynamoModel.CurrentWorkspace; + var pyNode = currentws.Nodes.OfType().FirstOrDefault(); + Assert.IsNotNull(pyNode); + Assert.AreEqual(pyNode.EngineName, PythonEngineManager.CPython3EngineName); + Assert.AreEqual(PythonEngineManager.Instance.AvailableEngines.Count, 2); + UpdatePythonEngineAndRun(pyNode, "PythonNet3"); + currentws.ForceComputeWorkspaceReferences = true; + + + //assert that python engine imported from a package gets added to NodeLibraryDependencies + var packageDependencies = currentws.NodeLibraryDependencies; + Assert.AreEqual(1, packageDependencies.Count); + var package = packageDependencies.First(); + Assert.AreEqual(new PackageDependencyInfo("TestCP311", new Version("1.0.8")), package); + Assert.AreEqual(1, package.Nodes.Count); + + Assert.IsTrue(package.IsLoaded); + if (package is PackageDependencyInfo) + { + var packageDependencyState = ((PackageDependencyInfo)package).State; + Assert.AreEqual(PackageDependencyState.Loaded, packageDependencyState); + } + + // Assert package dependency is serialized + var ToJson = currentws.ToJson(CurrentDynamoModel.EngineController); + var JObject = (JObject)JsonConvert.DeserializeObject(ToJson); + var deserializedPackageDependencies = JObject[WorkspaceReadConverter.NodeLibraryDependenciesPropString]; + Assert.AreEqual(1, deserializedPackageDependencies.Count()); + var name = deserializedPackageDependencies.First()[NodeLibraryDependencyConverter.NamePropString].Value(); + Assert.AreEqual(package.Name, name); + var version = deserializedPackageDependencies.First()[NodeLibraryDependencyConverter.VersionPropString].Value(); + Assert.AreEqual(package.Version.ToString(), version); + var nodes = deserializedPackageDependencies.First()[NodeLibraryDependencyConverter.NodesPropString].Values(); + Assert.AreEqual(package.Nodes.Select(n => n.ToString("N")), nodes); + } + [Test] public void CustomNodePackageDependencyIsCollected() { diff --git a/test/core/packageDependencyTests/PythonDependency.dyn b/test/core/packageDependencyTests/PythonDependency.dyn new file mode 100644 index 00000000000..bc84cdb5ce8 --- /dev/null +++ b/test/core/packageDependencyTests/PythonDependency.dyn @@ -0,0 +1,106 @@ +{ + "Uuid": "0760a737-55e1-4e89-a175-e10147e36042", + "IsCustomNode": false, + "Description": "", + "Name": "PythonDependency", + "ElementResolver": { + "ResolutionMap": {} + }, + "Inputs": [], + "Outputs": [], + "Nodes": [ + { + "ConcreteType": "PythonNodeModels.PythonNode, PythonNodeModels", + "Code": "# Load the Python Standard and DesignScript Libraries\r\nimport sys\r\nimport clr\r\nclr.AddReference('ProtoGeometry')\r\nfrom Autodesk.DesignScript.Geometry import *\r\n\r\n# The inputs to this node will be stored as a list in the IN variables.\r\ndataEnteringNode = IN\r\n\r\n# Place your code below this line\r\n\r\n# Assign your output to the OUT variable.\r\nOUT = 0", + "Engine": "CPython3", + "VariableInputPorts": true, + "Id": "eea559999b3e43e18488b587b1218082", + "NodeType": "PythonScriptNode", + "Inputs": [ + { + "Id": "0898a31365ca449fb054872d1f2a81d1", + "Name": "IN[0]", + "Description": "Input #0", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Outputs": [ + { + "Id": "5bc0033faea34070897bc93a50cfaa15", + "Name": "OUT", + "Description": "Result of the python script", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "Disabled", + "Description": "Runs an embedded Python script." + } + ], + "Connectors": [], + "Dependencies": [], + "NodeLibraryDependencies": [], + "EnableLegacyPolyCurveBehavior": null, + "Thumbnail": "", + "GraphDocumentationURL": null, + "ExtensionWorkspaceData": [ + { + "ExtensionGuid": "28992e1d-abb9-417f-8b1b-05e053bee670", + "Name": "Properties", + "Version": "3.4", + "Data": {} + } + ], + "Author": "", + "Linting": { + "activeLinter": "None", + "activeLinterId": "7b75fb44-43fd-4631-a878-29f4d5d8399a", + "warningCount": 0, + "errorCount": 0 + }, + "Bindings": [], + "View": { + "Dynamo": { + "ScaleFactor": 1.0, + "HasRunWithoutCrash": true, + "IsVisibleInDynamoLibrary": true, + "Version": "3.4.0.6124", + "RunType": "Automatic", + "RunPeriod": "1000" + }, + "Camera": { + "Name": "_Background Preview", + "EyeX": -17.0, + "EyeY": 24.0, + "EyeZ": 50.0, + "LookX": 12.0, + "LookY": -13.0, + "LookZ": -58.0, + "UpX": 0.0, + "UpY": 1.0, + "UpZ": 0.0 + }, + "ConnectorPins": [], + "NodeViews": [ + { + "Id": "eea559999b3e43e18488b587b1218082", + "Name": "Python Script", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "ShowGeometry": true, + "X": 341.0, + "Y": 287.0 + } + ], + "Annotations": [], + "X": 0.0, + "Y": 0.0, + "Zoom": 1.0 + } +} \ No newline at end of file diff --git a/test/core/packageDependencyTests/PythonEnginePackage/bin/DSPythonNet3Empty.dll b/test/core/packageDependencyTests/PythonEnginePackage/bin/DSPythonNet3Empty.dll new file mode 100644 index 0000000000000000000000000000000000000000..62f6d8cfa89f9522c618cbec423ddaaea09fa6d2 GIT binary patch literal 14624 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 literal 0 HcmV?d00001 diff --git a/test/core/packageDependencyTests/PythonEnginePackage/extra/DSPythonNet3.dll b/test/core/packageDependencyTests/PythonEnginePackage/extra/DSPythonNet3.dll new file mode 100644 index 0000000000000000000000000000000000000000..273f960e2a76861f458146daa3c9f5449aa662dd GIT binary patch literal 40216 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 literal 0 HcmV?d00001 diff --git a/test/core/packageDependencyTests/PythonEnginePackage/extra/DSPythonNet3Extension.dll b/test/core/packageDependencyTests/PythonEnginePackage/extra/DSPythonNet3Extension.dll new file mode 100644 index 0000000000000000000000000000000000000000..93a822b5e124c03681e440aefa866276b8c19b93 GIT binary patch literal 19232 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 literal 0 HcmV?d00001 diff --git a/test/core/packageDependencyTests/PythonEnginePackage/extra/DSPythonNet3Extension_ExtensionDefinition.xml b/test/core/packageDependencyTests/PythonEnginePackage/extra/DSPythonNet3Extension_ExtensionDefinition.xml new file mode 100644 index 00000000000..81ab3b5cf6d --- /dev/null +++ b/test/core/packageDependencyTests/PythonEnginePackage/extra/DSPythonNet3Extension_ExtensionDefinition.xml @@ -0,0 +1,4 @@ + + DSPythonNet3Extension.dll + DSPythonNet3Extension.DSPythonNet3Extension + \ No newline at end of file diff --git a/test/core/packageDependencyTests/PythonEnginePackage/extra/Python.Runtime.dll b/test/core/packageDependencyTests/PythonEnginePackage/extra/Python.Runtime.dll new file mode 100644 index 0000000000000000000000000000000000000000..0cc8c27782d2c3f5881bee812883418a72bcf575 GIT binary patch literal 452376 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 z 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

$hB;1)=47>6*bD<>{OyVq3 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 Date: Thu, 17 Oct 2024 12:54:27 -0400 Subject: [PATCH 4/8] DYN-7645: Fix performance tests (#15557) --- .../DynamoPerformanceTests/DynamoPerformanceTests.csproj | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/Performance/DynamoPerformanceTests/DynamoPerformanceTests.csproj b/tools/Performance/DynamoPerformanceTests/DynamoPerformanceTests.csproj index 4ec15be1199..1efcef2dda2 100644 --- a/tools/Performance/DynamoPerformanceTests/DynamoPerformanceTests.csproj +++ b/tools/Performance/DynamoPerformanceTests/DynamoPerformanceTests.csproj @@ -36,6 +36,9 @@ ..\..\..\bin\$(Platform)\$(Configuration)\DynamoServices.dll + + ..\..\..\bin\$(Platform)\$(Configuration)\SystemTestServices.dll + From d05c5a60d0967a1a11ca659bcd3837e6741e87f7 Mon Sep 17 00:00:00 2001 From: Roberto T <61755417+RobertGlobant20@users.noreply.github.com> Date: Thu, 17 Oct 2024 14:07:58 -0700 Subject: [PATCH 5/8] Regressions Extra Node Info (#15555) --- test/DynamoCoreWpfTests/NodeAutoCompleteSearchTests.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/test/DynamoCoreWpfTests/NodeAutoCompleteSearchTests.cs b/test/DynamoCoreWpfTests/NodeAutoCompleteSearchTests.cs index f93fc5c51fb..916a4070d18 100644 --- a/test/DynamoCoreWpfTests/NodeAutoCompleteSearchTests.cs +++ b/test/DynamoCoreWpfTests/NodeAutoCompleteSearchTests.cs @@ -18,6 +18,8 @@ namespace DynamoCoreWpfTests class NodeAutoCompleteSearchTests : DynamoTestUIBase { + private readonly List expectedNodes = new List { "ByFillet", "ByFilletTangentToCurve", "ByGeometry", "ByMinimumVolume", "ByBlendBetweenCurves", "ByTangency", "ByLineAndPoint", "ByJoinedCurves", "ByThickeningCurveNormal", "ByLoft", "ByLoft", "ByLoftGuides", "BySweep", "ByLoft", "ByLoft", "ByRevolve", "BySweep", "BySweep2Rails", "ByLoft", "ByLoft", "ByPatch", "ByRevolve", "ByRuledLoft", "BySweep", "BySweep2Rails", "BuildFromLines", "BuildPipes", "ByExtrude", "ByPlaneLineAndPoint", "ByRevolve", "BySweep", "DoesIntersect", "IsAlmostEqualTo", "DistanceTo", "Intersect", "IntersectAll", "Project", "Project", "ProjectInputOnto", "ProjectInputOnto", "Split", "Trim", "SerializeAsSAB", "ClosestPointTo", "Join", "ByGroupedCurves", "SweepAsSolid", "ExportToSAT", "SweepAsSurface", "LocateSurfacesByLine", "BridgeEdgesToEdges", "BridgeEdgesToFaces", "BridgeFacesToEdges", "BridgeFacesToFaces", "CreateMatch", "ExtrudeEdgesAlongCurve", "ExtrudeFacesAlongCurve", "PullVertices" }; + [NodeDescription("This is test node with multiple output ports and types specified.")] [NodeName("node with multi type outputs")] [InPortNames("input1", "input2")] @@ -166,7 +168,9 @@ public void NodeSuggestions_CanAutoCompleteOnCustomNodesOutPort_WithSpaceInPortN // Results will be nodes that accept Line as parameter. searchViewModel.PopulateAutoCompleteCandidates(); - Assert.AreEqual(58, searchViewModel.FilteredResults.Count()); + var nodeNamesResultList = searchViewModel.FilteredResults.Select(x => x.Name).ToList(); + + Assert.AreEqual(expectedNodes.Count(), nodeNamesResultList.Count(),string.Format("Missing nodes: {0} ", string.Join(", ",expectedNodes.Except(nodeNamesResultList)))); } [Test] public void NodeSuggestions_CanAutoCompleteOnCustomNodesOutPort_WithWhiteSpaceStartingPortName() @@ -186,7 +190,9 @@ public void NodeSuggestions_CanAutoCompleteOnCustomNodesOutPort_WithWhiteSpaceSt // Results will be nodes that accept Line as parameter. searchViewModel.PopulateAutoCompleteCandidates(); - Assert.AreEqual(58, searchViewModel.FilteredResults.Count()); + var nodeNamesResultList = searchViewModel.FilteredResults.Select(x => x.Name).ToList(); + + Assert.AreEqual(expectedNodes.Count(), nodeNamesResultList.Count(), string.Format("Missing nodes: {0} ", string.Join(", ", expectedNodes.Except(nodeNamesResultList)))); } [Test] From eb1559a401131ad553025975a78112346ad5d85c Mon Sep 17 00:00:00 2001 From: Ivo Petrov <48355182+ivaylo-matov@users.noreply.github.com> Date: Fri, 18 Oct 2024 16:42:09 +0100 Subject: [PATCH 6/8] [DYN-7466] Follow up - Zoom to fit to nodes/groups selected in TuneUP and GraphNodeManager (#15547) --- src/DynamoCoreWpf/ViewModels/Core/DynamoViewModel.cs | 1 + src/DynamoCoreWpf/ViewModels/Core/WorkspaceViewModel.cs | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/DynamoCoreWpf/ViewModels/Core/DynamoViewModel.cs b/src/DynamoCoreWpf/ViewModels/Core/DynamoViewModel.cs index 4d53d96fc3a..e36a618e6d1 100644 --- a/src/DynamoCoreWpf/ViewModels/Core/DynamoViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/Core/DynamoViewModel.cs @@ -2771,6 +2771,7 @@ var customNodeWorkspace in } // Center the view on the model this.CurrentSpaceViewModel.OnRequestCenterViewOnElement(this, new ModelEventArgs(e)); + FitView(false); } private void CancelActiveState(NodeModel node) diff --git a/src/DynamoCoreWpf/ViewModels/Core/WorkspaceViewModel.cs b/src/DynamoCoreWpf/ViewModels/Core/WorkspaceViewModel.cs index 544340baab2..ac712a0585e 100644 --- a/src/DynamoCoreWpf/ViewModels/Core/WorkspaceViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/Core/WorkspaceViewModel.cs @@ -1156,7 +1156,7 @@ public double GetSelectionAverageY() public double GetSelectionMinX() { - return DynamoSelection.Instance.Selection.Where((x) => !(x is AnnotationModel) && x is ILocatable) + return DynamoSelection.Instance.Selection.Where((x) => x is ILocatable) .Cast() .Select((x) => x.X) .Min(); @@ -1164,7 +1164,7 @@ public double GetSelectionMinX() public double GetSelectionMinY() { - return DynamoSelection.Instance.Selection.Where((x) => !(x is AnnotationModel) && x is ILocatable) + return DynamoSelection.Instance.Selection.Where((x) => x is ILocatable) .Cast() .Select((x) => x.Y) .Min(); @@ -1172,7 +1172,7 @@ public double GetSelectionMinY() public double GetSelectionMaxX() { - return DynamoSelection.Instance.Selection.Where((x) => !(x is AnnotationModel) && x is ILocatable) + return DynamoSelection.Instance.Selection.Where((x) => x is ILocatable) .Cast() .Select((x) => x.X + x.Width) .Max(); @@ -1188,7 +1188,7 @@ public double GetSelectionMaxLeftX() public double GetSelectionMaxY() { - return DynamoSelection.Instance.Selection.Where((x) => !(x is AnnotationModel) && x is ILocatable) + return DynamoSelection.Instance.Selection.Where((x) => x is ILocatable) .Cast() .Select((x) => x.Y + x.Height) .Max(); From 3e20ba42bf34581e0805668ae16de2d95aacc9a4 Mon Sep 17 00:00:00 2001 From: Bogdan Zavu Date: Mon, 21 Oct 2024 09:37:01 -0400 Subject: [PATCH 7/8] DYN-7400 : handle host data marshaler dependent on python runtime (#15537) Co-authored-by: Bogdan Zavu --- src/Libraries/DSCPython/CPythonEvaluator.cs | 40 +++++++++++++++++++++ src/NodeServices/Properties/AssemblyInfo.cs | 1 + src/NodeServices/PythonServices.cs | 15 ++++++++ 3 files changed, 56 insertions(+) diff --git a/src/Libraries/DSCPython/CPythonEvaluator.cs b/src/Libraries/DSCPython/CPythonEvaluator.cs index 6d3fa9a6c47..e52b1cc84ea 100644 --- a/src/Libraries/DSCPython/CPythonEvaluator.cs +++ b/src/Libraries/DSCPython/CPythonEvaluator.cs @@ -447,6 +447,46 @@ private static string GetTraceBack(Exception e) #region Marshalling + ///

+ /// Add additional data marshalers to handle host data. + /// + [SupressImportIntoVM] + internal override void RegisterHostDataMarshalers() + { + DataMarshaler dataMarshalerToUse = HostDataMarshaler as DataMarshaler; + dataMarshalerToUse?.RegisterMarshaler((PyObject pyObj) => + { + try + { + using (Py.GIL()) + { + if (PyDict.IsDictType(pyObj)) + { + using (var pyDict = new PyDict(pyObj)) + { + var dict = new PyDict(); + foreach (PyObject item in pyDict.Items()) + { + dict.SetItem( + ConverterExtension.ToPython(dataMarshalerToUse.Marshal(item.GetItem(0))), + ConverterExtension.ToPython(dataMarshalerToUse.Marshal(item.GetItem(1))) + ); + } + return dict; + } + } + var unmarshalled = pyObj.AsManagedObject(typeof(object)); + return dataMarshalerToUse.Marshal(unmarshalled); + } + } + catch (Exception e) + { + DynamoLogger?.Log($"error marshaling python object {pyObj.Handle} {e.Message}"); + return pyObj; + } + }); + } + /// /// Data Marshaler for all data coming into a Python node. /// diff --git a/src/NodeServices/Properties/AssemblyInfo.cs b/src/NodeServices/Properties/AssemblyInfo.cs index 2db8d903110..4feee19104f 100644 --- a/src/NodeServices/Properties/AssemblyInfo.cs +++ b/src/NodeServices/Properties/AssemblyInfo.cs @@ -44,3 +44,4 @@ [assembly: InternalsVisibleTo("DynamoApplications")] [assembly: InternalsVisibleTo("DynamoUnits")] [assembly: InternalsVisibleTo("DSPythonNet3")] +[assembly: InternalsVisibleTo("DynamoRevitDS")] diff --git a/src/NodeServices/PythonServices.cs b/src/NodeServices/PythonServices.cs index 305f8b7caa4..1ccbe1f764d 100644 --- a/src/NodeServices/PythonServices.cs +++ b/src/NodeServices/PythonServices.cs @@ -63,6 +63,13 @@ public abstract object OutputDataMarshaler get; } + /// + /// Data marshaler for host data used during the execution of a Python node. + /// This can be implemented differently across various Python engines due to + /// factors such as differing PythonNet APIs or other specific requirements. + /// + internal object HostDataMarshaler { get; set; } + /// /// Name of the Python engine /// @@ -93,6 +100,14 @@ public abstract string Name public abstract object Evaluate(string code, IList bindingNames, [ArbitraryDimensionArrayImport] IList bindingValues); + + /// + /// Add additional data marshalers to handle host data. + /// While some data marshalers are specific to the host application, + /// they must be implemented at the Dynamo Core level in order to + /// avoid host dependencies on the Python runtime. + /// + internal virtual void RegisterHostDataMarshalers() { } } /// From e2f681385007cf70bb10711cd7bf0dfabb441e1f Mon Sep 17 00:00:00 2001 From: Deyan Nenov Date: Mon, 21 Oct 2024 21:26:09 +0100 Subject: [PATCH 8/8] DYN-7341: Pm redesign search tab cherrypick (#15522) Co-authored-by: Aaron (Qilong) --- src/DynamoCore/DynamoCore.csproj | 2 +- src/DynamoCoreWpf/DynamoCoreWpf.csproj | 2 +- .../Properties/Resources.Designer.cs | 145 +- .../Properties/Resources.en-US.resx | 32 +- src/DynamoCoreWpf/Properties/Resources.resx | 32 +- src/DynamoCoreWpf/PublicAPI.Unshipped.txt | 28 +- src/DynamoCoreWpf/UI/Converters.cs | 70 + .../Themes/Modern/DynamoColorsAndBrushes.xaml | 21 +- .../UI/Themes/Modern/DynamoModern.xaml | 1914 ++++++++++------- .../PackageManagerClientViewModel.cs | 23 +- .../PackageManagerSearchElementViewModel.cs | 116 +- .../Controls/ControlColorsAndBrushes.xaml | 117 +- .../PackageManagerPackagesControl.xaml | 1124 +++++----- .../PackageManagerPackagesControl.xaml.cs | 21 +- .../Controls/PackageManagerSearchControl.xaml | 177 +- .../PackageManager/PackageManagerView.xaml | 422 ++-- .../DynamoMLDataPipeline.csproj | 2 +- src/DynamoPackages/DynamoPackages.csproj | 2 +- src/DynamoPackages/PackageManagerClient.cs | 66 + .../PackageManagerSearchElement.cs | 301 ++- .../Properties/Resources.Designer.cs | 2 +- .../PackageDetailItem.cs | 220 +- .../PackageDetailsView.xaml | 843 ++++---- .../PackageDetailsView.xaml.cs | 35 +- .../PackageDetailsViewExtension.csproj | 2 +- .../PackageDetailsViewModel.cs | 10 +- .../NodeDocumentationMarkdownGenerator.csproj | 1 + test/DynamoCoreTests/DynamoCoreTests.csproj | 2 +- .../DynamoCoreWpfTests.csproj | 2 +- ...ckageManagerSearchElementViewModelTests.cs | 165 +- .../PackageDetailsViewExtensionTests.cs | 142 +- .../PackageManagerClientTests.cs | 65 + .../PackageManagerTests.csproj | 2 +- 33 files changed, 3875 insertions(+), 2233 deletions(-) diff --git a/src/DynamoCore/DynamoCore.csproj b/src/DynamoCore/DynamoCore.csproj index b1100b3cca2..cad82bee639 100644 --- a/src/DynamoCore/DynamoCore.csproj +++ b/src/DynamoCore/DynamoCore.csproj @@ -31,7 +31,7 @@ - + diff --git a/src/DynamoCoreWpf/DynamoCoreWpf.csproj b/src/DynamoCoreWpf/DynamoCoreWpf.csproj index 6991abf7249..61cf848aa8e 100644 --- a/src/DynamoCoreWpf/DynamoCoreWpf.csproj +++ b/src/DynamoCoreWpf/DynamoCoreWpf.csproj @@ -189,7 +189,7 @@ - + diff --git a/src/DynamoCoreWpf/Properties/Resources.Designer.cs b/src/DynamoCoreWpf/Properties/Resources.Designer.cs index 89e76447cf8..2f115a7510b 100644 --- a/src/DynamoCoreWpf/Properties/Resources.Designer.cs +++ b/src/DynamoCoreWpf/Properties/Resources.Designer.cs @@ -1,4 +1,4 @@ -//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ // // This code was generated by a tool. // Runtime Version:4.0.30319.42000 @@ -5646,6 +5646,33 @@ public static string PackageDeprecatedTooltip { } } + /// + /// Looks up a localized string similar to COMPATIBILITY. + /// + public static string PackageDetailsCompatibility { + get { + return ResourceManager.GetString("PackageDetailsCompatibility", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Compatible with your current setup. + /// + public static string PackageDetailsCompatibilityWithSetup { + get { + return ResourceManager.GetString("PackageDetailsCompatibilityWithSetup", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to This version should be compatible with your current setup. + /// + public static string PackageDetailsCompatibleVersionTooltip { + get { + return ResourceManager.GetString("PackageDetailsCompatibleVersionTooltip", resourceCulture); + } + } + /// /// Looks up a localized string similar to Copyright Holder. /// @@ -5664,6 +5691,15 @@ public static string PackageDetailsCopyRightYear { } } + /// + /// Looks up a localized string similar to Depends on. + /// + public static string PackageDetailsDependsOn { + get { + return ResourceManager.GetString("PackageDetailsDependsOn", resourceCulture); + } + } + /// /// Looks up a localized string similar to DESCRIPTION. /// @@ -5691,6 +5727,15 @@ public static string PackageDetailsHost { } } + /// + /// Looks up a localized string similar to This version may be incompatible with your current setup. + /// + public static string PackageDetailsIncompatibileVersionTooltip { + get { + return ResourceManager.GetString("PackageDetailsIncompatibileVersionTooltip", resourceCulture); + } + } + /// /// Looks up a localized string similar to KEYWORDS. /// @@ -5736,6 +5781,15 @@ public static string PackageDetailsPython { } } + /// + /// Looks up a localized string similar to Release notes. + /// + public static string PackageDetailsReleaseNotes { + get { + return ResourceManager.GetString("PackageDetailsReleaseNotes", resourceCulture); + } + } + /// /// Looks up a localized string similar to Size. /// @@ -5745,6 +5799,15 @@ public static string PackageDetailsSize { } } + /// + /// Looks up a localized string similar to The compatibility of this version has not been verified. It may or may not be compatible with your current setup. + /// + public static string PackageDetailsUnknownCompatibilityVersionTooltip { + get { + return ResourceManager.GetString("PackageDetailsUnknownCompatibilityVersionTooltip", resourceCulture); + } + } + /// /// Looks up a localized string similar to Versions. /// @@ -6016,6 +6079,24 @@ public static string PackageManagerFinishedPackagePackagePath { } } + /// + /// Looks up a localized string similar to This version is incompatible with your current setup (Dynamo and host version, if applicable). It may not work properly. Do you want to install it anyway?. + /// + public static string PackageManagerIncompatibleVersionDownloadMsg { + get { + return ResourceManager.GetString("PackageManagerIncompatibleVersionDownloadMsg", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Incompatible version. + /// + public static string PackageManagerIncompatibleVersionDownloadTitle { + get { + return ResourceManager.GetString("PackageManagerIncompatibleVersionDownloadTitle", resourceCulture); + } + } + /// /// Looks up a localized string similar to Install. /// @@ -6512,7 +6593,7 @@ public static string PackageSearchResultRequirements { } /// - /// Looks up a localized string similar to View Details. + /// Looks up a localized string similar to Info. /// public static string PackageSearchResultViewDetails { get { @@ -10357,6 +10438,33 @@ public static string UnsavedChangesMessageBoxTitle { } } + /// + /// Looks up a localized string similar to Set Python Engine. + /// + public static string UpdateAllPythonEngineMainMenuHeader { + get { + return ResourceManager.GetString("UpdateAllPythonEngineMainMenuHeader", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Update all {0} python nodes in the current workspace to use {1} engine?. + /// + public static string UpdateAllPythonEngineWarning { + get { + return ResourceManager.GetString("UpdateAllPythonEngineWarning", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Update All Python Nodes. + /// + public static string UpdateAllPythonEngineWarningTitle { + get { + return ResourceManager.GetString("UpdateAllPythonEngineWarningTitle", resourceCulture); + } + } + /// /// Looks up a localized string similar to An update is available for Dynamo. ///Installing the latest update requires Dynamo and any host applications to close. @@ -10586,38 +10694,5 @@ public static string ZoomLevel { return ResourceManager.GetString("ZoomLevel", resourceCulture); } } - - /// - /// Looks up a localized string similar to Update all {0} python nodes in the current workspace to use {1} engine?. - /// - public static string UpdateAllPythonEngineWarning - { - get - { - return ResourceManager.GetString("UpdateAllPythonEngineWarning", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Update All Python Nodes. - /// - public static string UpdateAllPythonEngineWarningTitle - { - get - { - return ResourceManager.GetString("UpdateAllPythonEngineWarningTitle", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Set Python Engine. - /// - public static string UpdateAllPythonEngineMainMenuHeader - { - get - { - return ResourceManager.GetString("UpdateAllPythonEngineMainMenuHeader", resourceCulture); - } - } } } diff --git a/src/DynamoCoreWpf/Properties/Resources.en-US.resx b/src/DynamoCoreWpf/Properties/Resources.en-US.resx index 0b891e0236f..f0ad09bd3b1 100644 --- a/src/DynamoCoreWpf/Properties/Resources.en-US.resx +++ b/src/DynamoCoreWpf/Properties/Resources.en-US.resx @@ -2892,7 +2892,7 @@ If the toggle is off custom packages that are not already loaded will load once Header in Package Search 'Sort By' Button Context Menu - View Details + Info In package search result card. @@ -4045,4 +4045,34 @@ To make this file into a new template, save it to a different folder, then move Set Python Engine + + Release notes + + + Depends on + + + COMPATIBILITY + + + Compatible with your current setup + + + Size + + + This version should be compatible with your current setup + + + The compatibility of this version has not been verified. It may or may not be compatible with your current setup + + + This version may be incompatible with your current setup + + + This version is incompatible with your current setup (Dynamo and host version, if applicable). It may not work properly. Do you want to install it anyway? + + + Incompatible version + diff --git a/src/DynamoCoreWpf/Properties/Resources.resx b/src/DynamoCoreWpf/Properties/Resources.resx index 85f5b6d1e48..2677838dd7f 100644 --- a/src/DynamoCoreWpf/Properties/Resources.resx +++ b/src/DynamoCoreWpf/Properties/Resources.resx @@ -1512,7 +1512,7 @@ If the toggle is off custom packages that are not already loaded will load once Sort by - View Details + Info In package search result card. @@ -4032,4 +4032,34 @@ To make this file into a new template, save it to a different folder, then move Set Python Engine + + Release notes + + + Depends on + + + COMPATIBILITY + + + Compatible with your current setup + + + Size + + + This version should be compatible with your current setup + + + The compatibility of this version has not been verified. It may or may not be compatible with your current setup + + + This version may be incompatible with your current setup + + + This version is incompatible with your current setup (Dynamo and host version, if applicable). It may not work properly. Do you want to install it anyway? + + + Incompatible version + diff --git a/src/DynamoCoreWpf/PublicAPI.Unshipped.txt b/src/DynamoCoreWpf/PublicAPI.Unshipped.txt index 3416ded0706..bbbc8a21c76 100644 --- a/src/DynamoCoreWpf/PublicAPI.Unshipped.txt +++ b/src/DynamoCoreWpf/PublicAPI.Unshipped.txt @@ -183,6 +183,10 @@ Dynamo.Controls.DateToPackageLabelConverter Dynamo.Controls.DateToPackageLabelConverter.Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) -> object Dynamo.Controls.DateToPackageLabelConverter.ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) -> object Dynamo.Controls.DateToPackageLabelConverter.DateToPackageLabelConverter() -> void +Dynamo.Controls.DateToPackageTooltipConverter +Dynamo.Controls.DateToPackageTooltipConverter.Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) -> object +Dynamo.Controls.DateToPackageTooltipConverter.ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) -> object +Dynamo.Controls.DateToPackageTooltipConverter.DateToPackageTooltipConverter() -> void Dynamo.Controls.DateToVisibilityCollapsedConverter Dynamo.Controls.DateToVisibilityCollapsedConverter.Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) -> object Dynamo.Controls.DateToVisibilityCollapsedConverter.ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) -> object @@ -337,6 +341,10 @@ Dynamo.Controls.InverseBoolToVisibilityConverter Dynamo.Controls.InverseBoolToVisibilityConverter.Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) -> object Dynamo.Controls.InverseBoolToVisibilityConverter.ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) -> object Dynamo.Controls.InverseBoolToVisibilityConverter.InverseBoolToVisibilityConverter() -> void +Dynamo.Controls.InverseEmptyListToVisibilityConverter +Dynamo.Controls.InverseEmptyListToVisibilityConverter.Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) -> object +Dynamo.Controls.InverseEmptyListToVisibilityConverter.ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) -> object +Dynamo.Controls.InverseEmptyListToVisibilityConverter.InverseEmptyListToVisibilityConverter() -> void Dynamo.Controls.LacingToAbbreviationConverter Dynamo.Controls.LacingToAbbreviationConverter.Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) -> object Dynamo.Controls.LacingToAbbreviationConverter.ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) -> object @@ -460,6 +468,10 @@ Dynamo.Controls.NonEmptyStringToCollapsedConverter Dynamo.Controls.NonEmptyStringToCollapsedConverter.Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) -> object Dynamo.Controls.NonEmptyStringToCollapsedConverter.ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) -> object Dynamo.Controls.NonEmptyStringToCollapsedConverter.NonEmptyStringToCollapsedConverter() -> void +Dynamo.Controls.NullOrEmptyListToVisibilityVisibleConverter +Dynamo.Controls.NullOrEmptyListToVisibilityVisibleConverter.Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) -> object +Dynamo.Controls.NullOrEmptyListToVisibilityVisibleConverter.ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) -> object +Dynamo.Controls.NullOrEmptyListToVisibilityVisibleConverter.NullOrEmptyListToVisibilityVisibleConverter() -> void Dynamo.Controls.NullOrEmptyStringToVisibiltyCollapsedConverter Dynamo.Controls.NullOrEmptyStringToVisibiltyCollapsedConverter.Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) -> object Dynamo.Controls.NullOrEmptyStringToVisibiltyCollapsedConverter.ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) -> object @@ -1295,6 +1307,8 @@ Dynamo.PackageManager.ViewModels.PackageManagerSearchElementViewModel.Hosts.get Dynamo.PackageManager.ViewModels.PackageManagerSearchElementViewModel.IsDeprecated.get -> bool Dynamo.PackageManager.ViewModels.PackageManagerSearchElementViewModel.IsEnabledForInstall.get -> bool Dynamo.PackageManager.ViewModels.PackageManagerSearchElementViewModel.IsOnwer.get -> bool +Dynamo.PackageManager.ViewModels.PackageManagerSearchElementViewModel.IsSelectedVersionCompatible.get -> bool? +Dynamo.PackageManager.ViewModels.PackageManagerSearchElementViewModel.IsSelectedVersionCompatible.set -> void Dynamo.PackageManager.ViewModels.PackageManagerSearchElementViewModel.LatestVersion.get -> string Dynamo.PackageManager.ViewModels.PackageManagerSearchElementViewModel.LatestVersionCreated.get -> string Dynamo.PackageManager.ViewModels.PackageManagerSearchElementViewModel.Maintainers.get -> string @@ -1306,11 +1320,14 @@ Dynamo.PackageManager.ViewModels.PackageManagerSearchElementViewModel.PackageSea Dynamo.PackageManager.ViewModels.PackageManagerSearchElementViewModel.PkgVersion.get -> System.Collections.Generic.IEnumerable Dynamo.PackageManager.ViewModels.PackageManagerSearchElementViewModel.RequestDownload -> Dynamo.PackageManager.ViewModels.PackageManagerSearchElementViewModel.PackageSearchElementDownloadHandler Dynamo.PackageManager.ViewModels.PackageManagerSearchElementViewModel.RequestShowFileDialog -> System.EventHandler +Dynamo.PackageManager.ViewModels.PackageManagerSearchElementViewModel.ReversedVersionInformationList.get -> System.ComponentModel.ICollectionView Dynamo.PackageManager.ViewModels.PackageManagerSearchElementViewModel.SearchElementModel.get -> Dynamo.PackageManager.PackageManagerSearchElement -Dynamo.PackageManager.ViewModels.PackageManagerSearchElementViewModel.SelectedVersion.get -> string +Dynamo.PackageManager.ViewModels.PackageManagerSearchElementViewModel.SelectedVersion.get -> Dynamo.PackageManager.VersionInformation Dynamo.PackageManager.ViewModels.PackageManagerSearchElementViewModel.SelectedVersion.set -> void Dynamo.PackageManager.ViewModels.PackageManagerSearchElementViewModel.UpvoteCommand.get -> System.Windows.Input.ICommand Dynamo.PackageManager.ViewModels.PackageManagerSearchElementViewModel.UpvoteCommand.set -> void +Dynamo.PackageManager.ViewModels.PackageManagerSearchElementViewModel.VersionInformationList.get -> System.Collections.Generic.List +Dynamo.PackageManager.ViewModels.PackageManagerSearchElementViewModel.VersionInformationList.set -> void Dynamo.PackageManager.ViewModels.PackageManagerSearchElementViewModel.Versions.get -> System.Collections.Generic.List>> Dynamo.PackageManager.ViewModels.PackageManagerSearchElementViewModel.VisitRepositoryCommand.get -> System.Windows.Input.ICommand Dynamo.PackageManager.ViewModels.PackageManagerSearchElementViewModel.VisitRepositoryCommand.set -> void @@ -4982,17 +4999,24 @@ static Dynamo.Wpf.Properties.Resources.PackageContextMenuUnmarkDeletePackageTool static Dynamo.Wpf.Properties.Resources.PackageContextMenuUnmarkUnloadPackageText.get -> string static Dynamo.Wpf.Properties.Resources.PackageContextMenuUnmarkUnloadPackageTooltip.get -> string static Dynamo.Wpf.Properties.Resources.PackageDeprecatedTooltip.get -> string +static Dynamo.Wpf.Properties.Resources.PackageDetailsCompatibility.get -> string +static Dynamo.Wpf.Properties.Resources.PackageDetailsCompatibilityWithSetup.get -> string +static Dynamo.Wpf.Properties.Resources.PackageDetailsCompatibleVersionTooltip.get -> string static Dynamo.Wpf.Properties.Resources.PackageDetailsCopyRightHolder.get -> string static Dynamo.Wpf.Properties.Resources.PackageDetailsCopyRightYear.get -> string +static Dynamo.Wpf.Properties.Resources.PackageDetailsDependsOn.get -> string static Dynamo.Wpf.Properties.Resources.PackageDetailsDescription.get -> string static Dynamo.Wpf.Properties.Resources.PackageDetailsGroup.get -> string static Dynamo.Wpf.Properties.Resources.PackageDetailsHost.get -> string +static Dynamo.Wpf.Properties.Resources.PackageDetailsIncompatibileVersionTooltip.get -> string static Dynamo.Wpf.Properties.Resources.PackageDetailsKeywords.get -> string static Dynamo.Wpf.Properties.Resources.PackageDetailsLicense.get -> string static Dynamo.Wpf.Properties.Resources.PackageDetailsLinks.get -> string static Dynamo.Wpf.Properties.Resources.PackageDetailsPackage.get -> string static Dynamo.Wpf.Properties.Resources.PackageDetailsPython.get -> string +static Dynamo.Wpf.Properties.Resources.PackageDetailsReleaseNotes.get -> string static Dynamo.Wpf.Properties.Resources.PackageDetailsSize.get -> string +static Dynamo.Wpf.Properties.Resources.PackageDetailsUnknownCompatibilityVersionTooltip.get -> string static Dynamo.Wpf.Properties.Resources.PackageDetailsVersions.get -> string static Dynamo.Wpf.Properties.Resources.PackageDetailsVersionsAndPackageRequirements.get -> string static Dynamo.Wpf.Properties.Resources.PackageDownloadConfirmMessageBoxTitle.get -> string @@ -5023,6 +5047,8 @@ static Dynamo.Wpf.Properties.Resources.PackageManagerClearAllButtonText.get -> s static Dynamo.Wpf.Properties.Resources.PackageManagerFinishedPackageFilesPublishedMessage.get -> string static Dynamo.Wpf.Properties.Resources.PackageManagerFinishedPackageFilesUploadedMessage.get -> string static Dynamo.Wpf.Properties.Resources.PackageManagerFinishedPackagePackagePath.get -> string +static Dynamo.Wpf.Properties.Resources.PackageManagerIncompatibleVersionDownloadMsg.get -> string +static Dynamo.Wpf.Properties.Resources.PackageManagerIncompatibleVersionDownloadTitle.get -> string static Dynamo.Wpf.Properties.Resources.PackageManagerInstall.get -> string static Dynamo.Wpf.Properties.Resources.PackageManagerInstalledPackagesTab.get -> string static Dynamo.Wpf.Properties.Resources.PackageManagerLoadingTimedOutWarningMessage.get -> string diff --git a/src/DynamoCoreWpf/UI/Converters.cs b/src/DynamoCoreWpf/UI/Converters.cs index 469b7ecd994..dcd8ea1cfcc 100644 --- a/src/DynamoCoreWpf/UI/Converters.cs +++ b/src/DynamoCoreWpf/UI/Converters.cs @@ -170,6 +170,42 @@ public object ConvertBack(object value, Type targetType, object parameter, Cultu } } + /// + /// Returns Visibility.Visible if the collection is empty, otherwise returns Visibility.Collapsed. + /// + public class NullOrEmptyListToVisibilityVisibleConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (!(value is ICollection collection)) return Visibility.Visible; + + return collection.Count == 0 ? Visibility.Visible : Visibility.Collapsed; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + return null; + } + } + + /// + /// Returns Visible if the collection is not empty, otherwise returns Collapsed + /// + public class InverseEmptyListToVisibilityConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (!(value is ICollection collection)) return Visibility.Collapsed; + + return collection.Count == 0 ? Visibility.Collapsed : Visibility.Visible; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + return null; + } + } + public class PackageSearchStateToStringConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, @@ -1549,6 +1585,40 @@ public object ConvertBack(object value, Type targetType, object parameter, Syste } } + /// + /// Used to determine the tooltip which appears next to a package when it's either + /// brand new, recently updated, or deprecated. + /// If the package was updated in the last 30 days it says 'Updated'. + /// If the package is brand new (only has 1 version) and is less than 30 days it says 'New'. + /// + public class DateToPackageTooltipConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) + { + if (!(value is Dynamo.PackageManager.PackageManagerSearchElement packageManagerSearchElement)) return String.Empty; + if (packageManagerSearchElement.IsDeprecated) return Resources.PackageDeprecatedTooltip; + + DateTime.TryParse(packageManagerSearchElement.LatestVersionCreated, out DateTime dateLastUpdated); + + // For testing purposes + var test = DateTime.TryParse((string)parameter, out DateTime testDate); + TimeSpan difference = test ? testDate - dateLastUpdated : DateTime.Now - dateLastUpdated; + + int numberVersions = packageManagerSearchElement.Header.num_versions; + + if (numberVersions > 1) + { + return difference.TotalDays >= 30 ? "" : Resources.PackageFilterUpdatedTooltip; + } + return Resources.PackageFilterNewTooltip; + } + + public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) + { + throw new NotSupportedException(); + } + } + public class InverseBoolToVisibilityConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) diff --git a/src/DynamoCoreWpf/UI/Themes/Modern/DynamoColorsAndBrushes.xaml b/src/DynamoCoreWpf/UI/Themes/Modern/DynamoColorsAndBrushes.xaml index 5e1c7521e16..b8e10e3a1c2 100644 --- a/src/DynamoCoreWpf/UI/Themes/Modern/DynamoColorsAndBrushes.xaml +++ b/src/DynamoCoreWpf/UI/Themes/Modern/DynamoColorsAndBrushes.xaml @@ -33,7 +33,7 @@ #2EFFFFFF #66999999 #F5F5F5 - + @@ -194,7 +194,24 @@ - + + + + #DFDFDF + #5F5F5F + #3f3f3f + #474747 + #87B340 + #EB5555 + #73C5FF + + + + + + + + diff --git a/src/DynamoCoreWpf/UI/Themes/Modern/DynamoModern.xaml b/src/DynamoCoreWpf/UI/Themes/Modern/DynamoModern.xaml index 32b3fdf8f62..814db03e096 100644 --- a/src/DynamoCoreWpf/UI/Themes/Modern/DynamoModern.xaml +++ b/src/DynamoCoreWpf/UI/Themes/Modern/DynamoModern.xaml @@ -3,9 +3,9 @@ xmlns:avalonedit="clr-namespace:ICSharpCode.AvalonEdit;assembly=ICSharpCode.AvalonEdit" xmlns:clr="clr-namespace:System;assembly=mscorlib" xmlns:controls="clr-namespace:Dynamo.Views;assembly=DynamoCoreWpf" - xmlns:nodes="clr-namespace:Dynamo.Nodes;assembly=DynamoCoreWpf" xmlns:dynui="clr-namespace:Dynamo.UI.Controls;assembly=DynamoCoreWpf" xmlns:fa="clr-namespace:FontAwesome5;assembly=FontAwesome5.Net" + xmlns:nodes="clr-namespace:Dynamo.Nodes;assembly=DynamoCoreWpf" xmlns:p="clr-namespace:Dynamo.Wpf.Properties;assembly=DynamoCoreWpf" xmlns:ui="clr-namespace:Dynamo.UI;assembly=DynamoCoreWpf"> @@ -53,9 +53,9 @@ Black #808080 - - - + + + @@ -72,7 +72,7 @@ 53 - + @@ -143,12 +143,38 @@ - - - + + + - - + + @@ -168,19 +194,48 @@ - - - - + + + + BorderThickness="0,0,0,1" /> - - + + - - + + - - + + BorderThickness="0" /> - - + + - + - + - - - - + - + - - - - - - - - - - - - - - - - - - + - + - - + + - + - + - - - + + - + - - + + - - + + + + + + + + + + + + + + + + - + - + - - + + + + + + + + + + + + + + + + #999999 #CCCCCC #38abdf @@ -5783,32 +5777,33 @@ - + - + - + - - + + - + @@ -5957,42 +5968,38 @@ - - - - + + + + @@ -6016,17 +6023,16 @@ - + @@ -6035,34 +6041,34 @@ - - + + - + - + - - + + - + - - + + - + - + - + - + - + - + - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerClientViewModel.cs b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerClientViewModel.cs index d3e52b4f8bb..4bb304d263c 100644 --- a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerClientViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerClientViewModel.cs @@ -9,7 +9,6 @@ using System.Threading.Tasks; using System.Windows; using System.Windows.Input; -using Dynamo.Controls; using Dynamo.Core; using Dynamo.Graph.Nodes.CustomNodes; using Dynamo.Graph.Workspaces; @@ -749,11 +748,28 @@ private bool WarnAboutDuplicatePackageConflicts(PackageVersion package, internal async void ExecutePackageDownload(string name, PackageVersion package, string installPath) { - string msg = String.IsNullOrEmpty(installPath) ? + string msg; + MessageBoxResult result; + + var compatible = PackageManagerSearchElement.CalculateCompatibility(package.compatibility_matrix); + if (compatible == false && !DynamoModel.IsTestMode) + { + msg = Resources.PackageManagerIncompatibleVersionDownloadMsg; + result = MessageBoxService.Show(ViewModelOwner, msg, + Resources.PackageManagerIncompatibleVersionDownloadTitle, + MessageBoxButton.OKCancel, MessageBoxImage.Warning); + + if (result != MessageBoxResult.OK) + { + return; + } + } + + msg = String.IsNullOrEmpty(installPath) ? String.Format(Resources.MessageConfirmToInstallPackage, name, package.version) : String.Format(Resources.MessageConfirmToInstallPackageToFolder, name, package.version, installPath); - var result = MessageBoxService.Show(ViewModelOwner, msg, + result = MessageBoxService.Show(ViewModelOwner, msg, Resources.PackageDownloadConfirmMessageBoxTitle, MessageBoxButton.OKCancel, MessageBoxImage.Question); @@ -1099,6 +1115,7 @@ public void GoToWebsite() Process.Start(sInfo); } } + } } diff --git a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchElementViewModel.cs b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchElementViewModel.cs index c91081b8ea0..fecf1340d3c 100644 --- a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchElementViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchElementViewModel.cs @@ -1,7 +1,10 @@ using System; using System.Collections.Generic; +using System.ComponentModel; using System.Diagnostics; using System.Linq; +using System.Windows; +using System.Windows.Data; using System.Windows.Input; using Dynamo.ViewModels; using Dynamo.Wpf.ViewModels; @@ -14,7 +17,6 @@ public class PackageManagerSearchElementViewModel : BrowserItemViewModel, IEquat { public ICommand DownloadLatestCommand { get; set; } public ICommand UpvoteCommand { get; set; } - public ICommand VisitSiteCommand { get; set; } public ICommand VisitRepositoryCommand { get; set; } public ICommand DownloadLatestToCustomPathCommand { get; set; } @@ -66,7 +68,39 @@ public class PackageManagerSearchElementViewModel : BrowserItemViewModel, IEquat /// /// The currently selected version of a package /// - public string SelectedVersion { get; set; } + private VersionInformation selectedVersion; + + public bool? IsSelectedVersionCompatible + { + get { return isSelectedVersionCompatible; } + set + { + if (isSelectedVersionCompatible != value) + { + isSelectedVersionCompatible = value; + RaisePropertyChanged(nameof(IsSelectedVersionCompatible)); + } + } + } + + /// + /// Keeps track of the currently selected package version in the UI + /// + public VersionInformation SelectedVersion + { + get { return selectedVersion; } + set + { + if (selectedVersion != value) + { + selectedVersion = value; + + // Update the compatibility info so the icon of the currently selected version is updated + IsSelectedVersionCompatible = selectedVersion.IsCompatible; + SearchElementModel.SelectedVersion = selectedVersion; + } + } + } /// /// Alternative constructor to assist communication between the @@ -83,14 +117,19 @@ public PackageManagerSearchElementViewModel(PackageManagerSearchElement element, CanInstall = install; IsEnabledForInstall = isEnabledForInstall; - this.SelectedVersion = this.SearchElementModel.LatestVersion; + // Attempts to show the latest compatible version. If no compatible, will return the latest instead. + this.SelectedVersion = this.SearchElementModel.LatestCompatibleVersion; + this.VersionInformationList = this.SearchElementModel.VersionDetails; + WeakEventManager + .AddHandler(this.SearchElementModel, nameof(INotifyPropertyChanged.PropertyChanged), OnSearchElementModelPropertyChanged); + this.ToggleIsExpandedCommand = new DelegateCommand(() => this.SearchElementModel.IsExpanded = !this.SearchElementModel.IsExpanded); this.DownloadLatestCommand = new DelegateCommand( - () => OnRequestDownload(SearchElementModel.Header.versions.First(x => x.version.Equals(SelectedVersion)), false), + () => OnRequestDownload(false), () => !SearchElementModel.IsDeprecated && CanInstall); - this.DownloadLatestToCustomPathCommand = new DelegateCommand(() => OnRequestDownload(SearchElementModel.Header.versions.First(x => x.version.Equals(SelectedVersion)), true)); + this.DownloadLatestToCustomPathCommand = new DelegateCommand(() => OnRequestDownload(true)); this.UpvoteCommand = new DelegateCommand(SearchElementModel.Upvote, () => canLogin); @@ -100,6 +139,19 @@ public PackageManagerSearchElementViewModel(PackageManagerSearchElement element, new DelegateCommand(() => GoToUrl(FormatUrl(SearchElementModel.RepositoryUrl)), () => !String.IsNullOrEmpty(SearchElementModel.RepositoryUrl)); } + private void OnSearchElementModelPropertyChanged(object sender, PropertyChangedEventArgs e) + { + if (e.PropertyName == nameof(SearchElementModel.LatestCompatibleVersion)) + { + this.SelectedVersion = this.SearchElementModel.LatestCompatibleVersion; + } + if (e.PropertyName == nameof(SearchElementModel.VersionDetails)) + { + this.VersionInformationList = this.SearchElementModel.VersionDetails; + } + } + + /// /// PackageManagerSearchElementViewModel Constructor (only used for testing in Dynamo). /// @@ -181,6 +233,9 @@ private static void GoToUrl(string url) } } + /// + /// A collection of key-value pairs to allow the download of specific package version + /// public List>> Versions { get @@ -193,8 +248,39 @@ public List>> Versions } } + private List versionInformationList; + + /// + /// A collection containing all package versions + /// + public List VersionInformationList + { + get { return versionInformationList; } + set + { + if (value != versionInformationList) + { + versionInformationList = value; + RaisePropertyChanged(nameof(VersionInformationList)); + } + } + } + + /// + /// Display the reversed version list - newest to oldest + /// + public ICollectionView ReversedVersionInformationList + { + get + { + var reversedList = VersionInformationList?.AsEnumerable().Reverse().ToList(); + return CollectionViewSource.GetDefaultView(reversedList); + } + } + private List CustomPackageFolders; - + private bool? isSelectedVersionCompatible; + public delegate void PackageSearchElementDownloadHandler( PackageManagerSearchElement element, PackageVersion version, string downloadPath = null); public event PackageSearchElementDownloadHandler RequestDownload; @@ -215,6 +301,24 @@ public void OnRequestDownload(PackageVersion version, bool downloadToCustomPath) RequestDownload(this.SearchElementModel, version, downloadPath); } + private void OnRequestDownload(bool downloadToCustomPath) + { + var version = this.SearchElementModel.Header.versions.First(x => x.version.Equals(SelectedVersion.Version)); + + string downloadPath = String.Empty; + + if (downloadToCustomPath) + { + downloadPath = GetDownloadPath(); + + if (String.IsNullOrEmpty(downloadPath)) + return; + } + + if (RequestDownload != null) + RequestDownload(this.SearchElementModel, version, downloadPath); + } + /// /// Comparator of two PackageManagerSearchElementViewModel based on package Id. /// Override for package results union. diff --git a/src/DynamoCoreWpf/Views/PackageManager/Controls/ControlColorsAndBrushes.xaml b/src/DynamoCoreWpf/Views/PackageManager/Controls/ControlColorsAndBrushes.xaml index a17172d23a1..a86afbed395 100644 --- a/src/DynamoCoreWpf/Views/PackageManager/Controls/ControlColorsAndBrushes.xaml +++ b/src/DynamoCoreWpf/Views/PackageManager/Controls/ControlColorsAndBrushes.xaml @@ -1,4 +1,5 @@ - @@ -6,56 +7,56 @@ - + #555 - + - + - - - + - + - + - + + + + + + + + + + + + + @@ -82,7 +124,7 @@ - + @@ -165,20 +203,16 @@ - + @@ -191,77 +225,94 @@ Margin="15,15,5,0" LastChildFill="False"> - - + + + + + + + + + + + + + + + + + - + + + - + + + - - - + Foreground="{StaticResource PMForegroundColorBrush}" + Text="{Binding Path=Model, Converter={StaticResource DateToPackageLabelTextConverter}}"> + + + + @@ -567,8 +564,9 @@ Margin="5,0" DockPanel.Dock="Left" Style="{StaticResource resultLabelStyle}" - Text="{Binding Hosts, Converter={StaticResource DependencyListToStringConverter}}" - Visibility="{Binding Path=Hosts, Converter={StaticResource ListHasMoreThanNItemsToVisibilityConverter}}" /> + Text="{Binding Hosts, Converter={StaticResource DependencyListToStringConverter}}" /> + + @@ -577,9 +575,62 @@ Margin="15,0,5,15" VerticalAlignment="Bottom" LastChildFill="True"> - + + + + + + + @@ -592,8 +643,10 @@ + + @@ -606,52 +659,28 @@ + + - - + StrokeThickness="1" /> - - - - - - - - - - - - - + - - - + + + @@ -693,211 +717,199 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -