public Dictionary <string, TScreen> LoadWorkspace(Stream stream) { var result = new Dictionary <string, TScreen>(); var memory = new MemoryStreamNoDispose(); var count = memory.ReadInt32(stream); for (var i = 0; i < count; i++) { memory.Fetch(stream); var settings = ScreenSettings.Deserialize(memory); memory.Fetch(stream); var screen = CreateScreenHost( Type.GetType(settings.Type), settings.Name, s => s.DeserializeParameter(memory), settings.IsPopup, settings.ToPopupAttribute()); if (settings.IsPopup) { screen.Show(true); } else { result[settings.PersistenceId] = screen.CreateScreen(); } } return(result); }
public void Save(string name = null) { try { name = name ?? GetCurrentWorkspace(); var file = GetFile(name, true); using (var writer = new FileStream(file, FileMode.Create, FileAccess.Write, FileShare.Read)) { var binaryWriter = new BinaryWriter(writer); binaryWriter.Write(1); // Write version var memory = new MemoryStreamNoDispose(); _screenManager.SaveWorkspace(memory); memory.Commit(writer); binaryWriter.Write(_mainWindow.GetPositionAndSize() ?? new RectangleSettings { Width = 300, Height = 300 }); _mainWindow.SaveWorkspace(memory); memory.Commit(writer); } File.WriteAllText(GetCurrentFile(), name); } catch (Exception e) { ShowError($"Workspace {name} can't be saved !", e); } }
public void SaveWorkspace(Stream stream) { var screens = _screens.Values.ToList(); var memory = new MemoryStreamNoDispose(); stream.Write(screens.Count); foreach (var screen in screens) { var settings = screen.GetWorkspaceSettings(); ScreenSettings.Serialize(memory, settings); memory.Commit(stream); screen.SerializeParameter(memory); memory.Commit(stream); } }