From 4a1a4ae88b6a2ca972d29cbdefe56d75a50685ca Mon Sep 17 00:00:00 2001 From: rebornix Date: Tue, 21 Jul 2020 13:09:25 -0700 Subject: [PATCH] available kernels --- .../browser/contrib/status/editorStatus.ts | 15 +++++++++++++-- .../contrib/notebook/browser/notebookBrowser.ts | 1 + .../notebook/browser/notebookEditorWidget.ts | 13 ++++++++++++- .../contrib/notebook/test/testNotebookEditor.ts | 2 ++ 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/contrib/notebook/browser/contrib/status/editorStatus.ts b/src/vs/workbench/contrib/notebook/browser/contrib/status/editorStatus.ts index 552e93395bf..99fc865265a 100644 --- a/src/vs/workbench/contrib/notebook/browser/contrib/status/editorStatus.ts +++ b/src/vs/workbench/contrib/notebook/browser/contrib/status/editorStatus.ts @@ -166,8 +166,7 @@ export class KernelStatus extends Disposable implements IWorkbenchContribution { const activeEditor = getActiveNotebookEditor(this._editorService); - if (activeEditor && activeEditor.multipleKernelsAvailable) { - this.showKernelStatus(activeEditor.activeKernel); + if (activeEditor) { this._editorDisposable.add(activeEditor.onDidChangeKernel(() => { if (activeEditor.multipleKernelsAvailable) { this.showKernelStatus(activeEditor.activeKernel); @@ -175,6 +174,18 @@ export class KernelStatus extends Disposable implements IWorkbenchContribution { this.kernelInfoElement.clear(); } })); + + this._editorDisposable.add(activeEditor.onDidChangeAvailableKernels(() => { + if (activeEditor.multipleKernelsAvailable) { + this.showKernelStatus(activeEditor.activeKernel); + } else { + this.kernelInfoElement.clear(); + } + })); + } + + if (activeEditor && activeEditor.multipleKernelsAvailable) { + this.showKernelStatus(activeEditor.activeKernel); } else { this.kernelInfoElement.clear(); } diff --git a/src/vs/workbench/contrib/notebook/browser/notebookBrowser.ts b/src/vs/workbench/contrib/notebook/browser/notebookBrowser.ts index f65bbe5beeb..f953c38cba6 100644 --- a/src/vs/workbench/contrib/notebook/browser/notebookBrowser.ts +++ b/src/vs/workbench/contrib/notebook/browser/notebookBrowser.ts @@ -180,6 +180,7 @@ export interface INotebookEditor extends IEditor { isNotebookEditor: boolean; activeKernel: INotebookKernelInfo | INotebookKernelInfo2 | undefined; multipleKernelsAvailable: boolean; + readonly onDidChangeAvailableKernels: Event; readonly onDidChangeKernel: Event; isDisposed: boolean; diff --git a/src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts b/src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts index 6070a6cffc2..a417ff77728 100644 --- a/src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts +++ b/src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts @@ -139,6 +139,8 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor private _activeKernel: INotebookKernelInfo | INotebookKernelInfo2 | undefined = undefined; private readonly _onDidChangeKernel = this._register(new Emitter()); readonly onDidChangeKernel: Event = this._onDidChangeKernel.event; + private readonly _onDidChangeAvailableKernels = this._register(new Emitter()); + readonly onDidChangeAvailableKernels: Event = this._onDidChangeAvailableKernels.event; get activeKernel() { return this._activeKernel; @@ -154,7 +156,16 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor } private _currentKernelTokenSource: CancellationTokenSource | undefined = undefined; - multipleKernelsAvailable: boolean = false; + private _multipleKernelsAvailable: boolean = false; + + get multipleKernelsAvailable() { + return this._multipleKernelsAvailable; + } + + set multipleKernelsAvailable(state: boolean) { + this._multipleKernelsAvailable = state; + this._onDidChangeAvailableKernels.fire(); + } private readonly _onDidChangeActiveEditor = this._register(new Emitter()); readonly onDidChangeActiveEditor: Event = this._onDidChangeActiveEditor.event; diff --git a/src/vs/workbench/contrib/notebook/test/testNotebookEditor.ts b/src/vs/workbench/contrib/notebook/test/testNotebookEditor.ts index 63020e5d178..6b08f4eb653 100644 --- a/src/vs/workbench/contrib/notebook/test/testNotebookEditor.ts +++ b/src/vs/workbench/contrib/notebook/test/testNotebookEditor.ts @@ -63,6 +63,8 @@ export class TestNotebookEditor implements INotebookEditor { ) { } multipleKernelsAvailable: boolean = false; + onDidChangeAvailableKernels: Event = new Emitter().event; + uri?: URI | undefined; textModel?: NotebookTextModel | undefined;