public void SaveFileAs(string FileName) { CurrFileName = FileName; this.Text = CurrFileName; using (FileStream fs = new FileStream(FileName, FileMode.Create)) { BinaryFormatter formatter = new BinaryFormatter(); //SoapFormatter formatter = new SoapFormatter(); AllDraws alldrw = new AllDraws(); try { foreach (Draws drw in DrawsList) { alldrw.Add(drw); } formatter.Serialize(fs, alldrw); FileChanged = false; } catch (SerializationException e) { Console.WriteLine("Failed to serialize. Reason: " + e.Message); throw; } } }
public void RedoChanges() { if (IsCanRedoChanges()) { PrepareToUndo(true); SelList.Clear(); DrawsList.Clear(); GC.Collect(); using (MemoryStream stream = new MemoryStream()) { RedoStack.Pop(stream); List <Draws> list = LoadFromStream(stream); foreach (Draws drw in list) { DrawsList.Add(drw); } } this.Refresh(); } }
private void drawBox_MouseDown(object sender, MouseEventArgs e) { FstPnt = new PointF(e.X, e.Y); LstPnt = FstPnt; if (!tsbSelObj.Checked) { SelList.Clear(); } if (tsbSelObj.Checked || (e.Button == MouseButtons.Right)) { Draws drw = DrawsList.PointInFigure(FstPnt); if (drw != null) { // элемент был выбран мышкой markerIndex = drw.MarkerIndex; if (markerIndex >= 0) { foreach (Draws d in SelList) { d.MarkerIndex = markerIndex; // раздача всем остальным } } if (controlPressed) { if (SelList.IndexOf(drw) >= 0) { // удаление из списка уже выделенного элемента if (SelList.Count > 1) // последний элемент при Ctrl не убирается { drw.Selected = false; SelList.Remove(drw); } } else { SelList.Add(drw); // добавление к списку } } else { if (!SelList.FigureInList(drw)) { SelList.Clear(); // очистка списков SelList.Add(drw); // выделение одного элемента } } this.Refresh(); } else { SelList.Clear(); // очистка списков drawBox.Capture = true; // захват мышки } } // вызов контекстного меню if ((e.Button == MouseButtons.Right)) { if (SelList.Count > 0) { Draws drw = DrawsList.PointInFigure(FstPnt); bool ModifyFiguresNode = (drw != null) && drw.NodeChanging; if (drw != null) { markerIndex = drw.MarkerIndex; SelMrkPnt = e.Location; } else { markerIndex = 0; } miAddFigureNode.Visible = ModifyFiguresNode && (drw.MarkerIndex == 0); if (drw is Polygones) { miDeleteFigureNode.Visible = ModifyFiguresNode && (drw.MarkerIndex < 0) && (((Polygones)drw).Points.Count > 2); } else { miDeleteFigureNode.Visible = false; } miBeginChangeNodes.Visible = (SelList.Count == 1) && (drw is Polygones) && drw.CanNodeChanging() && !drw.NodeChanging; miEndChangeNodes.Visible = (SelList.Count == 1) && (drw is Polygones) && drw.NodeChanging; miGroupFigures.Enabled = (SelList.Count > 1); miUngroupFigures.Enabled = drw is Groups; cmsFigPopup.Tag = drw; cmsFigPopup.Show(drawBox, e.Location); } else { cmsBkgPopup.Show(drawBox, e.Location); } } }