Skip to content

Commit b4d5e78

Browse files
committed
Disable Sketch > Configure and Upload menu if board doesn't support user fields
1 parent 86dcf63 commit b4d5e78

File tree

3 files changed

+47
-21
lines changed

3 files changed

+47
-21
lines changed

Diff for: arduino-ide-extension/src/browser/arduino-frontend-contribution.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -497,7 +497,7 @@ export class ArduinoFrontendContribution
497497
'arduino/debug/optimizeForDebugging',
498498
'Optimize for Debugging'
499499
),
500-
order: '4',
500+
order: '5',
501501
});
502502
}
503503

Diff for: arduino-ide-extension/src/browser/contributions/upload-sketch.ts

+45-19
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { inject, injectable, postConstruct } from 'inversify';
22
import { Emitter } from '@theia/core/lib/common/event';
33
import { BoardUserField, CoreService } from '../../common/protocol';
4-
import { ArduinoMenus } from '../menu/arduino-menus';
4+
import { ArduinoMenus, PlaceholderMenuNode } from '../menu/arduino-menus';
55
import { ArduinoToolbar } from '../toolbar/arduino-toolbar';
66
import { BoardsDataStore } from '../boards/boards-data-store';
77
import { MonitorConnection } from '../monitor/monitor-connection';
@@ -16,12 +16,16 @@ import {
1616
} from './contribution';
1717
import { UserFieldsDialog } from '../dialogs/user-fields/user-fields-dialog';
1818
import { nls } from '@theia/core/lib/browser/nls';
19+
import { DisposableCollection } from '@theia/core';
1920

2021
@injectable()
2122
export class UploadSketch extends SketchContribution {
2223
@inject(CoreService)
2324
protected readonly coreService: CoreService;
2425

26+
@inject(MenuModelRegistry)
27+
protected readonly menuRegistry: MenuModelRegistry;
28+
2529
@inject(MonitorConnection)
2630
protected readonly monitorConnection: MonitorConnection;
2731

@@ -42,11 +46,14 @@ export class UploadSketch extends SketchContribution {
4246
protected uploadInProgress = false;
4347
protected boardRequiresUserFields = false;
4448

49+
protected readonly menuActionsDisposables = new DisposableCollection();
50+
4551
@postConstruct()
4652
protected init(): void {
4753
this.boardsServiceClientImpl.onBoardsConfigChanged(async () => {
4854
const userFields = await this.boardsServiceClientImpl.selectedBoardUserFields();
4955
this.boardRequiresUserFields = userFields.length > 0;
56+
this.registerMenus(this.menuRegistry);
5057
})
5158
}
5259

@@ -124,24 +131,43 @@ export class UploadSketch extends SketchContribution {
124131
}
125132

126133
registerMenus(registry: MenuModelRegistry): void {
127-
registry.registerMenuAction(ArduinoMenus.SKETCH__MAIN_GROUP, {
128-
commandId: UploadSketch.Commands.UPLOAD_SKETCH.id,
129-
label: nls.localize('arduino/sketch/upload', 'Upload'),
130-
order: '1',
131-
});
132-
registry.registerMenuAction(ArduinoMenus.SKETCH__MAIN_GROUP, {
133-
commandId: UploadSketch.Commands.UPLOAD_WITH_CONFIGURATION.id,
134-
label: UploadSketch.Commands.UPLOAD_WITH_CONFIGURATION.label,
135-
order: '2',
136-
});
137-
registry.registerMenuAction(ArduinoMenus.SKETCH__MAIN_GROUP, {
138-
commandId: UploadSketch.Commands.UPLOAD_SKETCH_USING_PROGRAMMER.id,
139-
label: nls.localize(
140-
'arduino/sketch/uploadUsingProgrammer',
141-
'Upload Using Programmer'
142-
),
143-
order: '3',
144-
});
134+
this.menuActionsDisposables.dispose();
135+
136+
this.menuActionsDisposables.push(
137+
registry.registerMenuAction(ArduinoMenus.SKETCH__MAIN_GROUP, {
138+
commandId: UploadSketch.Commands.UPLOAD_SKETCH.id,
139+
label: nls.localize('arduino/sketch/upload', 'Upload'),
140+
order: '1',
141+
})
142+
);
143+
if (this.boardRequiresUserFields) {
144+
this.menuActionsDisposables.push(
145+
registry.registerMenuAction(ArduinoMenus.SKETCH__MAIN_GROUP, {
146+
commandId: UploadSketch.Commands.UPLOAD_WITH_CONFIGURATION.id,
147+
label: UploadSketch.Commands.UPLOAD_WITH_CONFIGURATION.label,
148+
order: '2',
149+
})
150+
);
151+
} else {
152+
this.menuActionsDisposables.push(
153+
registry.registerMenuNode(ArduinoMenus.SKETCH__MAIN_GROUP, new PlaceholderMenuNode(
154+
ArduinoMenus.SKETCH__MAIN_GROUP,
155+
// commandId: UploadSketch.Commands.UPLOAD_WITH_CONFIGURATION.id,
156+
UploadSketch.Commands.UPLOAD_WITH_CONFIGURATION.label!,
157+
{ order: '2' }
158+
))
159+
);
160+
}
161+
this.menuActionsDisposables.push(
162+
registry.registerMenuAction(ArduinoMenus.SKETCH__MAIN_GROUP, {
163+
commandId: UploadSketch.Commands.UPLOAD_SKETCH_USING_PROGRAMMER.id,
164+
label: nls.localize(
165+
'arduino/sketch/uploadUsingProgrammer',
166+
'Upload Using Programmer'
167+
),
168+
order: '3',
169+
})
170+
);
145171
}
146172

147173
registerKeybindings(registry: KeybindingRegistry): void {

Diff for: arduino-ide-extension/src/browser/contributions/verify-sketch.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ export class VerifySketch extends SketchContribution {
6262
'arduino/sketch/exportBinary',
6363
'Export Compiled Binary'
6464
),
65-
order: '3',
65+
order: '4',
6666
});
6767
}
6868

0 commit comments

Comments
 (0)