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; }
public override Node CreateNode(NodeDiagram diagram) { if (diagram.Nodes.OfType <StartNode>().Any()) { // allow only 1 start node return(null); } else { return(new StartNode(diagram)); } }
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(); }
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); } } }
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; }
public Node(NodeDiagram parent) { this.parent = parent; ParentNodes = new ParentNodeCollection(); }
public Tool(NodeDiagram diagram) { this.diagram = diagram; }
public override Node CreateNode(NodeDiagram diagram) { return(new ConditionNode(diagram)); }
public EndNode(NodeDiagram parent) : base(parent) { }
public TextNode(NodeDiagram parent) : base(parent) { }
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); }
public DragTool(NodeDiagram diagram) : base(diagram) { selectedObjectsPositions = new Dictionary <Node, Point>(); }
public override Node CreateNode(NodeDiagram diagram) { return(new ConditionNode(diagram, Color.DeepSkyBlue, false)); }
public StartNode(NodeDiagram parent) : base(parent) { }
public CreateLinkTool(NodeDiagram diagram) : base(diagram) { }
public ConditionNode(NodeDiagram parent) : base(parent) { LinksTo = new ConditionCollection(this); }
public override Node CreateNode(NodeDiagram diagram) { return(new ConditionNode(diagram, Color.Orange, true)); }
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 }); }
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); }
public MultiSelectTool(NodeDiagram diagram) : base(diagram) { }
public ContainerNode(NodeDiagram parent) : base(parent) { Children = new ContainerNodeCollection(this); }
public override Node CreateNode(NodeDiagram diagram) { return(new EndNode(diagram)); }
public override Node CreateNode(NodeDiagram diagram) { return(new ContainerNode(diagram)); }