2013-05-03 13:03:26 +00:00
|
|
|
binding = process.atomBinding 'dialog'
|
2013-05-30 12:16:54 +00:00
|
|
|
BrowserWindow = require 'browser-window'
|
2013-05-03 11:31:24 +00:00
|
|
|
|
2013-05-20 13:46:43 +00:00
|
|
|
fileDialogProperties =
|
|
|
|
openFile: 1, openDirectory: 2, multiSelections: 4, createDirectory: 8
|
2013-05-03 11:31:24 +00:00
|
|
|
|
2013-05-20 13:46:43 +00:00
|
|
|
messageBoxTypes = ['none', 'info', 'warning']
|
2013-05-03 11:31:24 +00:00
|
|
|
|
2013-05-20 13:46:43 +00:00
|
|
|
module.exports =
|
|
|
|
showOpenDialog: (options) ->
|
|
|
|
options = title: 'Open', properties: ['openFile'] unless options?
|
|
|
|
options.properties = options.properties ? ['openFile']
|
|
|
|
throw new TypeError('Properties need to be array') unless Array.isArray options.properties
|
2013-05-03 11:31:24 +00:00
|
|
|
|
2013-05-20 13:46:43 +00:00
|
|
|
properties = 0
|
|
|
|
for prop, value of fileDialogProperties
|
|
|
|
properties |= value if prop in options.properties
|
2013-05-05 12:24:20 +00:00
|
|
|
|
2013-05-20 13:46:43 +00:00
|
|
|
options.title = options.title ? ''
|
|
|
|
options.defaultPath = options.defaultPath ? ''
|
2013-05-18 02:41:43 +00:00
|
|
|
|
2013-05-20 13:46:43 +00:00
|
|
|
binding.showOpenDialog options.title, options.defaultPath, properties
|
2013-05-05 12:24:20 +00:00
|
|
|
|
2013-05-20 13:46:43 +00:00
|
|
|
showSaveDialog: (window, options) ->
|
|
|
|
throw new TypeError('Invalid window') unless window?.constructor is BrowserWindow
|
|
|
|
options = title: 'Save' unless options?
|
2013-05-05 12:24:20 +00:00
|
|
|
|
2013-05-20 13:46:43 +00:00
|
|
|
options.title = options.title ? ''
|
|
|
|
options.defaultPath = options.defaultPath ? ''
|
2013-05-05 12:24:20 +00:00
|
|
|
|
2013-05-20 13:46:43 +00:00
|
|
|
binding.showSaveDialog window, options.title, options.defaultPath
|
2013-05-10 13:19:13 +00:00
|
|
|
|
2013-09-23 06:29:55 +00:00
|
|
|
showMessageBox: (window, options, callback) ->
|
2013-06-27 11:18:31 +00:00
|
|
|
if window? and window.constructor isnt BrowserWindow
|
2013-09-23 06:29:55 +00:00
|
|
|
# Shift.
|
|
|
|
callback = options
|
2013-06-07 07:59:12 +00:00
|
|
|
options = window
|
|
|
|
window = null
|
|
|
|
|
2013-05-18 02:47:06 +00:00
|
|
|
options = type: 'none' unless options?
|
2013-05-18 02:41:43 +00:00
|
|
|
options.type = options.type ? 'none'
|
|
|
|
options.type = messageBoxTypes.indexOf options.type
|
|
|
|
throw new TypeError('Invalid message box type') unless options.type > -1
|
2013-05-10 13:19:13 +00:00
|
|
|
|
|
|
|
throw new TypeError('Buttons need to be array') unless Array.isArray options.buttons
|
|
|
|
|
|
|
|
options.title = options.title ? ''
|
|
|
|
options.message = options.message ? ''
|
|
|
|
options.detail = options.detail ? ''
|
|
|
|
|
2013-06-07 07:59:12 +00:00
|
|
|
binding.showMessageBox options.type,
|
|
|
|
options.buttons,
|
2013-05-10 13:19:13 +00:00
|
|
|
String(options.title),
|
|
|
|
String(options.message),
|
2013-06-07 07:59:12 +00:00
|
|
|
String(options.detail),
|
2013-09-23 06:29:55 +00:00
|
|
|
window,
|
|
|
|
callback
|