From b6356b2024119e31d1e60469b91390db3aefb4c4 Mon Sep 17 00:00:00 2001 From: tanga Date: Fri, 28 Jun 2019 11:34:49 -0400 Subject: [PATCH 01/18] Intial Commit --- src/DynamoCore/DynamoCore.csproj | 4 +-- src/DynamoCore/packages.config | 2 +- src/DynamoCoreWpf/DynamoCoreWpf.csproj | 4 +-- .../PackageManagerSearchViewModel.cs | 28 ++++++++++++++++++- .../PackageManagerSearchView.xaml | 20 +++++++++++++ .../PackageManagerSearchView.xaml.cs | 19 +++++++++++++ src/DynamoPackages/DynamoPackages.csproj | 4 +-- src/DynamoPackages/PackageUploadBuilder.cs | 3 +- src/DynamoPackages/packages.config | 2 +- src/DynamoPackagesUI/DynamoPackagesUI.csproj | 4 +-- src/DynamoPackagesUI/packages.config | 2 +- .../LibraryViewExtension.csproj | 4 +-- src/LibraryViewExtension/packages.config | 2 +- test/DynamoCoreTests/DynamoCoreTests.csproj | 4 +-- test/DynamoCoreTests/packages.config | 2 +- .../DynamoCoreWpfTests.csproj | 4 +-- test/DynamoCoreWpfTests/packages.config | 2 +- .../PackageManagerTests.csproj | 4 +-- .../PackageManagerTests/packages.config | 2 +- 19 files changed, 91 insertions(+), 25 deletions(-) diff --git a/src/DynamoCore/DynamoCore.csproj b/src/DynamoCore/DynamoCore.csproj index ffd42b76dc7..4d24da8bf52 100644 --- a/src/DynamoCore/DynamoCore.csproj +++ b/src/DynamoCore/DynamoCore.csproj @@ -78,8 +78,8 @@ limitations under the License. ..\..\extern\Analytics.NET\Analytics.NET.Google.dll - - ..\packages\Greg.1.1.7040.19960\lib\net47\Greg.dll + + ..\packages\Greg.1.2.7117.20226\lib\net47\Greg.dll diff --git a/src/DynamoCore/packages.config b/src/DynamoCore/packages.config index 2c42b7c9a8c..74592d9432a 100644 --- a/src/DynamoCore/packages.config +++ b/src/DynamoCore/packages.config @@ -1,6 +1,6 @@  - + \ No newline at end of file diff --git a/src/DynamoCoreWpf/DynamoCoreWpf.csproj b/src/DynamoCoreWpf/DynamoCoreWpf.csproj index af4db5ad98f..a7ec620593b 100644 --- a/src/DynamoCoreWpf/DynamoCoreWpf.csproj +++ b/src/DynamoCoreWpf/DynamoCoreWpf.csproj @@ -50,8 +50,8 @@ ..\..\extern\FontAwesome\FontAwesome.WPF.dll - - ..\packages\Greg.1.1.7040.19960\lib\net47\Greg.dll + + ..\packages\Greg.1.2.7117.20226\lib\net47\Greg.dll ..\packages\HelixToolkit.2015.1.629\lib\portable-net4+sl4+wp71+win8\HelixToolkit.dll diff --git a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs index 99ac1b20ec4..126b7674811 100644 --- a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs @@ -36,6 +36,12 @@ public enum PackageSortingKey LastUpdate }; + /// + /// Package hosts, currently contains all Dynamo known ADSK hosts + /// with two options + /// + public List PackageHosts = new List() { "Advance Steel", "Alias", "Civil3D", "FormIt", "Revit"}; + public enum PackageSortingDirection { Ascending, @@ -64,6 +70,21 @@ public PackageSortingKey SortingKey } } + private List hostFilter; + + /// + /// The Filter to switch between host specific packages + /// or all packages + /// + protected List HostFilter + { + get => hostFilter; + set + { + hostFilter = value; + RaisePropertyChanged("HostFilter"); + } + } /// /// SortingDirection property @@ -253,6 +274,7 @@ internal PackageManagerSearchViewModel() SearchResults.CollectionChanged += SearchResultsOnCollectionChanged; SearchText = ""; SortingKey = PackageSortingKey.LastUpdate; + HostFilter = new List(); SortingDirection = PackageSortingDirection.Ascending; } @@ -750,13 +772,17 @@ internal IEnumerable Search(string query) { list = SearchDictionary.Search(query) .Select(x => new PackageManagerSearchElementViewModel(x, canLogin)) + // Filter packages based on current filter setting + .Where(x => x.Model.Header.host_dependencies.Contains(HostFilter.ToString())) .Take(MaxNumSearchResults).ToList(); } else { // with null query, don't show deprecated packages list = LastSync.Where(x => !x.IsDeprecated) - .Select(x => new PackageManagerSearchElementViewModel(x, canLogin)).ToList(); + .Select(x => new PackageManagerSearchElementViewModel(x, canLogin)) + .Where(x => x.Model.Header.host_dependencies.Contains(HostFilter.ToString())) + .ToList(); Sort(list, this.SortingKey); } diff --git a/src/DynamoCoreWpf/Views/PackageManager/PackageManagerSearchView.xaml b/src/DynamoCoreWpf/Views/PackageManager/PackageManagerSearchView.xaml index 0240a04a3da..b17f37898e7 100644 --- a/src/DynamoCoreWpf/Views/PackageManager/PackageManagerSearchView.xaml +++ b/src/DynamoCoreWpf/Views/PackageManager/PackageManagerSearchView.xaml @@ -4,6 +4,7 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:ui="clr-namespace:Dynamo.UI" + xmlns:fa="http://schemas.fontawesome.io/icons/" xmlns:p="clr-namespace:Dynamo.Wpf.Properties" xmlns:controls="clr-namespace:Dynamo.Controls" xmlns:viewModels="clr-namespace:Dynamo.PackageManager.ViewModels" @@ -127,6 +128,7 @@ + + + + /// TODO: mark private in Dynamo 3.0 + /// + /// + /// public void ItemStackPanel_MouseDown(object sender, RoutedEventArgs e) { var lbi = sender as StackPanel; @@ -60,6 +65,20 @@ private void OnSortButtonClicked(object sender, RoutedEventArgs e) OnShowContextMenuFromLeftClicked(sender, e); } + private void OnShowFilterContextMenuFromLeftClicked(object sender, RoutedEventArgs e) + { + var button = (System.Windows.Controls.Button)sender; + button.ContextMenu.DataContext = button.DataContext; + button.ContextMenu.PlacementTarget = button; + button.ContextMenu.Placement = PlacementMode.Bottom; + button.ContextMenu.IsOpen = true; + } + + private void OnFilterButtonClicked(object sender, RoutedEventArgs e) + { + OnShowFilterContextMenuFromLeftClicked(sender, e); + } + private void OnInstallLatestButtonDropDownClicked(object sender, RoutedEventArgs e) { OnShowContextMenuFromLeftClicked(sender, e); diff --git a/src/DynamoPackages/DynamoPackages.csproj b/src/DynamoPackages/DynamoPackages.csproj index 1d17477c44f..dfbdfa16d72 100644 --- a/src/DynamoPackages/DynamoPackages.csproj +++ b/src/DynamoPackages/DynamoPackages.csproj @@ -39,8 +39,8 @@ false - - ..\packages\Greg.1.1.7040.19960\lib\net47\Greg.dll + + ..\packages\Greg.1.2.7117.20226\lib\net47\Greg.dll ..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll diff --git a/src/DynamoPackages/PackageUploadBuilder.cs b/src/DynamoPackages/PackageUploadBuilder.cs index d99f757278c..59291137675 100644 --- a/src/DynamoPackages/PackageUploadBuilder.cs +++ b/src/DynamoPackages/PackageUploadBuilder.cs @@ -52,7 +52,8 @@ public static PackageUploadRequestBody NewRequestBody(Package package) return new PackageUploadRequestBody(package.Name, package.VersionName, package.Description, package.Keywords, package.License, package.Contents, PackageManagerClient.PackageEngineName, version, engineMetadata, package.Group, package.Dependencies, - package.SiteUrl, package.RepositoryUrl, package.ContainsBinaries, package.NodeLibraries.Select(x => x.FullName)); + package.SiteUrl, package.RepositoryUrl, package.ContainsBinaries, + package.NodeLibraries.Select(x => x.FullName), new List()); } diff --git a/src/DynamoPackages/packages.config b/src/DynamoPackages/packages.config index 2c42b7c9a8c..74592d9432a 100644 --- a/src/DynamoPackages/packages.config +++ b/src/DynamoPackages/packages.config @@ -1,6 +1,6 @@  - + \ No newline at end of file diff --git a/src/DynamoPackagesUI/DynamoPackagesUI.csproj b/src/DynamoPackagesUI/DynamoPackagesUI.csproj index b3acf4a2c90..66e4e1d00d3 100644 --- a/src/DynamoPackagesUI/DynamoPackagesUI.csproj +++ b/src/DynamoPackagesUI/DynamoPackagesUI.csproj @@ -33,8 +33,8 @@ 4 - - ..\packages\Greg.1.0.6176.18754\lib\net45\Greg.dll + + ..\packages\Greg.1.2.7117.20226\lib\net45\Greg.dll True diff --git a/src/DynamoPackagesUI/packages.config b/src/DynamoPackagesUI/packages.config index 7b01ab3646a..c9d0e6bcdf0 100644 --- a/src/DynamoPackagesUI/packages.config +++ b/src/DynamoPackagesUI/packages.config @@ -7,5 +7,5 @@ - + \ No newline at end of file diff --git a/src/LibraryViewExtension/LibraryViewExtension.csproj b/src/LibraryViewExtension/LibraryViewExtension.csproj index 37f774a3413..96c09b33b21 100644 --- a/src/LibraryViewExtension/LibraryViewExtension.csproj +++ b/src/LibraryViewExtension/LibraryViewExtension.csproj @@ -37,8 +37,8 @@ 4 - - ..\packages\Greg.1.1.7040.19960\lib\net47\Greg.dll + + ..\packages\Greg.1.2.7117.20226\lib\net47\Greg.dll False diff --git a/src/LibraryViewExtension/packages.config b/src/LibraryViewExtension/packages.config index a51ddf6b8c9..74ef066b3e7 100644 --- a/src/LibraryViewExtension/packages.config +++ b/src/LibraryViewExtension/packages.config @@ -4,7 +4,7 @@ - + \ No newline at end of file diff --git a/test/DynamoCoreTests/DynamoCoreTests.csproj b/test/DynamoCoreTests/DynamoCoreTests.csproj index 47d43440ab8..62707dd7bd6 100644 --- a/test/DynamoCoreTests/DynamoCoreTests.csproj +++ b/test/DynamoCoreTests/DynamoCoreTests.csproj @@ -45,8 +45,8 @@ False ..\..\extern\Analytics.NET\Analytics.NET.Core.dll - - ..\..\src\packages\Greg.1.1.7040.19960\lib\net47\Greg.dll + + ..\..\src\packages\Greg.1.2.7117.20226\lib\net47\Greg.dll diff --git a/test/DynamoCoreTests/packages.config b/test/DynamoCoreTests/packages.config index 2c42b7c9a8c..74592d9432a 100644 --- a/test/DynamoCoreTests/packages.config +++ b/test/DynamoCoreTests/packages.config @@ -1,6 +1,6 @@  - + \ No newline at end of file diff --git a/test/DynamoCoreWpfTests/DynamoCoreWpfTests.csproj b/test/DynamoCoreWpfTests/DynamoCoreWpfTests.csproj index 389ba2475cb..6aca8a83453 100644 --- a/test/DynamoCoreWpfTests/DynamoCoreWpfTests.csproj +++ b/test/DynamoCoreWpfTests/DynamoCoreWpfTests.csproj @@ -45,8 +45,8 @@ None - - ..\..\src\packages\Greg.1.1.7040.19960\lib\net47\Greg.dll + + ..\..\src\packages\Greg.1.2.7117.20226\lib\net47\Greg.dll ..\..\src\packages\HelixToolkit.2015.1.629\lib\portable-net4+sl4+wp71+win8\HelixToolkit.dll diff --git a/test/DynamoCoreWpfTests/packages.config b/test/DynamoCoreWpfTests/packages.config index 2c42b7c9a8c..74592d9432a 100644 --- a/test/DynamoCoreWpfTests/packages.config +++ b/test/DynamoCoreWpfTests/packages.config @@ -1,6 +1,6 @@  - + \ No newline at end of file diff --git a/test/Libraries/PackageManagerTests/PackageManagerTests.csproj b/test/Libraries/PackageManagerTests/PackageManagerTests.csproj index 3a84a4e447b..632c8639d1b 100644 --- a/test/Libraries/PackageManagerTests/PackageManagerTests.csproj +++ b/test/Libraries/PackageManagerTests/PackageManagerTests.csproj @@ -34,8 +34,8 @@ 4 - - ..\..\..\src\packages\Greg.1.1.7040.19960\lib\net47\Greg.dll + + ..\..\..\src\packages\Greg.1.2.7117.20226\lib\net47\Greg.dll ..\..\..\src\packages\Moq.4.2.1507.0118\lib\net40\Moq.dll diff --git a/test/Libraries/PackageManagerTests/packages.config b/test/Libraries/PackageManagerTests/packages.config index c64b7db0fb9..21c1f1120f2 100644 --- a/test/Libraries/PackageManagerTests/packages.config +++ b/test/Libraries/PackageManagerTests/packages.config @@ -1,6 +1,6 @@  - + From 2ebfd05c7626998c51bcf5bba7b3febd1a4bfb21 Mon Sep 17 00:00:00 2001 From: tanga Date: Mon, 1 Jul 2019 00:05:33 -0400 Subject: [PATCH 02/18] Add Context Menu UI binding --- .../PackageManagerSearchViewModel.cs | 50 +++++++++++++++---- .../PackageManagerSearchView.xaml | 18 ++++--- 2 files changed, 51 insertions(+), 17 deletions(-) diff --git a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs index 126b7674811..79b0e110357 100644 --- a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs @@ -37,10 +37,30 @@ public enum PackageSortingKey }; /// - /// Package hosts, currently contains all Dynamo known ADSK hosts - /// with two options + /// Package Manager filter entry /// - public List PackageHosts = new List() { "Advance Steel", "Alias", "Civil3D", "FormIt", "Revit"}; + public class FilterEntry + { + public string FilterName { get; set; } + + public DelegateCommand FilterCommand { get; set; } + + public FilterEntry(string filterName) + { + FilterName = filterName; + FilterCommand = new DelegateCommand(SetFilterHosts, CanSetFilterHosts); + } + + private bool CanSetFilterHosts(object arg) + { + return true; + } + + private void SetFilterHosts(object obj) + { + throw new NotImplementedException(); + } + } public enum PackageSortingDirection { @@ -70,13 +90,14 @@ public PackageSortingKey SortingKey } } - private List hostFilter; + private List hostFilter; + /// - /// The Filter to switch between host specific packages - /// or all packages + /// Filters for package hosts, currently contains all Dynamo known ADSK hosts + /// "Advance Steel", "Alias", "Civil3D", "FormIt", "Revit" /// - protected List HostFilter + public List HostFilter { get => hostFilter; set @@ -274,7 +295,16 @@ internal PackageManagerSearchViewModel() SearchResults.CollectionChanged += SearchResultsOnCollectionChanged; SearchText = ""; SortingKey = PackageSortingKey.LastUpdate; - HostFilter = new List(); + + // TODO: Replace this with Greg call to get the host list + HostFilter = new List + { + new FilterEntry ("Civil3D"), + new FilterEntry ("Advance Steel"), + new FilterEntry ("Alias"), + new FilterEntry ("Revit"), + new FilterEntry ("All") + }; SortingDirection = PackageSortingDirection.Ascending; } @@ -773,7 +803,7 @@ internal IEnumerable Search(string query) list = SearchDictionary.Search(query) .Select(x => new PackageManagerSearchElementViewModel(x, canLogin)) // Filter packages based on current filter setting - .Where(x => x.Model.Header.host_dependencies.Contains(HostFilter.ToString())) + //.Where(x => x.Model.Header.host_dependencies.Contains(HostFilter.ToString())) .Take(MaxNumSearchResults).ToList(); } else @@ -781,7 +811,7 @@ internal IEnumerable Search(string query) // with null query, don't show deprecated packages list = LastSync.Where(x => !x.IsDeprecated) .Select(x => new PackageManagerSearchElementViewModel(x, canLogin)) - .Where(x => x.Model.Header.host_dependencies.Contains(HostFilter.ToString())) + //.Where(x => x.Model.Header.host_dependencies.Contains(HostFilter.ToString())) .ToList(); Sort(list, this.SortingKey); } diff --git a/src/DynamoCoreWpf/Views/PackageManager/PackageManagerSearchView.xaml b/src/DynamoCoreWpf/Views/PackageManager/PackageManagerSearchView.xaml index b17f37898e7..d8e7890fc0c 100644 --- a/src/DynamoCoreWpf/Views/PackageManager/PackageManagerSearchView.xaml +++ b/src/DynamoCoreWpf/Views/PackageManager/PackageManagerSearchView.xaml @@ -182,13 +182,17 @@ TextElement.FontFamily="pack://application:,,,/FontAwesome.WPF;component/#FontAwesome" Style="{DynamicResource ResourceKey=STextButton}"> - - - - - - - + + + + From 54bd4596c7a63a5e6adc85808fd46f6ab730c405 Mon Sep 17 00:00:00 2001 From: tanga Date: Tue, 2 Jul 2019 13:29:53 -0400 Subject: [PATCH 03/18] Add Calls to get supported hosts --- src/DynamoCore/DynamoCore.csproj | 4 ++-- src/DynamoCore/packages.config | 2 +- src/DynamoCoreWpf/DynamoCoreWpf.csproj | 4 ++-- .../PackageManagerClientViewModel.cs | 2 +- .../PackageManagerSearchViewModel.cs | 2 +- src/DynamoPackages/DynamoPackages.csproj | 4 ++-- src/DynamoPackages/PackageManagerClient.cs | 14 ++++++++++++++ src/DynamoPackages/packages.config | 2 +- src/DynamoPackagesUI/DynamoPackagesUI.csproj | 4 ++-- src/DynamoPackagesUI/packages.config | 2 +- .../LibraryViewExtension.csproj | 4 ++-- src/LibraryViewExtension/packages.config | 2 +- test/DynamoCoreTests/DynamoCoreTests.csproj | 4 ++-- test/DynamoCoreTests/packages.config | 2 +- test/DynamoCoreWpfTests/DynamoCoreWpfTests.csproj | 4 ++-- test/DynamoCoreWpfTests/packages.config | 2 +- .../PackageManagerTests/PackageManagerTests.csproj | 4 ++-- test/Libraries/PackageManagerTests/packages.config | 2 +- 18 files changed, 39 insertions(+), 25 deletions(-) diff --git a/src/DynamoCore/DynamoCore.csproj b/src/DynamoCore/DynamoCore.csproj index 4d24da8bf52..b0045722688 100644 --- a/src/DynamoCore/DynamoCore.csproj +++ b/src/DynamoCore/DynamoCore.csproj @@ -78,8 +78,8 @@ limitations under the License. ..\..\extern\Analytics.NET\Analytics.NET.Google.dll - - ..\packages\Greg.1.2.7117.20226\lib\net47\Greg.dll + + ..\packages\Greg.1.2.7121.21318\lib\net47\Greg.dll diff --git a/src/DynamoCore/packages.config b/src/DynamoCore/packages.config index 74592d9432a..66bb0a7d424 100644 --- a/src/DynamoCore/packages.config +++ b/src/DynamoCore/packages.config @@ -1,6 +1,6 @@  - + \ No newline at end of file diff --git a/src/DynamoCoreWpf/DynamoCoreWpf.csproj b/src/DynamoCoreWpf/DynamoCoreWpf.csproj index a7ec620593b..273c3983b2e 100644 --- a/src/DynamoCoreWpf/DynamoCoreWpf.csproj +++ b/src/DynamoCoreWpf/DynamoCoreWpf.csproj @@ -50,8 +50,8 @@ ..\..\extern\FontAwesome\FontAwesome.WPF.dll - - ..\packages\Greg.1.2.7117.20226\lib\net47\Greg.dll + + ..\packages\Greg.1.2.7121.21318\lib\net47\Greg.dll ..\packages\HelixToolkit.2015.1.629\lib\portable-net4+sl4+wp71+win8\HelixToolkit.dll diff --git a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerClientViewModel.cs b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerClientViewModel.cs index 0bc286a6ee0..ec17f9ae45a 100644 --- a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerClientViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerClientViewModel.cs @@ -416,7 +416,7 @@ private void ShowNodePublishInfo(ICollection ListAll() { CachedPackageList = new List(); diff --git a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs index 79b0e110357..62a6600dfcb 100644 --- a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs @@ -58,7 +58,7 @@ private bool CanSetFilterHosts(object arg) private void SetFilterHosts(object obj) { - throw new NotImplementedException(); + return; } } diff --git a/src/DynamoPackages/DynamoPackages.csproj b/src/DynamoPackages/DynamoPackages.csproj index dfbdfa16d72..d9398e92587 100644 --- a/src/DynamoPackages/DynamoPackages.csproj +++ b/src/DynamoPackages/DynamoPackages.csproj @@ -39,8 +39,8 @@ false - - ..\packages\Greg.1.2.7117.20226\lib\net47\Greg.dll + + ..\packages\Greg.1.2.7121.21318\lib\net47\Greg.dll ..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll diff --git a/src/DynamoPackages/PackageManagerClient.cs b/src/DynamoPackages/PackageManagerClient.cs index 5168f60314f..35176ea3c59 100644 --- a/src/DynamoPackages/PackageManagerClient.cs +++ b/src/DynamoPackages/PackageManagerClient.cs @@ -89,6 +89,20 @@ internal IEnumerable ListAll() }, new List()); } + /// + /// Make a call to Package Manager to get the + /// supported hosts for package publishing and filtering + /// + internal IEnumerable GetSupportedHosts() + { + return FailFunc.TryExecute(() => + { + var hosts = new Hosts(); + var hostsResponse = this.client.ExecuteAndDeserializeWithContent>(hosts); + return hostsResponse.content; + }, new List()); + } + internal bool GetTermsOfUseAcceptanceStatus() { return ExecuteTermsOfUseCall(true); diff --git a/src/DynamoPackages/packages.config b/src/DynamoPackages/packages.config index 74592d9432a..66bb0a7d424 100644 --- a/src/DynamoPackages/packages.config +++ b/src/DynamoPackages/packages.config @@ -1,6 +1,6 @@  - + \ No newline at end of file diff --git a/src/DynamoPackagesUI/DynamoPackagesUI.csproj b/src/DynamoPackagesUI/DynamoPackagesUI.csproj index 66e4e1d00d3..147e2d7b95b 100644 --- a/src/DynamoPackagesUI/DynamoPackagesUI.csproj +++ b/src/DynamoPackagesUI/DynamoPackagesUI.csproj @@ -33,8 +33,8 @@ 4 - - ..\packages\Greg.1.2.7117.20226\lib\net45\Greg.dll + + ..\packages\Greg.1.2.7121.21318\lib\net45\Greg.dll True diff --git a/src/DynamoPackagesUI/packages.config b/src/DynamoPackagesUI/packages.config index c9d0e6bcdf0..492e1a24cdd 100644 --- a/src/DynamoPackagesUI/packages.config +++ b/src/DynamoPackagesUI/packages.config @@ -7,5 +7,5 @@ - + \ No newline at end of file diff --git a/src/LibraryViewExtension/LibraryViewExtension.csproj b/src/LibraryViewExtension/LibraryViewExtension.csproj index 96c09b33b21..d2e446e258d 100644 --- a/src/LibraryViewExtension/LibraryViewExtension.csproj +++ b/src/LibraryViewExtension/LibraryViewExtension.csproj @@ -37,8 +37,8 @@ 4 - - ..\packages\Greg.1.2.7117.20226\lib\net47\Greg.dll + + ..\packages\Greg.1.2.7121.21318\lib\net47\Greg.dll False diff --git a/src/LibraryViewExtension/packages.config b/src/LibraryViewExtension/packages.config index 74ef066b3e7..eb14fd169d2 100644 --- a/src/LibraryViewExtension/packages.config +++ b/src/LibraryViewExtension/packages.config @@ -4,7 +4,7 @@ - + \ No newline at end of file diff --git a/test/DynamoCoreTests/DynamoCoreTests.csproj b/test/DynamoCoreTests/DynamoCoreTests.csproj index 62707dd7bd6..30ca284ca30 100644 --- a/test/DynamoCoreTests/DynamoCoreTests.csproj +++ b/test/DynamoCoreTests/DynamoCoreTests.csproj @@ -45,8 +45,8 @@ False ..\..\extern\Analytics.NET\Analytics.NET.Core.dll - - ..\..\src\packages\Greg.1.2.7117.20226\lib\net47\Greg.dll + + ..\..\src\packages\Greg.1.2.7121.21318\lib\net47\Greg.dll diff --git a/test/DynamoCoreTests/packages.config b/test/DynamoCoreTests/packages.config index 74592d9432a..66bb0a7d424 100644 --- a/test/DynamoCoreTests/packages.config +++ b/test/DynamoCoreTests/packages.config @@ -1,6 +1,6 @@  - + \ No newline at end of file diff --git a/test/DynamoCoreWpfTests/DynamoCoreWpfTests.csproj b/test/DynamoCoreWpfTests/DynamoCoreWpfTests.csproj index 6aca8a83453..dd7489746cb 100644 --- a/test/DynamoCoreWpfTests/DynamoCoreWpfTests.csproj +++ b/test/DynamoCoreWpfTests/DynamoCoreWpfTests.csproj @@ -45,8 +45,8 @@ None - - ..\..\src\packages\Greg.1.2.7117.20226\lib\net47\Greg.dll + + ..\..\src\packages\Greg.1.2.7121.21318\lib\net47\Greg.dll ..\..\src\packages\HelixToolkit.2015.1.629\lib\portable-net4+sl4+wp71+win8\HelixToolkit.dll diff --git a/test/DynamoCoreWpfTests/packages.config b/test/DynamoCoreWpfTests/packages.config index 74592d9432a..66bb0a7d424 100644 --- a/test/DynamoCoreWpfTests/packages.config +++ b/test/DynamoCoreWpfTests/packages.config @@ -1,6 +1,6 @@  - + \ No newline at end of file diff --git a/test/Libraries/PackageManagerTests/PackageManagerTests.csproj b/test/Libraries/PackageManagerTests/PackageManagerTests.csproj index 632c8639d1b..614f03cb09c 100644 --- a/test/Libraries/PackageManagerTests/PackageManagerTests.csproj +++ b/test/Libraries/PackageManagerTests/PackageManagerTests.csproj @@ -34,8 +34,8 @@ 4 - - ..\..\..\src\packages\Greg.1.2.7117.20226\lib\net47\Greg.dll + + ..\..\..\src\packages\Greg.1.2.7121.21318\lib\net47\Greg.dll ..\..\..\src\packages\Moq.4.2.1507.0118\lib\net40\Moq.dll diff --git a/test/Libraries/PackageManagerTests/packages.config b/test/Libraries/PackageManagerTests/packages.config index 21c1f1120f2..b7bd66b8f15 100644 --- a/test/Libraries/PackageManagerTests/packages.config +++ b/test/Libraries/PackageManagerTests/packages.config @@ -1,6 +1,6 @@  - + From 843f978bada6d8f560226d50cc0087715da93a34 Mon Sep 17 00:00:00 2001 From: tanga Date: Mon, 8 Jul 2019 23:36:52 -0400 Subject: [PATCH 04/18] Some more code --- .../PackageManagerClientViewModel.cs | 7 +++- .../PackageManagerSearchViewModel.cs | 33 ++++++++++++++----- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerClientViewModel.cs b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerClientViewModel.cs index ec17f9ae45a..d018cd4e85a 100644 --- a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerClientViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerClientViewModel.cs @@ -416,7 +416,12 @@ private void ShowNodePublishInfo(ICollection ListAllHosts() + { + return Model.GetSupportedHosts() as List; + } + public List ListAll() { CachedPackageList = new List(); diff --git a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs index 62a6600dfcb..13d3135fb70 100644 --- a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs @@ -297,14 +297,15 @@ internal PackageManagerSearchViewModel() SortingKey = PackageSortingKey.LastUpdate; // TODO: Replace this with Greg call to get the host list - HostFilter = new List - { - new FilterEntry ("Civil3D"), - new FilterEntry ("Advance Steel"), - new FilterEntry ("Alias"), - new FilterEntry ("Revit"), - new FilterEntry ("All") - }; + HostFilter = new List(); + //HostFilter = new List + //{ + // new FilterEntry ("Civil3D"), + // new FilterEntry ("Advance Steel"), + // new FilterEntry ("Alias"), + // new FilterEntry ("Revit"), + // new FilterEntry ("All") + //}; SortingDirection = PackageSortingDirection.Ascending; } @@ -314,6 +315,7 @@ internal PackageManagerSearchViewModel() public PackageManagerSearchViewModel(PackageManagerClientViewModel client) : this() { this.PackageManagerClientViewModel = client; + HostFilter = GetHostsList(); PackageManagerClientViewModel.Downloads.CollectionChanged += DownloadsOnCollectionChanged; } @@ -344,6 +346,20 @@ public void Sort() this.SearchResults = temp; } + /// + /// + /// + public List GetHostsList() + { + var hostFilter = new List(); + foreach(var host in PackageManagerClientViewModel.ListAllHosts()) + { + hostFilter.Add(new FilterEntry(host)); + } + + return hostFilter; + } + /// /// Can search be performed. Used by the associated command /// @@ -453,6 +469,7 @@ public virtual void OnRequestShowFileDialog(object sender, PackagePathEventArgs /// public void Refresh() { + HostFilter = GetHostsList(); var pkgs = PackageManagerClientViewModel.ListAll(); pkgs.Sort((e1, e2) => e1.Name.ToLower().CompareTo(e2.Name.ToLower())); From a2f8100e92ba0b34eed3a82f5bce85e9caf121a7 Mon Sep 17 00:00:00 2001 From: tanga Date: Wed, 10 Jul 2019 01:47:33 -0400 Subject: [PATCH 05/18] Clean Up --- .../PackageManager/PackageManagerClientViewModel.cs | 5 ----- .../PackageManager/PackageManagerSearchViewModel.cs | 3 +-- src/DynamoPackages/PackageManagerClient.cs | 4 ++-- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerClientViewModel.cs b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerClientViewModel.cs index d018cd4e85a..0bc286a6ee0 100644 --- a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerClientViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerClientViewModel.cs @@ -417,11 +417,6 @@ private void ShowNodePublishInfo(ICollection ListAllHosts() - { - return Model.GetSupportedHosts() as List; - } - public List ListAll() { CachedPackageList = new List(); diff --git a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs index 13d3135fb70..2d26d02dac7 100644 --- a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs @@ -352,7 +352,7 @@ public void Sort() public List GetHostsList() { var hostFilter = new List(); - foreach(var host in PackageManagerClientViewModel.ListAllHosts()) + foreach(var host in PackageManagerClientViewModel.Model.GetKnownHosts()) { hostFilter.Add(new FilterEntry(host)); } @@ -469,7 +469,6 @@ public virtual void OnRequestShowFileDialog(object sender, PackagePathEventArgs /// public void Refresh() { - HostFilter = GetHostsList(); var pkgs = PackageManagerClientViewModel.ListAll(); pkgs.Sort((e1, e2) => e1.Name.ToLower().CompareTo(e2.Name.ToLower())); diff --git a/src/DynamoPackages/PackageManagerClient.cs b/src/DynamoPackages/PackageManagerClient.cs index 35176ea3c59..c76e503a807 100644 --- a/src/DynamoPackages/PackageManagerClient.cs +++ b/src/DynamoPackages/PackageManagerClient.cs @@ -90,10 +90,10 @@ internal IEnumerable ListAll() } /// - /// Make a call to Package Manager to get the + /// Make a call to Package Manager to get the known /// supported hosts for package publishing and filtering /// - internal IEnumerable GetSupportedHosts() + internal IEnumerable GetKnownHosts() { return FailFunc.TryExecute(() => { From bb491b94f777cb8bc08c1cca6a93779a0013552e Mon Sep 17 00:00:00 2001 From: tanga Date: Thu, 11 Jul 2019 15:03:03 -0400 Subject: [PATCH 06/18] Clean up --- .../PackageManagerSearchViewModel.cs | 23 ++++++++----------- src/DynamoPackages/Package.cs | 1 + .../PackageManagerSearchElement.cs | 5 ++++ 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs index 2d26d02dac7..f6dfcbe59e8 100644 --- a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs @@ -45,6 +45,10 @@ public class FilterEntry public DelegateCommand FilterCommand { get; set; } + /// + /// Constructor + /// + /// public FilterEntry(string filterName) { FilterName = filterName; @@ -295,17 +299,7 @@ internal PackageManagerSearchViewModel() SearchResults.CollectionChanged += SearchResultsOnCollectionChanged; SearchText = ""; SortingKey = PackageSortingKey.LastUpdate; - - // TODO: Replace this with Greg call to get the host list HostFilter = new List(); - //HostFilter = new List - //{ - // new FilterEntry ("Civil3D"), - // new FilterEntry ("Advance Steel"), - // new FilterEntry ("Alias"), - // new FilterEntry ("Revit"), - // new FilterEntry ("All") - //}; SortingDirection = PackageSortingDirection.Ascending; } @@ -315,7 +309,7 @@ internal PackageManagerSearchViewModel() public PackageManagerSearchViewModel(PackageManagerClientViewModel client) : this() { this.PackageManagerClientViewModel = client; - HostFilter = GetHostsList(); + HostFilter = InitializeHostFilter(); PackageManagerClientViewModel.Downloads.CollectionChanged += DownloadsOnCollectionChanged; } @@ -347,9 +341,10 @@ public void Sort() } /// - /// + /// Based on the known hosts received from back end, + /// initialize the host filter in Dynamo /// - public List GetHostsList() + public List InitializeHostFilter() { var hostFilter = new List(); foreach(var host in PackageManagerClientViewModel.Model.GetKnownHosts()) @@ -819,7 +814,7 @@ internal IEnumerable Search(string query) list = SearchDictionary.Search(query) .Select(x => new PackageManagerSearchElementViewModel(x, canLogin)) // Filter packages based on current filter setting - //.Where(x => x.Model.Header.host_dependencies.Contains(HostFilter.ToString())) + //.Where(x => x.Model.Hosts.Contains(HostFilter.ToString())) .Take(MaxNumSearchResults).ToList(); } else diff --git a/src/DynamoPackages/Package.cs b/src/DynamoPackages/Package.cs index 59aa8c283e5..659f3bfba38 100644 --- a/src/DynamoPackages/Package.cs +++ b/src/DynamoPackages/Package.cs @@ -164,6 +164,7 @@ public static Package FromJson(string headerPath, ILogger logger) if (body.name == null || body.version == null) throw new Exception("The header is missing a name or version field."); + // TODO: Add serialization part of hosts specified in package.json var pkg = new Package( Path.GetDirectoryName(headerPath), body.name, diff --git a/src/DynamoPackages/PackageManagerSearchElement.cs b/src/DynamoPackages/PackageManagerSearchElement.cs index 6bf491c7e24..b3d0ce9797f 100644 --- a/src/DynamoPackages/PackageManagerSearchElement.cs +++ b/src/DynamoPackages/PackageManagerSearchElement.cs @@ -42,6 +42,11 @@ public int Votes public string LatestVersion { get { return Header.versions[Header.versions.Count - 1].version; } } public string LatestVersionCreated { get { return Header.versions[Header.versions.Count - 1].created; } } + /// + /// Hosts particular package is for + /// + public List Hosts { get { return Header.host_dependencies; } } + /// /// Header property /// From 17de7c01fe3259bad7c40a911e196ecfc4f38c48 Mon Sep 17 00:00:00 2001 From: tanga Date: Thu, 11 Jul 2019 17:40:49 -0400 Subject: [PATCH 07/18] Package dependency Search --- .../PackageManagerSearchViewModel.cs | 107 ++++++++++++------ .../PackageManagerSearchView.xaml | 2 +- 2 files changed, 74 insertions(+), 35 deletions(-) diff --git a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs index f6dfcbe59e8..8bbdb8c4852 100644 --- a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs @@ -41,18 +41,32 @@ public enum PackageSortingKey /// public class FilterEntry { + /// + /// Name of the host + /// public string FilterName { get; set; } + /// + /// Filter entry click command + /// public DelegateCommand FilterCommand { get; set; } + /// + /// Private reference of PackageManagerSearchViewModel, + /// used in the FilterCommand to filter search results + /// + private PackageManagerSearchViewModel packageManagerSearchViewModel; + /// /// Constructor /// - /// - public FilterEntry(string filterName) + /// Filter name, same as host name + /// a reference of the PackageManagerSearchViewModel + public FilterEntry(string filterName, PackageManagerSearchViewModel pmSearchViewModel) { FilterName = filterName; FilterCommand = new DelegateCommand(SetFilterHosts, CanSetFilterHosts); + packageManagerSearchViewModel = pmSearchViewModel; } private bool CanSetFilterHosts(object arg) @@ -62,6 +76,8 @@ private bool CanSetFilterHosts(object arg) private void SetFilterHosts(object obj) { + packageManagerSearchViewModel.FilterHosts.Add(obj as string); + packageManagerSearchViewModel.SearchAndUpdateResults(); return; } } @@ -135,7 +151,7 @@ public string SearchBoxPrompt { get { - if(SearchState == PackageSearchState.Syncing) + if (SearchState == PackageSearchState.Syncing) { return Resources.PackageSearchViewSearchTextBoxSyncing; } @@ -153,7 +169,7 @@ public bool ShowSearchText { get { - if(SearchState == PackageSearchState.Syncing) + if (SearchState == PackageSearchState.Syncing) { return false; } @@ -253,7 +269,10 @@ public PackageSearchState SearchState /// public PackageManagerClientViewModel PackageManagerClientViewModel { get; private set; } - + /// + /// Current selected filter hosts + /// + public List FilterHosts { get; set; } private SearchDictionary SearchDictionary; @@ -285,7 +304,7 @@ public ObservableCollection Downloads get { return PackageManagerClientViewModel.Downloads; } } -#endregion Properties & Fields + #endregion Properties & Fields internal PackageManagerSearchViewModel() { @@ -300,6 +319,7 @@ internal PackageManagerSearchViewModel() SearchText = ""; SortingKey = PackageSortingKey.LastUpdate; HostFilter = new List(); + FilterHosts = new List(); SortingDirection = PackageSortingDirection.Ascending; } @@ -347,9 +367,9 @@ public void Sort() public List InitializeHostFilter() { var hostFilter = new List(); - foreach(var host in PackageManagerClientViewModel.Model.GetKnownHosts()) + foreach (var host in PackageManagerClientViewModel.Model.GetKnownHosts()) { - hostFilter.Add(new FilterEntry(host)); + hostFilter.Add(new FilterEntry(host, this)); } return hostFilter; @@ -409,16 +429,16 @@ public void SetSortingKey(object sortingKey) { if (sortingKey is string) { - var key = (string) sortingKey; + var key = (string)sortingKey; if (key == "NAME") { this.SortingKey = PackageSortingKey.Name; - } + } else if (key == "DOWNLOADS") { this.SortingKey = PackageSortingKey.Downloads; - } + } else if (key == "MAINTAINERS") { this.SortingKey = PackageSortingKey.Maintainers; @@ -426,16 +446,16 @@ public void SetSortingKey(object sortingKey) else if (key == "LAST_UPDATE") { this.SortingKey = PackageSortingKey.LastUpdate; - } + } else if (key == "VOTES") { this.SortingKey = PackageSortingKey.Votes; } - } + } else if (sortingKey is PackageSortingKey) { - this.SortingKey = (PackageSortingKey) sortingKey; + this.SortingKey = (PackageSortingKey)sortingKey; } this.Sort(); @@ -526,11 +546,11 @@ private void ClearSearchResults() this.SearchResults.Clear(); } - + private string JoinPackageNames(IEnumerable pkgs) { return String.Join(", ", pkgs.Select(x => x.Name)); - } + } private void PackageOnExecuted(PackageManagerSearchElement element, PackageVersion version, string downloadPath) { @@ -538,7 +558,7 @@ private void PackageOnExecuted(PackageManagerSearchElement element, PackageVersi String.Format(Resources.MessageConfirmToInstallPackage, element.Name, version.version) : String.Format(Resources.MessageConfirmToInstallPackageToFolder, element.Name, version.version, downloadPath); - var result = MessageBox.Show(msg, + var result = MessageBox.Show(msg, Resources.PackageDownloadConfirmMessageBoxTitle, MessageBoxButton.OKCancel, MessageBoxImage.Question); @@ -642,7 +662,7 @@ private void PackageOnExecuted(PackageManagerSearchElement element, PackageVersi MessageBox.Show(String.Format(Resources.MessageUninstallToContinue, PackageManagerClientViewModel.DynamoViewModel.BrandingResourceProvider.ProductName, JoinPackageNames(uninstallRequiringUserModifications)), - Resources.CannotDownloadPackageMessageBoxTitle, + Resources.CannotDownloadPackageMessageBoxTitle, MessageBoxButton.OK, MessageBoxImage.Error); return; } @@ -655,7 +675,7 @@ private void PackageOnExecuted(PackageManagerSearchElement element, PackageVersi PackageManagerClientViewModel.DynamoViewModel.BrandingResourceProvider.ProductName, JoinPackageNames(uninstallsRequiringRestart), element.Name + " " + version.version); - var dialogResult = MessageBox.Show(message, + var dialogResult = MessageBox.Show(message, Resources.CannotDownloadPackageMessageBoxTitle, MessageBoxButton.YesNo, MessageBoxImage.Error); @@ -670,10 +690,10 @@ private void PackageOnExecuted(PackageManagerSearchElement element, PackageVersi if (immediateUninstalls.Any()) { // if the package is not in use, tell the user we will be uninstall it and give them the opportunity to cancel - if (MessageBox.Show(String.Format(Resources.MessageAlreadyInstallDynamo, + if (MessageBox.Show(String.Format(Resources.MessageAlreadyInstallDynamo, PackageManagerClientViewModel.DynamoViewModel.BrandingResourceProvider.ProductName, JoinPackageNames(immediateUninstalls)), - Resources.DownloadWarningMessageBoxTitle, + Resources.DownloadWarningMessageBoxTitle, MessageBoxButton.OKCancel, MessageBoxImage.Warning) == MessageBoxResult.Cancel) return; } @@ -708,7 +728,7 @@ private void DownloadsOnCollectionChanged(object sender, NotifyCollectionChanged { foreach (var item in args.NewItems) { - var handle = (PackageDownloadHandle) item; + var handle = (PackageDownloadHandle)item; handle.PropertyChanged += (o, eventArgs) => this.ClearCompletedCommand.RaiseCanExecuteChanged(); } } @@ -725,7 +745,7 @@ private void DownloadsOnCollectionChanged(object sender, NotifyCollectionChanged private void SearchResultsOnCollectionChanged(object sender, NotifyCollectionChangedEventArgs args) { this.RaisePropertyChanged("HasNoResults"); - } + } public void ClearCompleted() { @@ -737,7 +757,7 @@ public bool CanClearCompleted() if (PackageManagerClientViewModel == null) return false; return PackageManagerClientViewModel.Downloads - .Any(x => x.DownloadState == PackageDownloadHandle.State.Installed + .Any(x => x.DownloadState == PackageDownloadHandle.State.Installed || x.DownloadState == PackageDownloadHandle.State.Error); } @@ -811,19 +831,39 @@ internal IEnumerable Search(string query) if (!String.IsNullOrEmpty(query)) { - list = SearchDictionary.Search(query) - .Select(x => new PackageManagerSearchElementViewModel(x, canLogin)) - // Filter packages based on current filter setting - //.Where(x => x.Model.Hosts.Contains(HostFilter.ToString())) - .Take(MaxNumSearchResults).ToList(); + if (FilterHosts.Count == 0) + { + list = SearchDictionary.Search(query) + .Select(x => new PackageManagerSearchElementViewModel(x, canLogin)) + .Take(MaxNumSearchResults).ToList(); + } + else + { + list = SearchDictionary.Search(query) + .Select(x => new PackageManagerSearchElementViewModel(x, canLogin)) + // Filter packages based on current filter setting + .Where(x => x.Model.Hosts != null && x.Model.Hosts.Contains(FilterHosts.First())) + .Take(MaxNumSearchResults).ToList(); + } } else { - // with null query, don't show deprecated packages - list = LastSync.Where(x => !x.IsDeprecated) + if (FilterHosts.Count == 0) + { + // with null query, don't show deprecated packages + list = LastSync.Where(x => !x.IsDeprecated) .Select(x => new PackageManagerSearchElementViewModel(x, canLogin)) - //.Where(x => x.Model.Header.host_dependencies.Contains(HostFilter.ToString())) .ToList(); + + } + else + { + // with null query, don't show deprecated packages + list = LastSync.Where(x => !x.IsDeprecated) + .Select(x => new PackageManagerSearchElementViewModel(x, canLogin)) + .Where(x => x.Model.Hosts != null && x.Model.Hosts.Contains(FilterHosts.First())) + .ToList(); + } Sort(list, this.SortingKey); } @@ -833,7 +873,6 @@ internal IEnumerable Search(string query) return list; } - /// /// Sort a list of search results by the given key /// @@ -896,6 +935,6 @@ public void ExecuteSelected() SearchResults[SelectedIndex].Model.Execute(); } - + } } diff --git a/src/DynamoCoreWpf/Views/PackageManager/PackageManagerSearchView.xaml b/src/DynamoCoreWpf/Views/PackageManager/PackageManagerSearchView.xaml index d8e7890fc0c..65f69e607c2 100644 --- a/src/DynamoCoreWpf/Views/PackageManager/PackageManagerSearchView.xaml +++ b/src/DynamoCoreWpf/Views/PackageManager/PackageManagerSearchView.xaml @@ -188,9 +188,9 @@ DisplayMemberPath="FilterName"> From c8975e209240f0b9f25dff201f035129ff0749f8 Mon Sep 17 00:00:00 2001 From: tanga Date: Fri, 12 Jul 2019 00:06:28 -0400 Subject: [PATCH 08/18] Add unfilter support --- .../PackageManagerSearchViewModel.cs | 18 ++++++++++++++++-- .../PackageManagerSearchView.xaml | 1 + 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs index 8bbdb8c4852..52abbc833d9 100644 --- a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs @@ -51,6 +51,11 @@ public class FilterEntry /// public DelegateCommand FilterCommand { get; set; } + /// + /// If the Filter entry is checked + /// + public bool OnChecked { get; set; } + /// /// Private reference of PackageManagerSearchViewModel, /// used in the FilterCommand to filter search results @@ -67,6 +72,7 @@ public FilterEntry(string filterName, PackageManagerSearchViewModel pmSearchView FilterName = filterName; FilterCommand = new DelegateCommand(SetFilterHosts, CanSetFilterHosts); packageManagerSearchViewModel = pmSearchViewModel; + OnChecked = false; } private bool CanSetFilterHosts(object arg) @@ -76,8 +82,16 @@ private bool CanSetFilterHosts(object arg) private void SetFilterHosts(object obj) { - packageManagerSearchViewModel.FilterHosts.Add(obj as string); - packageManagerSearchViewModel.SearchAndUpdateResults(); + if (OnChecked) + { + packageManagerSearchViewModel.FilterHosts.Add(obj as string); + packageManagerSearchViewModel.SearchAndUpdateResults(); + } + else + { + packageManagerSearchViewModel.FilterHosts.Remove(obj as string); + packageManagerSearchViewModel.SearchAndUpdateResults(); + } return; } } diff --git a/src/DynamoCoreWpf/Views/PackageManager/PackageManagerSearchView.xaml b/src/DynamoCoreWpf/Views/PackageManager/PackageManagerSearchView.xaml index 65f69e607c2..b3f166d2580 100644 --- a/src/DynamoCoreWpf/Views/PackageManager/PackageManagerSearchView.xaml +++ b/src/DynamoCoreWpf/Views/PackageManager/PackageManagerSearchView.xaml @@ -191,6 +191,7 @@ + From 16546308f25bc86394fc1b585dc33cb1b0176003 Mon Sep 17 00:00:00 2001 From: tanga Date: Fri, 12 Jul 2019 02:38:23 -0400 Subject: [PATCH 09/18] Code Clean up and more elegent filter code --- .../PackageManagerSearchViewModel.cs | 121 ++++++++++-------- 1 file changed, 70 insertions(+), 51 deletions(-) diff --git a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs index 52abbc833d9..d6fd2ce1f10 100644 --- a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs @@ -19,6 +19,10 @@ namespace Dynamo.PackageManager { public class PackageManagerSearchViewModel : NotificationObject { + #region enums + /// + /// Enum for the Package search state + /// public enum PackageSearchState { Syncing, @@ -27,6 +31,9 @@ public enum PackageSearchState Results }; + /// + /// Enum for the Package sort key, utilized by sorting context menu + /// public enum PackageSortingKey { Name, @@ -37,7 +44,17 @@ public enum PackageSortingKey }; /// - /// Package Manager filter entry + /// Enum for the Package sort direction, utilized by sorting context menu + /// + public enum PackageSortingDirection + { + Ascending, + Descending + }; + #endregion enums + + /// + /// Package Manager filter entry, binded to the host filter context menu /// public class FilterEntry { @@ -47,12 +64,15 @@ public class FilterEntry public string FilterName { get; set; } /// - /// Filter entry click command + /// Filter entry click command, notice this is a dynamic command + /// with command param set to FilterName so that the code is robust + /// in a way UI could handle as many hosts as possible /// public DelegateCommand FilterCommand { get; set; } /// - /// If the Filter entry is checked + /// Boolean indicates if the Filter entry is checked, data binded to + /// is checked property of each filter /// public bool OnChecked { get; set; } @@ -60,48 +80,51 @@ public class FilterEntry /// Private reference of PackageManagerSearchViewModel, /// used in the FilterCommand to filter search results /// - private PackageManagerSearchViewModel packageManagerSearchViewModel; + private PackageManagerSearchViewModel pmSearchViewModel; /// /// Constructor /// /// Filter name, same as host name /// a reference of the PackageManagerSearchViewModel - public FilterEntry(string filterName, PackageManagerSearchViewModel pmSearchViewModel) + public FilterEntry(string filterName, PackageManagerSearchViewModel packageManagerSearchViewModel) { FilterName = filterName; FilterCommand = new DelegateCommand(SetFilterHosts, CanSetFilterHosts); - packageManagerSearchViewModel = pmSearchViewModel; + pmSearchViewModel = packageManagerSearchViewModel; OnChecked = false; } + /// + /// Each filter is enabled for now, we may enable more smartly in the future + /// + /// + /// private bool CanSetFilterHosts(object arg) { return true; } + /// + /// This function will adjust the SelectedHosts in the SearchViewModel + /// Affecting search results globally + /// + /// private void SetFilterHosts(object obj) { if (OnChecked) { - packageManagerSearchViewModel.FilterHosts.Add(obj as string); - packageManagerSearchViewModel.SearchAndUpdateResults(); + pmSearchViewModel.SelectedHosts.Add(obj as string); } else { - packageManagerSearchViewModel.FilterHosts.Remove(obj as string); - packageManagerSearchViewModel.SearchAndUpdateResults(); + pmSearchViewModel.SelectedHosts.Remove(obj as string); } + pmSearchViewModel.SearchAndUpdateResults(); return; } } - public enum PackageSortingDirection - { - Ascending, - Descending - }; - #region Properties & Fields // The results of the last synchronization with the package manager server @@ -128,8 +151,8 @@ public PackageSortingKey SortingKey /// - /// Filters for package hosts, currently contains all Dynamo known ADSK hosts - /// "Advance Steel", "Alias", "Civil3D", "FormIt", "Revit" + /// Dynamic Filter for package hosts, should include all Dynamo known hosts from PM backend + /// e.g. "Advance Steel", "Alias", "Civil 3D", "FormIt", "Revit" /// public List HostFilter { @@ -286,7 +309,7 @@ public PackageSearchState SearchState /// /// Current selected filter hosts /// - public List FilterHosts { get; set; } + public List SelectedHosts { get; set; } private SearchDictionary SearchDictionary; @@ -330,11 +353,11 @@ internal PackageManagerSearchViewModel() SetSortingKeyCommand = new DelegateCommand(SetSortingKey, CanSetSortingKey); SetSortingDirectionCommand = new DelegateCommand(SetSortingDirection, CanSetSortingDirection); SearchResults.CollectionChanged += SearchResultsOnCollectionChanged; - SearchText = ""; + SearchText = string.Empty; SortingKey = PackageSortingKey.LastUpdate; - HostFilter = new List(); - FilterHosts = new List(); SortingDirection = PackageSortingDirection.Ascending; + HostFilter = new List(); + SelectedHosts = new List(); } /// @@ -830,6 +853,24 @@ internal void SearchAndUpdateResults() SearchAndUpdateResults(SearchText); } + /// + /// Performs a filter to the assuming pre-searched results + /// + /// + /// + internal IEnumerable Filter(IEnumerable list) + { + // No need to filter by host if nothing selected + if (SelectedHosts.Count == 0) return list; + IEnumerable filteredList = null; + foreach (var host in SelectedHosts) + { + filteredList = (filteredList ?? Enumerable.Empty()).Union( + list.Where(x => x.Model.Hosts != null && x.Model.Hosts.Contains(host)) ?? Enumerable.Empty()); + } + return filteredList; + } + /// /// Performs a search using the given string as query, but does not update /// the SearchResults object. @@ -845,39 +886,17 @@ internal IEnumerable Search(string query) if (!String.IsNullOrEmpty(query)) { - if (FilterHosts.Count == 0) - { - list = SearchDictionary.Search(query) - .Select(x => new PackageManagerSearchElementViewModel(x, canLogin)) - .Take(MaxNumSearchResults).ToList(); - } - else - { - list = SearchDictionary.Search(query) - .Select(x => new PackageManagerSearchElementViewModel(x, canLogin)) - // Filter packages based on current filter setting - .Where(x => x.Model.Hosts != null && x.Model.Hosts.Contains(FilterHosts.First())) - .Take(MaxNumSearchResults).ToList(); - } + list = Filter(SearchDictionary.Search(query) + .Select(x => new PackageManagerSearchElementViewModel(x, canLogin)) + .Take(MaxNumSearchResults)) + .ToList(); } else { - if (FilterHosts.Count == 0) - { - // with null query, don't show deprecated packages - list = LastSync.Where(x => !x.IsDeprecated) - .Select(x => new PackageManagerSearchElementViewModel(x, canLogin)) - .ToList(); - - } - else - { - // with null query, don't show deprecated packages - list = LastSync.Where(x => !x.IsDeprecated) - .Select(x => new PackageManagerSearchElementViewModel(x, canLogin)) - .Where(x => x.Model.Hosts != null && x.Model.Hosts.Contains(FilterHosts.First())) + // with null query, don't show deprecated packages + list = Filter(LastSync.Where(x => !x.IsDeprecated) + .Select(x => new PackageManagerSearchElementViewModel(x, canLogin))) .ToList(); - } Sort(list, this.SortingKey); } From ca0aaf326b864b8db73490720b6dc4bdd8078771 Mon Sep 17 00:00:00 2001 From: tanga Date: Fri, 12 Jul 2019 14:00:10 -0400 Subject: [PATCH 10/18] Update the host dependencies getter --- src/DynamoPackages/PackageManagerSearchElement.cs | 4 ++-- src/DynamoPackages/PackageUploadBuilder.cs | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/DynamoPackages/PackageManagerSearchElement.cs b/src/DynamoPackages/PackageManagerSearchElement.cs index b3d0ce9797f..5a8d4b9f5ee 100644 --- a/src/DynamoPackages/PackageManagerSearchElement.cs +++ b/src/DynamoPackages/PackageManagerSearchElement.cs @@ -43,9 +43,9 @@ public int Votes public string LatestVersionCreated { get { return Header.versions[Header.versions.Count - 1].created; } } /// - /// Hosts particular package is for + /// Hosts dependencies specified for latest version of particular package /// - public List Hosts { get { return Header.host_dependencies; } } + public List Hosts { get { return Header.versions.Last().host_dependencies == null ? null : Header.versions.Last().host_dependencies.ToList(); }} /// /// Header property diff --git a/src/DynamoPackages/PackageUploadBuilder.cs b/src/DynamoPackages/PackageUploadBuilder.cs index 59291137675..f4fd9cd6849 100644 --- a/src/DynamoPackages/PackageUploadBuilder.cs +++ b/src/DynamoPackages/PackageUploadBuilder.cs @@ -50,6 +50,7 @@ public static PackageUploadRequestBody NewRequestBody(Package package) var version = engineVersion ?? Assembly.GetExecutingAssembly().GetName().Version.ToString(); var engineMetadata = ""; + // TODO: Add host info from the publish dialog return new PackageUploadRequestBody(package.Name, package.VersionName, package.Description, package.Keywords, package.License, package.Contents, PackageManagerClient.PackageEngineName, version, engineMetadata, package.Group, package.Dependencies, package.SiteUrl, package.RepositoryUrl, package.ContainsBinaries, From 881bab6c97baf919bc342a0397cf63f3a86a6451 Mon Sep 17 00:00:00 2001 From: tanga Date: Fri, 12 Jul 2019 16:07:26 -0400 Subject: [PATCH 11/18] Add package search element display of hosts --- .../PackageManagerSearchView.xaml | 10 ++++++---- .../PackageManagerSearchElement.cs | 20 +++++++++++++++++++ 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/DynamoCoreWpf/Views/PackageManager/PackageManagerSearchView.xaml b/src/DynamoCoreWpf/Views/PackageManager/PackageManagerSearchView.xaml index b3f166d2580..20a30d5e666 100644 --- a/src/DynamoCoreWpf/Views/PackageManager/PackageManagerSearchView.xaml +++ b/src/DynamoCoreWpf/Views/PackageManager/PackageManagerSearchView.xaml @@ -287,10 +287,12 @@ public List Hosts { get { return Header.versions.Last().host_dependencies == null ? null : Header.versions.Last().host_dependencies.ToList(); }} + /// + /// Hosts dependencies string specified for latest version of particular package + /// Used for package search element UI + /// + public string HostsString + { + get + { + var hostsString = String.Empty; + if (Header.versions.Last().host_dependencies != null) + { + foreach (var host in Header.versions.Last().host_dependencies) + { + hostsString += host + " "; + } + } + return hostsString; + } + } + /// /// Header property /// From b4d36094db3e3b7ea898a24070608a4f46264ce4 Mon Sep 17 00:00:00 2001 From: tanga Date: Fri, 12 Jul 2019 17:19:25 -0400 Subject: [PATCH 12/18] Add style changes including fonts, vertical alignment, tooltip --- src/DynamoCoreWpf/Properties/Resources.Designer.cs | 11 ++++++++++- src/DynamoCoreWpf/Properties/Resources.en-US.resx | 3 +++ src/DynamoCoreWpf/Properties/Resources.resx | 3 +++ .../PackageManager/PackageManagerSearchView.xaml | 7 ++++--- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/DynamoCoreWpf/Properties/Resources.Designer.cs b/src/DynamoCoreWpf/Properties/Resources.Designer.cs index 7c6480c667a..cd9652e3380 100644 --- a/src/DynamoCoreWpf/Properties/Resources.Designer.cs +++ b/src/DynamoCoreWpf/Properties/Resources.Designer.cs @@ -19,7 +19,7 @@ namespace Dynamo.Wpf.Properties { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] public class Resources { @@ -3701,6 +3701,15 @@ public static string PackageFolderNotAccessible { } } + /// + /// Looks up a localized string similar to This package requires the specified host(s) to run.. + /// + public static string PackageHostDependencyTooltip { + get { + return ResourceManager.GetString("PackageHostDependencyTooltip", resourceCulture); + } + } + /// /// Looks up a localized string similar to Package Manager Website. /// diff --git a/src/DynamoCoreWpf/Properties/Resources.en-US.resx b/src/DynamoCoreWpf/Properties/Resources.en-US.resx index f49b3a39769..43493413a41 100644 --- a/src/DynamoCoreWpf/Properties/Resources.en-US.resx +++ b/src/DynamoCoreWpf/Properties/Resources.en-US.resx @@ -2216,4 +2216,7 @@ Uninstall the following packages: {0}? Could not re-direct to the Dynamo forum page for feedback: + + This package requires the specified host(s) to run. + \ No newline at end of file diff --git a/src/DynamoCoreWpf/Properties/Resources.resx b/src/DynamoCoreWpf/Properties/Resources.resx index 961c370fe7f..45772e2328e 100644 --- a/src/DynamoCoreWpf/Properties/Resources.resx +++ b/src/DynamoCoreWpf/Properties/Resources.resx @@ -2219,4 +2219,7 @@ Uninstall the following packages: {0}? Could not re-direct to the Dynamo forum page for feedback: + + This package requires the specified host(s) to run. + \ No newline at end of file diff --git a/src/DynamoCoreWpf/Views/PackageManager/PackageManagerSearchView.xaml b/src/DynamoCoreWpf/Views/PackageManager/PackageManagerSearchView.xaml index 20a30d5e666..a1721cb30f5 100644 --- a/src/DynamoCoreWpf/Views/PackageManager/PackageManagerSearchView.xaml +++ b/src/DynamoCoreWpf/Views/PackageManager/PackageManagerSearchView.xaml @@ -289,9 +289,10 @@ - - - + + + From 3a1ba1d9e7caa3101716c8afc9e04026df634a6d Mon Sep 17 00:00:00 2001 From: tanga Date: Mon, 15 Jul 2019 01:32:32 -0400 Subject: [PATCH 13/18] try to fix self CI --- .../ViewModels/PackageManager/PackageManagerSearchViewModel.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs index d33b878fb03..235e50ae566 100644 --- a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs @@ -156,7 +156,7 @@ public PackageSortingKey SortingKey /// public List HostFilter { - get => hostFilter; + get { return hostFilter; } set { hostFilter = value; From de3ece55464497f6c1321132245e4268bd76f977 Mon Sep 17 00:00:00 2001 From: tanga Date: Mon, 15 Jul 2019 12:36:42 -0400 Subject: [PATCH 14/18] Add unit test --- test/DynamoCoreWpfTests/PackageManagerUITests.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/test/DynamoCoreWpfTests/PackageManagerUITests.cs b/test/DynamoCoreWpfTests/PackageManagerUITests.cs index af464e7412a..4e48935a368 100644 --- a/test/DynamoCoreWpfTests/PackageManagerUITests.cs +++ b/test/DynamoCoreWpfTests/PackageManagerUITests.cs @@ -233,6 +233,16 @@ public void PackageSearchDialogSearchBoxPromptTextWhenNotSyncing() Assert.AreEqual(Dynamo.Wpf.Properties.Resources.PackageSearchViewSearchTextBox, searchViewModel.SearchBoxPrompt); } + [Test] + public void InitializeHostFilterTest() + { + // Initialize the view with the search client so we could test dataflow + PackageManagerSearchViewModel searchViewModel = new PackageManagerSearchViewModel(ViewModel.PackageManagerClientViewModel); + + // Test if search view model is able to initialize the filter list from PM + Assert.IsTrue(searchViewModel.InitializeHostFilter().Count() != 0); + } + #endregion } From c1e62a9aea1d35573233c25fb1c40c7999e1b014 Mon Sep 17 00:00:00 2001 From: tanga Date: Mon, 15 Jul 2019 16:11:59 -0400 Subject: [PATCH 15/18] Remove the test added --- test/DynamoCoreWpfTests/PackageManagerUITests.cs | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/test/DynamoCoreWpfTests/PackageManagerUITests.cs b/test/DynamoCoreWpfTests/PackageManagerUITests.cs index 4e48935a368..af464e7412a 100644 --- a/test/DynamoCoreWpfTests/PackageManagerUITests.cs +++ b/test/DynamoCoreWpfTests/PackageManagerUITests.cs @@ -233,16 +233,6 @@ public void PackageSearchDialogSearchBoxPromptTextWhenNotSyncing() Assert.AreEqual(Dynamo.Wpf.Properties.Resources.PackageSearchViewSearchTextBox, searchViewModel.SearchBoxPrompt); } - [Test] - public void InitializeHostFilterTest() - { - // Initialize the view with the search client so we could test dataflow - PackageManagerSearchViewModel searchViewModel = new PackageManagerSearchViewModel(ViewModel.PackageManagerClientViewModel); - - // Test if search view model is able to initialize the filter list from PM - Assert.IsTrue(searchViewModel.InitializeHostFilter().Count() != 0); - } - #endregion } From c7e270ff8dfdac4e65f02b20d2549096357891ae Mon Sep 17 00:00:00 2001 From: tanga Date: Mon, 15 Jul 2019 16:28:10 -0400 Subject: [PATCH 16/18] Address comments --- .../ViewModels/PackageManager/PackageManagerSearchViewModel.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs index 235e50ae566..03831196cad 100644 --- a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs @@ -400,7 +400,7 @@ public void Sort() } /// - /// Based on the known hosts received from back end, + /// Based on the known hosts received from Package Manager server, /// initialize the host filter in Dynamo /// public List InitializeHostFilter() From b26adf0033816d852feed51b2cf70626c93c1cc2 Mon Sep 17 00:00:00 2001 From: tanga Date: Mon, 15 Jul 2019 17:19:33 -0400 Subject: [PATCH 17/18] Add more tooltips --- .../Properties/Resources.Designer.cs | 18 ++++++++++++++++++ .../Properties/Resources.en-US.resx | 6 ++++++ src/DynamoCoreWpf/Properties/Resources.resx | 6 ++++++ .../PackageManagerSearchView.xaml | 6 ++++-- 4 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/DynamoCoreWpf/Properties/Resources.Designer.cs b/src/DynamoCoreWpf/Properties/Resources.Designer.cs index cd9652e3380..d7a960551fd 100644 --- a/src/DynamoCoreWpf/Properties/Resources.Designer.cs +++ b/src/DynamoCoreWpf/Properties/Resources.Designer.cs @@ -3701,6 +3701,24 @@ public static string PackageFolderNotAccessible { } } + /// + /// Looks up a localized string similar to Click to choose one or multiple host filter to browse host specific packages.. + /// + public static string PackageHostDependencyFilter { + get { + return ResourceManager.GetString("PackageHostDependencyFilter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Packages requires this specified host to run.. + /// + public static string PackageHostDependencyFilterContextItem { + get { + return ResourceManager.GetString("PackageHostDependencyFilterContextItem", resourceCulture); + } + } + /// /// Looks up a localized string similar to This package requires the specified host(s) to run.. /// diff --git a/src/DynamoCoreWpf/Properties/Resources.en-US.resx b/src/DynamoCoreWpf/Properties/Resources.en-US.resx index 43493413a41..d4bd699323d 100644 --- a/src/DynamoCoreWpf/Properties/Resources.en-US.resx +++ b/src/DynamoCoreWpf/Properties/Resources.en-US.resx @@ -2219,4 +2219,10 @@ Uninstall the following packages: {0}? This package requires the specified host(s) to run. + + Click to choose one or multiple host filter to browse host specific packages. + + + Packages requires this specified host to run. + \ No newline at end of file diff --git a/src/DynamoCoreWpf/Properties/Resources.resx b/src/DynamoCoreWpf/Properties/Resources.resx index 45772e2328e..6ede15f2313 100644 --- a/src/DynamoCoreWpf/Properties/Resources.resx +++ b/src/DynamoCoreWpf/Properties/Resources.resx @@ -2222,4 +2222,10 @@ Uninstall the following packages: {0}? This package requires the specified host(s) to run. + + Click to choose one or multiple host filter to browse host specific packages. + + + Packages requires this specified host to run. + \ No newline at end of file diff --git a/src/DynamoCoreWpf/Views/PackageManager/PackageManagerSearchView.xaml b/src/DynamoCoreWpf/Views/PackageManager/PackageManagerSearchView.xaml index a1721cb30f5..549068ccd83 100644 --- a/src/DynamoCoreWpf/Views/PackageManager/PackageManagerSearchView.xaml +++ b/src/DynamoCoreWpf/Views/PackageManager/PackageManagerSearchView.xaml @@ -180,7 +180,8 @@ Click="OnFilterButtonClicked" fa:Awesome.Content="Filter" TextElement.FontFamily="pack://application:,,,/FontAwesome.WPF;component/#FontAwesome" - Style="{DynamicResource ResourceKey=STextButton}"> + Style="{DynamicResource ResourceKey=STextButton}" + ToolTip="{x:Static p:Resources.PackageHostDependencyFilter}"> - + + From 3bbe1bf49ac9fd74ab0debf8410d250bc1d49885 Mon Sep 17 00:00:00 2001 From: tanga Date: Mon, 15 Jul 2019 21:07:10 -0400 Subject: [PATCH 18/18] Update Tooltips --- src/DynamoCoreWpf/Properties/Resources.Designer.cs | 4 ++-- src/DynamoCoreWpf/Properties/Resources.en-US.resx | 4 ++-- src/DynamoCoreWpf/Properties/Resources.resx | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/DynamoCoreWpf/Properties/Resources.Designer.cs b/src/DynamoCoreWpf/Properties/Resources.Designer.cs index d7a960551fd..335efe15ef3 100644 --- a/src/DynamoCoreWpf/Properties/Resources.Designer.cs +++ b/src/DynamoCoreWpf/Properties/Resources.Designer.cs @@ -3702,7 +3702,7 @@ public static string PackageFolderNotAccessible { } /// - /// Looks up a localized string similar to Click to choose one or multiple host filter to browse host specific packages.. + /// Looks up a localized string similar to Filter packages by Dynamo host application.. /// public static string PackageHostDependencyFilter { get { @@ -3711,7 +3711,7 @@ public static string PackageHostDependencyFilter { } /// - /// Looks up a localized string similar to Packages requires this specified host to run.. + /// Looks up a localized string similar to Packages requires the specified host to run.. /// public static string PackageHostDependencyFilterContextItem { get { diff --git a/src/DynamoCoreWpf/Properties/Resources.en-US.resx b/src/DynamoCoreWpf/Properties/Resources.en-US.resx index d4bd699323d..3cc1a9ed2bc 100644 --- a/src/DynamoCoreWpf/Properties/Resources.en-US.resx +++ b/src/DynamoCoreWpf/Properties/Resources.en-US.resx @@ -2220,9 +2220,9 @@ Uninstall the following packages: {0}? This package requires the specified host(s) to run. - Click to choose one or multiple host filter to browse host specific packages. + Filter packages by Dynamo host application. - Packages requires this specified host to run. + Packages requires the specified host to run. \ No newline at end of file diff --git a/src/DynamoCoreWpf/Properties/Resources.resx b/src/DynamoCoreWpf/Properties/Resources.resx index 6ede15f2313..2b8a7bc434c 100644 --- a/src/DynamoCoreWpf/Properties/Resources.resx +++ b/src/DynamoCoreWpf/Properties/Resources.resx @@ -2223,9 +2223,9 @@ Uninstall the following packages: {0}? This package requires the specified host(s) to run. - Click to choose one or multiple host filter to browse host specific packages. + Filter packages by Dynamo host application. - Packages requires this specified host to run. + Packages requires the specified host to run. \ No newline at end of file