electron/browser/atom/atom.coffee

55 lines
1.7 KiB
CoffeeScript
Raw Normal View History

2013-04-15 07:39:54 +00:00
fs = require 'fs'
path = require 'path'
2013-04-25 11:41:23 +00:00
# Enable idle gc.
process.atomBinding('idle_gc').start()
2013-04-25 11:41:23 +00:00
2013-04-15 07:39:54 +00:00
# Provide default Content API implementations.
atom = {}
atom.browserMainParts =
preMainMessageLoopRun: ->
# This is the start of the whole application, usually we should initialize
# the main window here.
# Store atom object in global scope, apps can just override methods of it to
# implement various logics.
global.__atom = atom
# Add browser/api/lib to require's search paths,
# which contains javascript part of Atom's built-in libraries.
globalPaths = require('module').globalPaths
globalPaths.push path.join process.resourcesPath, 'browser', 'api', 'lib'
# And also common/api/lib
globalPaths.push path.join process.resourcesPath, 'common', 'api', 'lib'
2013-04-15 07:39:54 +00:00
2013-04-14 14:48:35 +00:00
# Don't quit on fatal error.
2013-04-15 07:39:54 +00:00
process.on 'uncaughtException', (error) ->
# Show error in GUI.
2013-04-15 07:39:54 +00:00
message = error.stack ? "#{error.name}: #{error.message}"
require('dialog').showMessageBox
type: 'warning'
title: 'An javascript error occured in the browser'
message: 'uncaughtException'
detail: message
buttons: ['OK']
2013-04-15 07:39:54 +00:00
# Load the RPC server.
require './rpc-server.js'
2013-04-15 07:39:54 +00:00
# Now we try to load app's package.json.
packageJson = null
packagePath = path.join process.resourcesPath, 'app'
2013-04-15 07:39:54 +00:00
try
# First we try to load process.resourcesPath/app
2013-04-15 07:39:54 +00:00
packageJson = JSON.parse(fs.readFileSync(path.join(packagePath, 'package.json')))
catch error
# If not found then we load browser/default_app
packagePath = path.join process.resourcesPath, 'browser', 'default_app'
2013-04-15 07:39:54 +00:00
packageJson = JSON.parse(fs.readFileSync(path.join(packagePath, 'package.json')))
# Finally load app's main.js and transfer control to C++.
require path.join(packagePath, packageJson.main)