示例#1
0
        public VirtualControlData(VirtualControl vc)
        {
            for (var index = vc.Nodes.Count - 1; index >= 0; index--)
            {
                var node = vc.Nodes[index];
                if (node.Types != NodeTypes.Root && node.Types != NodeTypes.SpaghettiDivider)
                {
                    Nodes.Add(new NodeProperties(node));
                }
                else if (node.Types == NodeTypes.SpaghettiDivider)
                {
                    SpaghettiDividers.Add(new SpaghDividerProperties(node));
                    VolatileConnectors.Add(new VolatileConnector
                    {
                        X         = node.X,
                        Y         = node.Y,
                        Connector = ((SpaghettiDivider)node).ObjectConnector
                    });
                    (node as SpaghettiDivider).Delete();
                }
            }
            foreach (var conn in vc.ObjectConnectors)
            {
                ObjectConnectors.Add(new ObjectConnectorProperties(conn));
            }
            foreach (var conn in vc.ExecutionConnectors)
            {
                ExecutionConnectors.Add(new ExecutionConnectorProperties(conn));
            }

            foreach (var conn in VolatileConnectors)
            {
                var divider = new SpaghettiDivider(vc, conn.Connector, false);
                for (var index = 0; index < vc.ObjectConnectors.Count; index++)
                {
                    var c = vc.ObjectConnectors[index];
                    if (c == conn.Connector)
                    {
                        c.Delete();
                    }
                }
                conn.Connector.EndPort.ConnectedConnectors.ClearConnectors();
                vc.AddNode(divider, conn.X, conn.Y);
            }
        }
示例#2
0
        //private readonly DependencyPropertyDescriptor LeftTrigger
        //    = DependencyPropertyDescriptor.FromProperty(
        //        Canvas.LeftProperty, typeof(Node)
        //    );


        /// <summary>
        ///     The node that will contain the ports and data
        /// </summary>
        /// <param name="host"></param>
        /// <param name="type"></param>
        /// <param name="spontaneousAddition"></param>
        public Node(VirtualControl host, NodeTypes type, bool spontaneousAddition = true)
        {
            Types = type;
            Host  = host;
            Style = (Style)FindResource("NodeStyle");
            switch (type)
            {
            case NodeTypes.Event:
                Background = Brushes.Red;
                break;

            case NodeTypes.Basic:
                Background = Brushes.Transparent;
                break;

            case NodeTypes.Method:
                Background = Brushes.DeepSkyBlue;
                break;

            case NodeTypes.Function:
                Background = Brushes.LightGreen;
                break;

            case NodeTypes.VariableGet:
                Background = Brushes.Black;
                break;

            case NodeTypes.VariableSet:
                Background = Brushes.LightGray;
                break;

            case NodeTypes.Root:
                break;

            case NodeTypes.Code:
                break;

            case NodeTypes.SpaghettiDivider:
                break;

            case NodeTypes.CollapsedRegion:
                break;
            }
            var init = false;

            Loaded += (sender, args) =>
            {
                if (!init)
                {
                    FuncNodeInit();
                    init = true;
                }
            };
            Panel.SetZIndex(this, ZIndexes.NodeIndex);
            KeyboardNavigation.SetDirectionalNavigation(this, KeyboardNavigationMode.None);
            if (spontaneousAddition)
            {
                host.AddNode(this, Mouse.GetPosition(host).X - 5, Mouse.GetPosition(host).Y - 5,
                             type == NodeTypes.Root);
            }

            Id = Guid.NewGuid().ToString();
            Console.WriteLine(Id);
            IsVisibleChanged += Node_IsVisibleChanged;
            MouseDown        += Node_MouseDown;
        }