private void graphicPropertyGrid_NodeChanged(GraphicNode graphicNode) { SysCAD.Protocol.Action action = new SysCAD.Protocol.Action(); action.Modify.Add(graphicNode); frmFlowChart.AddAction(action); }
private void fcFlowChart_ArrowModified(object sender, ArrowMouseArgs e) { { int i = 2; while ((oldControlPoints.Count > 3) && (i < oldControlPoints.Count - 1)) { if (MergePoints(oldControlPoints[i - 1], oldControlPoints[i])) { oldControlPoints.RemoveAt(i - 1); oldControlPoints.RemoveAt(i - 1); // Deal with the adjacent points being slightly out of algnment. if (Math.Abs(oldControlPoints[i - 1].X - oldControlPoints[i - 2].X) < Math.Abs(oldControlPoints[i - 1].Y - oldControlPoints[i - 2].Y)) { oldControlPoints[i - 1].X = oldControlPoints[i - 2].X; } else { oldControlPoints[i - 1].Y = oldControlPoints[i - 2].Y; } i = 2; } else { i++; } } } if (MergePoints(oldControlPoints[0], oldControlPoints[1])) { oldControlPoints.RemoveAt(0); if (e.Arrow.CascadeOrientation == MindFusion.FlowChartX.Orientation.Horizontal) e.Arrow.CascadeOrientation = MindFusion.FlowChartX.Orientation.Vertical; else e.Arrow.CascadeOrientation = MindFusion.FlowChartX.Orientation.Horizontal; } if (MergePoints(oldControlPoints[oldControlPoints.Count - 1], oldControlPoints[oldControlPoints.Count - 2])) { oldControlPoints.RemoveAt(oldControlPoints.Count - 1); } form1.ToolStripStatusLabel.Text = ""; //arrowBeingModified.CustomDraw = CustomDraw.None; arrowBeingModifiedSelectionHandle = -1; arrowBeingModified = null; originAnchorChosen = null; destinationAnchorChosen = null; GraphicLink graphicLink = (e.Arrow.Tag as EditorLink).GraphicLink as GraphicLink; if (oldOriginBox != null) { (e.Arrow.Tag as EditorLink).GraphicLink.Origin = oldOriginGuid; e.Arrow.Origin = oldOriginBox; e.Arrow.OrgnAnchor = oldOriginAnchor; } else if (newOriginBox != null) { (e.Arrow.Tag as EditorLink).GraphicLink.Origin = newOriginGuid; e.Arrow.Origin = newOriginBox; e.Arrow.OrgnAnchor = newOriginAnchor; } if (oldDestinationBox != null) { (e.Arrow.Tag as EditorLink).GraphicLink.Destination = oldDestinationGuid; e.Arrow.Destination = oldDestinationBox; e.Arrow.DestAnchor = oldDestinationAnchor; } else if (newDestinationBox != null) { (e.Arrow.Tag as EditorLink).GraphicLink.Destination = newDestinationGuid; e.Arrow.Destination = newDestinationBox; e.Arrow.DestAnchor = newDestinationAnchor; } State.SetControlPoints(e.Arrow, oldControlPoints); EditorNode originItem = e.Arrow.Origin.Tag as EditorNode; EditorNode destinationItem = e.Arrow.Destination.Tag as EditorNode; //Guid originGuid = Guid.Empty; //Guid destinationGuid = Guid.Empty; //if (originItem != null) // originGuid = originItem.Guid; //if (destinationItem != null) // destinationGuid = destinationItem.Guid; String originFullAnchor = null; String destinationFullAnchor = null; String originAnchorName = null; String destinationAnchorName = null; originItem.anchorIntToTag.TryGetValue(e.Arrow.OrgnAnchor, out originFullAnchor); if (originFullAnchor != null) { originAnchorName = originFullAnchor.TrimEnd(new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }); graphicLink.OriginPortID = Convert.ToInt16(originFullAnchor.Substring(originAnchorName.Length), CultureInfo.InvariantCulture); } destinationItem.anchorIntToTag.TryGetValue(e.Arrow.DestAnchor, out destinationFullAnchor); if (destinationFullAnchor != null) { destinationAnchorName = destinationFullAnchor.TrimEnd(new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }); graphicLink.DestinationPortID = Convert.ToInt16(destinationFullAnchor.Substring(destinationAnchorName.Length), CultureInfo.InvariantCulture); } SysCAD.Protocol.Action action = new SysCAD.Protocol.Action(); if (graphicLink != null) { GraphicLink newGraphicLink = graphicLink.Clone(); newGraphicLink.ControlPoints = State.GetControlPoints(e.Arrow.ControlPoints); action.Modify.Add(newGraphicLink); } AddAction(action); //if (!state.ModifyGraphicLink(out requestId, // graphicLink.Guid, // graphicLink.Tag, // originGuid, // destinationGuid, // originAnchorName, // originAnchorID, // destinationAnchorName, // destinationAnchorID, // oldControlPoints, // graphicLink.TagArea, // graphicLink.TagAngle)) //{ // failure, revert back to previous. // // do something here... //} oldOriginGuid = Guid.Empty; oldOriginBox = null; oldOriginAnchor = -1; oldDestinationGuid = Guid.Empty; oldDestinationBox = null; oldDestinationAnchor = -1; newOriginGuid = Guid.Empty; newOriginTag = String.Empty; newOriginBox = null; newOriginAnchor = -1; newDestinationGuid = Guid.Empty; newDestinationTag = String.Empty; newDestinationBox = null; newDestinationAnchor = -1; }
public void PropertyGridNodeChanged(GraphicNode graphicNode) { SysCAD.Protocol.Action action = new SysCAD.Protocol.Action(); action.Modify.Add(graphicNode); AddAction(action); }
private void fcFlowChart_ArrowCreated(object sender, ArrowEventArgs e) { tempArrowKey++; String newLinkTag = "A_" + tempArrowKey.ToString(CultureInfo.InvariantCulture); e.Arrow.Text = newLinkTag; GraphicNode origin = null; GraphicNode destination = null; ModelNode modelOrigin = null; ModelNode modelDestination = null; String originPort = ""; String destinationPort = ""; Int16 originPortID = -1; Int16 destinationPortID = -1; List<SysCAD.Protocol.Point> controlPoints; SysCAD.Protocol.Rectangle textArea; if (newDestinationBox != null) { if (!((state.ClientProtocol.graphic.Nodes.TryGetValue((newDestinationBox.Tag as EditorNode).Guid, out destination)) && (state.ClientProtocol.model.Nodes.TryGetValue(destination.ModelGuid, out modelDestination)))) { state.ClientProtocol.LogMessage(out requestId, "Node missing for destination Box " + newDestinationBox.Tag, SysCAD.Log.MessageType.Error); return; } if (newDestinationAnchor != -1) { String fullAnchor = (newDestinationBox.Tag as EditorNode).anchorIntToTag[newDestinationAnchor]; String anchorName = fullAnchor.TrimEnd(new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }); Int16 anchorID = Convert.ToInt16(fullAnchor.Substring(anchorName.Length), CultureInfo.InvariantCulture); destinationPort = anchorName; destinationPortID = anchorID; } } if (oldOriginBox != null) { if (!((state.ClientProtocol.graphic.Nodes.TryGetValue((newOriginBox.Tag as EditorNode).Guid, out origin)) && (state.ClientProtocol.model.Nodes.TryGetValue(origin.ModelGuid, out modelOrigin)))) { state.ClientProtocol.LogMessage(out requestId, "Node missing for origin Box " + newDestinationBox.Tag, SysCAD.Log.MessageType.Error); return; } if (oldOriginAnchor != -1) { String fullAnchor = (oldOriginBox.Tag as EditorNode).anchorIntToTag[oldOriginAnchor]; String anchorName = fullAnchor.TrimEnd(new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }); Int16 anchorID = Convert.ToInt16(fullAnchor.Substring(anchorName.Length), CultureInfo.InvariantCulture); originPort = anchorName; originPortID = anchorID; } } controlPoints = State.GetControlPoints(e.Arrow.ControlPoints); textArea = new SysCAD.Protocol.Rectangle(0.0, 0.0, 0.0, 0.0); fcFlowChart.DeleteObject(e.Arrow); form1.ToolStripStatusLabel.Text = ""; //arrowBeingModified.CustomDraw = CustomDraw.None; arrowBeingModifiedSelectionHandle = -1; arrowBeingModified = null; originAnchorChosen = null; destinationAnchorChosen = null; ModelLink modelLink = new ModelLink(new Guid(), string.Empty, "Pipe-1", modelOrigin.Guid, modelDestination.Guid, originPort, destinationPort); GraphicLink graphicLink = new GraphicLink(new Guid(), modelLink.Guid, string.Empty, origin.Guid, originPortID, destination.Guid, destinationPortID, controlPoints, 1.0, textArea, 0.0, new SysCAD.Protocol.Font(), true); SysCAD.Protocol.Action action = new SysCAD.Protocol.Action(); action.Create.Add(modelLink); action.Create.Add(graphicLink); AddAction(action); }
public void PropertyGridLinkChanged(GraphicLink graphicLink) { SysCAD.Protocol.Action action = new SysCAD.Protocol.Action(); action.Modify.Add(graphicLink); AddAction(action); }
private void AlignTop(object sender, EventArgs e) { foreach (Box box in fcFlowChart.Selection.Boxes) { if (box.Tag is EditorNode) { EditorNode editorNode = box.Tag as EditorNode; GraphicNode graphicNode = editorNode.GraphicNode; SysCAD.Protocol.Action action = new SysCAD.Protocol.Action(); } } }
private void InsertSymbol(object sender, EventArgs e) { GraphicStencilChangeForm gscf = new GraphicStencilChangeForm(state.GraphicUnselectedThumbnails, state.GraphicSelectedThumbnails, state.ModelStencils, state.GraphicStencils, ""); if (gscf.ShowDialog() == System.Windows.Forms.DialogResult.OK) { GraphicStencil graphicStencil = null; state.GraphicStencils.TryGetValue(gscf.Value, out graphicStencil); if (graphicStencil != null) { SysCAD.Protocol.Rectangle boundingRect = new SysCAD.Protocol.Rectangle(hoverPoint.X, hoverPoint.Y, 0.0, 0.0); boundingRect.Inflate(graphicStencil.DefaultSize.Width, graphicStencil.DefaultSize.Height); GraphicNode node = new GraphicNode("", hoverArea.GraphicArea.Path + hoverArea.GraphicArea.Tag, Guid.NewGuid(), gscf.Value, boundingRect, 0.0, graphicStencil.TagArea, 0.0, new SysCAD.Protocol.Font(), true, 1.0, Color.Beige, FillMode.Alternate, false, false); SysCAD.Protocol.Action action = new SysCAD.Protocol.Action(); action.Create.Add(node); AddAction(action); } } }
private void DoChange(object sender, ElapsedEventArgs e) { actionExpire.Stop(); SysCAD.Protocol.Action action2 = action; action = new SysCAD.Protocol.Action(); if (!state.ClientProtocol.Change(out requestId, action2)) { // Request was refused, undo manipulation... Collection<Guid> modified = new Collection<Guid>(); foreach (Item item in action2.Modify) { modified.Add(item.Guid); } DoModified(modified); } form1.SetButtonStates(); }
private void fcFlowChart_BoxModified(object sender, BoxMouseArgs e) { SysCAD.Protocol.Action action = new SysCAD.Protocol.Action(); if (e.Box.Tag is EditorNode) { Box modelBox = (e.Box.Tag as EditorNode).ModelBox; Box graphicBox = (e.Box.Tag as EditorNode).GraphicBox; Box textBox = (e.Box.Tag as EditorNode).TextBox; GraphicNode newGraphicNode = state.GraphicItem((e.Box.Tag as EditorNode).Guid).Clone(); if (modelBox != null) { newGraphicNode.BoundingRect = new SysCAD.Protocol.Rectangle(modelBox.BoundingRect); newGraphicNode.Angle = modelBox.RotationAngle; if (textBox != e.Box) { ArrowCollection incomingArrows = modelBox.IncomingArrows.Clone(); foreach (Arrow arrow in incomingArrows) { GraphicLink newGraphicLink = state.GraphicLink((arrow.Tag as EditorLink).Guid).Clone(); if (newGraphicLink != null) { if (!State.CompareControlPoints(arrow.ControlPoints, newGraphicLink.ControlPoints)) { newGraphicLink.ControlPoints = State.GetControlPoints(arrow.ControlPoints); action.Modify.Add(newGraphicLink); } } } ArrowCollection outgoingArrows = modelBox.OutgoingArrows.Clone(); foreach (Arrow arrow in outgoingArrows) { GraphicLink newGraphicLink = state.GraphicLink((arrow.Tag as EditorLink).Guid).Clone(); if (newGraphicLink != null) { if (!State.CompareControlPoints(arrow.ControlPoints, newGraphicLink.ControlPoints)) { newGraphicLink.ControlPoints = State.GetControlPoints(arrow.ControlPoints); action.Modify.Add(newGraphicLink); } } } } } else { newGraphicNode.BoundingRect = new SysCAD.Protocol.Rectangle(graphicBox.BoundingRect); newGraphicNode.Angle = graphicBox.RotationAngle; } newGraphicNode.TagArea = new SysCAD.Protocol.Rectangle(textBox.BoundingRect); newGraphicNode.TagAngle = textBox.RotationAngle; action.Modify.Add(newGraphicNode); //Boxmodified. AddAction(action); } else if (e.Box.Tag is EditorLink) { Box tagArea = e.Box; GraphicLink newLink = state.GraphicLink((e.Box.Tag as EditorLink).Guid).Clone(); newLink.TagArea = new SysCAD.Protocol.Rectangle(tagArea.BoundingRect); newLink.TagAngle = tagArea.RotationAngle; action.Modify.Add(newLink); AddAction(action); } else if (e.Box.Tag is EditorArea) { // move areas back to bottom after every operation so they stay out of the way. EditorArea editorArea = e.Box.Tag as EditorArea; editorArea.Box.ZBottom(); } form1.GraphicPropertyGrid.Refresh(); ContextMenu propertyGridMenu = form1.GraphicPropertyGrid.ContextMenu; if (propertyGridMenu == null) propertyGridMenu = new ContextMenu(); propertyGridMenu.MenuItems.Add("Test"); form1.GraphicPropertyGrid.ContextMenu = propertyGridMenu; }