返回 DeepSeek-Reasonix
menu.ts
根目录 / desktop / electron / src / main / menu.ts
1 import { Menu, type MenuItemConstructorOptions } from "electron";
2
3 export interface MenuDeps {
4 platform: NodeJS.Platform;
5 openSettings(): void;
6 toggleDevTools(): void;
7 showWindow(): void;
8 quit(): void;
9 zoomIn(): void;
10 zoomOut(): void;
11 resetZoom(): void;
12 stopBrowserRecording?(): void;
13 }
14
15 export function applicationMenuTemplate(deps: MenuDeps): MenuItemConstructorOptions[] {
16 return [
17 ...(deps.platform === "darwin" ? [{ role: "appMenu" as const }] : []),
18 {
19 label: "File",
20 submenu: [
21 { label: "Settings", accelerator: "CmdOrCtrl+,", click: () => deps.openSettings() },
22 { label: "Toggle Developer Tools", accelerator: "CmdOrCtrl+I", click: () => deps.toggleDevTools() },
23 { label: "Show Reasonix", click: () => deps.showWindow() },
24 { type: "separator" },
25 { label: "Quit Reasonix", accelerator: "CmdOrCtrl+Q", click: () => deps.quit() },
26 ],
27 },
28 { role: "editMenu" },
29 { label: "View", submenu: [
30 { label: "Zoom In", accelerator: "CmdOrCtrl+=", click: () => deps.zoomIn() },
31 { label: "Zoom Out", accelerator: "CmdOrCtrl+-", click: () => deps.zoomOut() },
32 { label: "Reset Zoom", accelerator: "CmdOrCtrl+0", click: () => deps.resetZoom() },
33 ...(deps.stopBrowserRecording ? [{ label: "Stop Browser Recording / 停止浏览器录制", accelerator: "CmdOrCtrl+Shift+R", click: () => deps.stopBrowserRecording?.() }] : []),
34 ] },
35 { role: "windowMenu" },
36 ];
37 }
38
39 export function installApplicationMenu(deps: MenuDeps): void {
40 Menu.setApplicationMenu(Menu.buildFromTemplate(applicationMenuTemplate(deps)));
41 }
42
42 lines TYPESCRIPT