183 lines
4.1 KiB
JavaScript
183 lines
4.1 KiB
JavaScript
const { app, shell, Menu, BrowserWindow } = require('electron')
|
|
|
|
const { clearCaches } = require('./cache')
|
|
const { IPC_COMMANDS } = require('./constants')
|
|
|
|
const LINKS = {
|
|
homepage: 'https://www.twitter.com/felixrieseberg',
|
|
repo: 'https://github.com/felixrieseberg/windows95',
|
|
credits: 'https://github.com/felixrieseberg/windows95/blob/master/CREDITS.md',
|
|
help: 'https://github.com/felixrieseberg/windows95/blob/master/HELP.md'
|
|
}
|
|
|
|
function send (cmd) {
|
|
const windows = BrowserWindow.getAllWindows()
|
|
|
|
if (windows[0]) {
|
|
windows[0].webContents.send(cmd)
|
|
}
|
|
}
|
|
|
|
async function createMenu () {
|
|
const template = [
|
|
{
|
|
label: 'View',
|
|
submenu: [
|
|
{
|
|
label: 'Toggle Full Screen',
|
|
accelerator: (function () {
|
|
if (process.platform === 'darwin') { return 'Ctrl+Command+F' } else { return 'F11' }
|
|
})(),
|
|
click: function (_item, focusedWindow) {
|
|
if (focusedWindow) { focusedWindow.setFullScreen(!focusedWindow.isFullScreen()) }
|
|
}
|
|
},
|
|
{
|
|
label: 'Toggle Developer Tools',
|
|
accelerator: (function () {
|
|
if (process.platform === 'darwin') { return 'Alt+Command+I' } else { return 'Ctrl+Shift+I' }
|
|
})(),
|
|
click: function (_item, focusedWindow) {
|
|
if (focusedWindow) { focusedWindow.toggleDevTools() }
|
|
}
|
|
},
|
|
{
|
|
type: 'separator'
|
|
},
|
|
{
|
|
label: 'Toggle Emulator Info',
|
|
click: () => send(IPC_COMMANDS.TOGGLE_INFO)
|
|
}
|
|
]
|
|
},
|
|
{
|
|
label: 'Window',
|
|
role: 'window',
|
|
submenu: [
|
|
{
|
|
label: 'Minimize',
|
|
accelerator: 'CmdOrCtrl+M',
|
|
role: 'minimize'
|
|
},
|
|
{
|
|
label: 'Close',
|
|
accelerator: 'CmdOrCtrl+W',
|
|
role: 'close'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
label: 'Machine',
|
|
submenu: [
|
|
{
|
|
label: 'Send Ctrl+Alt+Del',
|
|
click: () => send(IPC_COMMANDS.MACHINE_CTRL_ALT_DEL)
|
|
},
|
|
{
|
|
label: 'Restart',
|
|
click: () => send(IPC_COMMANDS.MACHINE_RESTART)
|
|
},
|
|
{
|
|
label: 'Reset',
|
|
click: () => send(IPC_COMMANDS.MACHINE_RESET)
|
|
},
|
|
{
|
|
type: 'separator'
|
|
},
|
|
{
|
|
label: 'Go to Disk Image',
|
|
click: () => send(IPC_COMMANDS.SHOW_DISK_IMAGE)
|
|
}
|
|
]
|
|
},
|
|
{
|
|
label: 'Help',
|
|
role: 'help',
|
|
submenu: [
|
|
{
|
|
label: 'Author',
|
|
click: () => shell.openExternal(LINKS.homepage)
|
|
},
|
|
{
|
|
label: 'windows95 on GitHub',
|
|
click: () => shell.openExternal(LINKS.repo)
|
|
},
|
|
{
|
|
label: 'Help',
|
|
click: () => shell.openExternal(LINKS.help)
|
|
},
|
|
{
|
|
type: 'separator'
|
|
},
|
|
{
|
|
label: 'Troubleshooting',
|
|
submenu: [
|
|
{
|
|
label: 'Clear Cache and Restart',
|
|
async click () {
|
|
await clearCaches()
|
|
|
|
app.relaunch()
|
|
app.quit()
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
|
|
if (process.platform === 'darwin') {
|
|
template.unshift({
|
|
label: 'windows95',
|
|
submenu: [
|
|
{
|
|
label: 'About windows95',
|
|
role: 'about'
|
|
},
|
|
{
|
|
type: 'separator'
|
|
},
|
|
{
|
|
label: 'Services',
|
|
role: 'services',
|
|
submenu: []
|
|
},
|
|
{
|
|
type: 'separator'
|
|
},
|
|
{
|
|
label: 'Hide windows95',
|
|
accelerator: 'Command+H',
|
|
role: 'hide'
|
|
},
|
|
{
|
|
label: 'Hide Others',
|
|
accelerator: 'Command+Shift+H',
|
|
role: 'hideothers'
|
|
},
|
|
{
|
|
label: 'Show All',
|
|
role: 'unhide'
|
|
},
|
|
{
|
|
type: 'separator'
|
|
},
|
|
{
|
|
label: 'Quit',
|
|
accelerator: 'Command+Q',
|
|
click () {
|
|
app.quit()
|
|
}
|
|
}
|
|
]
|
|
})
|
|
}
|
|
|
|
Menu.setApplicationMenu(Menu.buildFromTemplate(template))
|
|
}
|
|
|
|
module.exports = {
|
|
createMenu
|
|
}
|