private void mnuImport_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "FlowSharp (*.fsd)|*.fsd"; DialogResult res = ofd.ShowDialog(); if (res == DialogResult.OK) { BaseController canvasController = serviceManager.Get <IFlowSharpCanvasService>().ActiveController; string importFilename = ofd.FileName; string data = File.ReadAllText(importFilename); List <GraphicElement> els = Persist.Deserialize(canvasController.Canvas, data); List <GraphicElement> selectedElements = canvasController.SelectedElements.ToList(); canvasController.UndoStack.UndoRedo("Import", () => { canvasController.DeselectCurrentSelectedElements(); canvasController.AddElements(els); canvasController.Elements.ForEach(el => el.UpdatePath()); canvasController.SelectElements(els); canvasController.Canvas.Invalidate(); }, () => { canvasController.DeselectCurrentSelectedElements(); els.ForEach(el => canvasController.DeleteElement(el)); canvasController.SelectElements(selectedElements); }); } }
protected void LoadFileIntoCanvas(string filename, string canvasName, BaseController canvasController) { canvasController.Filename = filename; // set now, in case of relative image files, etc... canvasController.CanvasName = canvasName; string data = File.ReadAllText(filename); List <GraphicElement> els = Persist.Deserialize(canvasController.Canvas, data); canvasController.Clear(); canvasController.UndoStack.ClearStacks(); ElementCache.Instance.ClearCache(); ServiceManager.Get <IFlowSharpMouseControllerService>().ClearState(); canvasController.AddElements(els); canvasController.Elements.ForEach(el => el.UpdatePath()); canvasController.Canvas.Invalidate(); }