Ejemplo n.º 1
0
            public UnconditionalBranchNode(NodeDiagram parent, ILInstruction instruction)
                : base(parent)
            {
                this.Instruction = instruction;
                string operand = instruction.GetOperandString();

                Text = instruction.Offset.ToString("x4") + Environment.NewLine + instruction.Code.ToString() + (string.IsNullOrEmpty(operand) ? "" : Environment.NewLine + operand);

                using (System.Drawing.Graphics g = parent.CreateGraphics())
                {
                    SizeF s = g.MeasureString(Text, parent.Font);

                    nodeSize = base.NodeSize;

                    if (s.Width > base.NodeSize.Width)
                    {
                        nodeSize = new Size((int)s.Width, nodeSize.Height);
                    }

                    if (s.Height > base.NodeSize.Height)
                    {
                        nodeSize = new Size((int)nodeSize.Width, (int)s.Height);
                    }
                }
            }
 public ConditionNode(NodeDiagram parent, Color color, bool target)
     : base(parent)
 {
     LinksTo              = new ConditionCollection(this);
     this.Direction       = DirectionEnum.Vertical;
     this.Container_color = color;
     this.target          = target;
 }
Ejemplo n.º 3
0
 public override Node CreateNode(NodeDiagram diagram)
 {
     if (diagram.Nodes.OfType <StartNode>().Any())
     {
         // allow only 1 start node
         return(null);
     }
     else
     {
         return(new StartNode(diagram));
     }
 }
Ejemplo n.º 4
0
 Main_Instance()
 {
     workspace   = new Workspace();
     NodeDiagram = new NodeDiagram();
     Module_list = new Dictionary <General_Config.Module_Type, List <IGeneral_module> >();
     foreach (General_Config.Module_Type key in Enum.GetValues(typeof(General_Config.Module_Type)))
     {
         Module_list.Add(key, new List <IGeneral_module>());
     }
     NodeDiagram.DiagramEvent += NodeDiagram_DiagramEvent;
     Config = new General_Config();
 }
Ejemplo n.º 5
0
            public StatementNode(NodeDiagram parent, Statement statement)
                : base(parent)
            {
                this.Statement = statement;
                Text           = statement.Expression;

                using (System.Drawing.Graphics g = parent.CreateGraphics())
                {
                    SizeF s = g.MeasureString(Text, parent.Font);

                    nodeSize = base.NodeSize;

                    if (s.Width > base.NodeSize.Width)
                    {
                        nodeSize = new Size((int)s.Width, nodeSize.Height);
                    }

                    if (s.Height > base.NodeSize.Height)
                    {
                        nodeSize = new Size((int)nodeSize.Width, (int)s.Height);
                    }
                }
            }
Ejemplo n.º 6
0
        private void drawSubNodes(TreeNode treeNode, ConditionNode prevNode, NodeDiagram nodeDiagram, int level)
        {
            if (treeNode.Nodes.Count > 0)
            {
                Random        rnd  = new Random(100);
                ConditionNode node = prevNode;
                if (prevNode == null)
                {
                    node = new ConditionNode(nodeDiagram, Color.Orange, true)
                    {
                        Text = treeNode.Text
                    };
                    if (Main_Instance.Instance.Workspace.TreeViewPositions.ContainsKey(node.Text))
                    {
                        node.Position = Main_Instance.Instance.Workspace.TreeViewPositions[node.Text];
                    }
                    if (Main_Instance.Instance.Workspace.TreeViewColors.ContainsKey(node.Text))
                    {
                        node.Container_color = Color.FromArgb(Main_Instance.Instance.Workspace.TreeViewColors[node.Text]);
                    }
                }

                foreach (TreeNode subnode in treeNode.Nodes)
                {
                    if (subnode.Nodes.Count > 0)
                    {
                        var node2 = new ConditionNode(nodeDiagram,
                                                      level == 0 ? Color.Cyan : level == 1 ? Color.DarkGray : Color.Gray
                                                      , false)
                        {
                            Text = subnode.Text
                        };

                        if (Main_Instance.Instance.Workspace.TreeViewPositions.ContainsKey(node2.Text))
                        {
                            node2.Position = Main_Instance.Instance.Workspace.TreeViewPositions[node2.Text];
                        }
                        else
                        {
                            if (subnode.Parent != null && Main_Instance.Instance.Workspace.TreeViewPositions.ContainsKey(subnode.Parent.Text))
                            {
                                node2.Position = Main_Instance.Instance.Workspace.TreeViewPositions[subnode.Parent.Text];
                                node2.Position = new Point(node2.Position.X, node2.Position.Y + node2.NodeSize.Height);
                                Main_Instance.Instance.Workspace.TreeViewPositions.Add(node2.Text, node2.Position);
                            }
                            //
                        }
                        if (Main_Instance.Instance.Workspace.TreeViewColors.ContainsKey(node2.Text))
                        {
                            node2.Container_color = Color.FromArgb(Main_Instance.Instance.Workspace.TreeViewColors[node2.Text]);
                        }
                        node.LinksTo.Add(new Condition()
                        {
                            LinksTo = node2
                        });
                        nodeDiagram.Nodes.Add(node2);
                        drawSubNodes(subnode, node2, nodeDiagram, level + 1);
                    }
                    else
                    {
                        node.LinksTo.Add(new Condition()
                        {
                            Text = subnode.Text
                        });
                    }
                }
                if (prevNode == null)
                {
                    nodeDiagram.Nodes.Add(node);
                }
                return;
            }
            else
            {
                if (prevNode == null)
                {
                    ConditionNode node = new ConditionNode(nodeDiagram, Color.Orange, true)
                    {
                        Text = treeNode.Text
                    };
                    if (Main_Instance.Instance.Workspace.TreeViewPositions.ContainsKey(node.Text))
                    {
                        node.Position = Main_Instance.Instance.Workspace.TreeViewPositions[node.Text];
                    }
                    nodeDiagram.Nodes.Add(node);
                }
            }
            return;
        }
