tweetdeckhipchattelegramhangoutsslackgmailskypefacebook-workplaceoutlookemailmicrosoft-teamsdiscordmessengercustom-servicesmacoslinuxwindowsinboxwhatsappicloud
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
144 lines
3.1 KiB
144 lines
3.1 KiB
9 years ago
|
'use strict';
|
||
|
|
||
|
const electron = require('electron');
|
||
|
// Module to control application life.
|
||
|
const app = electron.app;
|
||
|
// Module to create native browser window.
|
||
|
const BrowserWindow = electron.BrowserWindow;
|
||
|
// Module to create tray icon
|
||
|
const Tray = electron.Tray;
|
||
|
// Module for shell
|
||
|
const shell = require('electron').shell;
|
||
|
|
||
|
const MenuItem = electron.MenuItem;
|
||
|
|
||
|
// Keep a global reference of the window object, if you don't, the window will
|
||
|
// be closed automatically when the JavaScript object is garbage collected.
|
||
|
let mainWindow;
|
||
|
let isQuitting = false;
|
||
|
let tray = null;
|
||
|
|
||
|
let showMB = new MenuItem({
|
||
|
label: 'Show Rambox'
|
||
|
,position: '1'
|
||
|
,visible: false
|
||
|
,click(btn) {
|
||
|
mainWindow.show();
|
||
|
contextMenu.items[0].visible = false;
|
||
|
contextMenu.items[1].visible = true;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
let hideMB = new MenuItem({
|
||
|
label: 'Minimize Rambox'
|
||
|
,position: '2'
|
||
|
,click(btn) {
|
||
|
mainWindow.hide();
|
||
|
contextMenu.items[1].visible = false;
|
||
|
contextMenu.items[0].visible = true;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
const contextMenu = electron.Menu.buildFromTemplate([
|
||
|
showMB,
|
||
|
hideMB,
|
||
|
{
|
||
|
label: 'Preferences'
|
||
|
},
|
||
|
{
|
||
|
label: 'Open Developer Console'
|
||
|
,click() {
|
||
|
mainWindow.webContents.openDevTools();
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
type: 'separator'
|
||
|
},
|
||
|
{
|
||
|
label: 'Quit'
|
||
|
,click() {
|
||
|
app.quit();
|
||
|
}
|
||
|
}
|
||
|
]);
|
||
|
|
||
|
function createWindow () {
|
||
|
// Create the browser window.
|
||
|
mainWindow = new BrowserWindow({
|
||
|
title: 'Rambox'
|
||
|
,skipTaskbar: false
|
||
|
,icon: __dirname + '/resources/logo_256.png'
|
||
|
,autoHideMenuBar: true
|
||
|
,webPreferences: {
|
||
|
webSecurity: false
|
||
|
,partition: 'trusted*'
|
||
|
,nodeIntegration: true
|
||
|
,plugins: true
|
||
|
,partition: 'persist:rambox'
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// Start maximize
|
||
|
mainWindow.maximize();
|
||
|
|
||
|
// and load the index.html of the app.
|
||
|
mainWindow.loadURL('file://' + __dirname + '/index.html');
|
||
|
|
||
|
tray = new Tray(__dirname + '/resources/logo_256.png');
|
||
|
tray.setToolTip('Rambox');
|
||
|
tray.setContextMenu(contextMenu);
|
||
|
tray.on('click', function() {
|
||
|
if ( mainWindow.isVisible() ) {
|
||
|
mainWindow.hide();
|
||
|
contextMenu.items[1].visible = false;
|
||
|
contextMenu.items[0].visible = true;
|
||
|
} else {
|
||
|
mainWindow.show();
|
||
|
contextMenu.items[0].visible = false;
|
||
|
contextMenu.items[1].visible = true;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// Emitted when the window is closed.
|
||
|
mainWindow.on('close', function(e) {
|
||
|
if ( !isQuitting ) {
|
||
|
e.preventDefault();
|
||
|
|
||
|
if (process.platform === 'darwin') {
|
||
|
app.hide();
|
||
|
} else {
|
||
|
mainWindow.hide();
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
mainWindow.on('closed', function(e) {
|
||
|
mainWindow = null;
|
||
|
});
|
||
|
}
|
||
|
|
||
|
// This method will be called when Electron has finished
|
||
|
// initialization and is ready to create browser windows.
|
||
|
app.on('ready', createWindow);
|
||
|
|
||
|
// Quit when all windows are closed.
|
||
|
app.on('window-all-closed', function () {
|
||
|
// On OS X it is common for applications and their menu bar
|
||
|
// to stay active until the user quits explicitly with Cmd + Q
|
||
|
if (process.platform !== 'darwin') {
|
||
|
app.quit();
|
||
|
}
|
||
|
});
|
||
|
|
||
|
app.on('activate', function () {
|
||
|
// On OS X it's common to re-create a window in the app when the
|
||
|
// dock icon is clicked and there are no other windows open.
|
||
|
if (mainWindow === null) {
|
||
|
createWindow();
|
||
|
}
|
||
|
});
|
||
|
|
||
|
app.on('before-quit', function () {
|
||
|
isQuitting = true;
|
||
|
});
|