diff --git a/src/DynamoCore/Graph/Connectors/ConnectorModel.cs b/src/DynamoCore/Graph/Connectors/ConnectorModel.cs index d512f4e43bf..af34148351f 100644 --- a/src/DynamoCore/Graph/Connectors/ConnectorModel.cs +++ b/src/DynamoCore/Graph/Connectors/ConnectorModel.cs @@ -47,6 +47,21 @@ public bool IsHidden RaisePropertyChanged(nameof(IsHidden)); } } + + private bool isTransient = false; + /// + /// IsTransient flag controlling the transient state of the connector + /// + internal bool IsTransient + { + get { return isTransient; } + set + { + isTransient = value; + RaisePropertyChanged(nameof(IsTransient)); + } + } + /// /// Returns start port model. /// diff --git a/src/DynamoCoreWpf/PublicAPI.Unshipped.txt b/src/DynamoCoreWpf/PublicAPI.Unshipped.txt index ace018da3a9..a69e3a91269 100644 --- a/src/DynamoCoreWpf/PublicAPI.Unshipped.txt +++ b/src/DynamoCoreWpf/PublicAPI.Unshipped.txt @@ -139,6 +139,8 @@ Dynamo.Controls.ConnectionStateToBrushConverter.NoneBrush.get -> System.Windows. Dynamo.Controls.ConnectionStateToBrushConverter.NoneBrush.set -> void Dynamo.Controls.ConnectionStateToBrushConverter.SelectionBrush.get -> System.Windows.Media.SolidColorBrush Dynamo.Controls.ConnectionStateToBrushConverter.SelectionBrush.set -> void +Dynamo.Controls.ConnectionStateToBrushConverter.TransientBrush.get -> System.Windows.Media.SolidColorBrush +Dynamo.Controls.ConnectionStateToBrushConverter.TransientBrush.set -> void Dynamo.Controls.ConnectionStateToColorConverter Dynamo.Controls.ConnectionStateToColorConverter.ConnectionStateToColorConverter() -> void Dynamo.Controls.ConnectionStateToColorConverter.Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) -> object @@ -151,6 +153,8 @@ Dynamo.Controls.ConnectionStateToColorConverter.None.get -> System.Windows.Media Dynamo.Controls.ConnectionStateToColorConverter.None.set -> void Dynamo.Controls.ConnectionStateToColorConverter.Selection.get -> System.Windows.Media.Color Dynamo.Controls.ConnectionStateToColorConverter.Selection.set -> void +Dynamo.Controls.ConnectionStateToColorConverter.Transient.get -> System.Windows.Media.Color +Dynamo.Controls.ConnectionStateToColorConverter.Transient.set -> void Dynamo.Controls.ConnectionStateToVisibilityCollapsedConverter Dynamo.Controls.ConnectionStateToVisibilityCollapsedConverter.ConnectionStateToVisibilityCollapsedConverter() -> void Dynamo.Controls.ConnectionStateToVisibilityCollapsedConverter.Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) -> object @@ -2934,6 +2938,7 @@ Dynamo.ViewModels.PreviewState Dynamo.ViewModels.PreviewState.ExecutionPreview = 1 -> Dynamo.ViewModels.PreviewState Dynamo.ViewModels.PreviewState.Hover = 2 -> Dynamo.ViewModels.PreviewState Dynamo.ViewModels.PreviewState.None = 3 -> Dynamo.ViewModels.PreviewState +Dynamo.ViewModels.PreviewState.Transient = 4 -> Dynamo.ViewModels.PreviewState Dynamo.ViewModels.PreviewState.Selection = 0 -> Dynamo.ViewModels.PreviewState Dynamo.ViewModels.PythonTemplatePathEventArgs Dynamo.ViewModels.PythonTemplatePathEventArgs.Cancel.get -> bool diff --git a/src/DynamoCoreWpf/UI/Converters.cs b/src/DynamoCoreWpf/UI/Converters.cs index 9100638bd73..28add9dfe16 100644 --- a/src/DynamoCoreWpf/UI/Converters.cs +++ b/src/DynamoCoreWpf/UI/Converters.cs @@ -800,6 +800,7 @@ public class ConnectionStateToBrushConverter : IValueConverter public SolidColorBrush ExecutionPreviewBrush { get; set; } public SolidColorBrush NoneBrush { get; set; } public SolidColorBrush SelectionBrush { get; set; } + public SolidColorBrush TransientBrush { get; set; } public SolidColorBrush HoverBrush { get; set; } @@ -808,6 +809,8 @@ public object Convert(object value, Type targetType, object parameter, CultureIn var state = (PreviewState)value; switch (state) { + case PreviewState.Transient: + return TransientBrush; case PreviewState.ExecutionPreview: return ExecutionPreviewBrush; case PreviewState.None: @@ -833,12 +836,15 @@ public class ConnectionStateToColorConverter : IValueConverter public Color None { get; set; } public Color Selection { get; set; } public Color Hover { get; set; } + public Color Transient { get; set; } public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { var state = (PreviewState)value; switch (state) { + case PreviewState.Transient: + return Transient; case PreviewState.ExecutionPreview: return ExecutionPreview; case PreviewState.None: diff --git a/src/DynamoCoreWpf/UI/Themes/Modern/Connectors.xaml b/src/DynamoCoreWpf/UI/Themes/Modern/Connectors.xaml index 11be1a5771e..879374719db 100644 --- a/src/DynamoCoreWpf/UI/Themes/Modern/Connectors.xaml +++ b/src/DynamoCoreWpf/UI/Themes/Modern/Connectors.xaml @@ -1,4 +1,4 @@ - - \ No newline at end of file + diff --git a/src/DynamoCoreWpf/UI/Themes/Modern/DynamoConverters.xaml b/src/DynamoCoreWpf/UI/Themes/Modern/DynamoConverters.xaml index a7142bb45f9..4cf9cec41c3 100644 --- a/src/DynamoCoreWpf/UI/Themes/Modern/DynamoConverters.xaml +++ b/src/DynamoCoreWpf/UI/Themes/Modern/DynamoConverters.xaml @@ -35,13 +35,15 @@ ExecutionPreview="#F2930C" Hover="#808080" None="#444" - Selection="#6AC0E7" /> + Selection="#6AC0E7" + Transient="#D5BCF7"/> + SelectionBrush="#6AC0E7" + TransientBrush="#D5BCF7"/> diff --git a/src/DynamoCoreWpf/ViewModels/Core/ConnectorViewModel.cs b/src/DynamoCoreWpf/ViewModels/Core/ConnectorViewModel.cs index f49e046dcf2..548a98f7a89 100644 --- a/src/DynamoCoreWpf/ViewModels/Core/ConnectorViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/Core/ConnectorViewModel.cs @@ -20,7 +20,7 @@ namespace Dynamo.ViewModels { - public enum PreviewState { Selection, ExecutionPreview, Hover, None } + public enum PreviewState { Selection, ExecutionPreview, Hover, None, Transient } public partial class ConnectorViewModel : ViewModelBase { @@ -38,6 +38,7 @@ public partial class ConnectorViewModel : ViewModelBase private bool isConnecting = false; private bool isCollapsed = false; private bool isHidden = false; + private bool isTransient = false; private bool isTemporarilyVisible = false; private string connectorDataToolTip; private bool canShowConnectorTooltip = true; @@ -199,6 +200,22 @@ public bool IsHidden } } + internal bool IsTransient + { + get => isTransient; + set + { + if (isTransient == value) + { + return; + } + + isTransient = value; + RaisePropertyChanged(nameof(IsTransient)); + RaisePropertyChanged(nameof(PreviewState)); + } + } + /// /// Property which overrides 'isDisplayed==false' condition. When this prop is set to true, wires are set to /// 40% opacity. @@ -505,6 +522,11 @@ public PreviewState PreviewState return PreviewState.None; } + if (IsTransient) + { + return PreviewState.Transient; + } + if (Nodevm.ShowExecutionPreview || NodeEnd.ShowExecutionPreview) { return PreviewState.ExecutionPreview; diff --git a/src/NodeAutoCompleteViewExtension/ViewModels/NodeAutoCompleteBarViewModel.cs b/src/NodeAutoCompleteViewExtension/ViewModels/NodeAutoCompleteBarViewModel.cs index 39f3df0148e..aeba9434697 100644 --- a/src/NodeAutoCompleteViewExtension/ViewModels/NodeAutoCompleteBarViewModel.cs +++ b/src/NodeAutoCompleteViewExtension/ViewModels/NodeAutoCompleteBarViewModel.cs @@ -230,10 +230,10 @@ internal void ConsolidateTransientNodes() } //set the last connector to be connected - var transientConnectors = node.WorkspaceViewModel.Connectors.Where(c => c.IsConnecting).ToList(); + var transientConnectors = node.WorkspaceViewModel.Connectors.Where(c => c.IsTransient).ToList(); foreach (var connector in transientConnectors) { - connector.IsConnecting = false; + connector.IsTransient = false; } NodeAutoCompleteUtilities.PostAutoLayoutNodes(node.WorkspaceViewModel.Model, node.NodeModel, transientNodes.Select(x => x.NodeModel), true, true, false, null); @@ -817,7 +817,7 @@ internal void AddCluster(ClusterResultItem clusterResultItem) { entryConnector.IsHidden = true; var entryConnectorViewModel = workspaceViewModel.Connectors.First(c => c.ConnectorModel.Equals(entryConnector)); - entryConnectorViewModel.IsConnecting = true; + entryConnectorViewModel.IsTransient = true; createdClusterItems.Add(entryConnector); } } @@ -841,6 +841,10 @@ internal void AddCluster(ClusterResultItem clusterResultItem) { newConnector.IsHidden = true; // Hide the connector initially createdClusterItems.Add(newConnector); + + // toggle to be transient for preview purposes + var newConnectorViewModel = workspaceViewModel.Connectors.First(c => c.ConnectorModel.Equals(newConnector)); + newConnectorViewModel.IsTransient = true; } } }