/// <summary> /// Metoda dodająca linię do listy /// </summary> /// <param name="e"></param> /// <param name="shapeToDraw"></param> /// <param name="listBlocks"></param> public void MyAdd(Point e, ref Helper.Shape shapeToDraw, ref ListCanvasBlocks listBlocks) { var temp = listBlocks.TryGetElementContainingPoint(e); if (temp != null) { if (Count > 0 && base[0].EndPoint == Point.Empty) //input { if (temp.Shape == Helper.Shape.Start) //start nie może mieć wejscia { MessageBox.Show("Blok startu nie może mieć linii wejścia"); } else if (this[0].BeginId == temp.ID) //wyjscie na wejscie - zapetlenie { MessageBox.Show("Nie możesz połączyć wyjścia bloku z jego wejściem - Zapętlenie"); } else { this[0].EndPoint = temp.PointInput; this[0].EndId = temp.ID; UndoRedo.Push(new List <UndoRedoItem>() { new UndoRedoItem(MyAction.Add, null, this.ToListHistory(0)) }); shapeToDraw = Helper.Shape.Nothing; } } else //output { if (temp.Shape == Helper.Shape.End)//start nie może mieć wejscia { MessageBox.Show("Blok Końca nie może mieć linii wyjścia"); } else if (temp.Shape == Helper.Shape.Decision) { DialogResult dialogResult = MessageBox.Show("Czy ma być to linia dla prawdy (true)", "", MessageBoxButtons.YesNo); if (dialogResult == DialogResult.Yes) { OverrideLine(false, temp); Insert(0, new MyLine(temp.PointOutput1, temp.ID, true)); } else if (dialogResult == DialogResult.No) { OverrideLine(true, temp); Insert(0, new MyLine(temp.PointOutput2, temp.ID, false)); } } else { OverrideLine(false, temp); Insert(0, new MyLine(temp.PointOutput1, temp.ID)); } } } }
public void MyAdd(Point e, Helper.Shape shapeToDraw) { for (int i = 0; i < int.MaxValue; i++) { if (!this.Exists(x => x.ID == i)) { _id = i; break; } } Insert(0, new MyBlock(new Rectangle(e.X - Helper.DefaultBlocksSettings[shapeToDraw].BlockSize.Width / 2, e.Y - Helper.DefaultBlocksSettings[shapeToDraw].BlockSize.Height / 2, Helper.DefaultBlocksSettings[shapeToDraw].BlockSize.Width, Helper.DefaultBlocksSettings[shapeToDraw].BlockSize.Height), shapeToDraw, _id)); _id++; }
//todo V - Add public void AddObjectInstant(Helper.Shape shape) { ShapeToDraw = shape; if (shape != Helper.Shape.ConnectionLine) { if (ShapeToDraw == Helper.Shape.Start) { if (!CheckIsStartExist()) { CanvObj.MyAdd(new Point(Width * 10 / 100, Height * 10 / 100), ShapeToDraw); UndoRedo.Push(new List <UndoRedoItem>() { new UndoRedoItem(MyAction.Add, CanvObj[0], null) }); } } else if (ShapeToDraw == Helper.Shape.End) { if (!CheckIsEndExist()) { CanvObj.MyAdd(new Point(Width * 10 / 100, Height * 10 / 100), ShapeToDraw); UndoRedo.Push(new List <UndoRedoItem>() { new UndoRedoItem(MyAction.Add, CanvObj[0], null) }); } } else { CanvObj.MyAdd(new Point(Width * 10 / 100, Height * 10 / 100), ShapeToDraw); UndoRedo.Push(new List <UndoRedoItem>() { new UndoRedoItem(MyAction.Add, CanvObj[0], null) }); } ShapeToDraw = Helper.Shape.Nothing; Invalidate(); } else { MessageBox.Show( "Niestety linia nie może zostać dodana poprzez 2xLPM. Należy wybrać linie a następnie wskazać blok początkowy a następnie blok końcowy by powstało połączenie między blokami"); } }
//V public void AddObjectAfterClick(Helper.Shape shape) { if (shape == Helper.Shape.Start) { if (!CheckIsStartExist()) { ShapeToDraw = shape; } } else if (shape == Helper.Shape.End) { if (!CheckIsEndExist()) { ShapeToDraw = shape; } } else { ShapeToDraw = shape; } }