-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathappMenu.js
More file actions
119 lines (114 loc) · 4.36 KB
/
appMenu.js
File metadata and controls
119 lines (114 loc) · 4.36 KB
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
/**
* guIDE 2.0 — Application Menu (Electron native menu)
*
* Mirrors the custom TitleBar.jsx menus. Shows on Alt key press
* (autoHideMenuBar = true). Sends 'menu-action' IPC to renderer
* which dispatches to the same executeMenuAction handler.
*/
'use strict';
const { Menu, shell } = require('electron');
/**
* Build and set the application menu.
* @param {BrowserWindow} mainWindow
*/
function buildAppMenu(mainWindow) {
const send = (action) => {
if (mainWindow && !mainWindow.isDestroyed()) {
mainWindow.webContents.send('menu-action', action);
}
};
const template = [
{
label: 'File',
submenu: [
{ label: 'New File', accelerator: 'CmdOrCtrl+N', click: () => send('newFile') },
{ label: 'New Window', accelerator: 'CmdOrCtrl+Shift+N', click: () => send('newWindow') },
{ label: 'Open Folder...', accelerator: 'CmdOrCtrl+K CmdOrCtrl+O', click: () => send('openFolder') },
{ type: 'separator' },
{ label: 'Save', accelerator: 'CmdOrCtrl+S', click: () => send('save') },
{ label: 'Save All', accelerator: 'CmdOrCtrl+K S', click: () => send('saveAll') },
{ type: 'separator' },
{ label: 'Close Editor', accelerator: 'CmdOrCtrl+W', click: () => send('closeTab') },
{ label: 'Close All Editors', click: () => send('closeAllTabs') },
{ type: 'separator' },
{ role: 'quit', label: 'Exit' },
],
},
{
label: 'Edit',
submenu: [
{ role: 'undo' },
{ role: 'redo' },
{ type: 'separator' },
{ role: 'cut' },
{ role: 'copy' },
{ role: 'paste' },
{ type: 'separator' },
{ label: 'Find', accelerator: 'CmdOrCtrl+F', click: () => send('find') },
{ label: 'Replace', accelerator: 'CmdOrCtrl+H', click: () => send('replace') },
{ label: 'Find in Files', accelerator: 'CmdOrCtrl+Shift+F', click: () => send('findInFiles') },
],
},
{
label: 'Selection',
submenu: [
{ role: 'selectAll' },
],
},
{
label: 'View',
submenu: [
{ label: 'Command Palette...', accelerator: 'CmdOrCtrl+Shift+P', click: () => send('commandPalette') },
{ type: 'separator' },
{ label: 'Explorer', accelerator: 'CmdOrCtrl+Shift+E', click: () => send('showExplorer') },
{ label: 'Search', accelerator: 'CmdOrCtrl+Shift+F', click: () => send('findInFiles') },
{ label: 'Source Control', accelerator: 'CmdOrCtrl+Shift+G', click: () => send('showGit') },
{ label: 'AI Chat', accelerator: 'CmdOrCtrl+Shift+A', click: () => send('showChat') },
{ type: 'separator' },
{ label: 'Toggle Sidebar', accelerator: 'CmdOrCtrl+B', click: () => send('toggleSidebar') },
{ label: 'Toggle Panel', accelerator: 'CmdOrCtrl+J', click: () => send('togglePanel') },
{ label: 'Toggle Chat Panel', click: () => send('toggleChat') },
{ type: 'separator' },
{ label: 'Toggle Minimap', click: () => send('toggleMinimap') },
{ label: 'Toggle Word Wrap', click: () => send('toggleWordWrap') },
{ type: 'separator' },
{ role: 'zoomIn' },
{ role: 'zoomOut' },
{ role: 'resetZoom' },
{ type: 'separator' },
{ role: 'toggleDevTools' },
],
},
{
label: 'Go',
submenu: [
{ label: 'Go to File...', accelerator: 'CmdOrCtrl+P', click: () => send('goToFile') },
{ label: 'Go to Line...', accelerator: 'CmdOrCtrl+G', click: () => send('goToLine') },
],
},
{
label: 'Terminal',
submenu: [
{ label: 'New Terminal', accelerator: 'Ctrl+`', click: () => send('newTerminal') },
{ label: 'Toggle Terminal', accelerator: 'CmdOrCtrl+J', click: () => send('togglePanel') },
],
},
{
label: 'Help',
submenu: [
{ label: 'Welcome', click: () => send('showWelcome') },
{ label: 'Keyboard Shortcuts', accelerator: 'CmdOrCtrl+K CmdOrCtrl+S', click: () => send('showShortcuts') },
{ type: 'separator' },
{
label: 'guIDE on GitHub',
click: () => shell.openExternal('https://github.com/graysoft-dev/guide-ide'),
},
{ type: 'separator' },
{ label: 'About guIDE', click: () => send('about') },
],
},
];
const menu = Menu.buildFromTemplate(template);
Menu.setApplicationMenu(menu);
}
module.exports = { buildAppMenu };