Ejemplo n.º 7
0
 public Node(NodeDiagram parent)
 {
     this.parent = parent;
     ParentNodes = new ParentNodeCollection();
 }
Ejemplo n.º 8
0
 public Tool(NodeDiagram diagram)
 {
     this.diagram = diagram;
 }
Ejemplo n.º 9
0
 public override Node CreateNode(NodeDiagram diagram)
 {
     return(new ConditionNode(diagram));
 }
Ejemplo n.º 10
0
 public EndNode(NodeDiagram parent)
     : base(parent)
 {
 }
Ejemplo n.º 11
0
 public TextNode(NodeDiagram parent)
     : base(parent)
 {
 }
Ejemplo n.º 12
0
        public Form1()
        {
            InitializeComponent();

            d      = new NodeDiagram();
            d.Dock = DockStyle.Fill;
            pnl.Controls.Add(d);

            var n = new TextNode(d)
            {
                Text = "Test"
            };

            var subn = new ConditionNode(d)
            {
                Text = "OK?"
            };

            n.LinksTo = subn;

            var yesNode = new TextNode(d)
            {
                Text = "Alright then", LinksTo = n
            };

            subn.LinksTo.Add(new Condition()
            {
                Text = "Yes", LinksTo = yesNode
            });

            subn.LinksTo.Add(new Condition()
            {
                Text = "Come again?", LinksTo = subn
            });

            var noNode = new TextNode(d)
            {
                Text = "Your loss", LinksTo = subn
            };

            subn.LinksTo.Add(new Condition()
            {
                Text = "No", LinksTo = noNode
            });

            d.Nodes.Add(n);
            d.Nodes.Add(subn);
            d.Nodes.Add(yesNode);
            d.Nodes.Add(noNode);

            d.Nodes.Add(n);

            var unlinkedNode = new TextNode(d)
            {
                Text = "Unlinked "
            };

            d.Nodes.Add(unlinkedNode);

            foreach (var node in d.Nodes)
            {
                node.Direction = Node.DirectionEnum.Vertical;
            }

            d.AutoLayout(true);
        }
Ejemplo n.º 13
0
 public DragTool(NodeDiagram diagram)
     : base(diagram)
 {
     selectedObjectsPositions = new Dictionary <Node, Point>();
 }
 public override Node CreateNode(NodeDiagram diagram)
 {
     return(new ConditionNode(diagram, Color.DeepSkyBlue, false));
 }
Ejemplo n.º 15
0
 public StartNode(NodeDiagram parent)
     : base(parent)
 {
 }
Ejemplo n.º 16
0
 public CreateLinkTool(NodeDiagram diagram)
     : base(diagram)
 {
 }
Ejemplo n.º 17
0
 public ConditionNode(NodeDiagram parent)
     : base(parent)
 {
     LinksTo = new ConditionCollection(this);
 }
Ejemplo n.º 18
0
 public override Node CreateNode(NodeDiagram diagram)
 {
     return(new ConditionNode(diagram, Color.Orange, true));
 }
