90 lines
2.2 KiB
TypeScript
90 lines
2.2 KiB
TypeScript
|
|
import { app, dialog, Menu } from 'electron';
|
|||
|
|
|
|||
|
|
import { checkForUpdates } from './updater';
|
|||
|
|
import { getMainWindow, markQuitting } from './window';
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 应用菜单
|
|||
|
|
* - macOS:系统菜单栏(不占窗口客户区),保留编辑/窗口角色以保证快捷键
|
|||
|
|
* - Windows/Linux:不挂原生菜单栏,检查更新/刷新等走托盘 + Ctrl+R
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
/** 刷新当前主窗口页面 */
|
|||
|
|
export function reloadMainWindow(): void {
|
|||
|
|
getMainWindow()?.webContents.reload();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/** 「关于」弹窗 */
|
|||
|
|
export function showAboutDialog(): void {
|
|||
|
|
dialog.showMessageBox({
|
|||
|
|
type: 'info',
|
|||
|
|
title: '关于',
|
|||
|
|
message: '萧康云医',
|
|||
|
|
detail: `版本:v${app.getVersion()}\n平台:${process.platform}`,
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 注册应用菜单
|
|||
|
|
* Win/Linux 设 null,避免占客户区;刷新快捷键在 window.ts 拦截
|
|||
|
|
*/
|
|||
|
|
export function createAppMenu(): void {
|
|||
|
|
if (process.platform === 'darwin') {
|
|||
|
|
Menu.setApplicationMenu(
|
|||
|
|
Menu.buildFromTemplate([
|
|||
|
|
{
|
|||
|
|
label: app.name,
|
|||
|
|
submenu: [
|
|||
|
|
{ role: 'about' },
|
|||
|
|
{ type: 'separator' },
|
|||
|
|
{
|
|||
|
|
label: '检查更新',
|
|||
|
|
click: () => checkForUpdates(true),
|
|||
|
|
},
|
|||
|
|
{ type: 'separator' },
|
|||
|
|
{ role: 'services' },
|
|||
|
|
{ type: 'separator' },
|
|||
|
|
{ role: 'hide' },
|
|||
|
|
{ role: 'hideOthers' },
|
|||
|
|
{ role: 'unhide' },
|
|||
|
|
{ type: 'separator' },
|
|||
|
|
{ role: 'quit' },
|
|||
|
|
],
|
|||
|
|
},
|
|||
|
|
{ role: 'editMenu' },
|
|||
|
|
{
|
|||
|
|
label: '查看',
|
|||
|
|
submenu: [
|
|||
|
|
{
|
|||
|
|
label: '刷新',
|
|||
|
|
accelerator: 'CmdOrCtrl+R',
|
|||
|
|
click: () => reloadMainWindow(),
|
|||
|
|
},
|
|||
|
|
{ type: 'separator' },
|
|||
|
|
{ role: 'togglefullscreen' },
|
|||
|
|
],
|
|||
|
|
},
|
|||
|
|
{ role: 'windowMenu' },
|
|||
|
|
{
|
|||
|
|
label: '帮助',
|
|||
|
|
submenu: [
|
|||
|
|
{
|
|||
|
|
label: '关于萧康云医',
|
|||
|
|
click: () => showAboutDialog(),
|
|||
|
|
},
|
|||
|
|
],
|
|||
|
|
},
|
|||
|
|
]),
|
|||
|
|
);
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Menu.setApplicationMenu(null);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/** 供托盘等复用:退出 */
|
|||
|
|
export function quitApp(): void {
|
|||
|
|
markQuitting();
|
|||
|
|
app.quit();
|
|||
|
|
}
|