86 lines
2.4 KiB
JavaScript
86 lines
2.4 KiB
JavaScript
|
|
const { app, BrowserWindow, Menu } = require('electron')
|
||
|
|
const path = require('path')
|
||
|
|
|
||
|
|
function createWindow () {
|
||
|
|
// 创建浏览器窗口
|
||
|
|
const mainWindow = new BrowserWindow({
|
||
|
|
width: 1200,
|
||
|
|
height: 800,
|
||
|
|
webPreferences: {
|
||
|
|
nodeIntegration: true,
|
||
|
|
contextIsolation: false,
|
||
|
|
enableRemoteModule: true
|
||
|
|
},
|
||
|
|
icon: path.join(__dirname, 'assets/icon.png'),
|
||
|
|
show: false,
|
||
|
|
titleBarStyle: 'hiddenInset'
|
||
|
|
})
|
||
|
|
|
||
|
|
// 加载应用的 index.html
|
||
|
|
mainWindow.loadFile('dist/index.html')
|
||
|
|
|
||
|
|
// 窗口准备好后显示
|
||
|
|
mainWindow.once('ready-to-show', () => {
|
||
|
|
mainWindow.show()
|
||
|
|
})
|
||
|
|
|
||
|
|
// 打开开发者工具
|
||
|
|
// mainWindow.webContents.openDevTools()
|
||
|
|
|
||
|
|
// 创建菜单
|
||
|
|
const template = [
|
||
|
|
{
|
||
|
|
label: 'ChronoMail',
|
||
|
|
submenu: [
|
||
|
|
{
|
||
|
|
label: '关于 ChronoMail',
|
||
|
|
role: 'about'
|
||
|
|
},
|
||
|
|
{ type: 'separator' },
|
||
|
|
{
|
||
|
|
label: '退出',
|
||
|
|
accelerator: process.platform === 'darwin' ? 'Cmd+Q' : 'Ctrl+Q',
|
||
|
|
click: () => {
|
||
|
|
app.quit()
|
||
|
|
}
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
label: '编辑',
|
||
|
|
submenu: [
|
||
|
|
{ label: '撤销', accelerator: 'CmdOrCtrl+Z', role: 'undo' },
|
||
|
|
{ label: '重做', accelerator: 'Shift+CmdOrCtrl+Z', role: 'redo' },
|
||
|
|
{ type: 'separator' },
|
||
|
|
{ label: '剪切', accelerator: 'CmdOrCtrl+X', role: 'cut' },
|
||
|
|
{ label: '复制', accelerator: 'CmdOrCtrl+C', role: 'copy' },
|
||
|
|
{ label: '粘贴', accelerator: 'CmdOrCtrl+V', role: 'paste' }
|
||
|
|
]
|
||
|
|
}
|
||
|
|
]
|
||
|
|
|
||
|
|
const menu = Menu.buildFromTemplate(template)
|
||
|
|
Menu.setApplicationMenu(menu)
|
||
|
|
}
|
||
|
|
|
||
|
|
// 这段程序将会在 Electron 结束初始化和创建浏览器窗口的时候调用
|
||
|
|
// 部分 API 在 ready 事件触发后才能使用。
|
||
|
|
app.whenReady().then(() => {
|
||
|
|
createWindow()
|
||
|
|
|
||
|
|
app.on('activate', function () {
|
||
|
|
// 在 macOS 上,当单击 dock 图标并且没有其他窗口打开时,
|
||
|
|
// 通常在应用程序中重新创建一个窗口。
|
||
|
|
if (BrowserWindow.getAllWindows().length === 0) createWindow()
|
||
|
|
})
|
||
|
|
})
|
||
|
|
|
||
|
|
// 当全部窗口关闭时退出程序
|
||
|
|
app.on('window-all-closed', function () {
|
||
|
|
// 在 macOS 上,除非用户用 Cmd + Q 确定地退出,
|
||
|
|
// 否则绝大部分应用及其菜单栏会保持激活。
|
||
|
|
if (process.platform !== 'darwin') app.quit()
|
||
|
|
})
|
||
|
|
|
||
|
|
// 在这个文件中,你可以续写应用剩下主进程代码。
|
||
|
|
// 也可以拆分成几个文件,然后用 require 导入。
|