From f88e21cbb06eec1b8d5d12d2fd0452e77b754b9f Mon Sep 17 00:00:00 2001 From: Jesse Grosjean Date: Sat, 6 Jun 2015 22:21:51 -0400 Subject: [PATCH] Allow items to provide savePanel options. --- spec/pane-spec.coffee | 4 ++-- src/atom.coffee | 7 ++++--- src/pane.coffee | 5 +++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/spec/pane-spec.coffee b/spec/pane-spec.coffee index 7d6410048..51bb07e8c 100644 --- a/spec/pane-spec.coffee +++ b/spec/pane-spec.coffee @@ -3,7 +3,7 @@ Pane = require '../src/pane' PaneAxis = require '../src/pane-axis' PaneContainer = require '../src/pane-container' -describe "Pane", -> +fdescribe "Pane", -> deserializerDisposable = null class Item extends Model @@ -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", -> diff --git a/src/atom.coffee b/src/atom.coffee index 0d029b61d..dde0960ab 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -783,11 +783,12 @@ class Atom extends Model showSaveDialog: (callback) -> callback(showSaveDialogSync()) - showSaveDialogSync: (defaultPath) -> - defaultPath ?= @project?.getPaths()[0] + showSaveDialogSync: (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) diff --git a/src/pane.coffee b/src/pane.coffee index 38c8d9201..b38e6fa46 100644 --- a/src/pane.coffee +++ b/src/pane.coffee @@ -492,8 +492,9 @@ class Pane extends Model saveItemAs: (item, nextAction) -> return unless item?.saveAs? - itemPath = item.getPath?() - newItemPath = atom.showSaveDialogSync(itemPath) + saveOptions = item.getSaveOptions?() or {} + saveOptions.defaultPath ?= item.getPath() + newItemPath = atom.showSaveDialogSync(saveOptions) if newItemPath try item.saveAs(newItemPath)