1
1
const { app, Menu } = require ( 'electron' )
2
2
const path = require ( 'path' )
3
3
const openAboutWindow = require ( 'about-window' ) . default
4
+ const shortcuts = require ( './shortcuts.js' )
5
+ const { type } = require ( 'os' )
4
6
5
- module . exports = function registerMenu ( win ) {
7
+ module . exports = function registerMenu ( win , state = { } ) {
6
8
const isMac = process . platform === 'darwin'
7
9
const template = [
8
10
...( isMac ? [ {
9
11
label : app . name ,
10
12
submenu : [
11
13
{ role : 'about' } ,
12
14
{ type : 'separator' } ,
13
- { role : 'services' } ,
14
15
{ type : 'separator' } ,
15
- { role : 'hide' } ,
16
+ { role : 'hide' , accelerator : 'CmdOrCtrl+Shift+H' } ,
16
17
{ role : 'hideOthers' } ,
17
18
{ role : 'unhide' } ,
18
19
{ type : 'separator' } ,
@@ -35,7 +36,6 @@ module.exports = function registerMenu(win) {
35
36
{ role : 'copy' } ,
36
37
{ role : 'paste' } ,
37
38
...( isMac ? [
38
- { role : 'pasteAndMatchStyle' } ,
39
39
{ role : 'selectAll' } ,
40
40
{ type : 'separator' } ,
41
41
{
@@ -51,11 +51,66 @@ module.exports = function registerMenu(win) {
51
51
] )
52
52
]
53
53
} ,
54
+ {
55
+ label : 'Board' ,
56
+ submenu : [
57
+ {
58
+ label : 'Connect' ,
59
+ accelerator : shortcuts . menu . CONNECT ,
60
+ click : ( ) => win . webContents . send ( 'shortcut-cmd' , shortcuts . global . CONNECT )
61
+ } ,
62
+ {
63
+ label : 'Disconnect' ,
64
+ accelerator : shortcuts . menu . DISCONNECT ,
65
+ click : ( ) => win . webContents . send ( 'shortcut-cmd' , shortcuts . global . DISCONNECT )
66
+ } ,
67
+ { type : 'separator' } ,
68
+ {
69
+ label : 'Run' ,
70
+ accelerator : shortcuts . menu . RUN ,
71
+ enabled : state . isConnected && state . view === 'editor' ,
72
+ click : ( ) => win . webContents . send ( 'shortcut-cmd' , shortcuts . global . RUN )
73
+ } ,
74
+ {
75
+ label : 'Run selection' ,
76
+ accelerator : isMac ? shortcuts . menu . RUN_SELECTION : shortcuts . menu . RUN_SELECTION_WL ,
77
+ enabled : state . isConnected && state . view === 'editor' ,
78
+ click : ( ) => win . webContents . send ( 'shortcut-cmd' , ( isMac ? shortcuts . global . RUN_SELECTION : shortcuts . global . RUN_SELECTION_WL ) )
79
+ } ,
80
+ {
81
+ label : 'Stop' ,
82
+ accelerator : shortcuts . menu . STOP ,
83
+ enabled : state . isConnected && state . view === 'editor' ,
84
+ click : ( ) => win . webContents . send ( 'shortcut-cmd' , shortcuts . global . STOP )
85
+ } ,
86
+ {
87
+ label : 'Reset' ,
88
+ accelerator : shortcuts . menu . RESET ,
89
+ enabled : state . isConnected && state . view === 'editor' ,
90
+ click : ( ) => win . webContents . send ( 'shortcut-cmd' , shortcuts . global . RESET )
91
+ } ,
92
+ { type : 'separator' }
93
+ ]
94
+ } ,
54
95
{
55
96
label : 'View' ,
56
97
submenu : [
57
- { role : 'reload' } ,
58
- { role : 'toggleDevTools' } ,
98
+ {
99
+ label : 'Editor' ,
100
+ accelerator : shortcuts . menu . EDITOR_VIEW ,
101
+ click : ( ) => win . webContents . send ( 'shortcut-cmd' , shortcuts . global . EDITOR_VIEW , )
102
+ } ,
103
+ {
104
+ label : 'Files' ,
105
+ accelerator : shortcuts . menu . FILES_VIEW ,
106
+ click : ( ) => win . webContents . send ( 'shortcut-cmd' , shortcuts . global . FILES_VIEW )
107
+ } ,
108
+ {
109
+ label : 'Clear terminal' ,
110
+ accelerator : shortcuts . menu . CLEAR_TERMINAL ,
111
+ enabled : state . isConnected && state . view === 'editor' ,
112
+ click : ( ) => win . webContents . send ( 'shortcut-cmd' , shortcuts . global . CLEAR_TERMINAL )
113
+ } ,
59
114
{ type : 'separator' } ,
60
115
{ role : 'resetZoom' } ,
61
116
{ role : 'zoomIn' } ,
@@ -67,6 +122,22 @@ module.exports = function registerMenu(win) {
67
122
{
68
123
label : 'Window' ,
69
124
submenu : [
125
+ {
126
+ label : 'Reload' ,
127
+ accelerator : '' ,
128
+ click : async ( ) => {
129
+ try {
130
+ win . webContents . send ( 'cleanup-before-reload' )
131
+ setTimeout ( ( ) => {
132
+ win . reload ( )
133
+ } , 500 )
134
+ } catch ( e ) {
135
+ console . error ( 'Reload from menu failed:' , e )
136
+ }
137
+ }
138
+ } ,
139
+ { role : 'toggleDevTools' } ,
140
+ { type : 'separator' } ,
70
141
{ role : 'minimize' } ,
71
142
{ role : 'zoom' } ,
72
143
...( isMac ? [
@@ -75,7 +146,7 @@ module.exports = function registerMenu(win) {
75
146
{ type : 'separator' } ,
76
147
{ role : 'window' }
77
148
] : [
78
- { role : 'close' }
149
+
79
150
] )
80
151
]
81
152
} ,
@@ -102,7 +173,6 @@ module.exports = function registerMenu(win) {
102
173
openAboutWindow ( {
103
174
icon_path : path . resolve ( __dirname , '../ui/arduino/media/about_image.png' ) ,
104
175
css_path : path . resolve ( __dirname , '../ui/arduino/views/about.css' ) ,
105
- // about_page_dir: path.resolve(__dirname, '../ui/arduino/views/'),
106
176
copyright : '© Arduino SA 2022' ,
107
177
package_json_dir : path . resolve ( __dirname , '..' ) ,
108
178
bug_report_url : "https://github.com/arduino/lab-micropython-editor/issues" ,
0 commit comments