返回 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 }
13
14 export function applicationMenuTemplate(deps: MenuDeps): MenuItemConstructorOptions[] {
15 return [
16 ...(deps.platform === "darwin" ? [{ role: "appMenu" as const }] : []),
17 {
18 label: "File",
19 submenu: [
20 { label: "Settings", accelerator: "CmdOrCtrl+,", click: () => deps.openSettings() },
21 { label: "Toggle Developer Tools", accelerator: "CmdOrCtrl+I", click: () => deps.toggleDevTools() },
22 { label: "Show Reasonix", click: () => deps.showWindow() },
23 { type: "separator" },
24 { label: "Quit Reasonix", accelerator: "CmdOrCtrl+Q", click: () => deps.quit() },
25 ],
26 },
27 { role: "editMenu" },
28 { label: "View", submenu: [
29 { label: "Zoom In", accelerator: "CmdOrCtrl+=", click: () => deps.zoomIn() },
30 { label: "Zoom Out", accelerator: "CmdOrCtrl+-", click: () => deps.zoomOut() },
31 { label: "Reset Zoom", accelerator: "CmdOrCtrl+0", click: () => deps.resetZoom() },
32 ] },
33 { role: "windowMenu" },
34 ];
35 }
36
37 export function installApplicationMenu(deps: MenuDeps): void {
38 Menu.setApplicationMenu(Menu.buildFromTemplate(applicationMenuTemplate(deps)));
39 }
40
40 lines TYPESCRIPT