diff --git a/src/DynamoCore/Configuration/ExecutionSession.cs b/src/DynamoCore/Configuration/ExecutionSession.cs
index efb62792d36..b738d2f7a89 100644
--- a/src/DynamoCore/Configuration/ExecutionSession.cs
+++ b/src/DynamoCore/Configuration/ExecutionSession.cs
@@ -26,6 +26,7 @@ public ExecutionSession(Scheduler.UpdateGraphAsyncTask updateTask, DynamoModel m
parameters[ParameterKeys.LastExecutionDuration] = new TimeSpan(updateTask.ExecutionEndTime.TickCount - updateTask.ExecutionStartTime.TickCount);
parameters[ParameterKeys.PackagePaths] = pathManager.PackagesDirectories;
parameters[ParameterKeys.Logger] = model.Logger;
+ parameters[ParameterKeys.NoNetworkMode] = model.NoNetworkMode;
}
///
diff --git a/src/DynamoCore/DynamoCore.csproj b/src/DynamoCore/DynamoCore.csproj
index 41229b0a294..90f6f6b66f4 100644
--- a/src/DynamoCore/DynamoCore.csproj
+++ b/src/DynamoCore/DynamoCore.csproj
@@ -31,7 +31,7 @@
-
+
@@ -130,22 +130,22 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -158,49 +158,49 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/DynamoCore/Models/DynamoModel.cs b/src/DynamoCore/Models/DynamoModel.cs
index 7065d8a8659..5a8b921de8a 100644
--- a/src/DynamoCore/Models/DynamoModel.cs
+++ b/src/DynamoCore/Models/DynamoModel.cs
@@ -237,7 +237,7 @@ public static string Version
internal bool IsServiceMode { get; set; }
///
- /// True if Dynamo starts up in offline mode.
+ /// True if Dynamo is used in offline mode.
///
internal bool NoNetworkMode { get; }
diff --git a/src/DynamoCoreWpf/DynamoCoreWpf.csproj b/src/DynamoCoreWpf/DynamoCoreWpf.csproj
index 770e54a9b4c..487c2353362 100644
--- a/src/DynamoCoreWpf/DynamoCoreWpf.csproj
+++ b/src/DynamoCoreWpf/DynamoCoreWpf.csproj
@@ -464,7 +464,7 @@
-
+
@@ -2263,19 +2263,19 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2400,36 +2400,36 @@
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/DynamoCoreWpf/PublicAPI.Unshipped.txt b/src/DynamoCoreWpf/PublicAPI.Unshipped.txt
index ace018da3a9..b5fc2e51946 100644
--- a/src/DynamoCoreWpf/PublicAPI.Unshipped.txt
+++ b/src/DynamoCoreWpf/PublicAPI.Unshipped.txt
@@ -2930,6 +2930,7 @@ Dynamo.ViewModels.PreferencesViewModel.UseHardwareAcceleration.get -> bool
Dynamo.ViewModels.PreferencesViewModel.UseHardwareAcceleration.set -> void
Dynamo.ViewModels.PreferencesViewModel.UseHostScaleUnits.get -> bool
Dynamo.ViewModels.PreferencesViewModel.UseHostScaleUnits.set -> void
+Dynamo.ViewModels.PreferencesViewModel.NoNetworkMode.get -> bool
Dynamo.ViewModels.PreviewState
Dynamo.ViewModels.PreviewState.ExecutionPreview = 1 -> Dynamo.ViewModels.PreviewState
Dynamo.ViewModels.PreviewState.Hover = 2 -> Dynamo.ViewModels.PreviewState
@@ -5922,4 +5923,4 @@ virtual Dynamo.Wpf.ViewModels.Watch3D.DefaultWatch3DViewModel.UpdateHelpers() ->
virtual Dynamo.Wpf.ViewModels.Watch3D.DefaultWatch3DViewModel.ZoomToFit(object parameter) -> void
virtual Dynamo.Wpf.ViewModels.Watch3D.HelixWatch3DViewModel.OnWatchExecution() -> void
virtual Dynamo.Wpf.ViewModels.Watch3D.HelixWatch3DViewModel.UpdateUpstream() -> void
-virtual UI.Prompts.PortPropertiesEditPrompt.OnPropertyChanged(System.ComponentModel.PropertyChangedEventArgs e) -> void
+virtual UI.Prompts.PortPropertiesEditPrompt.OnPropertyChanged(System.ComponentModel.PropertyChangedEventArgs e) -> void
\ No newline at end of file
diff --git a/src/DynamoCoreWpf/ViewModels/Core/DynamoViewModel.cs b/src/DynamoCoreWpf/ViewModels/Core/DynamoViewModel.cs
index 936493cf666..bc6cc6d4e5f 100644
--- a/src/DynamoCoreWpf/ViewModels/Core/DynamoViewModel.cs
+++ b/src/DynamoCoreWpf/ViewModels/Core/DynamoViewModel.cs
@@ -2839,12 +2839,12 @@ internal void ShowPackageManager(object parameters)
internal bool CanShowPackageManagerSearch(object parameters)
{
- return !model.IsServiceMode;
+ return !model.IsServiceMode && !model.NoNetworkMode;
}
internal bool CanShowPackageManager(object parameters)
{
- return !model.IsServiceMode;
+ return !model.IsServiceMode && !model.NoNetworkMode;
}
///
diff --git a/src/DynamoCoreWpf/ViewModels/Menu/PreferencesViewModel.cs b/src/DynamoCoreWpf/ViewModels/Menu/PreferencesViewModel.cs
index c0dd48deacd..8d68c5ad5c0 100644
--- a/src/DynamoCoreWpf/ViewModels/Menu/PreferencesViewModel.cs
+++ b/src/DynamoCoreWpf/ViewModels/Menu/PreferencesViewModel.cs
@@ -1346,6 +1346,24 @@ private void AddPythonEnginesOptions()
///
public TrustedPathViewModel TrustedPathsViewModel { get; set; }
+ private bool noNetworkMode;
+
+ ///
+ /// True if Dynamo is used in offline mode.
+ ///
+ public bool NoNetworkMode
+ {
+ get => noNetworkMode;
+ private set
+ {
+ if (noNetworkMode != value)
+ {
+ noNetworkMode = value;
+ RaisePropertyChanged(nameof(NoNetworkMode));
+ }
+ }
+ }
+
///
/// Returns a boolean value indicating if the Settings importing was successful or not
///
@@ -1469,6 +1487,8 @@ public PreferencesViewModel(DynamoViewModel dynamoViewModel)
this.pythonScriptEditorTextOptions = dynamoViewModel.PythonScriptEditorTextOptions;
this.dynamoViewModel = dynamoViewModel;
+ NoNetworkMode = dynamoViewModel.Model.NoNetworkMode;
+
if (dynamoViewModel.PackageManagerClientViewModel != null)
{
installedPackagesViewModel = new InstalledPackagesViewModel(dynamoViewModel, dynamoViewModel.PackageManagerClientViewModel.PackageManagerExtension.PackageLoader);
diff --git a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerClientViewModel.cs b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerClientViewModel.cs
index 116a616f867..b57dc83891a 100644
--- a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerClientViewModel.cs
+++ b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerClientViewModel.cs
@@ -343,7 +343,7 @@ public void PublishCurrentWorkspace(object m)
public bool CanPublishCurrentWorkspace(object m)
{
- return DynamoViewModel.Model.CurrentWorkspace is CustomNodeWorkspaceModel && AuthenticationManager.HasAuthProvider;
+ return DynamoViewModel.Model.CurrentWorkspace is CustomNodeWorkspaceModel && AuthenticationManager.HasAuthProvider && !Model.NoNetworkMode;
}
public void PublishNewPackage(object m)
@@ -363,7 +363,7 @@ public void PublishNewPackage(object m)
public bool CanPublishNewPackage(object m)
{
- return AuthenticationManager.HasAuthProvider;
+ return AuthenticationManager.HasAuthProvider && !Model.NoNetworkMode;
}
public void PublishCustomNode(Function m)
@@ -393,7 +393,7 @@ public void PublishCustomNode(Function m)
public bool CanPublishCustomNode(Function m)
{
- return AuthenticationManager.HasAuthProvider && m != null;
+ return AuthenticationManager.HasAuthProvider && m != null && !Model.NoNetworkMode;
}
public void PublishSelectedNodes(object m)
@@ -453,7 +453,7 @@ public void PublishSelectedNodes(object m)
public bool CanPublishSelectedNodes(object m)
{
return DynamoSelection.Instance.Selection.Count > 0 &&
- DynamoSelection.Instance.Selection.All(x => x is Function) && AuthenticationManager.HasAuthProvider; ;
+ DynamoSelection.Instance.Selection.All(x => x is Function) && AuthenticationManager.HasAuthProvider && !Model.NoNetworkMode;
}
private void ShowNodePublishInfo()
diff --git a/src/DynamoCoreWpf/Views/Menu/PreferencesView.xaml b/src/DynamoCoreWpf/Views/Menu/PreferencesView.xaml
index f63a3bf4882..fb40fc5ae70 100644
--- a/src/DynamoCoreWpf/Views/Menu/PreferencesView.xaml
+++ b/src/DynamoCoreWpf/Views/Menu/PreferencesView.xaml
@@ -14,6 +14,7 @@
xmlns:fa="clr-namespace:FontAwesome5;assembly=FontAwesome5.Net"
xmlns:packagemanager="clr-namespace:Dynamo.Wpf.Views.PackageManager"
xmlns:trustedpaths="clr-namespace:Dynamo.Wpf.Views"
+ xmlns:converters="clr-namespace:Dynamo.Controls;assembly=DynamoCoreWpf"
xmlns:wpfControls="clr-namespace:Dynamo.Wpf.Controls"
d:DataContext="{d:DesignInstance Type=viewModels:PreferencesViewModel}"
WindowStartupLocation="CenterOwner"
@@ -1900,7 +1901,19 @@
+ Text="{x:Static p:Resources.InstalledPackagePartialHyperlinkMessage}"
+ IsHitTestVisible="{Binding NoNetworkMode, Converter={StaticResource InverseBooleanConverter}}">
+
+
+
+
.
diff --git a/src/DynamoMLDataPipeline/DynamoMLDataPipeline.csproj b/src/DynamoMLDataPipeline/DynamoMLDataPipeline.csproj
index d70de1d7a9d..b22d6e79724 100644
--- a/src/DynamoMLDataPipeline/DynamoMLDataPipeline.csproj
+++ b/src/DynamoMLDataPipeline/DynamoMLDataPipeline.csproj
@@ -11,7 +11,7 @@
-
+
diff --git a/src/DynamoPackages/DynamoPackages.csproj b/src/DynamoPackages/DynamoPackages.csproj
index c409d05e0f5..6c116ff0f0c 100644
--- a/src/DynamoPackages/DynamoPackages.csproj
+++ b/src/DynamoPackages/DynamoPackages.csproj
@@ -30,7 +30,7 @@
-
+
diff --git a/src/DynamoPackages/PackageManagerClient.cs b/src/DynamoPackages/PackageManagerClient.cs
index b808f243a38..66aeed29628 100644
--- a/src/DynamoPackages/PackageManagerClient.cs
+++ b/src/DynamoPackages/PackageManagerClient.cs
@@ -2,7 +2,10 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
+using System.Net;
+using System.Net.Http;
using System.Text.Json;
+using System.Threading;
using System.Threading.Tasks;
using Dynamo.Graph.Workspaces;
using Greg;
@@ -49,14 +52,18 @@ public string BaseUrl
get { return this.client.BaseUrl; }
}
+ internal readonly bool NoNetworkMode;
+
#endregion
- internal PackageManagerClient(IGregClient client, IPackageUploadBuilder builder, string packageUploadDirectory)
+ internal PackageManagerClient(IGregClient client, IPackageUploadBuilder builder, string packageUploadDirectory,
+ bool noNetworkMode = false)
{
this.packageUploadDirectory = packageUploadDirectory;
this.uploadBuilder = builder;
this.client = client;
this.packageMaintainers = new Dictionary();
+ this.NoNetworkMode = noNetworkMode;
}
internal bool Upvote(string packageId)
@@ -340,13 +347,13 @@ internal PackageManagerResult Undeprecate(string name)
internal bool DoesCurrentUserOwnPackage(Package package,string username)
{
bool value;
- if (this.packageMaintainers.Count > 0 && this.packageMaintainers.TryGetValue(package.Name, out value)) {
+ if (packageMaintainers.Count > 0 && packageMaintainers.TryGetValue(package.Name, out value)) {
return value;
}
var pkg = new PackageInfo(package.Name, new Version(package.VersionName));
var mnt = GetPackageMaintainers(pkg);
value = (mnt != null) && (mnt.maintainers.Any(maintainer => maintainer.username.Equals(username)));
- this.packageMaintainers[package.Name] = value;
+ packageMaintainers[package.Name] = value;
return value;
}
@@ -386,7 +393,7 @@ internal void LoadCompatibilityMap()
{
compatibilityMap = new Dictionary>();
- var compatibilityMapList = this.CompatibilityMap();
+ var compatibilityMapList = CompatibilityMap();
PackageManagerClient.compatibilityMapList = compatibilityMapList; // Loads the full CompatibilityMap as a side-effect
foreach (var host in compatibilityMapList)
diff --git a/src/DynamoPackages/PackageManagerExtension.cs b/src/DynamoPackages/PackageManagerExtension.cs
index 257eb61a63e..2782118f0b9 100644
--- a/src/DynamoPackages/PackageManagerExtension.cs
+++ b/src/DynamoPackages/PackageManagerExtension.cs
@@ -2,12 +2,14 @@
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
+using System.Net.Http;
using System.Reflection;
using Dynamo.Extensions;
using Dynamo.Graph.Workspaces;
using Dynamo.Interfaces;
using Dynamo.Logging;
using Dynamo.Models;
+using Dynamo.Session;
using Greg;
using Greg.Responses;
@@ -157,12 +159,13 @@ public void Startup(StartupParams startupParams)
var packageUploadDirectory = startupParams.PathManager.DefaultPackagesDirectory;
- PackageManagerClient = new PackageManagerClient(
- new GregClient(startupParams.AuthProvider, url),
- uploadBuilder, packageUploadDirectory);
-
noNetworkMode = startupParams.NoNetworkMode;
+ var client = noNetworkMode ? new GregClient(startupParams.AuthProvider, url,
+ new HttpClient(new NoNetworkModeHandler())) : new GregClient(startupParams.AuthProvider, url);
+ PackageManagerClient = new PackageManagerClient(client, uploadBuilder, packageUploadDirectory, noNetworkMode);
+
+
//we don't ask dpm for the compatibility map in offline mode.
if (!noNetworkMode)
{
diff --git a/src/DynamoPackages/Properties/Resources.Designer.cs b/src/DynamoPackages/Properties/Resources.Designer.cs
index 44c2d96fe09..eea0f4fcff2 100644
--- a/src/DynamoPackages/Properties/Resources.Designer.cs
+++ b/src/DynamoPackages/Properties/Resources.Designer.cs
@@ -78,6 +78,15 @@ public static string CannotRemovePackageAssemblyTitle {
}
}
+ ///
+ /// Looks up a localized string similar to Package download is disabled in no-network mode..
+ ///
+ public static string DownloadPackageDisabled {
+ get {
+ return ResourceManager.GetString("DownloadPackageDisabled", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to The folder '{0}' does not exist.
///
diff --git a/src/DynamoPackages/Properties/Resources.en-US.resx b/src/DynamoPackages/Properties/Resources.en-US.resx
index 36b2910a0d1..49e86589f20 100644
--- a/src/DynamoPackages/Properties/Resources.en-US.resx
+++ b/src/DynamoPackages/Properties/Resources.en-US.resx
@@ -124,6 +124,9 @@
Cannot update assembly
+
+ Package download is disabled in no-network mode.
+
The folder '{0}' does not exist
This warning message is shown (during start up) when user specifies additional folders in DynamoSettings.xml file but the folders do not exist.
@@ -140,4 +143,4 @@
{0} was not scanned for packages because a preference setting disabled loading from that location."
This warning message is shown when a package directory is skipped due to a preference setting disabling loads from that location type.
-
+
\ No newline at end of file
diff --git a/src/DynamoPackages/Properties/Resources.resx b/src/DynamoPackages/Properties/Resources.resx
index 36b2910a0d1..49e86589f20 100644
--- a/src/DynamoPackages/Properties/Resources.resx
+++ b/src/DynamoPackages/Properties/Resources.resx
@@ -124,6 +124,9 @@
Cannot update assembly
+
+ Package download is disabled in no-network mode.
+
The folder '{0}' does not exist
This warning message is shown (during start up) when user specifies additional folders in DynamoSettings.xml file but the folders do not exist.
@@ -140,4 +143,4 @@
{0} was not scanned for packages because a preference setting disabled loading from that location."
This warning message is shown when a package directory is skipped due to a preference setting disabling loads from that location type.
-
+
\ No newline at end of file
diff --git a/src/Libraries/CoreNodeModels/WebRequest.cs b/src/Libraries/CoreNodeModels/WebRequest.cs
index 492439eada2..0f27f887a3c 100644
--- a/src/Libraries/CoreNodeModels/WebRequest.cs
+++ b/src/Libraries/CoreNodeModels/WebRequest.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using CoreNodeModels.Properties;
using DSCore;
@@ -9,7 +9,7 @@
namespace CoreNodeModels
{
[NodeName("Web Request")]
- [NodeDescription("WebRequestDescription", typeof(Resources))]
+ [NodeDescription(nameof(Resources.WebRequestDescription), typeof(Resources))]
[NodeCategory(BuiltinNodeCategories.CORE_WEB)]
[IsDesignScriptCompatible]
[OutPortTypes("var[]..[]")]
diff --git a/src/Libraries/CoreNodes/Web.cs b/src/Libraries/CoreNodes/Web.cs
index 518a45714da..c546e23d622 100644
--- a/src/Libraries/CoreNodes/Web.cs
+++ b/src/Libraries/CoreNodes/Web.cs
@@ -2,6 +2,8 @@
using System.IO;
using Autodesk.DesignScript.Runtime;
using Dynamo.Configuration;
+using Dynamo.Events;
+using Dynamo.Session;
namespace DSCore
{
@@ -10,6 +12,9 @@ public class Web
{
public static string WebRequestByUrl(string url)
{
+ // Prevent the node from executing in no network mode.
+ ExecutionSessionHelper.ThrowIfNoNetworkMode();
+
if (string.IsNullOrEmpty(url))
{
throw new ArgumentException(Properties.Resources.WebRequestNullUrlMessage);
diff --git a/src/NodeServices/DynamoServices.csproj b/src/NodeServices/DynamoServices.csproj
index caae8a34e55..a2bfa4ba341 100644
--- a/src/NodeServices/DynamoServices.csproj
+++ b/src/NodeServices/DynamoServices.csproj
@@ -25,4 +25,20 @@
+
+
+ True
+ True
+ Resources.resx
+
+
+
+
+
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+
+
\ No newline at end of file
diff --git a/src/NodeServices/ExecutionSession.cs b/src/NodeServices/ExecutionSession.cs
index 480d841eff0..db550990698 100644
--- a/src/NodeServices/ExecutionSession.cs
+++ b/src/NodeServices/ExecutionSession.cs
@@ -1,4 +1,10 @@
+using System;
using System.Collections.Generic;
+using System.Net;
+using System.Net.Http;
+using System.Threading;
+using System.Threading.Tasks;
+using Dynamo.Events;
namespace Dynamo.Session
{
@@ -81,5 +87,55 @@ public class ParameterKeys
/// The return value is an ILogger
///
public static readonly string Logger = nameof(Logger);
+
+ ///
+ /// True if Dynamo is used in offline mode.
+ ///
+ public static readonly string NoNetworkMode = nameof(NoNetworkMode);
+ }
+
+ public static class ExecutionSessionHelper
+ {
+ ///
+ /// Throw exception in no-network mode.
+ /// This helper method can be used to display a warning on a node that
+ /// needs to be prevented from running when no-network mode is enabled.
+ ///
+ ///
+ public static void ThrowIfNoNetworkMode()
+ {
+ var session = ExecutionEvents.ActiveSession;
+ if (session != null)
+ {
+ if ((bool)session.GetParameterValue(ParameterKeys.NoNetworkMode))
+ {
+ throw new InvalidOperationException(DynamoServices.Properties.Resources.WebRequestOfflineWarning);
+ }
+ }
+ }
+ }
+
+ ///
+ /// Custom HTTP message handler to simulate an "offline mode" (no-network mode) for network requests.
+ /// It can be used to intercept all outgoing HTTP requests and returns a predefined response indicating that the
+ /// application is offline.
+ ///
+ public class NoNetworkModeHandler : DelegatingHandler
+ {
+ public NoNetworkModeHandler() : base(new HttpClientHandler())
+ {
+ }
+
+ protected override Task SendAsync(
+ HttpRequestMessage request, CancellationToken cancellationToken)
+ {
+ var json = "{\"success\":false,\"message\":\"Application is in offline mode\",\"content\":null}";
+ var response = new HttpResponseMessage(HttpStatusCode.ServiceUnavailable)
+ {
+ Content = new StringContent(json, System.Text.Encoding.UTF8, "application/json"),
+ ReasonPhrase = "Offline Mode Enabled"
+ };
+ return Task.FromResult(response);
+ }
}
}
diff --git a/src/NodeServices/Properties/Resources.Designer.cs b/src/NodeServices/Properties/Resources.Designer.cs
new file mode 100644
index 00000000000..7722b3a5469
--- /dev/null
+++ b/src/NodeServices/Properties/Resources.Designer.cs
@@ -0,0 +1,72 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace DynamoServices.Properties {
+ using System;
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // 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", "17.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources() {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DynamoServices.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The Web Request node is unavailable in No Network mode..
+ ///
+ internal static string WebRequestOfflineWarning {
+ get {
+ return ResourceManager.GetString("WebRequestOfflineWarning", resourceCulture);
+ }
+ }
+ }
+}
diff --git a/src/NodeServices/Properties/Resources.en-US.resx b/src/NodeServices/Properties/Resources.en-US.resx
new file mode 100644
index 00000000000..9091fe5abde
--- /dev/null
+++ b/src/NodeServices/Properties/Resources.en-US.resx
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 1.3
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ The Web Request node is unavailable in No Network mode.
+
+
diff --git a/src/NodeServices/Properties/Resources.resx b/src/NodeServices/Properties/Resources.resx
new file mode 100644
index 00000000000..9091fe5abde
--- /dev/null
+++ b/src/NodeServices/Properties/Resources.resx
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 1.3
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ The Web Request node is unavailable in No Network mode.
+
+
diff --git a/src/PackageDetailsViewExtension/PackageDetailsViewExtension.csproj b/src/PackageDetailsViewExtension/PackageDetailsViewExtension.csproj
index 43a12c841a1..af3c2c15b98 100644
--- a/src/PackageDetailsViewExtension/PackageDetailsViewExtension.csproj
+++ b/src/PackageDetailsViewExtension/PackageDetailsViewExtension.csproj
@@ -14,7 +14,7 @@
false
-
+
diff --git a/src/Tools/NodeDocumentationMarkdownGenerator/NodeDocumentationMarkdownGenerator.csproj b/src/Tools/NodeDocumentationMarkdownGenerator/NodeDocumentationMarkdownGenerator.csproj
index 81a3426f27a..3ae5d61e936 100644
--- a/src/Tools/NodeDocumentationMarkdownGenerator/NodeDocumentationMarkdownGenerator.csproj
+++ b/src/Tools/NodeDocumentationMarkdownGenerator/NodeDocumentationMarkdownGenerator.csproj
@@ -12,7 +12,7 @@
-
+
diff --git a/test/DynamoCoreTests/DynamoCoreTests.csproj b/test/DynamoCoreTests/DynamoCoreTests.csproj
index 678a9b0f7c0..fca4afde67b 100644
--- a/test/DynamoCoreTests/DynamoCoreTests.csproj
+++ b/test/DynamoCoreTests/DynamoCoreTests.csproj
@@ -34,7 +34,7 @@
-
+
all
compile; build; native; contentfiles; analyzers; buildtransitive
diff --git a/test/DynamoCoreWpf2Tests/DynamoCoreWpf2Tests.csproj b/test/DynamoCoreWpf2Tests/DynamoCoreWpf2Tests.csproj
index 8cd45eaa220..c66ee9af32a 100644
--- a/test/DynamoCoreWpf2Tests/DynamoCoreWpf2Tests.csproj
+++ b/test/DynamoCoreWpf2Tests/DynamoCoreWpf2Tests.csproj
@@ -36,7 +36,7 @@
-
+
all
compile; build; native; contentfiles; analyzers; buildtransitive
diff --git a/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerControlTests.cs b/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerControlTests.cs
index ead9b7272ab..63798baaed7 100644
--- a/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerControlTests.cs
+++ b/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerControlTests.cs
@@ -23,7 +23,7 @@ public void SearchBoxControlTextTests()
{
// Setup
var mockGreg = new Mock();
- var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty);
+ var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty, false);
var pmCVM = new Mock(ViewModel, clientmock.Object) { CallBase = true };
var packageManagerSearchViewModel = new PackageManagerSearchViewModel(pmCVM.Object);
packageManagerSearchViewModel.RegisterTransientHandlers();
diff --git a/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerSearchElementViewModelTests.cs b/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerSearchElementViewModelTests.cs
index 885f81cd7d0..8b337a269df 100644
--- a/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerSearchElementViewModelTests.cs
+++ b/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerSearchElementViewModelTests.cs
@@ -49,7 +49,7 @@ public void TestPackageManagerSearchElementCanInstall()
string formItFilterName = "FormIt";
var mockGreg = new Mock();
- var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty);
+ var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty, false);
var pmCVM = new Mock(ViewModel, clientmock.Object) { CallBase = true }; ;
var ext = Model.GetPackageManagerExtension();
@@ -203,7 +203,7 @@ public void PackageSearchDialogSearchIntersectAgainstHostFilters()
List intersectionPackagesName = new List { "DynamoTestPackage1", "DynamoTestPackage2" };
var mockGreg = new Mock();
- var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty);
+ var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty, false);
var pmCVM = new Mock(ViewModel, clientmock.Object) {CallBase=true };
var packageManagerSearchViewModel = new PackageManagerSearchViewModel(pmCVM.Object);
@@ -306,7 +306,7 @@ public void PackageSearchDialogSearchTestStatusFilters()
List deprecatedPackagesName = new List { "DynamoTestPackage1", "DynamoTestPackage2" };
var mockGreg = new Mock();
- var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty);
+ var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty, false);
var pmCVM = new Mock(ViewModel, clientmock.Object) { CallBase = true };
var packageManagerSearchViewModel = new PackageManagerSearchViewModel(pmCVM.Object);
@@ -454,7 +454,7 @@ public void PackageSearchDialogSearchTestDependencyFilters()
List noDependencyPackagesName = new List { "DynamoIronPython2.7", "dynamo", "mise en barre", "Test-PackageDependencyFilter" };
var mockGreg = new Mock();
- var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty);
+ var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty, false);
var pmCVM = new Mock(ViewModel, clientmock.Object) { CallBase = true };
var packageManagerSearchViewModel = new PackageManagerSearchViewModel(pmCVM.Object);
@@ -579,7 +579,7 @@ public void PackageSearchDialogSearchTestCompatibilityFilters()
List unknownCompatibilityPackagesName = new List { "DynamoXCompatPackage" };
var mockGreg = new Mock();
- var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty);
+ var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty, false);
var pmCVM = new Mock(ViewModel, clientmock.Object) { CallBase = true };
var packageManagerSearchViewModel = new PackageManagerSearchViewModel(pmCVM.Object);
@@ -696,7 +696,7 @@ public void PackageSearchDialogSearchDifferentLanguage()
List packageHeaders = new List();
var mockGreg = new Mock();
- var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty);
+ var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty, false);
var pmCVM = new Mock(ViewModel, clientmock.Object) { CallBase = true };
List cachedPackages = new List();
foreach (var packageName in packagesNameDifferentLanguages)
@@ -762,7 +762,7 @@ public void PackageSearchOrderAfterTextReset()
List packagesVotes = new List { 50, 60, 90, 40 };
var mockGreg = new Mock();
- var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty);
+ var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty, false);
var pmCVM = new Mock(ViewModel, clientmock.Object) { CallBase = true };
var packageManagerSearchVM = new PackageManagerSearchViewModel(pmCVM.Object);
packageManagerSearchVM.RegisterTransientHandlers();
@@ -859,7 +859,7 @@ public void PackageSearchWithWhitespaceInName()
List packageHeaders = new List();
var mockGreg = new Mock();
- var clientMock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty);
+ var clientMock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty, false);
var pmCVM = new Mock(ViewModel, clientMock.Object) { CallBase = true };
List cachedPackages = new List();
foreach (var packageName in packagesListNames)
@@ -1225,7 +1225,7 @@ public void HostCompatibilityFiltersExclusivity()
{
var mockGreg = new Mock();
- var clientMock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty);
+ var clientMock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty, false);
var pmCVM = new Mock(ViewModel, clientMock.Object) { CallBase = true };
var pmSVM = new PackageManagerSearchViewModel(pmCVM.Object);
pmSVM.RegisterTransientHandlers();
diff --git a/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerUITests.cs b/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerUITests.cs
index 3ee4f301967..160e59af31a 100644
--- a/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerUITests.cs
+++ b/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerUITests.cs
@@ -1202,7 +1202,7 @@ public void PackageManagerDownloadsBeforeInstalling()
var mockGreg = new Mock();
- var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty);
+ var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty, false);
var pmVmMock = new Mock(ViewModel, clientmock.Object) { CallBase = true };
var sharedEngineVersion = DynamoModel.Version;
@@ -1318,7 +1318,7 @@ public void PackageManagerWarnWhenInstallingPackageTargetingOtherHost()
var mockGreg = new Mock();
- var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty);
+ var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty, false);
var pmVmMock = new Mock(ViewModel, clientmock.Object);
var pmMock = new Mock();
@@ -1424,7 +1424,7 @@ public void PackageManagerWarnWhenInstallingPackageTargetingOtherHost()
public void InstallsPackagesEvenIfSomeFailToDownloadShouldNotThrow()
{
var mockGreg = new Mock();
- var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty);
+ var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty, false);
var pmVmMock = new PackageManagerClientViewModel(ViewModel, clientmock.Object);
Assert.DoesNotThrow(() =>
{
diff --git a/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerViewModelTests.cs b/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerViewModelTests.cs
index 14f1c2ce0a6..8ed917a941e 100644
--- a/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerViewModelTests.cs
+++ b/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerViewModelTests.cs
@@ -17,7 +17,7 @@ internal class PackageManagerViewModelTests : SystemTestBase
public void PackageManagerLoadAllViewModelsTests()
{
var mockGreg = new Mock();
- var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty);
+ var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty, false);
var pmCVM = new Mock(ViewModel, clientmock.Object) { CallBase = true }; ;
var packageManagerSearchViewModel = new PackageManagerSearchViewModel(pmCVM.Object);
diff --git a/test/DynamoCoreWpf3Tests/DynamoCoreWpf3Tests.csproj b/test/DynamoCoreWpf3Tests/DynamoCoreWpf3Tests.csproj
index f18f32b9690..ed0d1e60e80 100644
--- a/test/DynamoCoreWpf3Tests/DynamoCoreWpf3Tests.csproj
+++ b/test/DynamoCoreWpf3Tests/DynamoCoreWpf3Tests.csproj
@@ -36,7 +36,7 @@
-
+
all
compile; build; native; contentfiles; analyzers; buildtransitive
diff --git a/test/DynamoCoreWpfTests/DynamoCoreWpfTests.csproj b/test/DynamoCoreWpfTests/DynamoCoreWpfTests.csproj
index ed9647d3705..86f9d74579a 100644
--- a/test/DynamoCoreWpfTests/DynamoCoreWpfTests.csproj
+++ b/test/DynamoCoreWpfTests/DynamoCoreWpfTests.csproj
@@ -37,7 +37,7 @@
-
+
all
compile; build; native; contentfiles; analyzers; buildtransitive
diff --git a/test/Libraries/PackageManagerTests/PackageManagerTests.csproj b/test/Libraries/PackageManagerTests/PackageManagerTests.csproj
index 94d85227180..2dd46a2fe1b 100644
--- a/test/Libraries/PackageManagerTests/PackageManagerTests.csproj
+++ b/test/Libraries/PackageManagerTests/PackageManagerTests.csproj
@@ -20,7 +20,7 @@
-
+
all
compile; build; native; contentfiles; analyzers; buildtransitive