Merge pull request #7145 from FoldingText/Item-provides-save-panel-options

Item provides save panel options
This commit is contained in:
Kevin Sawicki
2015-06-11 15:28:24 -07:00
4 changed files with 22 additions and 6 deletions

View File

@@ -414,7 +414,7 @@ describe "Pane", ->
pane.getActiveItem().path = __filename
pane.getActiveItem().saveAs = jasmine.createSpy("saveAs")
pane.saveActiveItemAs()
expect(atom.showSaveDialogSync).toHaveBeenCalledWith(__filename)
expect(atom.showSaveDialogSync).toHaveBeenCalledWith(defaultPath: __filename)
expect(pane.getActiveItem().saveAs).toHaveBeenCalledWith('/selected/path')
describe "when the current item does not have a saveAs method", ->

View File

@@ -787,11 +787,16 @@ class Atom extends Model
showSaveDialog: (callback) ->
callback(showSaveDialogSync())
showSaveDialogSync: (defaultPath) ->
defaultPath ?= @project?.getPaths()[0]
showSaveDialogSync: (options={}) ->
if _.isString(options)
options = defaultPath: options
else
options = _.clone(options)
currentWindow = @getCurrentWindow()
dialog = remote.require('dialog')
dialog.showSaveDialog currentWindow, {title: 'Save File', defaultPath}
options.title ?= 'Save File'
options.defaultPath ?= @project?.getPaths()[0]
dialog.showSaveDialog currentWindow, options
saveSync: ->
if storageKey = @constructor.getStateKey(@project?.getPaths(), @mode)

View File

@@ -492,8 +492,9 @@ class Pane extends Model
saveItemAs: (item, nextAction) ->
return unless item?.saveAs?
itemPath = item.getPath?()
newItemPath = atom.showSaveDialogSync(itemPath)
saveOptions = item.getSaveDialogOptions?() ? {}
saveOptions.defaultPath ?= item.getPath()
newItemPath = atom.showSaveDialogSync(saveOptions)
if newItemPath
try
item.saveAs(newItemPath)

View File

@@ -593,6 +593,16 @@ class TextEditor extends Model
# Essential: Returns the {String} path of this editor's text buffer.
getPath: -> @buffer.getPath()
# Private: Return [save options](http://electron.atom.io/docs/v0.27.0/api/di
# alog/#dialog.showsavedialog(%5Bbrowserwindow%5D,-%5Boptions%5D,-%5Bcallbac
# k%5D)) to be used when displaying the save dialog.
#
# Default empty options are returned now. In the future this would be the
# place to start implementing things like: https://discuss.atom.io/t
# /request-saving- file-with-correct-extension/17521
getSaveDialogOptions: ->
{}
# Extended: Returns the {String} character set encoding of this editor's text
# buffer.
getEncoding: -> @buffer.getEncoding()