forked from Xmader/aria-ng-gui
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmenu.js
104 lines (92 loc) · 2.64 KB
/
menu.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/*!
* AriaNg GUI
*
* Copyright (c) 2018-2020 Xmader
* Released under the MIT license
*
* Source Code: https://github.com/Xmader/aria-ng-gui
*
*/
// @ts-check
const process = require("process")
const { Menu } = require("electron")
const Translate = require("./translate.js")
const { destroyTray, destroyMainWindow } = require("./tray.js")
const isDev = process.argv.pop() == "dev"
/** @typedef {Electron.MenuItemConstructorOptions & { submenu?: MenuTemplateItem[] }} MenuTemplateItem */
/** @typedef {MenuTemplateItem[]} MenuTemplate */
// 增加右键菜单
/** @type {MenuTemplate} */
const contextMenuTemplate = [
{ label: "撤销", role: "undo", accelerator: "CmdOrCtrl+Z" },
{ label: "恢复", role: "redo", accelerator: "CmdOrCtrl+Y" },
{ type: "separator" }, //分隔线
{ label: "剪切", role: "cut", accelerator: "CmdOrCtrl+X" }, //Cut菜单项
{ label: "复制", role: "copy", accelerator: "CmdOrCtrl+C" }, //Copy菜单项
{ label: "粘贴", role: "paste", accelerator: "CmdOrCtrl+V" }, //Paste菜单项
{ type: "separator" }, //分隔线
{ label: "全选", role: "selectAll", accelerator: "CmdOrCtrl+A" }, //Select All菜单项
]
if (isDev) {
/** @type {MenuTemplate} */
const devMenuTemplate = [
{ type: "separator" }, //分隔线
{ label: "重新加载页面", role: "reload" },
{ label: "切换开发者工具", role: "toggleDevTools" },
]
devMenuTemplate.forEach(x => contextMenuTemplate.push(x))
}
/** @type {MenuTemplate} */
const appMenuTemplate = [
{
label: "AriaNgGUI",
submenu: [{ label: "退出", role: "quit" }]
},
{
label: "编辑",
submenu: contextMenuTemplate
}
]
/** @type {MenuTemplate} */
const trayMenuTemplate = [
// {
// label: "打开下载文件夹",
// },
{
label: "显示窗口",
click() {
destroyTray()
}
},
{
label: "退出",
click() {
destroyMainWindow()
}
}
]
/**
* @param {"en-US" | "zh-CN"} locale
*/
const buildMenu = (locale) => {
/**
* @param {MenuTemplate} menuTemplate
*/
const _buildMenuFromTemplate = (menuTemplate) => {
if (locale != "zh-CN") {
menuTemplate = Translate(menuTemplate, locale)
}
return Menu.buildFromTemplate(menuTemplate)
}
const contextMenu = _buildMenuFromTemplate(contextMenuTemplate)
const appMenu = _buildMenuFromTemplate(appMenuTemplate)
const trayMenu = _buildMenuFromTemplate(trayMenuTemplate)
return {
contextMenu,
appMenu,
trayMenu
}
}
module.exports = {
buildMenu
}