diff --git a/src/DynamoCore/Properties/Resources.Designer.cs b/src/DynamoCore/Properties/Resources.Designer.cs
index abd8ff1c454..61cfe00c6b3 100644
--- a/src/DynamoCore/Properties/Resources.Designer.cs
+++ b/src/DynamoCore/Properties/Resources.Designer.cs
@@ -1,4 +1,4 @@
-//------------------------------------------------------------------------------
+//------------------------------------------------------------------------------
//
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
@@ -8,10 +8,10 @@
//
//------------------------------------------------------------------------------
-namespace Dynamo.Properties {
- using System;
-
-
+namespace Dynamo.Properties
+{
+
+
///
/// A strongly-typed resource class, for looking up localized strings, etc.
///
@@ -1529,6 +1529,24 @@ public static string PackageManagerPackageAlreadyExists {
}
}
+ ///
+ /// Looks up a localized string similar to {0} files and {1} folders will be created..
+ ///
+ public static string PackageManagerPackagePreviewCounter {
+ get {
+ return ResourceManager.GetString("PackageManagerPackagePreviewCounter", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0} files and {1} folders loaded..
+ ///
+ public static string PackageManagerPackageSelectCounter {
+ get {
+ return ResourceManager.GetString("PackageManagerPackageSelectCounter", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to The current user, '{0}', is not a maintainer of the package '{1}'..
///
diff --git a/src/DynamoCore/Properties/Resources.en-US.resx b/src/DynamoCore/Properties/Resources.en-US.resx
index 9e0c109e30d..6af0906a03e 100644
--- a/src/DynamoCore/Properties/Resources.en-US.resx
+++ b/src/DynamoCore/Properties/Resources.en-US.resx
@@ -740,6 +740,12 @@ Parameter name: {0}
The current user, '{0}', is not a maintainer of the package '{1}'.
{0} = user name (i.e. 'DynamoTeam'), {1} = package name (i.e. 'Clockwork for Dynamo 1.x')
+
+ {0} files and {1} folders will be created.
+
+
+ {0} files and {1} folders loaded.
+
An older version of the package called {0} version {2} was found at {1} with version {3}. The older version has been ignored.
@@ -914,4 +920,4 @@ This package likely contains an assembly that is blocked. You will need to load
default input name, rename me!
-
\ No newline at end of file
+
diff --git a/src/DynamoCore/Properties/Resources.resx b/src/DynamoCore/Properties/Resources.resx
index 2439e0fe643..0b04d7adc50 100644
--- a/src/DynamoCore/Properties/Resources.resx
+++ b/src/DynamoCore/Properties/Resources.resx
@@ -742,6 +742,12 @@ Parameter name: {0}
The current user, '{0}', is not a maintainer of the package '{1}'.
{0} = user name (i.e. 'DynamoTeam'), {1} = package name (i.e. 'Clockwork for Dynamo 1.x')
+
+ {0} files and {1} folders will be created.
+
+
+ {0} files and {1} folders loaded.
+
An older version of the package called {0} version {2} was found at {1} with version {3}. The older version has been ignored.
@@ -917,4 +923,4 @@ This package likely contains an assembly that is blocked. You will need to load
default input name, rename me!
-
\ No newline at end of file
+
diff --git a/src/DynamoCore/PublicAPI.Unshipped.txt b/src/DynamoCore/PublicAPI.Unshipped.txt
index 7a74b2752ec..cfa65c57d11 100644
--- a/src/DynamoCore/PublicAPI.Unshipped.txt
+++ b/src/DynamoCore/PublicAPI.Unshipped.txt
@@ -2894,6 +2894,8 @@ static Dynamo.Properties.Resources.OutputPortAlternativeName.get -> string
static Dynamo.Properties.Resources.PackageEmpty.get -> string
static Dynamo.Properties.Resources.PackageLoadFailureForBlockedAssembly.get -> string
static Dynamo.Properties.Resources.PackageManagerPackageAlreadyExists.get -> string
+static Dynamo.Properties.Resources.PackageManagerPackagePreviewCounter.get -> string
+static Dynamo.Properties.Resources.PackageManagerPackageSelectCounter.get -> string
static Dynamo.Properties.Resources.PackageManagerUserIsNotAMaintainer.get -> string
static Dynamo.Properties.Resources.PackageStateError.get -> string
static Dynamo.Properties.Resources.PackageStateErrorTooltip.get -> string
diff --git a/src/DynamoCoreWpf/PublicAPI.Unshipped.txt b/src/DynamoCoreWpf/PublicAPI.Unshipped.txt
index 906d58ddc31..2cb587f4f03 100644
--- a/src/DynamoCoreWpf/PublicAPI.Unshipped.txt
+++ b/src/DynamoCoreWpf/PublicAPI.Unshipped.txt
@@ -1249,7 +1249,10 @@ Dynamo.PackageManager.UI.PackageNameLengthValidationRule
Dynamo.PackageManager.UI.PackageNameLengthValidationRule.PackageNameLengthValidationRule() -> void
Dynamo.PackageManager.UI.PublishPackagePreviewPage
Dynamo.PackageManager.UI.PublishPackagePreviewPage.Dispose() -> void
+Dynamo.PackageManager.UI.PublishPackagePreviewPage.FilesAndFoldersCounterPreview.get -> string
+Dynamo.PackageManager.UI.PublishPackagePreviewPage.FilesAndFoldersCounterPreview.set -> void
Dynamo.PackageManager.UI.PublishPackagePreviewPage.InitializeComponent() -> void
+Dynamo.PackageManager.UI.PublishPackagePreviewPage.PropertyChanged -> System.ComponentModel.PropertyChangedEventHandler
Dynamo.PackageManager.UI.PublishPackagePreviewPage.PublishPackagePreviewPage() -> void
Dynamo.PackageManager.UI.PublishPackagePublishPage
Dynamo.PackageManager.UI.PublishPackagePublishPage.Dispose() -> void
@@ -1260,6 +1263,8 @@ Dynamo.PackageManager.UI.PublishPackageSelectPage
Dynamo.PackageManager.UI.PublishPackageSelectPage.AllItemsSelected.get -> bool
Dynamo.PackageManager.UI.PublishPackageSelectPage.AllItemsSelected.set -> void
Dynamo.PackageManager.UI.PublishPackageSelectPage.Dispose() -> void
+Dynamo.PackageManager.UI.PublishPackageSelectPage.FilesAndFoldersCounterPreview.get -> string
+Dynamo.PackageManager.UI.PublishPackageSelectPage.FilesAndFoldersCounterPreview.set -> void
Dynamo.PackageManager.UI.PublishPackageSelectPage.InitializeComponent() -> void
Dynamo.PackageManager.UI.PublishPackageSelectPage.ItemSelection.get -> System.Collections.ObjectModel.ObservableCollection
Dynamo.PackageManager.UI.PublishPackageSelectPage.ItemSelection.set -> void
@@ -5623,6 +5628,7 @@ virtual Dynamo.Controls.IntegerDisplay.Convert(object value, System.Type targetT
virtual Dynamo.Controls.IntegerDisplay.ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) -> object
virtual Dynamo.PackageManager.PackageManagerSearchViewModel.OnRequestShowFileDialog(object sender, Dynamo.ViewModels.PackagePathEventArgs e) -> void
virtual Dynamo.PackageManager.PublishPackageViewModel.OnRequestShowFileDialog(object sender, Dynamo.ViewModels.PackagePathEventArgs e) -> void
+virtual Dynamo.PackageManager.UI.PublishPackagePreviewPage.RaisePropertyChanged(string propertyName) -> void
virtual Dynamo.PackageManager.UI.PublishPackageSelectPage.RaisePropertyChanged(string propertyName) -> void
virtual Dynamo.PackageManager.ViewModels.PackageManagerSearchElementViewModel.OnRequestShowFileDialog(object sender, Dynamo.ViewModels.PackagePathEventArgs e) -> void
virtual Dynamo.UI.Controls.CodeCompletionEditor.OnCommitChange() -> void
diff --git a/src/DynamoCoreWpf/Views/PackageManager/Pages/PublishPackageFinishPage.xaml.cs b/src/DynamoCoreWpf/Views/PackageManager/Pages/PublishPackageFinishPage.xaml.cs
index ebe06b98c30..fe9097ee9b8 100644
--- a/src/DynamoCoreWpf/Views/PackageManager/Pages/PublishPackageFinishPage.xaml.cs
+++ b/src/DynamoCoreWpf/Views/PackageManager/Pages/PublishPackageFinishPage.xaml.cs
@@ -30,7 +30,8 @@ internal void LoadEvents()
var uploadType = PublishPackageViewModel.UploadType;
var publishedFiles = PackageItemRootViewModel.GetFiles(PublishPackageViewModel.PackageContents.ToList());
- var count = publishedFiles.Count(x => x.DependencyType != DependencyType.Folder);
+ var count = publishedFiles.Count(x => x.DependencyType != DependencyType.Folder
+ || x.DependencyType != DependencyType.CustomNodePreview);
var message = uploadType.Equals(PackageUploadHandle.UploadType.Local) ?
Dynamo.Wpf.Properties.Resources.PackageManagerFinishedPackageFilesPublishedMessage :
Dynamo.Wpf.Properties.Resources.PackageManagerFinishedPackageFilesUploadedMessage;
diff --git a/src/DynamoCoreWpf/Views/PackageManager/Pages/PublishPackagePreviewPage.xaml b/src/DynamoCoreWpf/Views/PackageManager/Pages/PublishPackagePreviewPage.xaml
index db73da4bdd7..f2ae65ed2d1 100644
--- a/src/DynamoCoreWpf/Views/PackageManager/Pages/PublishPackagePreviewPage.xaml
+++ b/src/DynamoCoreWpf/Views/PackageManager/Pages/PublishPackagePreviewPage.xaml
@@ -11,6 +11,7 @@
xmlns:packagemanager="clr-namespace:Dynamo.PackageManager"
d:DesignHeight="450" d:DesignWidth="800"
UseLayoutRounding="True"
+ x:Name="PreviewPackagePage"
Title="PublishPackagePreviewPage">
@@ -305,27 +306,37 @@
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
+
+
-
-
-
-
-
-
+
+
+
-
-
-
-
-
+
+
-
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
diff --git a/src/DynamoCoreWpf/Views/PackageManager/Pages/PublishPackagePreviewPage.xaml.cs b/src/DynamoCoreWpf/Views/PackageManager/Pages/PublishPackagePreviewPage.xaml.cs
index 16826c28ba7..ac55af4fcbb 100644
--- a/src/DynamoCoreWpf/Views/PackageManager/Pages/PublishPackagePreviewPage.xaml.cs
+++ b/src/DynamoCoreWpf/Views/PackageManager/Pages/PublishPackagePreviewPage.xaml.cs
@@ -1,15 +1,38 @@
+using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;
+
namespace Dynamo.PackageManager.UI
{
///
/// Interaction logic for PublishPackagePreviewPage.xaml
///
- public partial class PublishPackagePreviewPage : Page
+ public partial class PublishPackagePreviewPage : Page, INotifyPropertyChanged
{
private PublishPackageViewModel PublishPackageViewModel;
+ public event PropertyChangedEventHandler PropertyChanged;
+
+ private string _filesAndFoldersCounterPreview;
+ public string FilesAndFoldersCounterPreview
+ {
+ get { return _filesAndFoldersCounterPreview; }
+ set
+ {
+ if (_filesAndFoldersCounterPreview != value)
+ {
+ _filesAndFoldersCounterPreview = value;
+ RaisePropertyChanged(nameof(FilesAndFoldersCounterPreview));
+ }
+ }
+ }
+
+ protected virtual void RaisePropertyChanged(string propertyName)
+ {
+ PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
+ }
+
///
/// Constructor
///
@@ -21,9 +44,55 @@ public PublishPackagePreviewPage()
this.Tag = "Preview Package Contents";
}
+ private void PublishPackageViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e)
+ {
+ if (PublishPackageViewModel == null) return;
+ if (e.PropertyName == nameof(PublishPackageViewModel.PreviewPackageContents))
+ {
+ int contentFileCount = 0;
+ int contentFolderCount = 0;
+
+ foreach (var item in PublishPackageViewModel.PreviewPackageContents)
+ {
+ CountFileItems(item, ref contentFileCount, ref contentFolderCount);
+ }
+
+ //set the counter text
+ var counterText = string.Format(Properties.Resources.PackageManagerPackagePreviewCounter, contentFileCount, contentFolderCount);
+ FilesAndFoldersCounterPreview = counterText;
+ };
+ }
+
+ private void CountFileItems(PackageItemRootViewModel item, ref int contentFileCount, ref int contentFolderCount)
+ {
+ // Base count if the item itself is a file, custom node, or assembly
+ if (item.DependencyType == DependencyType.File ||
+ item.DependencyType == DependencyType.CustomNodePreview ||
+ item.DependencyType == DependencyType.Assembly)
+ {
+ contentFileCount++;
+ }
+
+ // If the item is a folder, recursively count its children
+ if (item.DependencyType == DependencyType.Folder)
+ {
+ contentFolderCount++;
+ foreach (var child in item.ChildItems)
+ {
+ CountFileItems(child, ref contentFileCount, ref contentFolderCount);
+ }
+ }
+ }
+
private void PublishPackagePublishPage_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
{
+ if (PublishPackageViewModel != null)
+ {
+ PublishPackageViewModel.PropertyChanged -= PublishPackageViewModel_PropertyChanged;
+ }
+
PublishPackageViewModel = this.DataContext as PublishPackageViewModel;
+ PublishPackageViewModel.PropertyChanged += PublishPackageViewModel_PropertyChanged;
}
internal void LoadEvents()
@@ -41,6 +110,7 @@ internal void LoadEvents()
public void Dispose()
{
+ this.PublishPackageViewModel.PropertyChanged -= PublishPackageViewModel_PropertyChanged;
this.PublishPackageViewModel = null;
this.DataContextChanged -= PublishPackagePublishPage_DataContextChanged;
this.customBrowserControl?.Dispose();
diff --git a/src/DynamoCoreWpf/Views/PackageManager/Pages/PublishPackageSelectPage.xaml b/src/DynamoCoreWpf/Views/PackageManager/Pages/PublishPackageSelectPage.xaml
index 4e9d6ac0caf..3719628a928 100644
--- a/src/DynamoCoreWpf/Views/PackageManager/Pages/PublishPackageSelectPage.xaml
+++ b/src/DynamoCoreWpf/Views/PackageManager/Pages/PublishPackageSelectPage.xaml
@@ -11,7 +11,7 @@
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800"
UseLayoutRounding="True"
- x:Name="PublishPackagePage"
+ x:Name="SelectPackagePage"
Title="PublishPackageSelectPage">
@@ -179,7 +179,7 @@
VerticalAlignment="Center">
@@ -253,7 +253,7 @@
FontSize="14">
-
@@ -367,109 +367,118 @@
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
-
-
+
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
+
+
-
-
+
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
+
+
-
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
+
-
-
+
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
diff --git a/src/DynamoCoreWpf/Views/PackageManager/Pages/PublishPackageSelectPage.xaml.cs b/src/DynamoCoreWpf/Views/PackageManager/Pages/PublishPackageSelectPage.xaml.cs
index a5132dc1aac..07c17ea72ce 100644
--- a/src/DynamoCoreWpf/Views/PackageManager/Pages/PublishPackageSelectPage.xaml.cs
+++ b/src/DynamoCoreWpf/Views/PackageManager/Pages/PublishPackageSelectPage.xaml.cs
@@ -25,6 +25,23 @@ public partial class PublishPackageSelectPage : Page, INotifyPropertyChanged
///
public ObservableCollection ItemSelection { get; set; } = new ObservableCollection();
+
+ private string _filesAndFoldersCounterPreview;
+
+ public string FilesAndFoldersCounterPreview
+ {
+ get { return _filesAndFoldersCounterPreview; }
+ set
+ {
+ if (_filesAndFoldersCounterPreview != value)
+ {
+ _filesAndFoldersCounterPreview = value;
+ RaisePropertyChanged(nameof(FilesAndFoldersCounterPreview));
+ }
+ }
+ }
+
+
private bool _allItemsSelected;
///
/// Indicates if all preview items are currently selected
@@ -57,11 +74,57 @@ public PublishPackageSelectPage()
this.Tag = "Select Package Contents";
}
+ private void PublishPackageViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e)
+ {
+ if (PublishPackageViewModel == null) return;
+ if (e.PropertyName == nameof(PublishPackageViewModel.PackageContents))
+ {
+ int contentFileCount = 0;
+ int contentFolderCount = 0;
+
+ foreach (var item in PublishPackageViewModel.PackageContents)
+ {
+ CountFileItems(item, ref contentFileCount, ref contentFolderCount);
+ }
+
+ //set the counter text
+ var counterText = string.Format(Properties.Resources.PackageManagerPackageSelectCounter, contentFileCount, contentFolderCount);
+ FilesAndFoldersCounterPreview = counterText;
+ };
+ }
+
+ private void CountFileItems(PackageItemRootViewModel item, ref int contentFileCount, ref int contentFolderCount)
+ {
+ // Base count if the item itself is a file, custom node, or assembly
+ if (item.DependencyType == DependencyType.File ||
+ item.DependencyType == DependencyType.CustomNode ||
+ item.DependencyType == DependencyType.Assembly)
+ {
+ contentFileCount++;
+ }
+
+ // If the item is a folder, recursively count its children
+ if (item.DependencyType == DependencyType.Folder)
+ {
+ contentFolderCount++;
+ foreach (var child in item.ChildItems)
+ {
+ CountFileItems(child, ref contentFileCount, ref contentFolderCount);
+ }
+ }
+ }
+
private void PublishPackagePublishPage_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
{
+ if(PublishPackageViewModel != null)
+ {
+ PublishPackageViewModel.PropertyChanged -= PublishPackageViewModel_PropertyChanged;
+ }
+
PublishPackageViewModel = this.DataContext as PublishPackageViewModel;
+ PublishPackageViewModel.PropertyChanged += PublishPackageViewModel_PropertyChanged;
}
-
+
internal void LoadEvents()
{
this.IsEnabled = true;
@@ -78,6 +141,7 @@ internal void LoadEvents()
public void Dispose()
{
this.ItemSelection?.Clear();
+ this.PublishPackageViewModel.PropertyChanged -= PublishPackageViewModel_PropertyChanged;
this.PublishPackageViewModel = null;
this.DataContextChanged -= PublishPackagePublishPage_DataContextChanged;
this.customBrowserControl?.Dispose();