public void BeginDuplicateConnectionTest() { //Arrange string openPath = Path.Combine(TestDirectory, @"core\DetailedPreviewMargin_Test.dyn"); RunModel(openPath); Guid id = Guid.NewGuid(); //This guid belongs to a CoreNodeModels.CreateList node inside the .dyn file Guid existingNodeGuid = new Guid("81c94fd0-35a0-4680-8535-00aff41192d3"); //Connection Command with one Input port using a new guid var connectionCommand = new DynamoModel.MakeConnectionCommand(id, 0, PortType.Input, DynamoModel.MakeConnectionCommand.Mode.BeginDuplicateConnection); //Connection Command with one Output port using a new guid var connectionCommand2 = new DynamoModel.MakeConnectionCommand(id, 0, PortType.Output, DynamoModel.MakeConnectionCommand.Mode.BeginDuplicateConnection); var addNode = new DSFunction(CurrentDynamoModel.LibraryServices.GetFunctionDescriptor("+")); CurrentDynamoModel.CurrentWorkspace.AddAndRegisterNode(addNode, false); //Connection Command using a guid from a DSFunction added previosuly var connectionCommand3 = new DynamoModel.MakeConnectionCommand(addNode.GUID, 0, PortType.Input, DynamoModel.MakeConnectionCommand.Mode.BeginDuplicateConnection); //Act //The ExecuteCommand method internally will execute the BeginDuplicateConnectionTest method CurrentDynamoModel.ExecuteCommand(connectionCommand); CurrentDynamoModel.ExecuteCommand(connectionCommand2); CurrentDynamoModel.ExecuteCommand(connectionCommand3); //Assert //Validating that the commands were created successfully Assert.IsNotNull(connectionCommand); Assert.IsNotNull(connectionCommand2); Assert.IsNotNull(connectionCommand3); }
public void Watch3D_Disconnect_Reconnect_CorrectRenderings() { OpenVisualizationTest("ASM_points_line.dyn"); var ws = ViewModel.Model.CurrentWorkspace as HomeWorkspaceModel; var watch3DNode = ws.FirstNodeFromWorkspace <Watch3D>(); var totalPointsInView = BackgroundPreviewGeometry.TotalPoints(); Assert.Greater(totalPointsInView, 3); // Disconnect the port coming into the watch3d node. var connector = watch3DNode.InPorts[0].Connectors.First(); watch3DNode.InPorts[0].Connectors.Remove(connector); // Three items, the grid, the axes, and the light will remain. var view = FindFirstWatch3DNodeView(); Assert.AreEqual(view.View.Items.Count, 3); var linesNode = ws.Nodes.First(n => n.GUID.ToString() == "7c1cecee-43ed-43b5-a4bb-5f71c50341b2"); var cmd1 = new DynamoModel.MakeConnectionCommand(linesNode.GUID.ToString(), 0, PortType.Output, DynamoModel.MakeConnectionCommand.Mode.Begin); var cmd2 = new DynamoModel.MakeConnectionCommand(watch3DNode.GUID.ToString(), 0, PortType.Input, DynamoModel.MakeConnectionCommand.Mode.End); ViewModel.Model.ExecuteCommand(cmd1); ViewModel.Model.ExecuteCommand(cmd2); // View contains 3 default items and a collection of lines from the node connected to the Watch3D node Assert.AreEqual(4, view.View.Items.Count); }
private void MakeConnectionImpl(DynamoModel.MakeConnectionCommand command) { Guid nodeId = command.ModelGuid; switch (command.ConnectionMode) { case DynamoModel.MakeConnectionCommand.Mode.Begin: CurrentSpaceViewModel.BeginConnection( nodeId, command.PortIndex, command.Type); break; case DynamoModel.MakeConnectionCommand.Mode.End: CurrentSpaceViewModel.EndConnection( nodeId, command.PortIndex, command.Type); break; case DynamoModel.MakeConnectionCommand.Mode.BeginShiftReconnections: CurrentSpaceViewModel.BeginShiftReconnections( nodeId, command.PortIndex, command.Type); break; case DynamoModel.MakeConnectionCommand.Mode.EndShiftReconnections: CurrentSpaceViewModel.EndConnection( nodeId, command.PortIndex, command.Type); break; case DynamoModel.MakeConnectionCommand.Mode.Cancel: CurrentSpaceViewModel.CancelConnection(); break; } }
protected void MakeConnector(NodeModel start, NodeModel end, int portStart, int portEnd) { var cmdStart = new DynamoModel.MakeConnectionCommand(start.GUID, portStart, PortType.Output, DynamoModel.MakeConnectionCommand.Mode.Begin); this.Model.ExecuteCommand(cmdStart); var cmdend = new DynamoModel.MakeConnectionCommand(end.GUID, portEnd, PortType.Input, DynamoModel.MakeConnectionCommand.Mode.End); this.Model.ExecuteCommand(cmdend); }
internal bool HandlePortClicked(PortViewModel portViewModel) { // We only entertain port clicking when the current state is idle, // or when it is already having a connector being established. if (currentState != State.None && (currentState != State.Connection)) { return(false); } var portModel = portViewModel.PortModel; var workspaceViewModel = owningWorkspace.DynamoViewModel.CurrentSpaceViewModel; if (this.currentState != State.Connection) // Not in a connection attempt... { PortType portType = PortType.INPUT; Guid nodeId = portModel.Owner.GUID; int portIndex = portModel.Owner.GetPortIndexAndType(portModel, out portType); var mode = DynamoModel.MakeConnectionCommand.Mode.Begin; var command = new DynamoModel.MakeConnectionCommand(nodeId, portIndex, portType, mode); owningWorkspace.DynamoViewModel.ExecuteCommand(command); if (null != owningWorkspace.activeConnector) { this.currentState = State.Connection; owningWorkspace.CurrentCursor = CursorLibrary.GetCursor(CursorSet.ArcSelect); owningWorkspace.IsCursorForced = false; } } else // Attempt to complete the connection { // Check if connection is valid if (owningWorkspace.CheckActiveConnectorCompatibility(portViewModel)) { PortType portType = PortType.INPUT; Guid nodeId = portModel.Owner.GUID; int portIndex = portModel.Owner.GetPortIndexAndType(portModel, out portType); var mode = DynamoModel.MakeConnectionCommand.Mode.End; var command = new DynamoModel.MakeConnectionCommand(nodeId, portIndex, portType, mode); owningWorkspace.DynamoViewModel.ExecuteCommand(command); owningWorkspace.CurrentCursor = null; owningWorkspace.IsCursorForced = false; this.currentState = State.None; } } return(true); }
public override int Mutate(NodeModel node) { Random rand = new Random(1); DynamoViewModel.UIDispatcher.Invoke(new Action(() => { Guid guidNumber = Guid.NewGuid(); double coordinatesX = node.X * rand.NextDouble(); double coordinatesY = node.Y * rand.NextDouble(); DynamoModel.CreateNodeCommand createNodeNumber1 = null; //new DynamoModel.AddNodeCommand(guidNumber, "Number", coordinatesX, // coordinatesY, false, true); DynamoViewModel.ExecuteCommand(createNodeNumber1); DynamoModel.MakeConnectionCommand connToStart1 = new DynamoModel.MakeConnectionCommand(guidNumber, 0, PortType.Output, DynamoModel.MakeConnectionCommand.Mode.Begin); DynamoModel.MakeConnectionCommand connToStart2 = new DynamoModel.MakeConnectionCommand(node.GUID, 0, PortType.Input, DynamoModel.MakeConnectionCommand.Mode.End); DynamoModel.MakeConnectionCommand connToAmount1 = new DynamoModel.MakeConnectionCommand(guidNumber, 0, PortType.Output, DynamoModel.MakeConnectionCommand.Mode.Begin); DynamoModel.MakeConnectionCommand connToAmount2 = new DynamoModel.MakeConnectionCommand(node.GUID, 1, PortType.Input, DynamoModel.MakeConnectionCommand.Mode.End); DynamoModel.MakeConnectionCommand connToStep1 = new DynamoModel.MakeConnectionCommand(guidNumber, 0, PortType.Output, DynamoModel.MakeConnectionCommand.Mode.Begin); DynamoModel.MakeConnectionCommand connToStep2 = new DynamoModel.MakeConnectionCommand(node.GUID, 2, PortType.Input, DynamoModel.MakeConnectionCommand.Mode.End); DynamoViewModel.ExecuteCommand(connToStart1); //"Number" with "Number Sequence" on Start DynamoViewModel.ExecuteCommand(connToStart2); //"Number" with "Number Sequence" on Start DynamoViewModel.ExecuteCommand(connToAmount1); //"Number" with "Number Sequence" on Amount DynamoViewModel.ExecuteCommand(connToAmount2); //"Number" with "Number Sequence" on Amount DynamoViewModel.ExecuteCommand(connToStep1); //"Number" with "Number Sequence" on Step DynamoViewModel.ExecuteCommand(connToStep2); //"Number" with "Number Sequence" on Step })); return 4; }
public override int Mutate(NodeModel node) { Random rand = new Random(1); int countOfInPorts = 0; var nodeConnectors = node.AllConnectors.ToList(); foreach (ConnectorModel connector in nodeConnectors) { if (connector.Start.Owner.GUID != node.GUID) { Guid guidNumber = Guid.NewGuid(); double coordinatesX = node.X * rand.NextDouble(); double coordinatesYNumber1 = node.Y * rand.NextDouble(); countOfInPorts++; DynamoViewModel.UIDispatcher.Invoke(new Action(() => { //make node DynamoModel.CreateNodeCommand createNodeNumber1 = null; //new DynamoModel.AddNodeCommand(guidNumber, "Number", // coordinatesX, coordinatesYNumber1, false, true); //create node DynamoViewModel.ExecuteCommand(createNodeNumber1); int outPortIndex = connector.Start.Index; int inPortIndex = connector.End.Index; //make connection DynamoModel.MakeConnectionCommand connToStart1 = new DynamoModel.MakeConnectionCommand(guidNumber, outPortIndex, PortType.Output, DynamoModel.MakeConnectionCommand.Mode.Begin); DynamoModel.MakeConnectionCommand connToStart2 = new DynamoModel.MakeConnectionCommand(node.GUID, inPortIndex, PortType.Input, DynamoModel.MakeConnectionCommand.Mode.End); //create connections DynamoViewModel.ExecuteCommand(connToStart1); DynamoViewModel.ExecuteCommand(connToStart2); })); } } return(countOfInPorts * 2); }
private void MakeConnectionImpl(DynamoModel.MakeConnectionCommand command) { Guid nodeId = command.ModelGuid; switch (command.ConnectionMode) { case DynamoModel.MakeConnectionCommand.Mode.Begin: CurrentSpaceViewModel.BeginConnection( nodeId, command.PortIndex, command.Type); break; case DynamoModel.MakeConnectionCommand.Mode.End: CurrentSpaceViewModel.EndConnection( nodeId, command.PortIndex, command.Type); break; case DynamoModel.MakeConnectionCommand.Mode.BeginShiftReconnections: CurrentSpaceViewModel.BeginShiftReconnections( nodeId, command.PortIndex, command.Type); break; case DynamoModel.MakeConnectionCommand.Mode.EndShiftReconnections: CurrentSpaceViewModel.EndConnection( nodeId, command.PortIndex, command.Type); break; // TODO - can be removed in Dynamo 3.0 - DYN-1729 case DynamoModel.MakeConnectionCommand.Mode.EndAndStartCtrlConnection: CurrentSpaceViewModel.BeginCreateConnections( nodeId, command.PortIndex, command.Type); break; case DynamoModel.MakeConnectionCommand.Mode.BeginDuplicateConnection: CurrentSpaceViewModel.BeginConnection( nodeId, command.PortIndex, command.Type); break; case DynamoModel.MakeConnectionCommand.Mode.BeginCreateConnections: CurrentSpaceViewModel.BeginCreateConnections( nodeId, command.PortIndex, command.Type); break; case DynamoModel.MakeConnectionCommand.Mode.Cancel: CurrentSpaceViewModel.CancelConnection(); break; } }
public override int Mutate(NodeModel node) { DynamoViewModel.UIDispatcher.Invoke(new Action(() => { Guid guidNumber = Guid.NewGuid(); double coordinatesX = 120; double coordinatesY = 180; DynamoModel.CreateNodeCommand createNodeCmd1 = new DynamoModel.CreateNodeCommand(guidNumber, "Number", coordinatesX, coordinatesY, false, true); DynamoViewModel.ExecuteCommand(createNodeCmd1); DynamoModel.MakeConnectionCommand connToStart1 = new DynamoModel.MakeConnectionCommand(guidNumber, 0, PortType.OUTPUT, DynamoModel.MakeConnectionCommand.Mode.Begin); DynamoModel.MakeConnectionCommand connToStart2 = new DynamoModel.MakeConnectionCommand(node.GUID, 0, PortType.INPUT, DynamoModel.MakeConnectionCommand.Mode.End); DynamoModel.MakeConnectionCommand connToAmount1 = new DynamoModel.MakeConnectionCommand(guidNumber, 0, PortType.OUTPUT, DynamoModel.MakeConnectionCommand.Mode.Begin); DynamoModel.MakeConnectionCommand connToAmount2 = new DynamoModel.MakeConnectionCommand(node.GUID, 1, PortType.INPUT, DynamoModel.MakeConnectionCommand.Mode.End); DynamoModel.MakeConnectionCommand connToStep1 = new DynamoModel.MakeConnectionCommand(guidNumber, 0, PortType.OUTPUT, DynamoModel.MakeConnectionCommand.Mode.Begin); DynamoModel.MakeConnectionCommand connToStep2 = new DynamoModel.MakeConnectionCommand(node.GUID, 2, PortType.INPUT, DynamoModel.MakeConnectionCommand.Mode.End); DynamoViewModel.ExecuteCommand(connToStart1); //"Number" with "Number Range" on Start DynamoViewModel.ExecuteCommand(connToStart2); //"Number" with "Number Range" on Start DynamoViewModel.ExecuteCommand(connToAmount1); //"Number" with "Number Range" on End DynamoViewModel.ExecuteCommand(connToAmount2); //"Number" with "Number Range" on End DynamoViewModel.ExecuteCommand(connToStep1); //"Number" with "Number Range" on Step DynamoViewModel.ExecuteCommand(connToStep2); //"Number" with "Number Range" on Step })); return(4); }
public override int Mutate(NodeModel node) { NodeModel lastNode = DynamoModel.CurrentWorkspace.Nodes.Last(); if (lastNode.OutPorts.Count > 0) { DynamoViewModel.UIDispatcher.Invoke(new Action(() => { DynamoModel.MakeConnectionCommand connectCmd1 = new DynamoModel.MakeConnectionCommand(lastNode.GUID, 0, PortType.Output, DynamoModel.MakeConnectionCommand.Mode.Begin); DynamoModel.MakeConnectionCommand connectCmd2 = new DynamoModel.MakeConnectionCommand(node.GUID, 0, PortType.Input, DynamoModel.MakeConnectionCommand.Mode.End); DynamoViewModel.ExecuteCommand(connectCmd1); DynamoViewModel.ExecuteCommand(connectCmd2); })); } else { DynamoViewModel.UIDispatcher.Invoke(new Action(() => { DynamoModel.MakeConnectionCommand connectCmd1 = new DynamoModel.MakeConnectionCommand(node.GUID, 0, PortType.Output, DynamoModel.MakeConnectionCommand.Mode.Begin); DynamoModel.MakeConnectionCommand connectCmd2 = new DynamoModel.MakeConnectionCommand(lastNode.GUID, 0, PortType.Input, DynamoModel.MakeConnectionCommand.Mode.End); DynamoViewModel.ExecuteCommand(connectCmd1); DynamoViewModel.ExecuteCommand(connectCmd2); })); } return(5); }
internal bool HandlePortClicked(PortViewModel portViewModel) { // We only entertain port clicking when the current state is idle, // or when it is already having a connector being established. if (currentState != State.None && (currentState != State.Connection)) { return(false); } var portModel = portViewModel.PortModel; var workspaceViewModel = owningWorkspace.DynamoViewModel.CurrentSpaceViewModel; if (this.currentState != State.Connection) // Not in a connection attempt... { Guid nodeId = portModel.Owner.GUID; int portIndex = portModel.Index; var mode = DynamoModel.MakeConnectionCommand.Mode.Begin; if (Keyboard.Modifiers == ModifierKeys.Shift) //if shift key is down, handle multiple wire reconnections { multipleConnections = true; mode = DynamoModel.MakeConnectionCommand.Mode.BeginShiftReconnections; } var command = new DynamoModel.MakeConnectionCommand(nodeId, portIndex, portModel.PortType, mode); owningWorkspace.DynamoViewModel.ExecuteCommand(command); if (null != owningWorkspace.FirstActiveConnector) { this.currentState = State.Connection; owningWorkspace.CurrentCursor = CursorLibrary.GetCursor(CursorSet.ArcSelect); owningWorkspace.IsCursorForced = false; } } else // Attempt to complete the connection { // Check if connection is valid if (owningWorkspace.CheckActiveConnectorCompatibility(portViewModel)) { Guid nodeId = portModel.Owner.GUID; int portIndex = portModel.Index; var mode = DynamoModel.MakeConnectionCommand.Mode.End; if (multipleConnections) { mode = DynamoModel.MakeConnectionCommand.Mode.EndShiftReconnections; } var command = new DynamoModel.MakeConnectionCommand(nodeId, portIndex, portModel.PortType, mode); owningWorkspace.DynamoViewModel.ExecuteCommand(command); multipleConnections = false; owningWorkspace.CurrentCursor = null; owningWorkspace.IsCursorForced = false; this.currentState = State.None; } } return(true); }
public override int Mutate(NodeModel node) { int workspaceIndex = DynamoViewModel.CurrentWorkspaceIndex; Random rand = new Random(1); DynamoViewModel.UIDispatcher.Invoke(new Action(() => { DynamoModel.SwitchTabCommand switchCmd = new DynamoModel.SwitchTabCommand(workspaceIndex); DynamoViewModel.ExecuteCommand(switchCmd); Thread.Sleep(100); })); DynamoViewModel.UIDispatcher.Invoke(new Action(() => { DynamoModel.SwitchTabCommand switchCmd = new DynamoModel.SwitchTabCommand(workspaceIndex); DynamoViewModel.ExecuteCommand(switchCmd); Thread.Sleep(100); })); var workspaces = DynamoModel.Workspaces; CustomNodeInfo info; var id = ((Function)node).Definition.FunctionId; DynamoViewModel.Model.CustomNodeManager.TryGetNodeInfo(id, out info); var outputsInCustomNode = workspaces.FirstOrDefault((t) => (t.Name == info.Name)) .Nodes.Where(t => t.GetType() == typeof(Output)) .ToList(); Guid numberGuid = Guid.NewGuid(); double coordinatesX = rand.NextDouble() * node.X; double coordinatesY = rand.NextDouble() * node.Y; //DynamoViewModel.UIDispatcher.Invoke(new Action(() => //{ // DynamoModel.AddNodeCommand addCommand = // new DynamoModel.AddNodeCommand(numberGuid, "Number", // coordinatesX, coordinatesY, false, false); // DynamoViewModel.ExecuteCommand(addCommand); //})); foreach (NodeModel output in outputsInCustomNode) { DynamoViewModel.UIDispatcher.Invoke(new Action(() => { DynamoModel.MakeConnectionCommand connToAnother1 = new DynamoModel.MakeConnectionCommand(numberGuid, 0, PortType.Output, DynamoModel.MakeConnectionCommand.Mode.Begin); DynamoModel.MakeConnectionCommand connToAnother2 = new DynamoModel.MakeConnectionCommand(output.GUID, 0, PortType.Input, DynamoModel.MakeConnectionCommand.Mode.End); DynamoViewModel.ExecuteCommand(connToAnother1); DynamoViewModel.ExecuteCommand(connToAnother2); })); } int numberOfUndosNeeded = outputsInCustomNode.Count * 2 + 1; return(numberOfUndosNeeded); }