11const { app, Menu } = require ( 'electron' )
22const path = require ( 'path' )
33const openAboutWindow = require ( 'about-window' ) . default
4+ const shortcuts = require ( './shortcuts.js' )
5+ const { type } = require ( 'os' )
46
5- module . exports = function registerMenu ( win ) {
7+ module . exports = function registerMenu ( win , state = { } ) {
68 const isMac = process . platform === 'darwin'
79 const template = [
810 ...( isMac ? [ {
911 label : app . name ,
1012 submenu : [
1113 { role : 'about' } ,
1214 { type : 'separator' } ,
13- { role : 'services' } ,
1415 { type : 'separator' } ,
15- { role : 'hide' } ,
16+ { role : 'hide' , accelerator : 'CmdOrCtrl+Shift+H' } ,
1617 { role : 'hideOthers' } ,
1718 { role : 'unhide' } ,
1819 { type : 'separator' } ,
@@ -35,7 +36,6 @@ module.exports = function registerMenu(win) {
3536 { role : 'copy' } ,
3637 { role : 'paste' } ,
3738 ...( isMac ? [
38- { role : 'pasteAndMatchStyle' } ,
3939 { role : 'selectAll' } ,
4040 { type : 'separator' } ,
4141 {
@@ -51,11 +51,66 @@ module.exports = function registerMenu(win) {
5151 ] )
5252 ]
5353 } ,
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+ } ,
5495 {
5596 label : 'View' ,
5697 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+ } ,
59114 { type : 'separator' } ,
60115 { role : 'resetZoom' } ,
61116 { role : 'zoomIn' } ,
@@ -67,6 +122,22 @@ module.exports = function registerMenu(win) {
67122 {
68123 label : 'Window' ,
69124 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' } ,
70141 { role : 'minimize' } ,
71142 { role : 'zoom' } ,
72143 ...( isMac ? [
@@ -75,7 +146,7 @@ module.exports = function registerMenu(win) {
75146 { type : 'separator' } ,
76147 { role : 'window' }
77148 ] : [
78- { role : 'close' }
149+
79150 ] )
80151 ]
81152 } ,
@@ -102,7 +173,6 @@ module.exports = function registerMenu(win) {
102173 openAboutWindow ( {
103174 icon_path : path . resolve ( __dirname , '../ui/arduino/media/about_image.png' ) ,
104175 css_path : path . resolve ( __dirname , '../ui/arduino/views/about.css' ) ,
105- // about_page_dir: path.resolve(__dirname, '../ui/arduino/views/'),
106176 copyright : '© Arduino SA 2022' ,
107177 package_json_dir : path . resolve ( __dirname , '..' ) ,
108178 bug_report_url : "https://github.com/arduino/lab-micropython-editor/issues" ,
0 commit comments