From b27cd33116eeccbaa5c26303c2b138719ccce430 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Fri, 17 May 2013 20:39:37 +0800 Subject: [PATCH] Implement atom.confirm with atom-shell's dialog API. Note that the dialog.showMessageBox is blocking, so we don't need to use the '@presentModal'. --- src/app/atom.coffee | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/app/atom.coffee b/src/app/atom.coffee index 8e55fa91d..3ea009922 100644 --- a/src/app/atom.coffee +++ b/src/app/atom.coffee @@ -3,6 +3,7 @@ _ = require 'underscore' Package = require 'package' Theme = require 'theme' ipc = require 'ipc' +remote = require 'remote' window.atom = exitWhenDone: window.location.params.exitWhenDone @@ -157,17 +158,21 @@ window.atom = @sendMessageToBrowserProcess('restartRendererProcess') confirm: (message, detailedMessage, buttonLabelsAndCallbacks...) -> - wrapCallback = (callback) => => @dismissModal(callback) - @presentModal => - args = [message, detailedMessage] - callbacks = [] - while buttonLabelsAndCallbacks.length - do => - buttonLabel = buttonLabelsAndCallbacks.shift() - buttonCallback = buttonLabelsAndCallbacks.shift() - args.push(buttonLabel) - callbacks.push(=> @dismissModal(buttonCallback)) - @sendMessageToBrowserProcess('confirm', args, callbacks) + buttons = [] + callbacks = [] + while buttonLabelsAndCallbacks.length + do => + buttons.push buttonLabelsAndCallbacks.shift() + callbacks.push buttonLabelsAndCallbacks.shift() + + dialog = remote.require 'dialog' + chosen = dialog.showMessageBox remote.getCurrentWindow(), + type: dialog.MESSAGE_BOX_INFORMATION + message: message + detail: detailedMessage + buttons: buttons + + callbacks[chosen]?() showSaveDialog: (callback) -> @presentModal =>