public IEnumerator MovingAStackMovesStackedNodeConnectedFloatingNode([Values] TestingMode mode) { var stackModel0 = GraphModel.CreateStack(string.Empty, new Vector2(-100, -100)); UnaryOperatorNodeModel unary = stackModel0.CreateStackedNode <UnaryOperatorNodeModel>("postDecr", setup: n => n.kind = UnaryOperatorKind.PostDecrement); BinaryOperatorNodeModel operatorModel = GraphModel.CreateBinaryOperatorNode(BinaryOperatorKind.Add, new Vector2(-100, -100)); IConstantNodeModel intModel = GraphModel.CreateConstantNode("int", typeof(int).GenerateTypeHandle(GraphModel.Stencil), new Vector2(-150, -100)); GraphModel.CreateEdge(unary.InputPort, operatorModel.OutputPort); GraphModel.CreateEdge(operatorModel.InputPortA, intModel.OutputPort); yield return(TestMove(mode, mouseDelta: new Vector2(20, 10), movedNodes: new INodeModel[] { stackModel0 }, expectedMovedDependencies: new INodeModel[] { operatorModel, intModel } )); }
static object[] MakeEdgeActionSetup <TAction>(TestContext ctx, int numEdges, Func <VSGraphModel, TAction> getAction, State.UIRebuildType rebuildType = State.UIRebuildType.Partial) where TAction : IAction { Func <VSGraphModel, TAction> f = graphModel => { ctx.InputPorts.Capacity = numEdges; ctx.OutputPorts.Capacity = numEdges; ctx.InputPorts.Clear(); ctx.OutputPorts.Clear(); for (int i = 0; i < numEdges; i++) { ConstantNodeModel c = (ConstantNodeModel)graphModel.CreateConstantNode("Const" + i, typeof(int).GenerateTypeHandle(graphModel.Stencil), Vector2.zero); UnaryOperatorNodeModel op = graphModel.CreateUnaryOperatorNode(UnaryOperatorKind.Minus, Vector2.zero); ctx.InputPorts.Add(op.InputPort as PortModel); ctx.OutputPorts.Add(c.OutputPort as PortModel); } return(getAction(graphModel)); }; return(new object[] { typeof(TAction).Name, rebuildType, f }); }
public static IEnumerable <SyntaxNode> BuildUnaryOperator(this RoslynTranslator translator, UnaryOperatorNodeModel model, IPortModel portModel) { yield return(RoslynBuilder.UnaryOperator(model.kind, translator.BuildPort(model.InputPort).SingleOrDefault())); }
public static IGraphElement CreateUnaryOperator(this ElementBuilder elementBuilder, IStore store, UnaryOperatorNodeModel model) { var ui = new Node(); ui.Setup(model, store, elementBuilder.GraphView); ui.CustomSearcherHandler = (node, nStore, pos, _) => { SearcherService.ShowEnumValues("Pick a new operator type", typeof(UnaryOperatorKind), pos, (pickedEnum, __) => { if (pickedEnum != null) { ((UnaryOperatorNodeModel)node.NodeModel).Kind = (UnaryOperatorKind)pickedEnum; nStore.Dispatch(new RefreshUIAction(UpdateFlags.GraphTopology)); } }); return(true); }; return(ui); }
public static IEnumerable <SyntaxNode> BuildUnaryOperator(this RoslynTranslator translator, UnaryOperatorNodeModel model, IPortModel portModel) { var semantic = model.Kind == UnaryOperatorKind.PostDecrement || model.Kind == UnaryOperatorKind.PostIncrement ? RoslynTranslator.PortSemantic.Write : RoslynTranslator.PortSemantic.Read; yield return(RoslynBuilder.UnaryOperator(model.Kind, translator.BuildPort(model.InputPort, semantic).SingleOrDefault())); }
public static GraphElement CreateUnaryOperator(this INodeBuilder builder, Store store, UnaryOperatorNodeModel model) { return(new Node(model, store, builder.GraphView) { CustomSearcherHandler = (node, nStore, pos, _) => { SearcherService.ShowEnumValues("Pick a new operator type", typeof(UnaryOperatorKind), pos, (pickedEnum, __) => { if (pickedEnum != null) { ((UnaryOperatorNodeModel)node.model).Kind = (UnaryOperatorKind)pickedEnum; nStore.Dispatch(new RefreshUIAction(UpdateFlags.GraphTopology)); } }); return true; } }); }