Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions src/DynamoCoreWpf/Properties/Resources.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions src/DynamoCoreWpf/Properties/Resources.en-US.resx
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,9 @@
<data name="SignInOfflineButtonContentToolTip" xml:space="preserve">
<value>Enable Network Mode to be able to sign in.</value>
</data>
<data name="PackageManagerNoNetworkModeToolTip" xml:space="preserve">
<value>Enable Network Mode to be able to use Package Manager.</value>
</data>
<data name="Autodesk360SignInButtonTitleToolTip" xml:space="preserve">
<value>Autodesk A360</value>
</data>
Expand Down
3 changes: 3 additions & 0 deletions src/DynamoCoreWpf/Properties/Resources.resx
Original file line number Diff line number Diff line change
Expand Up @@ -2147,6 +2147,9 @@ Do you want to install the latest Dynamo update?</value>
<data name="SignInOfflineButtonContentToolTip" xml:space="preserve">
<value>Enable Network Mode to be able to sign in.</value>
</data>
<data name="PackageManagerNoNetworkModeToolTip" xml:space="preserve">
<value>Enable Network Mode to be able to use Package Manager.</value>
</data>
<data name="Autodesk360SignInButtonTitleToolTip" xml:space="preserve">
<value>Autodesk A360</value>
</data>
Expand Down
57 changes: 54 additions & 3 deletions src/DynamoCoreWpf/Views/Core/DynamoView.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -615,13 +615,64 @@
IsEnabled="True">
<MenuItem Name="publishSelected"
Command="{Binding Path=DataContext.PublishSelectedNodesCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type controls:DynamoView}}}"
Header="{x:Static p:Resources.DynamoViewPackageMenuPublishNodes}" />
Header="{x:Static p:Resources.DynamoViewPackageMenuPublishNodes}"
ToolTipService.ShowOnDisabled="True">
<MenuItem.ToolTip>
<ToolTip>
<ToolTip.Style>
<Style TargetType="ToolTip" BasedOn="{StaticResource GenericToolTipLight}">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding PlacementTarget.IsEnabled, RelativeSource={RelativeSource Self}}" Value="False">
<Setter Property="Visibility" Value="Visible" />
<Setter Property="Content" Value="{x:Static p:Resources.PackageManagerNoNetworkModeToolTip}" />
</DataTrigger>
</Style.Triggers>
</Style>
</ToolTip.Style>
</ToolTip>
</MenuItem.ToolTip>
</MenuItem>
<MenuItem Name="publishCurrent"
Command="{Binding Path=DataContext.PublishCurrentWorkspaceCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type controls:DynamoView}}}"
Header="{x:Static p:Resources.DynamoViewPackageMenuPublishWorkspace}" />
Header="{x:Static p:Resources.DynamoViewPackageMenuPublishWorkspace}"
ToolTipService.ShowOnDisabled="True">
<MenuItem.ToolTip>
<ToolTip>
<ToolTip.Style>
<Style TargetType="ToolTip" BasedOn="{StaticResource GenericToolTipLight}">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding PlacementTarget.IsEnabled, RelativeSource={RelativeSource Self}}" Value="False">
<Setter Property="Visibility" Value="Visible" />
<Setter Property="Content" Value="{x:Static p:Resources.PackageManagerNoNetworkModeToolTip}" />
</DataTrigger>
</Style.Triggers>
</Style>
</ToolTip.Style>
</ToolTip>
</MenuItem.ToolTip>
</MenuItem>
<MenuItem Name="showPM"
Command="{Binding Path=DataContext.ShowPackageManagerCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type controls:DynamoView}}}"
Header="{x:Static p:Resources.DynamoViewPackageMenuPackageManager}" />
Header="{x:Static p:Resources.DynamoViewPackageMenuPackageManager}"
ToolTipService.ShowOnDisabled="True">
<MenuItem.ToolTip>
<ToolTip>
<ToolTip.Style>
<Style TargetType="ToolTip" BasedOn="{StaticResource GenericToolTipLight}">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding PlacementTarget.IsEnabled, RelativeSource={RelativeSource Self}}" Value="False">
<Setter Property="Visibility" Value="Visible" />
<Setter Property="Content" Value="{x:Static p:Resources.PackageManagerNoNetworkModeToolTip}" />
</DataTrigger>
</Style.Triggers>
</Style>
</ToolTip.Style>
</ToolTip>
</MenuItem.ToolTip>
</MenuItem>
</MenuItem>

