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
11 changes: 10 additions & 1 deletion 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}}" />
Visibility="{Binding Path=IsHomeSpace, Converter={StaticResource InverseBoolToVisibilityCollapsedConverter}}"
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>

<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 @@ -38,6 +38,12 @@ public partial class WorkspaceDependencyView : UserControl, IDisposable

private Boolean hasDependencyIssue = false;

/// <summary>
/// True when Dynamo started in no-network mode. Bound to the Install button's
/// IsEnabled trigger so users see the disabled state and tooltip.
/// </summary>
public bool NoNetworkMode { get; private set; }

/// <summary>
/// Property to raise to author's attention, if the Dynamo active workspace has any missing dependencies.
/// This determines if the package dep viewer will be injected into right panel.
Expand Down Expand Up @@ -149,6 +155,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
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 @@ -35,6 +36,14 @@ public void ReturnsSameAsInputForUnknownMessages()
Assert.AreEqual(message, actual);
}

[Test]
public void WhenNoNetworkModeTooltipResourceRequestedThenItResolvesToNonEmpty()
{
// Guards against accidental deletion of the no-network mode tooltip resource string
// that the PM menu items in DynamoView.xaml depend on.
Assert.IsFalse(string.IsNullOrWhiteSpace(Resources.PackageManagerNoNetworkModeToolTip));
}

#endregion
}
}
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,50 @@ public void GetExternalFilesShouldBailIfGraphExecuting()
results = Model.CurrentWorkspace.ExternalFiles;
Assert.AreEqual(2, results.Count());
}

[Test]
public void WhenInstallButtonResourceStringRequestedThenItResolvesToNonEmpty()
{
// Guards against accidental deletion of the no-network mode tooltip resource string.
Assert.IsFalse(string.IsNullOrWhiteSpace(Resources.InstallButtonNoNetworkModeToolTip));
}
}

/// <summary>
/// Fixture that boots Dynamo in NoNetworkMode to verify the Workspace References
/// install button is disabled and exposes the no-network tooltip.
/// </summary>
[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,
GeometryFactoryPath = preloader.GeometryFactoryPath,
ProcessMode = TaskProcessMode.Synchronous,
NoNetworkMode = true,
};
}

[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);

// The view's NoNetworkMode flag should reflect the model startup configuration
// and that flag is what drives the DownloadPackageButton's IsEnabled state.
Assert.IsTrue(viewExtension.DependencyView.NoNetworkMode);
}
}
}
Loading