mirror of
https://github.com/arduino/arduino-ide.git
synced 2025-10-08 19:08:33 +00:00

- update status bar if board+port is restored, - refresh the debug toolbar if board+port is restored, - init `Include Library` if board+port is ready, and - init library examples if board+port is ready Closes #2237 Closes #2239 Signed-off-by: Akos Kitta <a.kitta@arduino.cc>
73 lines
2.3 KiB
TypeScript
73 lines
2.3 KiB
TypeScript
import {
|
|
StatusBar,
|
|
StatusBarAlignment,
|
|
} from '@theia/core/lib/browser/status-bar/status-bar';
|
|
import { nls } from '@theia/core/lib/common/nls';
|
|
import { inject, injectable } from '@theia/core/shared/inversify';
|
|
import type {
|
|
BoardList,
|
|
BoardListItem,
|
|
} from '../../common/protocol/board-list';
|
|
import { BoardsServiceProvider } from '../boards/boards-service-provider';
|
|
import { Contribution } from './contribution';
|
|
|
|
@injectable()
|
|
export class SelectedBoard extends Contribution {
|
|
@inject(StatusBar)
|
|
private readonly statusBar: StatusBar;
|
|
@inject(BoardsServiceProvider)
|
|
private readonly boardsServiceProvider: BoardsServiceProvider;
|
|
|
|
override onStart(): void {
|
|
this.boardsServiceProvider.onBoardListDidChange((boardList) =>
|
|
this.update(boardList)
|
|
);
|
|
}
|
|
|
|
override onReady(): void {
|
|
this.boardsServiceProvider.ready.then(() => this.update());
|
|
}
|
|
|
|
private update(
|
|
boardList: BoardList = this.boardsServiceProvider.boardList
|
|
): void {
|
|
const { selectedBoard, selectedPort } = boardList.boardsConfig;
|
|
this.statusBar.setElement('arduino-selected-board', {
|
|
alignment: StatusBarAlignment.RIGHT,
|
|
text: selectedBoard
|
|
? `$(microchip) ${selectedBoard.name}`
|
|
: `$(close) ${nls.localize(
|
|
'arduino/common/noBoardSelected',
|
|
'No board selected'
|
|
)}`,
|
|
className: 'arduino-selected-board',
|
|
});
|
|
if (selectedBoard) {
|
|
const notConnectedLabel = nls.localize(
|
|
'arduino/common/notConnected',
|
|
'[not connected]'
|
|
);
|
|
let portLabel = notConnectedLabel;
|
|
if (selectedPort) {
|
|
portLabel = nls.localize(
|
|
'arduino/common/selectedOn',
|
|
'on {0}',
|
|
selectedPort.address
|
|
);
|
|
const selectedItem: BoardListItem | undefined =
|
|
boardList.items[boardList.selectedIndex];
|
|
if (!selectedItem) {
|
|
portLabel += ` ${notConnectedLabel}`; // append ` [not connected]` when the port is selected but it's not detected by the CLI
|
|
}
|
|
}
|
|
this.statusBar.setElement('arduino-selected-port', {
|
|
alignment: StatusBarAlignment.RIGHT,
|
|
text: portLabel,
|
|
className: 'arduino-selected-port',
|
|
});
|
|
} else {
|
|
this.statusBar.removeElement('arduino-selected-port');
|
|
}
|
|
}
|
|
}
|