<MenuItem Name="HelpMenu"
Expand Down
19 changes: 18 additions & 1 deletion src/DynamoCoreWpf/Views/Core/WorkspaceView.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -755,7 +755,24 @@
<MenuItem Name="Publish"
Command="{Binding DynamoViewModel.PublishCurrentWorkspaceCommand}"
Header="{x:Static p:Resources.ContextMenuPublishCustomNode}"
Visibility="{Binding Path=IsHomeSpace, Converter={StaticResource InverseBoolToVisibilityCollapsedConverter}}" />
ToolTipService.ShowOnDisabled="True"
Visibility="{Binding Path=IsHomeSpace, Converter={StaticResource InverseBoolToVisibilityCollapsedConverter}}">
<MenuItem.ToolTip>
<ToolTip>
<ToolTip.Style>
<Style TargetType="ToolTip" BasedOn="{StaticResource GenericToolTipLight}">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding PlacementTarget.IsEnabled, RelativeSource={RelativeSource Self}}" Value="False">
<Setter Property="Visibility" Value="Visible" />
<Setter Property="Content" Value="{x:Static p:Resources.PackageManagerNoNetworkModeToolTip}" />
</DataTrigger>
</Style.Triggers>
</Style>
</ToolTip.Style>
</ToolTip>
</MenuItem.ToolTip>
</MenuItem>

<Separator />

Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -225,6 +225,9 @@
<data name="InstallButtonText" xml:space="preserve">
<value>Install Specified Version</value>
</data>
<data name="InstallButtonNoNetworkModeToolTip" xml:space="preserve">
<value>Enable Network Mode to be able to install packages.</value>
</data>
<data name="JsonIcon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -225,6 +225,9 @@
<data name="InstallButtonText" xml:space="preserve">
<value>Install Specified Version</value>
</data>
<data name="InstallButtonNoNetworkModeToolTip" xml:space="preserve">
<value>Enable Network Mode to be able to install packages.</value>
</data>
<data name="JsonIcon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
Expand Down
31 changes: 28 additions & 3 deletions src/WorkspaceDependencyViewExtension/WorkspaceDependencyView.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -247,12 +247,37 @@
FontSize="11">
</TextBlock>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<Button Style="{StaticResource SmallTextButton}"
Visibility="{Binding Path=ShowDownloadButton, Converter={StaticResource BoolToVis}}"
<Button Visibility="{Binding Path=ShowDownloadButton, Converter={StaticResource BoolToVis}}"
Name="DownloadPackageButton"
Click="DownloadPackage"
Margin="10"
Content="{x:Static w:Resources.InstallButtonText}"/>
Content="{x:Static w:Resources.InstallButtonText}"
ToolTipService.ShowOnDisabled="True">
<Button.Style>
<Style TargetType="Button" BasedOn="{StaticResource SmallTextButton}">
<Style.Triggers>
<DataTrigger Binding="{Binding NoNetworkMode, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" Value="True">
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
<Button.ToolTip>
<ToolTip>
<ToolTip.Style>
<Style TargetType="ToolTip" BasedOn="{StaticResource GenericToolTipLight}">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding PlacementTarget.IsEnabled, RelativeSource={RelativeSource Self}}" Value="False">
<Setter Property="Visibility" Value="Visible" />
<Setter Property="Content" Value="{x:Static w:Resources.InstallButtonNoNetworkModeToolTip}" />
</DataTrigger>
</Style.Triggers>
</Style>
</ToolTip.Style>
</ToolTip>
</Button.ToolTip>
</Button>
<Button Style="{StaticResource SmallTextButton}"
Visibility="{Binding Path=ShowKeepLocalButton, Converter={StaticResource BoolToVis}}"
Name="KeepLocalPackageButton"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,13 @@ public partial class WorkspaceDependencyView : UserControl, IDisposable

private readonly IPackageInstaller packageInstaller;

/// <summary>
/// Indicates whether Dynamo was started in no-network mode. When true, the
/// Install Specified Version button in this extension is disabled and shows
/// a tooltip explaining that Network Mode must be enabled to install packages.
/// </summary>
public bool NoNetworkMode { get; private set; }

