Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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);
            }
        }