Fixed: Commands that are registered to toolbar did not show up in Electron menu

This commit is contained in:
Miro Spönemann
2020-02-26 10:55:03 +01:00
parent 69c7383da8
commit d56962251e
5 changed files with 132 additions and 99 deletions

View File

@@ -1,9 +1,11 @@
import { injectable } from 'inversify';
import { Emitter } from '@theia/core/lib/common/event';
import { ApplicationShell, FrontendApplicationContribution, FrontendApplication } from '@theia/core/lib/browser';
import { ArduinoShellLayoutRestorer } from './shell/arduino-shell-layout-restorer';
import { ApplicationShell, FrontendApplicationContribution, FrontendApplication, Widget } from '@theia/core/lib/browser';
import { OutputWidget } from '@theia/output/lib/browser/output-widget';
import { EditorWidget } from '@theia/editor/lib/browser';
import { ArduinoShellLayoutRestorer } from './shell/arduino-shell-layout-restorer';
import { BoardsListWidget } from './boards/boards-list-widget';
import { LibraryListWidget } from './library/library-list-widget';
@injectable()
export class EditorMode implements FrontendApplicationContribution {
@@ -31,9 +33,9 @@ export class EditorMode implements FrontendApplicationContribution {
window.localStorage.setItem(EditorMode.PRO_MODE_KEY, String(inAdvancedMode));
if (!inAdvancedMode) {
const { shell } = this.app;
// Close all widget that is neither editor nor `Output`.
// Close all widgets that are neither editor nor `Output` / `Boards Manager` / `Library Manager`.
for (const area of ['left', 'right', 'bottom', 'main'] as Array<ApplicationShell.Area>) {
shell.closeTabs(area, ({ owner }) => !(owner instanceof EditorWidget || owner instanceof OutputWidget));
shell.closeTabs(area, title => !this.isInSimpleMode(title.owner));
}
}
// `storeLayout` has a sync API but the implementation is async, we store the layout manually before we reload the page.
@@ -44,6 +46,13 @@ export class EditorMode implements FrontendApplicationContribution {
window.location.reload(true);
}
protected isInSimpleMode(widget: Widget): boolean {
return widget instanceof EditorWidget
|| widget instanceof OutputWidget
|| widget instanceof BoardsListWidget
|| widget instanceof LibraryListWidget;
}
get compileForDebug(): boolean {
const value = window.localStorage.getItem(EditorMode.COMPILE_FOR_DEBUG_KEY);
return value === 'true';