electron/atom/browser/api/lib/app.coffee

82 lines
2.6 KiB
CoffeeScript
Raw Normal View History

electron = require 'electron'
{EventEmitter} = require 'events'
2013-05-02 16:05:09 +00:00
bindings = process.atomBinding 'app'
2015-09-01 10:02:14 +00:00
sessionBindings = process.atomBinding 'session'
downloadItemBindings = process.atomBinding 'download_item'
2014-04-17 09:13:46 +00:00
app = bindings.app
app.__proto__ = EventEmitter.prototype
app.setApplicationMenu = (menu) ->
2015-11-12 14:56:18 +00:00
electron.Menu.setApplicationMenu menu
app.getApplicationMenu = ->
2015-11-12 14:56:18 +00:00
electron.Menu.getApplicationMenu()
app.commandLine =
appendSwitch: bindings.appendSwitch,
appendArgument: bindings.appendArgument
2013-05-02 16:05:09 +00:00
2013-08-06 08:19:56 +00:00
if process.platform is 'darwin'
app.dock =
bounce: (type='informational') -> bindings.dockBounce type
2013-08-06 08:19:56 +00:00
cancelBounce: bindings.dockCancelBounce
setBadge: bindings.dockSetBadgeText
2013-08-06 08:39:31 +00:00
getBadge: bindings.dockGetBadgeText
hide: bindings.dockHide
show: bindings.dockShow
2014-11-16 15:04:31 +00:00
setMenu: bindings.dockSetMenu
2013-08-06 08:19:56 +00:00
2015-07-06 09:35:35 +00:00
appPath = null
app.setAppPath = (path) ->
appPath = path
app.getAppPath = ->
appPath
2015-11-09 13:18:57 +00:00
# Helpers.
app.resolveProxy = (url, callback) -> @defaultSession.resolveProxy url, callback
2015-11-18 02:39:25 +00:00
# Routes the events to webContents.
for name in ['login', 'certificate-error', 'select-client-certificate']
do (name) ->
app.on name, (event, webContents, args...) ->
webContents.emit name, event, args...
2015-11-09 13:18:57 +00:00
# Deprecated.
{deprecate} = electron
2015-11-09 13:18:57 +00:00
app.getHomeDir = deprecate 'app.getHomeDir', 'app.getPath', ->
@getPath 'home'
app.getDataPath = deprecate 'app.getDataPath', 'app.getPath', ->
@getPath 'userData'
app.setDataPath = deprecate 'app.setDataPath', 'app.setPath', (path) ->
@setPath 'userData', path
deprecate.rename app, 'terminate', 'quit'
deprecate.event app, 'finish-launching', 'ready', ->
setImmediate => # give default app a chance to setup default menu.
@emit 'finish-launching'
deprecate.event app, 'activate-with-no-open-windows', 'activate', (event, hasVisibleWindows) ->
@emit 'activate-with-no-open-windows' if not hasVisibleWindows
deprecate.event app, 'select-certificate', 'select-client-certificate'
2015-11-04 08:50:19 +00:00
# Wrappers for native classes.
2015-11-09 13:18:57 +00:00
wrapSession = (session) ->
# session is an EventEmitter.
session.__proto__ = EventEmitter.prototype
2015-09-01 10:02:14 +00:00
sessionBindings._setWrapSession wrapSession
2015-11-09 13:18:57 +00:00
wrapDownloadItem = (downloadItem) ->
# downloadItem is an EventEmitter.
downloadItem.__proto__ = EventEmitter.prototype
# Deprecated.
2015-11-13 08:03:40 +00:00
deprecate.property downloadItem, 'url', 'getURL'
2015-11-09 13:18:57 +00:00
deprecate.property downloadItem, 'filename', 'getFilename'
deprecate.property downloadItem, 'mimeType', 'getMimeType'
deprecate.property downloadItem, 'hasUserGesture', 'hasUserGesture'
2015-11-13 08:03:40 +00:00
deprecate.rename downloadItem, 'getUrl', 'getURL'
downloadItemBindings._setWrapDownloadItem wrapDownloadItem
# Only one App object pemitted.
module.exports = app