diff --git a/main/index.js b/main/index.js index a1ac8a7e..6dffc2e7 100644 --- a/main/index.js +++ b/main/index.js @@ -8,15 +8,20 @@ var shortcuts = require('./shortcuts') var app = electron.app +app.isQuitting = false app.startTime = startTime +app.on('ready', function () { + menu.init() + windows.createMainWindow(menu) + shortcuts.init(menu, windows) +}) + app.on('open-file', onOpen) app.on('open-url', onOpen) -app.on('ready', function () { - electron.Menu.setApplicationMenu(menu.appMenu) - windows.createMainWindow(menu) - shortcuts.init(menu, windows) +app.on('before-quit', function () { + app.isQuitting = true }) app.on('activate', function () { diff --git a/main/ipc.js b/main/ipc.js index 491ac01a..c7ef71ea 100644 --- a/main/ipc.js +++ b/main/ipc.js @@ -4,10 +4,12 @@ module.exports = { var debug = require('debug')('webtorrent-app:ipcMain') var electron = require('electron') -var ipcMain = electron.ipcMain var menu = require('./menu') var windows = require('./windows') +var app = electron.app +var ipcMain = electron.ipcMain + function init () { ipcMain.on('showOpenTorrentFile', function (e) { menu.showOpenTorrentFile() @@ -59,7 +61,7 @@ function setAspectRatio (aspectRatio, extraSize) { // Display string in dock badging area (OS X) function setBadge (text) { debug('setBadge %s', text) - if (electron.app.dock) electron.app.dock.setBadge(String(text)) + if (app.dock) app.dock.setBadge(String(text)) } // Show progress bar. Valid range is [0, 1]. Remove when < 0; indeterminate when > 1. diff --git a/main/menu.js b/main/menu.js index 17f71b7c..e866a7df 100644 --- a/main/menu.js +++ b/main/menu.js @@ -1,9 +1,23 @@ +module.exports = { + init: init, + onToggleFullScreen: onToggleFullScreen, + onWindowHide: onWindowHide, + onWindowShow: onWindowShow, + showOpenTorrentFile: showOpenTorrentFile, + toggleFullScreen: toggleFullScreen +} + var config = require('../config') var debug = require('debug')('webtorrent-app:menu') var electron = require('electron') var windows = require('./windows') var app = electron.app +var appMenu +function init () { + appMenu = electron.Menu.buildFromTemplate(getAppMenuTemplate()) + electron.Menu.setApplicationMenu(appMenu) +} function toggleFullScreen (flag) { debug('toggleFullScreen %s', flag) @@ -100,7 +114,7 @@ function showOpenTorrentAddress () { windows.main.send('showOpenTorrentAddress') } -function getMenuTemplate () { +function getAppMenuTemplate () { var template = [ { label: 'File', @@ -300,13 +314,4 @@ function getMenuTemplate () { return template } -var appMenu = electron.Menu.buildFromTemplate(getMenuTemplate()) - -module.exports = { - appMenu: appMenu, - onToggleFullScreen: onToggleFullScreen, - onWindowHide: onWindowHide, - onWindowShow: onWindowShow, - toggleFullScreen: toggleFullScreen, - showOpenTorrentFile: showOpenTorrentFile } diff --git a/main/shortcuts.js b/main/shortcuts.js index fdb9156e..806a64d6 100644 --- a/main/shortcuts.js +++ b/main/shortcuts.js @@ -3,9 +3,10 @@ module.exports = { } var electron = require('electron') -var globalShortcut = electron.globalShortcut var localShortcut = require('electron-localshortcut') +var globalShortcut = electron.globalShortcut + function init (menu, windows) { // Special "media key" for play/pause, available on some keyboards globalShortcut.register('MediaPlayPause', () => windows.main.send('dispatch', 'playPause')) diff --git a/main/windows.js b/main/windows.js index 6196e691..0e8a1ea7 100644 --- a/main/windows.js +++ b/main/windows.js @@ -9,12 +9,6 @@ var electron = require('electron') var app = electron.app -var isQuitting = false - -app.on('before-quit', function () { - isQuitting = true -}) - function createMainWindow (menu) { var win = windows.main = new electron.BrowserWindow({ autoHideMenuBar: true, // Hide top menu bar unless Alt key is pressed (Windows, Linux) @@ -46,7 +40,7 @@ function createMainWindow (menu) { win.on('leave-full-screen', () => menu.onToggleFullScreen(false)) win.on('close', function (e) { - if (process.platform === 'darwin' && !isQuitting) { + if (process.platform === 'darwin' && !app.isQuitting) { e.preventDefault() // sendSync() ensures that video will pause before window is hidden, at which point // the update() loop (which uses requestAnimationFrame) ceases to run