diff --git a/doc/distrib/Samples/Data/DynamoSample_2022.rvt b/doc/distrib/Samples/Data/DynamoSample_2022.rvt deleted file mode 100644 index 0bd6e2a62ca..00000000000 Binary files a/doc/distrib/Samples/Data/DynamoSample_2022.rvt and /dev/null differ diff --git a/doc/distrib/Samples/Data/DynamoSample_2025.rvt b/doc/distrib/Samples/Data/DynamoSample_2025.rvt new file mode 100644 index 00000000000..7f2a267af4f Binary files /dev/null and b/doc/distrib/Samples/Data/DynamoSample_2025.rvt differ diff --git a/src/DynamoCoreWpf/Controls/ShortcutToolbar.xaml b/src/DynamoCoreWpf/Controls/ShortcutToolbar.xaml index 5cb110c3de7..46a4439fc81 100644 --- a/src/DynamoCoreWpf/Controls/ShortcutToolbar.xaml +++ b/src/DynamoCoreWpf/Controls/ShortcutToolbar.xaml @@ -216,7 +216,7 @@ diff --git a/src/DynamoCoreWpf/Controls/ShortcutToolbar.xaml.cs b/src/DynamoCoreWpf/Controls/ShortcutToolbar.xaml.cs index 043d9f46b03..39cd666fd9e 100644 --- a/src/DynamoCoreWpf/Controls/ShortcutToolbar.xaml.cs +++ b/src/DynamoCoreWpf/Controls/ShortcutToolbar.xaml.cs @@ -56,12 +56,17 @@ public ShortcutToolbar(DynamoViewModel dynamoViewModel) var shortcutToolbar = new ShortcutToolbarViewModel(dynamoViewModel); DataContext = shortcutToolbar; authManager = dynamoViewModel.Model.AuthenticationManager; - if (authManager.IsLoggedInInitial()) + if (authManager != null) { authManager.LoginStateChanged += AuthChangeHandler; - } - else { - logoutOption.Visibility = Visibility.Collapsed; + if (authManager.LoginState == LoginState.LoggedIn && loginMenu.Items.Count == 0) + { + loginMenu.Items.Add(logoutOption); + } + else + { + loginMenu.Items.Remove(logoutOption); + } } this.Loaded += ShortcutToolbar_Loaded; @@ -90,12 +95,17 @@ private void AuthChangeHandler(LoginState status) LoginButton.ToolTip = Wpf.Properties.Resources.SignInButtonContentToolTip; txtSignIn.Text = Wpf.Properties.Resources.SignInButtonText; logoutOption.Visibility = Visibility.Collapsed; + loginMenu.Items.Remove(logoutOption); } else if (status == LoginState.LoggedIn) { txtSignIn.Text = authManager.Username; - logoutOption.Visibility = Visibility.Visible; LoginButton.ToolTip = null; + if (loginMenu.Items.Count == 0) + { + loginMenu.Items.Add(logoutOption); + } + logoutOption.Visibility = Visibility.Visible; } } @@ -134,6 +144,18 @@ private void LoginButton_OnClick(object sender, RoutedEventArgs e) } } + private void LogoutOption_Click(object sender, RoutedEventArgs e) + { + if (authManager.LoginState == LoginState.LoggedIn) + { + var result = Wpf.Utilities.MessageBoxService.Show(Application.Current?.MainWindow, Wpf.Properties.Resources.SignOutConfirmationDialogText, Wpf.Properties.Resources.SignOutConfirmationDialogTitle,MessageBoxButton.OKCancel, new List() { "Sign Out", "Cancel"}, MessageBoxImage.Information); + if (result == MessageBoxResult.OK) + { + authManager.ToggleLoginState(null); + } + } + } + public List AllChildren(DependencyObject parent) { var _list = new List { }; diff --git a/src/DynamoCoreWpf/Properties/Resources.Designer.cs b/src/DynamoCoreWpf/Properties/Resources.Designer.cs index 1e7b36fd450..69d90d507e1 100644 --- a/src/DynamoCoreWpf/Properties/Resources.Designer.cs +++ b/src/DynamoCoreWpf/Properties/Resources.Designer.cs @@ -160,7 +160,7 @@ public static string AddToLibraryButton { } /// - /// Looks up a localized string similar to I would like to participate in data collection. + /// Looks up a localized string similar to I would like to participate in data collection for Machine Learning Programs. /// public static string AgreeToMLAutocompleteTOUText { get { @@ -2279,7 +2279,7 @@ public static string DynamoViewSettingMenuNumberFormat { } /// - /// Looks up a localized string similar to Agreement and _Terms of Use. + /// Looks up a localized string similar to Agreements for _Data Collection. /// public static string DynamoViewSettingMenuShowDataReportingDialog { get { @@ -2287,15 +2287,6 @@ public static string DynamoViewSettingMenuShowDataReportingDialog { } } - /// - /// Looks up a localized string similar to Display the dialog of agreement on data collecting and Machine Learning Node Autocomplete terms of use. - /// - public static string DynamoViewSettingMenuShowDataReportingDialogTooltip { - get { - return ResourceManager.GetString("DynamoViewSettingMenuShowDataReportingDialogTooltip", resourceCulture); - } - } - /// /// Looks up a localized string similar to Square Centimeter. /// @@ -5135,7 +5126,7 @@ public static string NotificationCenterButtonTooltip { } /// - /// Looks up a localized string similar to To access the Recommended Nodes feature, please read and accept Dynamo > Agreement and Terms of Use.. + /// Looks up a localized string similar to To access the Recommended Nodes feature, please read and accept Dynamo > Agreements for Data Collection.. /// public static string NotificationToAgreeMLNodeautocompleteTOU { get { @@ -7683,7 +7674,7 @@ public static string PreferencesViewShowPreviewBubbles { } /// - /// Looks up a localized string similar to Switchable only when the current workspace is in Manual run mode.. + /// Looks up a localized string similar to To preview the execution state of your graph, wires connected to ports that will be affected by a graph run are highlighted in orange. Available only when the current workspace is in Manual run mode.. /// public static string PreferencesViewShowRunPreviewTooltip { get { @@ -9192,6 +9183,24 @@ public static string SigningInButtonText { } } + /// + /// Looks up a localized string similar to Signing out of Dynamo will sign you out of all Autodesk desktop products.. + /// + public static string SignOutConfirmationDialogText { + get { + return ResourceManager.GetString("SignOutConfirmationDialogText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Sign out of Dynamo. + /// + public static string SignOutConfirmationDialogTitle { + get { + return ResourceManager.GetString("SignOutConfirmationDialogTitle", resourceCulture); + } + } + /// /// Looks up a localized string similar to Please update the permissions or go to Preferences >Node and Package Paths...' to change your default directory.. /// @@ -9962,7 +9971,7 @@ public static string UpdateMessage { } /// - /// Looks up a localized string similar to Agreement and Terms of Use. + /// Looks up a localized string similar to Agreements for Data Collection. /// public static string UsageReportPromptDialogTitle { get { diff --git a/src/DynamoCoreWpf/Properties/Resources.en-US.resx b/src/DynamoCoreWpf/Properties/Resources.en-US.resx index 53a702137cd..eca56492e8e 100644 --- a/src/DynamoCoreWpf/Properties/Resources.en-US.resx +++ b/src/DynamoCoreWpf/Properties/Resources.en-US.resx @@ -764,7 +764,7 @@ Don't worry, you'll have the option to save your work. Setting menu | Decimal inch - Agreement and _Terms of Use + Agreements for _Data Collection Dynamo menu | Show user agreement dialog about data collecting @@ -2220,10 +2220,10 @@ Installing the latest update requires Dynamo and any host applications to close. Do you want to install the latest Dynamo update? - Agreement and Terms of Use + Agreements for Data Collection - I would like to participate in data collection + I would like to participate in data collection for Machine Learning Programs Keep 1 input list's nesting @@ -2315,9 +2315,6 @@ Uninstall the following packages: {0}? Filter by - - Display the dialog of agreement on data collecting and Machine Learning Node Autocomplete terms of use - ..\ViewModels\Watch3D\compiledShaders\psDynamoMesh;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @@ -2592,7 +2589,7 @@ Do you wish to uninstall {1}? Restart {2} to complete the uninstall and try down Package/Library Search Paths - Switchable only when the current workspace is in Manual run mode. + To preview the execution state of your graph, wires connected to ports that will be affected by a graph run are highlighted in orange. Available only when the current workspace is in Manual run mode. Issues found @@ -3859,7 +3856,7 @@ In certain complex graphs or host program scenarios, Automatic mode may cause in Element Binding allows a two-way interaction between Dynamo and the host application like Revit or Civil3D where a user can select an element in the host document and have Dynamo "bind" that element to a node in the workspace. - To access the Recommended Nodes feature, please read and accept Dynamo > Agreement and Terms of Use. + To access the Recommended Nodes feature, please read and accept Dynamo > Agreements for Data Collection. Centimeters @@ -3882,4 +3879,10 @@ In certain complex graphs or host program scenarios, Automatic mode may cause in Millimeters + + Signing out of Dynamo will sign you out of all Autodesk desktop products. + + + Sign out of Dynamo + \ No newline at end of file diff --git a/src/DynamoCoreWpf/Properties/Resources.resx b/src/DynamoCoreWpf/Properties/Resources.resx index 767a569dbbb..a3df5d76d3e 100644 --- a/src/DynamoCoreWpf/Properties/Resources.resx +++ b/src/DynamoCoreWpf/Properties/Resources.resx @@ -487,7 +487,7 @@ Setting menu | Decimal inch - Agreement and _Terms of Use + Agreements for _Data Collection Dynamo menu | Show user agreement dialog about data collecting @@ -1151,10 +1151,10 @@ Don't worry, you'll have the option to save your work. Cancel - Agreement and Terms of Use + Agreements for Data Collection - I would like to participate in data collection + I would like to participate in data collection for Machine Learning Programs Clear @@ -2605,9 +2605,6 @@ Uninstall the following packages: {0}? Filter by - - Display the dialog of agreement on data collecting and Machine Learning Node Autocomplete terms of use - ..\ViewModels\Watch3D\compiledShaders\psDynamoMesh;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @@ -2880,7 +2877,7 @@ Do you wish to uninstall {1}? Restart {2} to complete the uninstall and try down Package/Library Search Paths - Switchable only when the current workspace is in Manual run mode. + To preview the execution state of your graph, wires connected to ports that will be affected by a graph run are highlighted in orange. Available only when the current workspace is in Manual run mode. Issues found @@ -3846,7 +3843,7 @@ In certain complex graphs or host program scenarios, Automatic mode may cause in Element Binding allows a two-way interaction between Dynamo and the host application like Revit or Civil3D where a user can select an element in the host document and have Dynamo "bind" that element to a node in the workspace. - To access the Recommended Nodes feature, please read and accept Dynamo > Agreement and Terms of Use. + To access the Recommended Nodes feature, please read and accept Dynamo > Agreements for Data Collection. Centimeters @@ -3869,4 +3866,10 @@ In certain complex graphs or host program scenarios, Automatic mode may cause in Millimeters + + Signing out of Dynamo will sign you out of all Autodesk desktop products. + + + Sign out of Dynamo + \ No newline at end of file diff --git a/src/DynamoCoreWpf/UI/Prompts/DynamoMessageBox.xaml.cs b/src/DynamoCoreWpf/UI/Prompts/DynamoMessageBox.xaml.cs index 6767be18120..c2d4617ae5e 100644 --- a/src/DynamoCoreWpf/UI/Prompts/DynamoMessageBox.xaml.cs +++ b/src/DynamoCoreWpf/UI/Prompts/DynamoMessageBox.xaml.cs @@ -272,6 +272,27 @@ internal static MessageBoxResult Show(string messageBoxText, string caption, Mes return dynamoMessageBox.CustomDialogResult; } + internal static MessageBoxResult Show(Window owner, string messageBoxText, string caption, MessageBoxButton button, IEnumerable buttonNames, + MessageBoxImage icon) + { + var dynamoMessageBox = new DynamoMessageBox + { + BodyText = messageBoxText, + TitleText = caption, + MessageBoxButton = button, + MessageBoxImage = icon + }; + + if (owner != null && owner.IsLoaded) + { + dynamoMessageBox.Owner = owner; + } + + dynamoMessageBox.ConfigureButtons(button, buttonNames); + dynamoMessageBox.ShowDialog(); + return dynamoMessageBox.CustomDialogResult; + } + public event PropertyChangedEventHandler PropertyChanged; /// diff --git a/src/DynamoCoreWpf/UI/Prompts/UsageReportingAgreementPrompt.xaml b/src/DynamoCoreWpf/UI/Prompts/UsageReportingAgreementPrompt.xaml index 52c113ddb5f..5318b2cf1cc 100644 --- a/src/DynamoCoreWpf/UI/Prompts/UsageReportingAgreementPrompt.xaml +++ b/src/DynamoCoreWpf/UI/Prompts/UsageReportingAgreementPrompt.xaml @@ -222,7 +222,7 @@ Grid.Row="4"> diff --git a/src/DynamoCoreWpf/Utilities/MessageBoxUtilities.cs b/src/DynamoCoreWpf/Utilities/MessageBoxUtilities.cs index a77304c0516..a96ebdb83aa 100644 --- a/src/DynamoCoreWpf/Utilities/MessageBoxUtilities.cs +++ b/src/DynamoCoreWpf/Utilities/MessageBoxUtilities.cs @@ -12,6 +12,7 @@ internal interface IMessageBox MessageBoxResult Show(string msg, string title, MessageBoxButton button, MessageBoxImage img); MessageBoxResult Show(string msg, string title, bool showRichTextBox, MessageBoxButton button, MessageBoxImage img); MessageBoxResult Show(Window owner,string msg, string title, MessageBoxButton button, MessageBoxImage img); + MessageBoxResult Show(Window owner, string msg, string title, MessageBoxButton button, IEnumerable buttonNames, MessageBoxImage img); MessageBoxResult Show(string msg, string title, MessageBoxButton button, IEnumerable buttonNames, MessageBoxImage img); } @@ -38,6 +39,11 @@ MessageBoxResult IMessageBox.Show(string msg, string title, MessageBoxButton but { return DynamoMessageBox.Show(msg, title, button,buttonNames, img); } + + MessageBoxResult IMessageBox.Show(Window owner, string msg, string title, MessageBoxButton button, IEnumerable buttonNames, MessageBoxImage img) + { + return DynamoMessageBox.Show(owner, msg, title, button, buttonNames, img); + } } private static IMessageBox msg_box; @@ -57,6 +63,10 @@ public static MessageBoxResult Show(Window owner,string msg, string title, Messa { return (msg_box ?? (msg_box = new DefaultMessageBox())).Show(owner,msg, title, button, img); } + public static MessageBoxResult Show(Window owner, string msg, string title, MessageBoxButton button, IEnumerable buttonNames, MessageBoxImage img) + { + return (msg_box ?? (msg_box = new DefaultMessageBox())).Show(owner, msg, title, button, buttonNames, img); + } public static MessageBoxResult Show(string msg, string title, MessageBoxButton button, IEnumerable buttonNames, MessageBoxImage img) { return (msg_box ?? (msg_box = new DefaultMessageBox())).Show(msg, title, button, buttonNames, img); diff --git a/src/DynamoCoreWpf/ViewModels/Menu/PreferencesViewModel.cs b/src/DynamoCoreWpf/ViewModels/Menu/PreferencesViewModel.cs index b884ce40de1..9e74bb37fdd 100644 --- a/src/DynamoCoreWpf/ViewModels/Menu/PreferencesViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/Menu/PreferencesViewModel.cs @@ -197,13 +197,14 @@ public string SelectedUnits if (UseHostScaleUnits && IsDynamoRevit) return; - var result = Enum.TryParse(selectedUnits, out Configurations.Units currentUnit); + var enUnit = LocalizedUnitsMap.FirstOrDefault(x => x.Key == selectedUnits).Value; + var result = Enum.TryParse(enUnit, out Configurations.Units currentUnit); if (!result) return; if (Configurations.SupportedUnits.TryGetValue(currentUnit, out double units)) { // Update preferences setting and update the grapic helpers - preferenceSettings.GraphicScaleUnit = value; + preferenceSettings.GraphicScaleUnit = currentUnit.ToString(); preferenceSettings.GridScaleFactor = (float)units; dynamoViewModel.UpdateGraphicHelpersScaleCommand.Execute(null); @@ -1291,6 +1292,12 @@ public bool importSettingsContent(string content) return setSettings(newPreferences); } + /// + /// The dictionary that contains the localized resource strings for Units. + /// This is done to avoid a breaking change that is storing the selected unit in settings file in english language. + /// + private Dictionary LocalizedUnitsMap; + /// /// Returns localized resource strings for Units /// @@ -1392,6 +1399,12 @@ public PreferencesViewModel(DynamoViewModel dynamoViewModel) LanguagesList = Configurations.SupportedLocaleDic.Keys.ToObservableCollection(); SelectedLanguage = Configurations.SupportedLocaleDic.FirstOrDefault(x => x.Value == preferenceSettings.Locale).Key; + LocalizedUnitsMap = new Dictionary(); + foreach (var unit in Configurations.SupportedUnits) + { + LocalizedUnitsMap.Add(GetLocalizedUnits(unit.Key), unit.Key.ToString()); + } + // Chose the scaling unit, if option is allowed by user UnitList = Configurations.SupportedUnits.Keys.Select(x => GetLocalizedUnits(x)).ToObservableCollection(); SelectedUnits = GetLocalizedUnits(Configurations.SupportedUnits.FirstOrDefault(x => x.Key.ToString() == preferenceSettings.GraphicScaleUnit).Key); diff --git a/src/DynamoCoreWpf/ViewModels/PackageManager/Docs/PublishPackageDocumentation.html b/src/DynamoCoreWpf/ViewModels/PackageManager/Docs/PublishPackageDocumentation.html index ce05375c9ba..e03a4a6459f 100644 --- a/src/DynamoCoreWpf/ViewModels/PackageManager/Docs/PublishPackageDocumentation.html +++ b/src/DynamoCoreWpf/ViewModels/PackageManager/Docs/PublishPackageDocumentation.html @@ -1,4 +1,4 @@ - @@ -162,11 +162,11 @@

What are packages?

Installing Dynamo packages

- You can browse and install packages in the Search for Packages tab of the Package Manager. Use the search field to locate specific packages. + You can browse and install packages in the Search for Packages tab of the Package Manager. Use the search field to locate specific packages. You can also apply filters and sorting to narrow down the list to meet your criteria, such as a host program or lack of dependencies.

- To view more information about a package, click View Details. This opens a panel where you can read a description of the package, find version and license information, and more. + To view more information about a package, click View Details. This opens a panel where you can read a description of the package, find version and license information, and more.

To install a package, click Install either in the search view or in the details panel. You can specify a version to install in the search view by clicking the drop-down and selecting a version; otherwise, the most recent version will be installed. @@ -177,10 +177,10 @@

Installing Dynamo packages

Publishing Dynamo Packages

- The Package Manager allows you to publish packages inside Dynamo. Open the Publish a Package tab to get started. + The Package Manager allows you to publish packages inside Dynamo. Open the Publish a Package tab to get started. The Publish a Package tab asks for all required and optional information related to the package that you want to publish.

- +

Adding package details

@@ -236,41 +236,44 @@

Adding package files

Add Files/Directory:
-

- Select and add all the files that are related to your package. Generally, the bin folder, binaries, and dependencies are added. - You can add individual files or folders. -

-

- After you’ve selected files or folders to add, you can view, remove, or add files on the Select Package Contents page. - You can view the folder structure of your selected files in the left panel, and the contents of each folder in the right panel. -

+

+ Select and add all the files that are related to your package. Generally, the bin folder, binaries, and dependencies are added. + You can add individual files or folders. +

+

+ After you’ve selected files or folders to add, you can view, remove, or add files on the Select Package Contents page. + You can view the folder structure of your selected files in the left panel, and the contents of each folder in the right panel. +

Select Node Libraries:
-

- Specify which of the files you added to the package are the node libraries by checking the box in the Node Library column. - Node libraries contain the types and methods that Dynamo will import as nodes. In general, you should mark any assembly as a node library which contains types you wish to import into Dynamo. - ZeroTouch, NodeModel, or NodeViewCustomization assemblies should be marked as a node library. -

-

- To load UI NodeViewCustomizations, they should be either defined in the same assembly that contains the corresponding NodeModel definitions OR defined in a separate assembly. - In either case, the assembly must be tagged as a node library. Currently, for assemblies marked as node library that contain NodeModel or NodeCustomization types, all other types will be ignored. For this reason, it is important to separate NodeModel/NodeViewCustomization types from types you wish to import using ZeroTouch import. -

+

+ Specify which of the files you added to the package are the node libraries by checking the box in the Node Library column. + Node libraries contain the types and methods that Dynamo will import as nodes. In general, you should mark any assembly as a node library which contains types you wish to import into Dynamo. + ZeroTouch, NodeModel, or NodeViewCustomization assemblies should be marked as a node library.

+ To load UI NodeViewCustomizations, they should be either defined in the same assembly that contains the corresponding NodeModel definitions OR defined in a separate assembly. + In either case, the assembly must be tagged as a node library. Currently, for assemblies marked as node library that contain NodeModel or NodeCustomization types, all other types will be ignored. For this reason, it is important to separate NodeModel/NodeViewCustomization types from types you wish to import using ZeroTouch import. +

+

+

Preview Package Contents:
- When you are satisfied with your package contents, click Next to see a preview of how the package files will be set up once they are published. - This page is view only; to make additional changes to the package contents, go back to the previous page. Click Finish to return to the package details page. + When you are satisfied with your package contents, click Next to see a preview of how the package files will be set up once they are published. + This page is view only; to make additional changes to the package contents, go back to the previous page. Click Finish to return to the package details page.

Add markdown file path (optional):
@@ -282,13 +285,13 @@

Adding package files


- +

Anti-virus Scans

- To provide a secure environment to all Dynamo package users, we have introduced anti-virus scans for new packages. - When a user uploads a package, it will be scanned for viruses and will only be available publicly once it has been flagged as safe. - The scan will happen during the package upload process and will not add to the usual duration of 10-15 minutes for the new package to be available online. - If your package is flagged as infected, the Package Manager search page will display a notification stating that the uploaded package has been found to be infected and won't be published online. + To provide a secure environment to all Dynamo package users, we have introduced anti-virus scans for new packages. + When a user uploads a package, it will be scanned for viruses and will only be available publicly once it has been flagged as safe. + The scan will happen during the package upload process and will not add to the usual duration of 10-15 minutes for the new package to be available online. + If your package is flagged as infected, the Package Manager search page will display a notification stating that the uploaded package has been found to be infected and won't be published online. To make the package publicly available, check the files included with the package and upload a new version through the Package Manager.

Managing your packages

@@ -299,4 +302,4 @@

Package Settings

You can view your package-related settings in the Package Settings tab of the Package Manager, including new package download paths and package/library search paths. To edit your settings, click the Preferences link in the Package Settings tab to access the Preferences panel.

- \ No newline at end of file + diff --git a/src/DynamoCoreWpf/ViewModels/Preview/WatchViewModel.cs b/src/DynamoCoreWpf/ViewModels/Preview/WatchViewModel.cs index a345fb9728c..733859f8db7 100644 --- a/src/DynamoCoreWpf/ViewModels/Preview/WatchViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/Preview/WatchViewModel.cs @@ -186,8 +186,11 @@ public bool IsCollection get { return isCollection; } set { - isCollection = value; - RaisePropertyChanged("IsCollection"); + if (isCollection != value) + { + isCollection = value; + RaisePropertyChanged(nameof(IsCollection)); + } } } @@ -199,8 +202,11 @@ public IEnumerable Levels get { return levels; } set { - levels = value; - RaisePropertyChanged("Levels"); + if (levels != value) + { + levels = value; + RaisePropertyChanged(nameof(Levels)); + } } } diff --git a/src/DynamoCoreWpf/ViewModels/Search/NodeAutoCompleteSearchViewModel.cs b/src/DynamoCoreWpf/ViewModels/Search/NodeAutoCompleteSearchViewModel.cs index 06c4efe9711..7a9a8ac03f8 100644 --- a/src/DynamoCoreWpf/ViewModels/Search/NodeAutoCompleteSearchViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/Search/NodeAutoCompleteSearchViewModel.cs @@ -374,7 +374,7 @@ internal void DisplayMachineLearningResults() if (viewModelElement != null) { - viewModelElement.AutoCompletionNodeMachineLearningInfo = new AutoCompletionNodeMachineLearningInfo(true, true, result.Score * 100); + viewModelElement.AutoCompletionNodeMachineLearningInfo = new AutoCompletionNodeMachineLearningInfo(true, true, Math.Round(result.Score * 100)); results.Add(viewModelElement); } } @@ -407,7 +407,7 @@ internal void DisplayMachineLearningResults() if (viewModelElement != null) { - viewModelElement.AutoCompletionNodeMachineLearningInfo = new AutoCompletionNodeMachineLearningInfo(true, true, result.Score * 100); + viewModelElement.AutoCompletionNodeMachineLearningInfo = new AutoCompletionNodeMachineLearningInfo(true, true, Math.Round(result.Score * 100)); results.Add(viewModelElement); } } diff --git a/src/DynamoCoreWpf/Views/Core/DynamoView.xaml b/src/DynamoCoreWpf/Views/Core/DynamoView.xaml index 82e8b72a55d..3824a34408b 100644 --- a/src/DynamoCoreWpf/Views/Core/DynamoView.xaml +++ b/src/DynamoCoreWpf/Views/Core/DynamoView.xaml @@ -306,9 +306,6 @@ Command="{Binding Path=ToggleIsAnalyticsReportingApprovedCommand, Source={x:Static service:UsageReportingManager.Instance} }" CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type controls:DynamoView}}}" Visibility="{Binding HideReportOptions, Converter={StaticResource InverseBoolToVisibilityCollapsedConverter}}"> - - - private void CloseButton_Click(object sender, RoutedEventArgs e) { - Analytics.TrackEvent(Actions.Close, Categories.PackageManager); - (this.Owner as DynamoView).EnableOverlayBlocker(false); + Analytics.TrackEvent(Actions.Close, Categories.PackageManager); Close(); } @@ -143,6 +142,7 @@ private void WindowClosed(object sender, EventArgs e) { this.packageManagerPublish?.Dispose(); this.packageManagerSearch?.Dispose(); + (this.Owner as DynamoView).EnableOverlayBlocker(false); if (PackageManagerViewModel == null) return; this.PackageManagerViewModel.PackageSearchViewModel.RequestShowFileDialog -= OnRequestShowFileDialog; diff --git a/src/DynamoCoreWpf/Views/PackageManager/Pages/PublishPackageSelectPage.xaml b/src/DynamoCoreWpf/Views/PackageManager/Pages/PublishPackageSelectPage.xaml index 77801747576..c60d7f6ab0e 100644 --- a/src/DynamoCoreWpf/Views/PackageManager/Pages/PublishPackageSelectPage.xaml +++ b/src/DynamoCoreWpf/Views/PackageManager/Pages/PublishPackageSelectPage.xaml @@ -583,6 +583,7 @@ + diff --git a/src/DynamoCoreWpf/Views/Preview/WatchTree.xaml b/src/DynamoCoreWpf/Views/Preview/WatchTree.xaml index 339ef8fec52..3e2a15b9904 100644 --- a/src/DynamoCoreWpf/Views/Preview/WatchTree.xaml +++ b/src/DynamoCoreWpf/Views/Preview/WatchTree.xaml @@ -389,24 +389,17 @@ BorderBrush="#D3D3D3" CornerRadius="0,0,2,2" BorderThickness="0"> - - - - - - - - - - - + + + + + + + + - + + + + + + + + + + + diff --git a/src/DynamoCoreWpf/Views/Preview/WatchTree.xaml.cs b/src/DynamoCoreWpf/Views/Preview/WatchTree.xaml.cs index d92655f9190..3b7ebe12b60 100644 --- a/src/DynamoCoreWpf/Views/Preview/WatchTree.xaml.cs +++ b/src/DynamoCoreWpf/Views/Preview/WatchTree.xaml.cs @@ -4,6 +4,7 @@ using Dynamo.ViewModels; using System; using CoreNodeModels; +using System.Linq; namespace Dynamo.Controls { @@ -68,7 +69,7 @@ private void _vm_PropertyChanged(object sender, System.ComponentModel.PropertyCh if (e.PropertyName == nameof(WatchViewModel.IsCollection)) { - // // The WatchTree controll will resize only if its role is a WatchNode (starts with an specific height), otherwise it won't resize (Bubble role). + // The WatchTree controll will resize only if its role is a WatchNode (starts with an specific height), otherwise it won't resize (Bubble role). if (!Double.IsNaN(this.Height)) { if (_vm.IsCollection) @@ -100,10 +101,13 @@ private void _vm_PropertyChanged(object sender, System.ComponentModel.PropertyCh { if (!_vm.Children[0].IsCollection) { - // We will use 7.5 as width factor for each character. + // if multiline string + if (NodeLabel.Contains(Environment.NewLine) || NodeLabel.Contains("\n")) + this.Height = defaultHeightSize; - double requiredWidth = (NodeLabel.Length * widthPerCharacter); - if (requiredWidth > (MaxWidthSize)) + // We will use 7.5 as width factor for each character. + double requiredWidth = NodeLabel.Length * widthPerCharacter; + if (requiredWidth > MaxWidthSize) { requiredWidth = MaxWidthSize; } @@ -123,6 +127,8 @@ private void _vm_PropertyChanged(object sender, System.ComponentModel.PropertyCh // Forcing not to display the Levels content when is being used for display info from another node like the Color Range this.ListLevelsDisplay.Visibility = Visibility.Hidden; this.ListLevelsDisplay.Height = 0; + // Hide resize grip + resizeThumb.Visibility = Visibility.Collapsed; } } } diff --git a/src/DynamoPackages/PackageManagerSearchElement.cs b/src/DynamoPackages/PackageManagerSearchElement.cs index c48b63ca4f6..784e3dc318b 100644 --- a/src/DynamoPackages/PackageManagerSearchElement.cs +++ b/src/DynamoPackages/PackageManagerSearchElement.cs @@ -36,7 +36,7 @@ public int Votes public string LatestVersion { get { return Header.versions != null ? Header.versions[Header.versions.Count - 1].version : String.Empty; } } public string LatestVersionCreated { get { return Header.versions[Header.versions.Count - 1].created; } } - public IEnumerable PackageVersions { get { return Header.versions.Select(x => x.version); } } + public IEnumerable PackageVersions { get { return Header.versions.OrderByDescending(x => x.version).Select(x => x.version); } } /// /// Hosts dependencies specified for latest version of particular package diff --git a/src/Tools/NodeDocumentationMarkdownGenerator/Commands/RenameCommand.cs b/src/Tools/NodeDocumentationMarkdownGenerator/Commands/RenameCommand.cs index 3d6a8f1ee69..88ec090c2b6 100644 --- a/src/Tools/NodeDocumentationMarkdownGenerator/Commands/RenameCommand.cs +++ b/src/Tools/NodeDocumentationMarkdownGenerator/Commands/RenameCommand.cs @@ -61,7 +61,7 @@ private static void RenameFile(string file) private static void RenameFile(string file, string baseName, string shortName) { - var content = File.ReadAllText(file); + var content = HttpUtility.UrlDecode(File.ReadAllText(file)); content = content.Replace(baseName, shortName); var path = Path.GetDirectoryName(file); var newFile = Path.Combine(path, shortName + ".md"); diff --git a/test/Libraries/SystemTestServices/SystemTestBase.cs b/test/Libraries/SystemTestServices/SystemTestBase.cs index 774a09abb68..24390bbf9e9 100644 --- a/test/Libraries/SystemTestServices/SystemTestBase.cs +++ b/test/Libraries/SystemTestServices/SystemTestBase.cs @@ -194,7 +194,8 @@ protected virtual void StartDynamo(TestSessionConfiguration testConfig) StartInTestMode = true, PathResolver = pathResolver, GeometryFactoryPath = preloader.GeometryFactoryPath, - ProcessMode = TaskProcessMode.Synchronous + ProcessMode = TaskProcessMode.Synchronous, + DynamoCorePath = testConfig.DynamoCorePath }); ViewModel = DynamoViewModel.Start( @@ -305,15 +306,29 @@ public void AssertPreviewCount(string guid, int count) Assert.AreEqual(count, data.GetElements().ToList().Count); } - public NodeModel GetNode(string guid) where T : NodeModel + /// + /// Returns the NodeModel corresponding to the input guid + /// + /// A NodeModel (or derived) type + /// The node Guid + /// + /// + [Obsolete("This method will be removed in a future version of Dynamo")] + public NodeModel GetNode(string guid) where T : class { + bool isNodeModel = typeof(T) == typeof(NodeModel); + bool isDerivedFromNodeModel = typeof(T).IsSubclassOf(typeof(NodeModel)); + if ( !isNodeModel && !isDerivedFromNodeModel) + { + throw new Exception($"{typeof(T)} is not of type NodeModel"); + } var allNodes = ViewModel.Model.CurrentWorkspace.Nodes; var nodes = allNodes.Where(x => string.CompareOrdinal(x.GUID.ToString(), guid) == 0); if (nodes.Count() < 1) return null; else if (nodes.Count() > 1) throw new Exception("There are more than one nodes with the same GUID!"); - return nodes.ElementAt(0) as T; + return nodes.ElementAt(0); } public object GetPreviewValue(string guid) diff --git a/test/Tools/NodeDocumentationMarkdownGeneratorTests/MarkdownGeneratorCommandTests.cs b/test/Tools/NodeDocumentationMarkdownGeneratorTests/MarkdownGeneratorCommandTests.cs index aa591f752ae..371a0afcce3 100644 --- a/test/Tools/NodeDocumentationMarkdownGeneratorTests/MarkdownGeneratorCommandTests.cs +++ b/test/Tools/NodeDocumentationMarkdownGeneratorTests/MarkdownGeneratorCommandTests.cs @@ -520,6 +520,62 @@ public void CanRenameFile() Assert.IsTrue(content.Contains("CoreNodeModels.HigherOrder.Map")); } + [Test] + public void CanRenameFileLongName() + { + // Arrange + var originalOutDirName = "fallback_docs"; + var filesDirectory = "LongNameFiles"; + var emptySpaceChar = "%20"; + var originalOutDir = new DirectoryInfo(Path.Combine(toolsTestFilesDirectory, originalOutDirName, filesDirectory)); + + tempDirectory = CreateTempOutputDirectory(); + Assert.That(tempDirectory.Exists); + + CopyFilesRecursively(originalOutDir, tempDirectory); + + var originalMdFile = tempDirectory.GetFiles("*.md", SearchOption.TopDirectoryOnly) + .Select(x => x.Name).FirstOrDefault(); + Assert.IsNotNull(originalMdFile); + + //Check that the original MD file contains space characters URL encoded + var originalMdFileContent = Path.Combine(tempDirectory.FullName, originalMdFile); + Assert.IsTrue(File.ReadAllText(originalMdFileContent).Contains(emptySpaceChar)); + + // Act + var opts = new RenameOptions + { + InputMdDirectory = tempDirectory.FullName, + MaxLength = 90 + }; + + //Rename all the files in the temp directory + RenameCommand.HandleRename(opts); + + // Assert + var finalMdFile = tempDirectory.GetFiles("*.md", SearchOption.TopDirectoryOnly) + .Select(x => x.Name).FirstOrDefault(); + Assert.IsNotNull(finalMdFile); + + var hashedName = Path.GetFileNameWithoutExtension(finalMdFile); + + //Validates that all the renamed files start with the hashed name + var allFiles = tempDirectory.GetFiles("*.*", SearchOption.TopDirectoryOnly).Select(x => x.Name); + foreach(var file in allFiles) + { + Assert.IsTrue(file.StartsWith(hashedName)); + } + + //Get the image file name renamed + var imageFile = tempDirectory.GetFiles("*.jpg", SearchOption.TopDirectoryOnly) + .Select(x => x.Name).FirstOrDefault(); + Assert.IsNotNull(imageFile); + + //Validates that the image file name is present inside the md file content. + var finalMdFileContent = Path.Combine(tempDirectory.FullName, finalMdFile); + Assert.IsTrue(File.ReadAllText(finalMdFileContent).Contains(imageFile)); + } + [Test] public void CanRenameFilesInADirectory() { diff --git a/test/Tools/docGeneratorTestFiles/fallback_docs/LongNameFiles/Autodesk.DesignScript.Geometry.CoordinateSystem.ByOriginVectors(origin, xAxis, yAxis, zAxis).dyn b/test/Tools/docGeneratorTestFiles/fallback_docs/LongNameFiles/Autodesk.DesignScript.Geometry.CoordinateSystem.ByOriginVectors(origin, xAxis, yAxis, zAxis).dyn new file mode 100644 index 00000000000..09737eb966d --- /dev/null +++ b/test/Tools/docGeneratorTestFiles/fallback_docs/LongNameFiles/Autodesk.DesignScript.Geometry.CoordinateSystem.ByOriginVectors(origin, xAxis, yAxis, zAxis).dyn @@ -0,0 +1,510 @@ +{ + "Uuid": "3c9d0464-8643-5ffe-96e5-ab1769818209", + "IsCustomNode": false, + "Description": "", + "Name": "ByOriginVectors", + "ElementResolver": { + "ResolutionMap": {} + }, + "Inputs": [], + "Outputs": [], + "Nodes": [ + { + "ConcreteType": "CoreNodeModels.Watch, CoreNodeModels", + "NodeType": "ExtensionNode", + "Id": "d86188a165304a8385aae4a9531e3672", + "Inputs": [ + { + "Id": "2d914730ea324f958e05f99ad7952c22", + "Name": "", + "Description": "Node to evaluate.", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Outputs": [ + { + "Id": "8620e90e3be94bf5a7b4b9f49e6278bb", + "Name": "", + "Description": "Watch contents.", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "Disabled", + "Description": "Visualize the output of node." + }, + { + "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore", + "NodeType": "CodeBlockNode", + "Code": "2;", + "Id": "72602684b1b64b16b05cabb5f77a6fbd", + "Inputs": [], + "Outputs": [ + { + "Id": "819b341b89d540fcaa862b8852010a32", + "Name": "", + "Description": "Value of expression at line 1", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "Disabled", + "Description": "Allows for DesignScript code to be authored directly" + }, + { + "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore", + "NodeType": "FunctionNode", + "FunctionSignature": "Autodesk.DesignScript.Geometry.Point.ByCoordinates@double,double,double", + "Id": "11569a47bcb346c2b834bfefb91a4f57", + "Inputs": [ + { + "Id": "6e5e58012cb44ce0a9d3a268ff89b2fb", + "Name": "x", + "Description": "double\nDefault value : 0", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "13aac907e6184fde9a22193bd1331c54", + "Name": "y", + "Description": "double\nDefault value : 0", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "02e941da59054ada87e616a7f9182e04", + "Name": "z", + "Description": "double\nDefault value : 0", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Outputs": [ + { + "Id": "704c425506fa41478db1cf48e07bfd19", + "Name": "Point", + "Description": "Point", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "Auto", + "Description": "Form a Point given 3 cartesian coordinates\n\nPoint.ByCoordinates (x: double = 0, y: double = 0, z: double = 0): Point" + }, + { + "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore", + "NodeType": "FunctionNode", + "FunctionSignature": "Autodesk.DesignScript.Geometry.Vector.ByCoordinates@double,double,double", + "Id": "337978e8b98c4d868e808205abf40de3", + "Inputs": [ + { + "Id": "8fc91f5adc894bca89899a3736dd164d", + "Name": "x", + "Description": "X coordinate\n\ndouble\nDefault value : 0", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "4b3c68dad3c94a1e92fb98540f756647", + "Name": "y", + "Description": "Y coordinate\n\ndouble\nDefault value : 0", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "44c159a2127e4f20be880f29b8894540", + "Name": "z", + "Description": "Z coordinate\n\ndouble\nDefault value : 0", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Outputs": [ + { + "Id": "94773d257847429fa2cabf6d55700157", + "Name": "Vector", + "Description": "Vector", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "Auto", + "Description": "Form a Vector by 3 Euclidean coordinates\n\nVector.ByCoordinates (x: double = 0, y: double = 0, z: double = 0): Vector" + }, + { + "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore", + "NodeType": "CodeBlockNode", + "Code": "2;", + "Id": "8fb6380247b448baab7de14761320dce", + "Inputs": [], + "Outputs": [ + { + "Id": "71f922a4e4d047e7a2a66a4041db6671", + "Name": "", + "Description": "Value of expression at line 1", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "Disabled", + "Description": "Allows for DesignScript code to be authored directly" + }, + { + "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore", + "NodeType": "FunctionNode", + "FunctionSignature": "Autodesk.DesignScript.Geometry.Vector.ByCoordinates@double,double,double", + "Id": "e39b5218a2f44902971414941f9e467c", + "Inputs": [ + { + "Id": "d123cdce221e438cb2c9aef37542f553", + "Name": "x", + "Description": "X coordinate\n\ndouble\nDefault value : 0", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "b01ec1f7aa144f7db8939579c30bace7", + "Name": "y", + "Description": "Y coordinate\n\ndouble\nDefault value : 0", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "110d806c342f4a919b19fc70e03bd2fe", + "Name": "z", + "Description": "Z coordinate\n\ndouble\nDefault value : 0", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Outputs": [ + { + "Id": "1d3f4f81f6844527949670ba45108901", + "Name": "Vector", + "Description": "Vector", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "Auto", + "Description": "Form a Vector by 3 Euclidean coordinates\n\nVector.ByCoordinates (x: double = 0, y: double = 0, z: double = 0): Vector" + }, + { + "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore", + "NodeType": "CodeBlockNode", + "Code": "1;", + "Id": "7cda1185b79e41a387895af30e7c0482", + "Inputs": [], + "Outputs": [ + { + "Id": "2fe031b178a74164963e60f44028e76f", + "Name": "", + "Description": "Value of expression at line 1", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "Disabled", + "Description": "Allows for DesignScript code to be authored directly" + }, + { + "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore", + "NodeType": "CodeBlockNode", + "Code": "2;", + "Id": "8f8f665e3cda49f280746e9cc1edcbd9", + "Inputs": [], + "Outputs": [ + { + "Id": "967420d1dd654b3a8c4f7e70973579e6", + "Name": "", + "Description": "Value of expression at line 1", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "Disabled", + "Description": "Allows for DesignScript code to be authored directly" + }, + { + "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore", + "NodeType": "FunctionNode", + "FunctionSignature": "Autodesk.DesignScript.Geometry.CoordinateSystem.ByOriginVectors@Autodesk.DesignScript.Geometry.Point,Autodesk.DesignScript.Geometry.Vector,Autodesk.DesignScript.Geometry.Vector,Autodesk.DesignScript.Geometry.Vector", + "Id": "d0e98bdb46bf4f9aba607fd9f281e12d", + "Inputs": [ + { + "Id": "449157f12d0241ecb65b4ff5c19b4e3b", + "Name": "origin", + "Description": "Point\nDefault value : Autodesk.DesignScript.Geometry.Point.ByCoordinates(0, 0, 0)", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "0057ba426303471d83ee80240fcf815e", + "Name": "xAxis", + "Description": "Vector\nDefault value : Autodesk.DesignScript.Geometry.Vector.ByCoordinates(1, 0, 0)", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "e73f1d3369c642728e51c7ec1888a159", + "Name": "yAxis", + "Description": "Vector\nDefault value : Autodesk.DesignScript.Geometry.Vector.ByCoordinates(0, 1, 0)", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "d33e35d449c8414dac81950181f822cb", + "Name": "zAxis", + "Description": "Vector\nDefault value : Autodesk.DesignScript.Geometry.Vector.ByCoordinates(0, 0, 1)", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Outputs": [ + { + "Id": "9943265af5c94c96bd7d14940ea1b11c", + "Name": "CoordinateSystem", + "Description": "CoordinateSystem", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "Auto", + "Description": "Create a CoordinateSystem at the origin with X and Y axis, with Z axis ignored completely. Input Vectors are normalized before creating the CoordinateSystem.\n\nCoordinateSystem.ByOriginVectors (origin: Point = Autodesk.DesignScript.Geometry.Point.ByCoordinates(0, 0, 0), xAxis: Vector = Autodesk.DesignScript.Geometry.Vector.ByCoordinates(1, 0, 0), yAxis: Vector = Autodesk.DesignScript.Geometry.Vector.ByCoordinates(0, 1, 0), zAxis: Vector = Autodesk.DesignScript.Geometry.Vector.ByCoordinates(0, 0, 1)): CoordinateSystem" + } + ], + "Connectors": [ + { + "Start": "819b341b89d540fcaa862b8852010a32", + "End": "6e5e58012cb44ce0a9d3a268ff89b2fb", + "Id": "bef92e12ff574562a166245b7dbfb3c9" + }, + { + "Start": "819b341b89d540fcaa862b8852010a32", + "End": "13aac907e6184fde9a22193bd1331c54", + "Id": "f9e4676b44184283849c472c63695a54" + }, + { + "Start": "819b341b89d540fcaa862b8852010a32", + "End": "02e941da59054ada87e616a7f9182e04", + "Id": "43679c54d4984d569715080408fba04d" + }, + { + "Start": "704c425506fa41478db1cf48e07bfd19", + "End": "449157f12d0241ecb65b4ff5c19b4e3b", + "Id": "47a90edd44d84f338b9ef652d7a1837f" + }, + { + "Start": "94773d257847429fa2cabf6d55700157", + "End": "0057ba426303471d83ee80240fcf815e", + "Id": "b6e7c4a4ba544895937711861176c969" + }, + { + "Start": "71f922a4e4d047e7a2a66a4041db6671", + "End": "4b3c68dad3c94a1e92fb98540f756647", + "Id": "8f6af2c5424646118e45a506f7991073" + }, + { + "Start": "71f922a4e4d047e7a2a66a4041db6671", + "End": "8fc91f5adc894bca89899a3736dd164d", + "Id": "90c2195d04cf4cee94fec7b0438364d0" + }, + { + "Start": "71f922a4e4d047e7a2a66a4041db6671", + "End": "44c159a2127e4f20be880f29b8894540", + "Id": "2f484952c70542b8b7930b4773f17e5e" + }, + { + "Start": "1d3f4f81f6844527949670ba45108901", + "End": "e73f1d3369c642728e51c7ec1888a159", + "Id": "4fb9aeb103d8493f9dbfbfb5a4cb9cbc" + }, + { + "Start": "2fe031b178a74164963e60f44028e76f", + "End": "d123cdce221e438cb2c9aef37542f553", + "Id": "5f45356ec5bb42a0888033679ee87e7f" + }, + { + "Start": "2fe031b178a74164963e60f44028e76f", + "End": "b01ec1f7aa144f7db8939579c30bace7", + "Id": "5f73fb8b1c3a4dc8af0bbbbc038b13c6" + }, + { + "Start": "967420d1dd654b3a8c4f7e70973579e6", + "End": "110d806c342f4a919b19fc70e03bd2fe", + "Id": "9c346312857643b3b6988c44b176d75b" + }, + { + "Start": "9943265af5c94c96bd7d14940ea1b11c", + "End": "2d914730ea324f958e05f99ad7952c22", + "Id": "7910c6e3d5b44768b6a8a46a05ae0e8c" + } + ], + "Dependencies": [], + "Bindings": [], + "View": { + "Dynamo": { + "ScaleFactor": 1.0, + "HasRunWithoutCrash": true, + "IsVisibleInDynamoLibrary": true, + "Version": "2.0.1.5055", + "RunType": "Automatic", + "RunPeriod": "1000" + }, + "Camera": { + "Name": "Background Preview", + "EyeX": 6.0688209533691406, + "EyeY": 4.51063346862793, + "EyeZ": 1.5671737194061279, + "LookX": -1.7978543043136597, + "LookY": -0.73139345645904541, + "LookZ": -0.85327517986297607, + "UpX": -0.12260746210813522, + "UpY": 0.99074780941009521, + "UpZ": -0.058190420269966125 + }, + "NodeViews": [ + { + "ShowGeometry": true, + "Name": "Watch", + "Id": "d86188a165304a8385aae4a9531e3672", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "X": 422.58728329119123, + "Y": 2743.52336605886 + }, + { + "ShowGeometry": true, + "Name": "Code Block", + "Id": "72602684b1b64b16b05cabb5f77a6fbd", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "X": -273.296648597838, + "Y": 2774.48698768449 + }, + { + "ShowGeometry": true, + "Name": "Point.ByCoordinates", + "Id": "11569a47bcb346c2b834bfefb91a4f57", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "X": -153.80384278826, + "Y": 2743.52336605886 + }, + { + "ShowGeometry": true, + "Name": "Vector.ByCoordinates", + "Id": "337978e8b98c4d868e808205abf40de3", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "X": -159.40384278826, + "Y": 2889.17375172643 + }, + { + "ShowGeometry": true, + "Name": "Code Block", + "Id": "8fb6380247b448baab7de14761320dce", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "X": -273.296648597838, + "Y": 2919.70486828047 + }, + { + "ShowGeometry": true, + "Name": "Vector.ByCoordinates", + "Id": "e39b5218a2f44902971414941f9e467c", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "X": -159.40384278826, + "Y": 3029.02831388662 + }, + { + "ShowGeometry": true, + "Name": "Code Block", + "Id": "7cda1185b79e41a387895af30e7c0482", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "X": -273.296648597838, + "Y": 3059.55943044066 + }, + { + "ShowGeometry": true, + "Name": "Code Block", + "Id": "8f8f665e3cda49f280746e9cc1edcbd9", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "X": -273.296648597838, + "Y": 3147.26707216241 + }, + { + "ShowGeometry": true, + "Name": "CoordinateSystem.ByOriginVectors", + "Id": "d0e98bdb46bf4f9aba607fd9f281e12d", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "X": 105.75058649383601, + "Y": 2743.52336605886 + } + ], + "Annotations": [], + "X": 335.52907871996149, + "Y": -2555.4960660888196, + "Zoom": 1.0332137540626696 + } +} \ No newline at end of file diff --git a/test/Tools/docGeneratorTestFiles/fallback_docs/LongNameFiles/Autodesk.DesignScript.Geometry.CoordinateSystem.ByOriginVectors(origin, xAxis, yAxis, zAxis).md b/test/Tools/docGeneratorTestFiles/fallback_docs/LongNameFiles/Autodesk.DesignScript.Geometry.CoordinateSystem.ByOriginVectors(origin, xAxis, yAxis, zAxis).md new file mode 100644 index 00000000000..36309cc701e --- /dev/null +++ b/test/Tools/docGeneratorTestFiles/fallback_docs/LongNameFiles/Autodesk.DesignScript.Geometry.CoordinateSystem.ByOriginVectors(origin, xAxis, yAxis, zAxis).md @@ -0,0 +1,10 @@ +## In Depth +`CoordinateSystem.ByOriginVectors (origin, xAxis, yAxis, zAxis)` returns a new CoordinateSystem at an input origin point with input X, Y, and Z axes. + +In the example below, the CoordinateSystem is placed at an origin with new vectors for the X, Y, and Z axes. The result is a CoordinateSystem rotated relative to the original CoordinateSystem. + +___ +## Example File + +![ByOriginVectors (origin, xAxis, yAxis, zAxis)](./Autodesk.DesignScript.Geometry.CoordinateSystem.ByOriginVectors(origin,%20xAxis,%20yAxis,%20zAxis)_img.jpg) + diff --git a/test/Tools/docGeneratorTestFiles/fallback_docs/LongNameFiles/Autodesk.DesignScript.Geometry.CoordinateSystem.ByOriginVectors(origin, xAxis, yAxis, zAxis)_img.jpg b/test/Tools/docGeneratorTestFiles/fallback_docs/LongNameFiles/Autodesk.DesignScript.Geometry.CoordinateSystem.ByOriginVectors(origin, xAxis, yAxis, zAxis)_img.jpg new file mode 100644 index 00000000000..74fa2ec1505 Binary files /dev/null and b/test/Tools/docGeneratorTestFiles/fallback_docs/LongNameFiles/Autodesk.DesignScript.Geometry.CoordinateSystem.ByOriginVectors(origin, xAxis, yAxis, zAxis)_img.jpg differ diff --git a/tools/NuGet/build_props/DynamoVisualProgramming.Tests.props b/tools/NuGet/build_props/DynamoVisualProgramming.Tests.props new file mode 100644 index 00000000000..b9be3bf82b4 --- /dev/null +++ b/tools/NuGet/build_props/DynamoVisualProgramming.Tests.props @@ -0,0 +1,9 @@ + + + + TestServices.dll.config + Always + True + + + diff --git a/tools/NuGet/build_props/TestServices.dll.config b/tools/NuGet/build_props/TestServices.dll.config new file mode 100644 index 00000000000..0d8d234ba38 --- /dev/null +++ b/tools/NuGet/build_props/TestServices.dll.config @@ -0,0 +1,7 @@ + + + + + + + diff --git a/tools/NuGet/template-nuget/DynamoVisualProgramming.Core.nuspec b/tools/NuGet/template-nuget/DynamoVisualProgramming.Core.nuspec index bd2127d8cd4..d4e0c3df2d1 100644 --- a/tools/NuGet/template-nuget/DynamoVisualProgramming.Core.nuspec +++ b/tools/NuGet/template-nuget/DynamoVisualProgramming.Core.nuspec @@ -10,27 +10,15 @@ content\images\logo.png false - Assemblies required to start a DynamoModel and execute DesignScript code. Contains the following files: - 1) DynamoApplications.dll - 2) DynamoCore.dll - 3) DynamoInstallDetective.dll - 4) DynamoShapeManager.dll - 5) DynamoUtilities.dll - 6) ProtoCore.dll - 7) DesignScriptBuiltin.dll - 8) VMDataBridge.dll - 9) DSCPython.dll - 10) DynamoPackages.dll + Assemblies required to reference core APIs from Dynamo. This package contains the core assemblies for Dynamo. Copyright Autodesk 2023 - - + - @@ -57,4 +45,4 @@ - + \ No newline at end of file diff --git a/tools/NuGet/template-nuget/DynamoVisualProgramming.DynamoCoreNodes.nuspec b/tools/NuGet/template-nuget/DynamoVisualProgramming.DynamoCoreNodes.nuspec index 26bcb36c694..1041a024aa8 100644 --- a/tools/NuGet/template-nuget/DynamoVisualProgramming.DynamoCoreNodes.nuspec +++ b/tools/NuGet/template-nuget/DynamoVisualProgramming.DynamoCoreNodes.nuspec @@ -10,13 +10,7 @@ content\images\logo.png false - Reference the core node types for Dynamo. It contains the following files: - 1) Analysis.dll - 2) GeometryColor.dll - 3) DSCoreNodes.dll - 4) CoreNodeModels.dll - 5) Watch3DNodeModels.dll - 6) UnitNodeModels.dll + Reference the core node types for Dynamo. Copyright Autodesk 2023 diff --git a/tools/NuGet/template-nuget/DynamoVisualProgramming.Tests.nuspec b/tools/NuGet/template-nuget/DynamoVisualProgramming.Tests.nuspec index 2e1ccddb92c..5b47ba3dfaf 100644 --- a/tools/NuGet/template-nuget/DynamoVisualProgramming.Tests.nuspec +++ b/tools/NuGet/template-nuget/DynamoVisualProgramming.Tests.nuspec @@ -9,23 +9,30 @@ https://github.com/DynamoDS/Dynamo content\images\logo.png false - Unit and system test infrastructure for Dynamo. It contains the following files: - 1) DynamoCoreTests.dll - 2) SystemTestServices.dll - 3) TestServices.dll + Unit and system test infrastructure for Dynamo. This package contains all that is required to get up and running creating tests for Dynamo libraries. Copyright Autodesk 2023 - + + + + + + + + + + + diff --git a/tools/NuGet/template-nuget/DynamoVisualProgramming.WpfUILibrary.nuspec b/tools/NuGet/template-nuget/DynamoVisualProgramming.WpfUILibrary.nuspec index 84a8254e081..f93449ba0fc 100644 --- a/tools/NuGet/template-nuget/DynamoVisualProgramming.WpfUILibrary.nuspec +++ b/tools/NuGet/template-nuget/DynamoVisualProgramming.WpfUILibrary.nuspec @@ -10,18 +10,10 @@ content\images\logo.png false - Build node libraries for Dynamo with custom UI in WPF. It contains the following files: - 1) DynamoCoreWpf.dll - 2) CoreNodeModelsWpf.dll + Build node libraries for Dynamo with custom UI in WPF. This package contains all that is required to get up and running building nodes for the Dynamo Visual Programming language with custom UI in WPF. Copyright Autodesk 2023 - - - - - - diff --git a/tools/NuGet/template-nuget/DynamoVisualProgramming.ZeroTouchLibrary.nuspec b/tools/NuGet/template-nuget/DynamoVisualProgramming.ZeroTouchLibrary.nuspec index b756cebe764..6d58e8088cf 100644 --- a/tools/NuGet/template-nuget/DynamoVisualProgramming.ZeroTouchLibrary.nuspec +++ b/tools/NuGet/template-nuget/DynamoVisualProgramming.ZeroTouchLibrary.nuspec @@ -9,9 +9,7 @@ https://github.com/DynamoDS/Dynamo content\images\logo.png false - Build zero touch node libraries for Dynamo. It contains the following files: - 1) DynamoUnits.dll - 2) ProtoGeometry.dll + Build zero touch node libraries for Dynamo. This package contains all that is required to get up and running building zero touch libraries for the Dynamo Visual Programming language. Copyright Autodesk 2023 @@ -29,4 +27,4 @@ - + \ No newline at end of file