1 import { window, type StatusBarItem, StatusBarAlignment } from "vscode";
2 import Logger from "./logger.mjs";
4 enum StatusBarItemKey {
5 compile = "raspberry-pi-pico.compileProject",
6 picoSDKQuickPick = "raspberry-pi-pico.sdk-quick-pick",
9 const STATUS_BAR_ITEMS: {
10 [key: string]: { text: string; command: string; tooltip: string };
12 [StatusBarItemKey.compile]: {
13 text: "$(gear) Compile",
14 command: "raspberry-pi-pico.compileProject",
15 tooltip: "Compile project",
17 [StatusBarItemKey.picoSDKQuickPick]: {
18 text: "Pico SDK: <version>",
19 command: "raspberry-pi-pico.switchSDK",
20 tooltip: "Select Pico SDK",
24 export default class UI {
25 private _logger: Logger;
26 private _items: { [key: string]: StatusBarItem } = {};
29 this._logger = new Logger("UI");
33 this._logger.info("Initializing UI");
35 Object.entries(STATUS_BAR_ITEMS).forEach(([key, value]) => {
36 this._items[key] = this.createStatusBarItem(
45 public showStatusBarItems(): void {
46 Object.values(this._items).forEach(item => item.show());
49 public updateSDKVersion(version: string): void {
50 this._items[StatusBarItemKey.picoSDKQuickPick].text = STATUS_BAR_ITEMS[
51 StatusBarItemKey.picoSDKQuickPick
52 ].text.replace("<version>", version);
55 private createStatusBarItem(
61 const item = window.createStatusBarItem(key, StatusBarAlignment.Right);
63 item.command = command;
64 item.tooltip = tooltip;