private Boolean hasDependencyIssue = false;

/// <summary>
Expand Down Expand Up @@ -149,6 +156,7 @@ public WorkspaceDependencyView(WorkspaceDependencyViewExtension viewExtension, V
currentWorkspace.PropertyChanged += OnWorkspacePropertyChanged;
loadedParams = p;
packageInstaller = p.PackageInstaller;
NoNetworkMode = p.StartupParams.NoNetworkMode;
dependencyViewExtension = viewExtension;
HomeWorkspaceModel.WorkspaceClosed += this.CloseExtensionTab;
}
Expand Down
10 changes: 10 additions & 0 deletions test/DynamoCoreWpf2Tests/PackageManager/PackageManagerUnitTests.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using Dynamo;
using Dynamo.PackageManager;
using Dynamo.Wpf.Properties;
using NUnit.Framework;

namespace DynamoCoreWpfTests.PackageManager
Expand Down Expand Up @@ -36,5 +37,14 @@ public void ReturnsSameAsInputForUnknownMessages()
}

#endregion

// The disabled-state tooltip on the Packages menu items in DynamoView.xaml
// binds to this resource key via {x:Static p:Resources.PackageManagerNoNetworkModeToolTip}.
// If the key is dropped from the .resx, the XAML still parses but hover shows nothing.
[Test]
public void WhenNoNetworkModeTooltipResourceRequestedThenItResolvesToNonEmpty()
{
Assert.IsFalse(string.IsNullOrWhiteSpace(Resources.PackageManagerNoNetworkModeToolTip));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -344,7 +344,7 @@ public void VerifyExternalFileReferences()
[Test]
public void GetExternalFilesShouldBailIfGraphExecuting()
{
// Open test file to verify the external file references are not computed when RunEnabled is false.
// Open test file to verify the external file references are not computed when RunEnabled is false.
var examplePath = Path.Combine(@"core\ExternalReferencesTest.dyn");
Open(examplePath);
(Model.CurrentWorkspace as HomeWorkspaceModel).RunSettings.RunEnabled = false;
Expand All @@ -356,5 +356,51 @@ public void GetExternalFilesShouldBailIfGraphExecuting()
results = Model.CurrentWorkspace.ExternalFiles;
Assert.AreEqual(2, results.Count());
}

// The disabled-state tooltip on the Install Specified Version button in
// WorkspaceDependencyView.xaml binds to this resource key. If the key is dropped
// from the .resx, the XAML still parses but hover shows nothing.
[Test]
public void WhenInstallButtonResourceStringRequestedThenItResolvesToNonEmpty()
{
Assert.IsFalse(string.IsNullOrWhiteSpace(Resources.InstallButtonNoNetworkModeToolTip));
}
}

[TestFixture]
public class WorkspaceDependencyViewExtensionNoNetworkModeTests : DynamoTestUIBase
{
private WorkspaceDependencyViewExtension viewExtension = new WorkspaceDependencyViewExtension();

protected override DynamoModel.IStartConfiguration CreateStartConfiguration(IPathResolver pathResolver)
{
return new DynamoModel.DefaultStartConfiguration()
{
PathResolver = pathResolver,
StartInTestMode = true,
NoNetworkMode = true,
GeometryFactoryPath = preloader.GeometryFactoryPath,
ProcessMode = TaskProcessMode.Synchronous
};
}

// NoNetworkMode on the view is what drives the XAML DataTrigger that disables the
// Install Specified Version button. Asserting the property directly is intentional:
// WPF triggers do not fire until the visual tree is fully realized, which is not
// guaranteed in a headless NUnit run.
[Test]
public void WhenNoNetworkModeThenWorkspaceReferencesInstallButtonIsDisabled()
{
RaiseLoadedEvent(this.View);
var extensionManager = View.viewExtensionManager;
extensionManager.Add(viewExtension);

var loadedParams = new ViewLoadedParams(View, ViewModel);
viewExtension.pmExtension = this.Model.ExtensionManager.Extensions.OfType<PackageManagerExtension>().FirstOrDefault();
viewExtension.Loaded(loadedParams);

Assert.IsTrue(loadedParams.StartupParams.NoNetworkMode);
Assert.IsTrue(viewExtension.DependencyView.NoNetworkMode);
}
}
}
Loading