Ejemplo n.º 19
0
            public BranchNode(NodeDiagram parent, ILInstruction instruction)
                : base(parent)
            {
                this.Instruction = instruction;
                string operand = instruction.GetOperandString();

                Text = instruction.Offset.ToString("x4") + Environment.NewLine + instruction.Code.ToString() + (string.IsNullOrEmpty(operand) ? "" : Environment.NewLine + operand);

                using (System.Drawing.Graphics g = parent.CreateGraphics())
                {
                    SizeF s = g.MeasureString(Text, parent.Font);

                    nodeSize = base.NodeSize;

                    if (s.Width > base.NodeSize.Width)
                    {
                        nodeSize = new Size((int)s.Width, nodeSize.Height);
                    }

                    if (s.Height > base.NodeSize.Height)
                    {
                        nodeSize = new Size((int)nodeSize.Width, (int)s.Height);
                    }
                }


                if (instruction.Code == OpCodes.Beq || instruction.Code == OpCodes.Beq_S)
                {
                    jumpExpression     = "==";
                    continueExpression = "!=";
                }
                else if (instruction.Code == OpCodes.Bge || instruction.Code == OpCodes.Bge_S ||
                         instruction.Code == OpCodes.Bge_Un || instruction.Code == OpCodes.Bge_Un_S)
                {
                    jumpExpression     = ">=";
                    continueExpression = "<";
                }
                else if (instruction.Code == OpCodes.Bgt || instruction.Code == OpCodes.Bgt_S ||
                         instruction.Code == OpCodes.Bgt_Un || instruction.Code == OpCodes.Bgt_Un_S)
                {
                    jumpExpression     = ">";
                    continueExpression = "<=";
                }
                else if (instruction.Code == OpCodes.Ble || instruction.Code == OpCodes.Ble_S ||
                         instruction.Code == OpCodes.Ble_Un || instruction.Code == OpCodes.Ble_Un_S)
                {
                    jumpExpression     = "<=";
                    continueExpression = ">";
                }
                else if (instruction.Code == OpCodes.Blt || instruction.Code == OpCodes.Blt_S ||
                         instruction.Code == OpCodes.Blt_Un || instruction.Code == OpCodes.Blt_Un_S)
                {
                    jumpExpression     = "<";
                    continueExpression = ">=";
                }
                else if (instruction.Code == OpCodes.Bne_Un || instruction.Code == OpCodes.Bne_Un_S)
                {
                    jumpExpression     = "!=";
                    continueExpression = "==";
                }
                else if (instruction.Code == OpCodes.Brfalse || instruction.Code == OpCodes.Brfalse_S)
                {
                    jumpExpression     = "false";
                    continueExpression = "true";
                }
                else if (instruction.Code == OpCodes.Brtrue || instruction.Code == OpCodes.Brtrue_S)
                {
                    jumpExpression     = "true";
                    continueExpression = "false";
                }
                LinksTo.Add(new Condition()
                {
                    Text = continueExpression
                });
                LinksTo.Add(new Condition()
                {
                    Text = jumpExpression
                });
            }
Ejemplo n.º 20
0
        public Form1()
        {
            InitializeComponent();

            d      = new NodeDiagram();
            d.Dock = DockStyle.Fill;
            pnl.Controls.Add(d);

            var n = new ConditionNode(d, Color.DeepSkyBlue, false)
            {
                Text = "Test"
            };

            var subn = new ConditionNode(d, Color.Orange, true)
            {
                Text = "I NEED A LOT OF TEXT TO TEST THE FUNCTIONALITY"
            };

            subn.LinksTo.Add(new Condition()
            {
                Text = "", LinksTo = n
            });

            subn.LinksTo.Add(new Condition()
            {
                Text = "Yes"
            });


            var noNode = new ConditionNode(d, Color.DeepSkyBlue, false)
            {
                Text = "Your loss"
            };

            subn.LinksTo.Add(new Condition()
            {
                Text = "No", LinksTo = noNode
            });

            d.Nodes.Add(n);
            d.Nodes.Add(subn);
            d.Nodes.Add(noNode);

            d.Nodes.Add(n);

            var unlinkedNode = new ConditionNode(d, Color.Aqua, false)
            {
                Text = "Unlinked "
            };
            var extraNode = new ConditionNode(d, Color.Aqua, false)
            {
                Text = "Row2Ples "
            };

            subn.LinksTo.Add(new Condition()
            {
                Text = "Come again? Come again?", LinksTo = unlinkedNode
            });
            subn.LinksTo.Add(new Condition()
            {
                Text = "", LinksTo = extraNode
            });

            var subn2 = new ConditionNode(d, Color.Orange, true)
            {
                Text = "I LITY"
            };
            var extraNode2 = new ConditionNode(d, Color.Aqua, false)
            {
                Text = "Row2Ples "
            };

            subn2.LinksTo.Add(new Condition()
            {
                Text = "", LinksTo = extraNode2
            });


            d.Nodes.Add(unlinkedNode);
            d.Nodes.Add(extraNode);
            d.Nodes.Add(subn2);
            d.Nodes.Add(extraNode2);

            foreach (var node in d.Nodes)
            {
                node.Direction = Node.DirectionEnum.Vertical;
            }

            //d.AutoLayout(true);
        }
Ejemplo n.º 21
0
 public MultiSelectTool(NodeDiagram diagram)
     : base(diagram)
 {
 }
 public ContainerNode(NodeDiagram parent)
     : base(parent)
 {
     Children = new ContainerNodeCollection(this);
 }
Ejemplo n.º 23
0
 public override Node CreateNode(NodeDiagram diagram)
 {
     return(new EndNode(diagram));
 }
Ejemplo n.º 24
0
 public override Node CreateNode(NodeDiagram diagram)
 {
     return(new ContainerNode(diagram));
 }