mirror of
https://github.com/atom/atom.git
synced 2026-01-24 14:28:14 -05:00
Add AtomEnvironment::restoreStateIntoEnvironment
This takes an existing Atom environment and restores a saved state from the IndexDB state storage into it by: 1. Serializing the existing pane items 2. Restoring the saved state 3. Deserializing the saved pane items into the newly restored environment
This commit is contained in:
committed by
Michelle Tilley
parent
b701bc790e
commit
12ea7a7300
@@ -863,6 +863,22 @@ class AtomEnvironment extends Model
|
||||
@pickFolder (selectedPaths = []) =>
|
||||
@project.addPath(selectedPath) for selectedPath in selectedPaths
|
||||
|
||||
restoreStateIntoEnvironment: (state) ->
|
||||
shouldSerializeItem = (item) ->
|
||||
return true unless item instanceof TextEditor
|
||||
item.getPath() or item.isModified()
|
||||
serializedOpenItems = (item.serialize() for item in @workspace.getPaneItems() when shouldSerializeItem(item))
|
||||
serializedBuffers = (buffer.serialize() for buffer in @project.buffers)
|
||||
|
||||
state.fullScreen = @isFullScreen()
|
||||
pane.destroy() for pane in @workspace.getPanes()
|
||||
@deserialize(state)
|
||||
savedBuffers = (TextBuffer.deserialize(serializedBuffer) for serializedBuffer in serializedBuffers)
|
||||
@project.buffers = @project.buffers.concat(savedBuffers)
|
||||
|
||||
items = (@deserializers.deserialize(itemState) for itemState in serializedOpenItems)
|
||||
@workspace.getPanes()[0].addItems(items, 0)
|
||||
|
||||
showSaveDialog: (callback) ->
|
||||
callback(@showSaveDialogSync())
|
||||
|
||||
|
||||
Reference in New Issue
Block a user