mirror of
https://github.com/arduino/arduino-ide.git
synced 2025-07-27 13:16:43 +00:00
feat: implement menu action to reload current board data (#2553)
This commit is contained in:
parent
7c231fff76
commit
41844c9470
@ -222,6 +222,20 @@ export class BoardsDataStore
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async reloadBoardData(fqbn: string | undefined): Promise<void> {
|
||||||
|
if (!fqbn) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const key = this.getStorageKey(fqbn);
|
||||||
|
const details = await this.loadBoardDetails(fqbn, true);
|
||||||
|
if (!details) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const data = createDataStoreEntry(details);
|
||||||
|
await this.storageService.setData(key, data);
|
||||||
|
this.fireChanged({ fqbn, data });
|
||||||
|
}
|
||||||
|
|
||||||
async selectProgrammer({
|
async selectProgrammer({
|
||||||
fqbn,
|
fqbn,
|
||||||
selectedProgrammer,
|
selectedProgrammer,
|
||||||
@ -299,9 +313,15 @@ export class BoardsDataStore
|
|||||||
return `.arduinoIDE-configOptions-${fqbn}`;
|
return `.arduinoIDE-configOptions-${fqbn}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
async loadBoardDetails(fqbn: string): Promise<BoardDetails | undefined> {
|
async loadBoardDetails(
|
||||||
|
fqbn: string,
|
||||||
|
forceRefresh = false
|
||||||
|
): Promise<BoardDetails | undefined> {
|
||||||
try {
|
try {
|
||||||
const details = await this.boardsService.getBoardDetails({ fqbn });
|
const details = await this.boardsService.getBoardDetails({
|
||||||
|
fqbn,
|
||||||
|
forceRefresh,
|
||||||
|
});
|
||||||
return details;
|
return details;
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
if (
|
if (
|
||||||
|
@ -20,6 +20,7 @@ import {
|
|||||||
} from '../../common/protocol';
|
} from '../../common/protocol';
|
||||||
import type { BoardList } from '../../common/protocol/board-list';
|
import type { BoardList } from '../../common/protocol/board-list';
|
||||||
import { BoardsListWidget } from '../boards/boards-list-widget';
|
import { BoardsListWidget } from '../boards/boards-list-widget';
|
||||||
|
import { BoardsDataStore } from '../boards/boards-data-store';
|
||||||
import { BoardsServiceProvider } from '../boards/boards-service-provider';
|
import { BoardsServiceProvider } from '../boards/boards-service-provider';
|
||||||
import {
|
import {
|
||||||
ArduinoMenus,
|
ArduinoMenus,
|
||||||
@ -39,6 +40,8 @@ export class BoardSelection extends SketchContribution {
|
|||||||
private readonly menuModelRegistry: MenuModelRegistry;
|
private readonly menuModelRegistry: MenuModelRegistry;
|
||||||
@inject(NotificationCenter)
|
@inject(NotificationCenter)
|
||||||
private readonly notificationCenter: NotificationCenter;
|
private readonly notificationCenter: NotificationCenter;
|
||||||
|
@inject(BoardsDataStore)
|
||||||
|
private readonly boardsDataStore: BoardsDataStore;
|
||||||
@inject(BoardsService)
|
@inject(BoardsService)
|
||||||
private readonly boardsService: BoardsService;
|
private readonly boardsService: BoardsService;
|
||||||
@inject(BoardsServiceProvider)
|
@inject(BoardsServiceProvider)
|
||||||
@ -74,6 +77,29 @@ SN: ${SN}
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
registry.registerCommand(BoardSelection.Commands.RELOAD_BOARD_DATA, {
|
||||||
|
execute: async () => {
|
||||||
|
const selectedFqbn =
|
||||||
|
this.boardsServiceProvider.boardList.boardsConfig.selectedBoard?.fqbn;
|
||||||
|
let message: string;
|
||||||
|
|
||||||
|
if (selectedFqbn) {
|
||||||
|
await this.boardsDataStore.reloadBoardData(selectedFqbn);
|
||||||
|
message = nls.localize(
|
||||||
|
'arduino/board/boardDataReloaded',
|
||||||
|
'Board data reloaded.'
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
message = nls.localize(
|
||||||
|
'arduino/board/selectBoardToReload',
|
||||||
|
'Please select a board first.'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.messageService.info(message, { timeout: 2000 });
|
||||||
|
},
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
override onStart(): void {
|
override onStart(): void {
|
||||||
@ -151,6 +177,21 @@ SN: ${SN}
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const reloadBoardData = {
|
||||||
|
commandId: BoardSelection.Commands.RELOAD_BOARD_DATA.id,
|
||||||
|
label: nls.localize('arduino/board/reloadBoardData', 'Reload Board Data'),
|
||||||
|
order: '102',
|
||||||
|
};
|
||||||
|
this.menuModelRegistry.registerMenuAction(
|
||||||
|
ArduinoMenus.TOOLS__BOARD_SELECTION_GROUP,
|
||||||
|
reloadBoardData
|
||||||
|
);
|
||||||
|
this.toDisposeBeforeMenuRebuild.push(
|
||||||
|
Disposable.create(() =>
|
||||||
|
this.menuModelRegistry.unregisterMenuAction(reloadBoardData)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
const getBoardInfo = {
|
const getBoardInfo = {
|
||||||
commandId: BoardSelection.Commands.GET_BOARD_INFO.id,
|
commandId: BoardSelection.Commands.GET_BOARD_INFO.id,
|
||||||
label: nls.localize('arduino/board/getBoardInfo', 'Get Board Info'),
|
label: nls.localize('arduino/board/getBoardInfo', 'Get Board Info'),
|
||||||
@ -361,5 +402,8 @@ SN: ${SN}
|
|||||||
export namespace BoardSelection {
|
export namespace BoardSelection {
|
||||||
export namespace Commands {
|
export namespace Commands {
|
||||||
export const GET_BOARD_INFO: Command = { id: 'arduino-get-board-info' };
|
export const GET_BOARD_INFO: Command = { id: 'arduino-get-board-info' };
|
||||||
|
export const RELOAD_BOARD_DATA: Command = {
|
||||||
|
id: 'arduino-reload-board-data',
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -67,7 +67,10 @@ export interface BoardsService
|
|||||||
skipPostInstall?: boolean;
|
skipPostInstall?: boolean;
|
||||||
}): Promise<void>;
|
}): Promise<void>;
|
||||||
getDetectedPorts(): Promise<DetectedPorts>;
|
getDetectedPorts(): Promise<DetectedPorts>;
|
||||||
getBoardDetails(options: { fqbn: string }): Promise<BoardDetails | undefined>;
|
getBoardDetails(options: {
|
||||||
|
fqbn: string;
|
||||||
|
forceRefresh?: boolean;
|
||||||
|
}): Promise<BoardDetails | undefined>;
|
||||||
getBoardPackage(options: {
|
getBoardPackage(options: {
|
||||||
id: string /* TODO: change to PlatformIdentifier type? */;
|
id: string /* TODO: change to PlatformIdentifier type? */;
|
||||||
}): Promise<BoardsPackage | undefined>;
|
}): Promise<BoardsPackage | undefined>;
|
||||||
|
@ -73,7 +73,11 @@ export class BoardsServiceImpl
|
|||||||
|
|
||||||
async getBoardDetails(options: {
|
async getBoardDetails(options: {
|
||||||
fqbn: string;
|
fqbn: string;
|
||||||
|
forceRefresh?: boolean;
|
||||||
}): Promise<BoardDetails | undefined> {
|
}): Promise<BoardDetails | undefined> {
|
||||||
|
if (options.forceRefresh) {
|
||||||
|
await this.refresh();
|
||||||
|
}
|
||||||
const coreClient = await this.coreClient;
|
const coreClient = await this.coreClient;
|
||||||
const { client, instance } = coreClient;
|
const { client, instance } = coreClient;
|
||||||
const { fqbn } = options;
|
const { fqbn } = options;
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
"board": {
|
"board": {
|
||||||
"board": "Board{0}",
|
"board": "Board{0}",
|
||||||
"boardConfigDialogTitle": "Select Other Board and Port",
|
"boardConfigDialogTitle": "Select Other Board and Port",
|
||||||
|
"boardDataReloaded": "Board data reloaded.",
|
||||||
"boardInfo": "Board Info",
|
"boardInfo": "Board Info",
|
||||||
"boards": "boards",
|
"boards": "boards",
|
||||||
"configDialog1": "Select both a Board and a Port if you want to upload a sketch.",
|
"configDialog1": "Select both a Board and a Port if you want to upload a sketch.",
|
||||||
@ -31,10 +32,12 @@
|
|||||||
"port": "Port{0}",
|
"port": "Port{0}",
|
||||||
"ports": "ports",
|
"ports": "ports",
|
||||||
"programmer": "Programmer",
|
"programmer": "Programmer",
|
||||||
|
"reloadBoardData": "Reload Board Data",
|
||||||
"reselectLater": "Reselect later",
|
"reselectLater": "Reselect later",
|
||||||
"revertBoardsConfig": "Use '{0}' discovered on '{1}'",
|
"revertBoardsConfig": "Use '{0}' discovered on '{1}'",
|
||||||
"searchBoard": "Search board",
|
"searchBoard": "Search board",
|
||||||
"selectBoard": "Select Board",
|
"selectBoard": "Select Board",
|
||||||
|
"selectBoardToReload": "Please select a board first.",
|
||||||
"selectPortForInfo": "Please select a port to obtain board info.",
|
"selectPortForInfo": "Please select a port to obtain board info.",
|
||||||
"showAllAvailablePorts": "Shows all available ports when enabled",
|
"showAllAvailablePorts": "Shows all available ports when enabled",
|
||||||
"showAllPorts": "Show all ports",
|
"showAllPorts": "Show all ports",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user