@@ -12,46 +12,54 @@ import {
12
12
SketchContribution ,
13
13
TabBarToolbarRegistry ,
14
14
} from './contribution' ;
15
- import { MaybePromise , nls } from '@theia/core/lib/common' ;
15
+ import { MaybePromise , MenuModelRegistry , nls } from '@theia/core/lib/common' ;
16
16
import { CurrentSketch } from '../../common/protocol/sketches-service-client-impl' ;
17
+ import { ArduinoMenus } from '../menu/arduino-menus' ;
18
+ import {
19
+ PreferenceScope ,
20
+ PreferenceService ,
21
+ } from '@theia/core/lib/browser/preferences/preference-service' ;
17
22
18
23
@injectable ( )
19
24
export class Debug extends SketchContribution {
20
25
@inject ( HostedPluginSupport )
21
- protected hostedPluginSupport : HostedPluginSupport ;
26
+ private readonly hostedPluginSupport : HostedPluginSupport ;
22
27
23
28
@inject ( NotificationCenter )
24
- protected readonly notificationCenter : NotificationCenter ;
29
+ private readonly notificationCenter : NotificationCenter ;
25
30
26
31
@inject ( ExecutableService )
27
- protected readonly executableService : ExecutableService ;
32
+ private readonly executableService : ExecutableService ;
28
33
29
34
@inject ( BoardsService )
30
- protected readonly boardService : BoardsService ;
35
+ private readonly boardService : BoardsService ;
31
36
32
37
@inject ( BoardsServiceProvider )
33
- protected readonly boardsServiceProvider : BoardsServiceProvider ;
38
+ private readonly boardsServiceProvider : BoardsServiceProvider ;
39
+
40
+ @inject ( PreferenceService )
41
+ private readonly preferenceService : PreferenceService ;
34
42
35
43
/**
36
44
* If `undefined`, debugging is enabled. Otherwise, the reason why it's disabled.
37
45
*/
38
- protected _disabledMessages ?: string = nls . localize (
46
+ private _disabledMessages ?: string = nls . localize (
39
47
'arduino/common/noBoardSelected' ,
40
48
'No board selected'
41
49
) ; // Initial pessimism.
42
- protected disabledMessageDidChangeEmitter = new Emitter < string | undefined > ( ) ;
43
- protected onDisabledMessageDidChange =
50
+ private disabledMessageDidChangeEmitter = new Emitter < string | undefined > ( ) ;
51
+ private onDisabledMessageDidChange =
44
52
this . disabledMessageDidChangeEmitter . event ;
45
53
46
- protected get disabledMessage ( ) : string | undefined {
54
+ private get disabledMessage ( ) : string | undefined {
47
55
return this . _disabledMessages ;
48
56
}
49
- protected set disabledMessage ( message : string | undefined ) {
57
+ private set disabledMessage ( message : string | undefined ) {
50
58
this . _disabledMessages = message ;
51
59
this . disabledMessageDidChangeEmitter . fire ( this . _disabledMessages ) ;
52
60
}
53
61
54
- protected readonly debugToolbarItem = {
62
+ private readonly debugToolbarItem = {
55
63
id : Debug . Commands . START_DEBUGGING . id ,
56
64
command : Debug . Commands . START_DEBUGGING . id ,
57
65
tooltip : `${
@@ -98,12 +106,24 @@ export class Debug extends SketchContribution {
98
106
ArduinoToolbar . is ( widget ) && widget . side === 'left' ,
99
107
isEnabled : ( ) => ! this . disabledMessage ,
100
108
} ) ;
109
+ registry . registerCommand ( Debug . Commands . OPTIMIZE_FOR_DEBUG , {
110
+ execute : ( ) => this . toggleOptimizeForDebug ( ) ,
111
+ isToggled : ( ) => this . isOptimizeForDebug ( ) ,
112
+ } ) ;
101
113
}
102
114
103
115
override registerToolbarItems ( registry : TabBarToolbarRegistry ) : void {
104
116
registry . registerItem ( this . debugToolbarItem ) ;
105
117
}
106
118
119
+ override registerMenus ( registry : MenuModelRegistry ) : void {
120
+ registry . registerMenuAction ( ArduinoMenus . SKETCH__MAIN_GROUP , {
121
+ commandId : Debug . Commands . OPTIMIZE_FOR_DEBUG . id ,
122
+ label : Debug . Commands . OPTIMIZE_FOR_DEBUG . label ,
123
+ order : '5' ,
124
+ } ) ;
125
+ }
126
+
107
127
private async refreshState (
108
128
board : Board | undefined = this . boardsServiceProvider . boardsConfig
109
129
. selectedBoard
@@ -145,7 +165,7 @@ export class Debug extends SketchContribution {
145
165
}
146
166
}
147
167
148
- protected async startDebug (
168
+ private async startDebug (
149
169
board : Board | undefined = this . boardsServiceProvider . boardsConfig
150
170
. selectedBoard
151
171
) : Promise < void > {
@@ -183,8 +203,19 @@ export class Debug extends SketchContribution {
183
203
} ;
184
204
return this . commandService . executeCommand ( 'arduino.debug.start' , config ) ;
185
205
}
186
- }
187
206
207
+ private isOptimizeForDebug ( ) : boolean {
208
+ return this . preferences . get ( 'arduino.compile.optimizeForDebug' ) ;
209
+ }
210
+
211
+ private async toggleOptimizeForDebug ( ) : Promise < void > {
212
+ return this . preferenceService . set (
213
+ 'arduino.compile.optimizeForDebug' ,
214
+ ! this . isOptimizeForDebug ( ) ,
215
+ PreferenceScope . User
216
+ ) ;
217
+ }
218
+ }
188
219
export namespace Debug {
189
220
export namespace Commands {
190
221
export const START_DEBUGGING = Command . toLocalizedCommand (
@@ -195,5 +226,13 @@ export namespace Debug {
195
226
} ,
196
227
'vscode/debug.contribution/startDebuggingHelp'
197
228
) ;
229
+ export const OPTIMIZE_FOR_DEBUG = Command . toLocalizedCommand (
230
+ {
231
+ id : 'arduino-optimize-for-debug' ,
232
+ label : 'Optimize for Debugging' ,
233
+ category : 'Arduino' ,
234
+ } ,
235
+ 'arduino/debug/optimizeForDebugging'
236
+ ) ;
198
237
}
199
238
}
0 commit comments