1
- const { app, Menu, BrowserWindow } = require ( 'electron' )
1
+ const {
2
+ app,
3
+ Menu,
4
+ BrowserWindow
5
+ } = require ( 'electron' )
2
6
3
7
const isMac = process . platform === 'darwin'
4
8
5
9
let appMainWindow ;
10
+ let appHomeUrl ;
6
11
7
- function getMenu ( mainWindow ) {
12
+ function getMenu ( mainWindow , homeUrl ) {
8
13
appMainWindow = mainWindow ;
14
+ appHomeUrl = homeUrl
9
15
return template ;
10
16
}
11
17
12
18
function about ( ) {
13
19
let child = new BrowserWindow ( {
14
- parent : appMainWindow ,
15
- modal : true ,
16
- width :300 , height :300 ,
17
- webPreferences : {
18
- enableRemoteModule : true ,
19
- nodeIntegration : true
20
- }
20
+ parent : appMainWindow ,
21
+ modal : true ,
22
+ width : 300 ,
23
+ height : 300 ,
24
+ webPreferences : {
25
+ enableRemoteModule : true ,
26
+ nodeIntegration : true
27
+ }
21
28
} ) ;
22
29
child . loadFile ( 'about.html' ) ;
23
30
}
@@ -26,100 +33,179 @@ const template = [
26
33
// { role: 'appMenu' }
27
34
...( isMac ? [ {
28
35
label : 'Stratos' ,
29
- submenu : [
30
- { label : 'About Stratos' , click : function ( ) {
31
- about ( ) ;
32
- console . log ( 'about' ) ;
33
- } } ,
34
- { type : 'separator' } ,
35
- { role : 'services' } ,
36
- { type : 'separator' } ,
37
- { role : 'hide' } ,
38
- { role : 'hideothers' } ,
39
- { role : 'unhide' } ,
40
- { type : 'separator' } ,
41
- { role : 'quit' }
36
+ submenu : [ {
37
+ label : 'About Stratos' ,
38
+ click : function ( ) {
39
+ about ( ) ;
40
+ console . log ( 'about' ) ;
41
+ }
42
+ } ,
43
+ {
44
+ type : 'separator'
45
+ } ,
46
+ {
47
+ role : 'services'
48
+ } ,
49
+ {
50
+ type : 'separator'
51
+ } ,
52
+ {
53
+ role : 'hide'
54
+ } ,
55
+ {
56
+ role : 'hideothers'
57
+ } ,
58
+ {
59
+ role : 'unhide'
60
+ } ,
61
+ {
62
+ type : 'separator'
63
+ } ,
64
+ {
65
+ role : 'quit'
66
+ }
42
67
]
43
68
} ] : [ ] ) ,
44
69
// { role: 'fileMenu' }
45
70
{
46
71
label : 'File' ,
47
72
submenu : [
48
- isMac ? { role : 'close' } : { role : 'quit' }
73
+ isMac ? {
74
+ role : 'close'
75
+ } : {
76
+ role : 'quit'
77
+ }
49
78
]
50
79
} ,
51
80
// { role: 'editMenu' }
52
81
{
53
82
label : 'Edit' ,
54
- submenu : [
55
- { role : 'undo' } ,
56
- { role : 'redo' } ,
57
- { type : 'separator' } ,
58
- { role : 'cut' } ,
59
- { role : 'copy' } ,
60
- { role : 'paste' } ,
61
- ...( isMac ? [
62
- { role : 'pasteAndMatchStyle' } ,
63
- { role : 'delete' } ,
64
- { role : 'selectAll' } ,
65
- { type : 'separator' } ,
83
+ submenu : [ {
84
+ role : 'undo'
85
+ } ,
86
+ {
87
+ role : 'redo'
88
+ } ,
89
+ {
90
+ type : 'separator'
91
+ } ,
92
+ {
93
+ role : 'cut'
94
+ } ,
95
+ {
96
+ role : 'copy'
97
+ } ,
98
+ {
99
+ role : 'paste'
100
+ } ,
101
+ ...( isMac ? [ {
102
+ role : 'pasteAndMatchStyle'
103
+ } ,
104
+ {
105
+ role : 'delete'
106
+ } ,
107
+ {
108
+ role : 'selectAll'
109
+ } ,
110
+ {
111
+ type : 'separator'
112
+ } ,
66
113
// {
67
114
// label: 'Speech',
68
115
// submenu: [
69
116
// { role: 'startspeaking' },
70
117
// { role: 'stopspeaking' }
71
118
// ]
72
119
// }
73
- ] : [
74
- { role : 'delete' } ,
75
- { type : 'separator' } ,
76
- { role : 'selectAll' }
77
- ] )
120
+ ] : [ {
121
+ role : 'delete'
122
+ } ,
123
+ {
124
+ type : 'separator'
125
+ } ,
126
+ {
127
+ role : 'selectAll'
128
+ }
129
+ ] ) ,
130
+ {
131
+ label : 'Settings' ,
132
+ click ( menuItem , browserWindow , event ) {
133
+ const url = `${ appHomeUrl } /desktop-settings`
134
+ browserWindow . loadURL ( url )
135
+ }
136
+ }
78
137
]
79
138
} ,
80
139
// { role: 'viewMenu' }
81
140
{
82
141
label : 'View' ,
83
- submenu : [
84
- { role : 'reload' } ,
85
- { role : 'forcereload' } ,
86
- { role : 'toggledevtools' } ,
87
- { type : 'separator' } ,
88
- { role : 'resetzoom' } ,
89
- { role : 'zoomin' } ,
90
- { role : 'zoomout' } ,
91
- { type : 'separator' } ,
92
- { role : 'togglefullscreen' }
142
+ submenu : [ {
143
+ role : 'reload'
144
+ } ,
145
+ {
146
+ role : 'forcereload'
147
+ } ,
148
+ {
149
+ role : 'toggledevtools'
150
+ } ,
151
+ {
152
+ type : 'separator'
153
+ } ,
154
+ {
155
+ role : 'resetzoom'
156
+ } ,
157
+ {
158
+ role : 'zoomin'
159
+ } ,
160
+ {
161
+ role : 'zoomout'
162
+ } ,
163
+ {
164
+ type : 'separator'
165
+ } ,
166
+ {
167
+ role : 'togglefullscreen'
168
+ }
93
169
]
94
170
} ,
95
171
// { role: 'windowMenu' }
96
172
{
97
173
label : 'Window' ,
98
- submenu : [
99
- { role : 'minimize' } ,
100
- { role : 'zoom' } ,
101
- ...( isMac ? [
102
- { type : 'separator' } ,
103
- { role : 'front' } ,
104
- { type : 'separator' } ,
105
- { role : 'window' }
106
- ] : [
107
- { role : 'close' }
108
- ] )
174
+ submenu : [ {
175
+ role : 'minimize'
176
+ } ,
177
+ {
178
+ role : 'zoom'
179
+ } ,
180
+ ...( isMac ? [ {
181
+ type : 'separator'
182
+ } ,
183
+ {
184
+ role : 'front'
185
+ } ,
186
+ {
187
+ type : 'separator'
188
+ } ,
189
+ {
190
+ role : 'window'
191
+ }
192
+ ] : [ {
193
+ role : 'close'
194
+ } ] )
109
195
]
110
196
} ,
111
197
{
112
198
role : 'help' ,
113
- submenu : [
114
- {
115
- label : 'Learn More' ,
116
- click : async ( ) => {
117
- const { shell } = require ( 'electron' )
118
- await shell . openExternal ( 'https://electronjs.org ')
119
- }
199
+ submenu : [ {
200
+ label : 'Learn More' ,
201
+ click : async ( ) => {
202
+ const {
203
+ shell
204
+ } = require ( 'electron ')
205
+ await shell . openExternal ( 'https://electronjs.org' )
120
206
}
121
- ]
207
+ } ]
122
208
}
123
209
]
124
210
125
- module . exports = getMenu ;
211
+ module . exports = getMenu ;
0 commit comments