electron/browser/api/lib/dialog.coffee

79 lines
2.4 KiB
CoffeeScript
Raw Normal View History

binding = process.atomBinding 'dialog'
v8Util = process.atomBinding 'v8_util'
BrowserWindow = require 'browser-window'
fileDialogProperties =
openFile: 1, openDirectory: 2, multiSelections: 4, createDirectory: 8
messageBoxTypes = ['none', 'info', 'warning']
module.exports =
showOpenDialog: (window, options, callback) ->
2013-09-23 08:51:00 +00:00
unless window?.constructor is BrowserWindow
# Shift.
callback = options
options = window
window = null
2013-09-23 08:51:00 +00:00
options ?= title: 'Open', properties: ['openFile']
options.properties ?= ['openFile']
throw new TypeError('Properties need to be array') unless Array.isArray options.properties
properties = 0
for prop, value of fileDialogProperties
properties |= value if prop in options.properties
2013-09-23 08:51:00 +00:00
options.title ?= ''
options.defaultPath ?= ''
2013-09-23 08:51:00 +00:00
binding.showOpenDialog String(options.title),
String(options.defaultPath),
properties,
window,
callback
showSaveDialog: (window, options, callback) ->
unless window?.constructor is BrowserWindow
# Shift.
callback = options
options = window
window = null
2013-09-23 08:51:00 +00:00
options ?= title: 'Save'
options.title ?= ''
options.defaultPath ?= ''
binding.showSaveDialog String(options.title),
String(options.defaultPath),
window,
callback
2013-05-10 13:19:13 +00:00
showMessageBox: (window, options, callback) ->
2013-09-23 08:51:00 +00:00
unless window?.constructor is BrowserWindow
# Shift.
callback = options
2013-06-07 07:59:12 +00:00
options = window
window = null
2013-09-23 08:51:00 +00:00
options ?= type: 'none'
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
2013-09-23 08:51:00 +00:00
options.title ?= ''
options.message ?= ''
options.detail ?= ''
2013-05-10 13:19:13 +00:00
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),
window,
callback
# Mark standard asynchronous functions.
v8Util.setHiddenValue f, 'asynchronous', true for k, f of module.exports