![trop[bot]](/assets/img/avatar_default.png)
* docs: add `Menu` module tutorials * link API docs to new tutorials * removed unreferenced fiddles * add wording for new types * fix import sort errors * delete accelerator.md * fixes Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com> Co-authored-by: Erick Zhao <ezhao@slack-corp.com>
60 lines
2.2 KiB
JavaScript
60 lines
2.2 KiB
JavaScript
const { app, BrowserWindow, Menu, Tray } = require('electron/main')
|
|
const { nativeImage } = require('electron/common')
|
|
|
|
// save a reference to the Tray object globally to avoid garbage collection
|
|
let tray = null
|
|
|
|
function createWindow () {
|
|
const mainWindow = new BrowserWindow()
|
|
mainWindow.loadFile('index.html')
|
|
}
|
|
|
|
// The Tray object can only be instantiated after the 'ready' event is fired
|
|
app.whenReady().then(() => {
|
|
createWindow()
|
|
|
|
const red = nativeImage.createFromDataURL('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACTSURBVHgBpZKBCYAgEEV/TeAIjuIIbdQIuUGt0CS1gW1iZ2jIVaTnhw+Cvs8/OYDJA4Y8kR3ZR2/kmazxJbpUEfQ/Dm/UG7wVwHkjlQdMFfDdJMFaACebnjJGyDWgcnZu1/lrCrl6NCoEHJBrDwEr5NrT6ko/UV8xdLAC2N49mlc5CylpYh8wCwqrvbBGLoKGvz8Bfq0QPWEUo/EAAAAASUVORK5CYII=')
|
|
const green = nativeImage.createFromDataURL('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACOSURBVHgBpZLRDYAgEEOrEzgCozCCGzkCbKArOIlugJvgoRAUNcLRpvGH19TkgFQWkqIohhK8UEaKwKcsOg/+WR1vX+AlA74u6q4FqgCOSzwsGHCwbKliAF89Cv89tWmOT4VaVMoVbOBrdQUz+FrD6XItzh4LzYB1HFJ9yrEkZ4l+wvcid9pTssh4UKbPd+4vED2Nd54iAAAAAElFTkSuQmCC')
|
|
|
|
tray = new Tray(red)
|
|
tray.setToolTip('Tray Icon Demo')
|
|
|
|
const contextMenu = Menu.buildFromTemplate([
|
|
{
|
|
label: 'Open App',
|
|
click: () => {
|
|
const wins = BrowserWindow.getAllWindows()
|
|
if (wins.length === 0) {
|
|
createWindow()
|
|
} else {
|
|
wins[0].focus()
|
|
}
|
|
}
|
|
},
|
|
{
|
|
label: 'Set Green Icon',
|
|
type: 'checkbox',
|
|
click: ({ checked }) => {
|
|
checked ? tray.setImage(green) : tray.setImage(red)
|
|
}
|
|
},
|
|
{
|
|
label: 'Set Title',
|
|
type: 'checkbox',
|
|
click: ({ checked }) => {
|
|
checked ? tray.setTitle('Title') : tray.setTitle('')
|
|
}
|
|
},
|
|
{ role: 'quit' }
|
|
])
|
|
|
|
tray.setContextMenu(contextMenu)
|
|
})
|
|
|
|
app.on('window-all-closed', function () {
|
|
// This will prevent the app from closing when windows close
|
|
})
|
|
|
|
app.on('activate', function () {
|
|
if (BrowserWindow.getAllWindows().length === 0) createWindow()
|
|
})
|