mirror of
https://github.com/arduino/arduino-ide.git
synced 2025-06-17 17:46:33 +00:00
Cleaned up the menu contributions.
Signed-off-by: Akos Kitta <kittaakos@typefox.io>
This commit is contained in:
parent
a96ed31a45
commit
476e658fea
@ -1,25 +0,0 @@
|
|||||||
import { injectable, inject } from "inversify";
|
|
||||||
import { MenuContribution, MenuModelRegistry, MenuPath } from "@theia/core";
|
|
||||||
import { CommonMenus } from "@theia/core/lib/browser";
|
|
||||||
import { ArduinoCommands } from "./arduino-commands";
|
|
||||||
|
|
||||||
export namespace ArduinoToolbarContextMenu {
|
|
||||||
export const OPEN_SKETCH_PATH: MenuPath = ['arduino-open-sketch-context-menu'];
|
|
||||||
export const OPEN_GROUP: MenuPath = [...OPEN_SKETCH_PATH, '1_open'];
|
|
||||||
export const WS_SKETCHES_GROUP: MenuPath = [...OPEN_SKETCH_PATH, '2_sketches'];
|
|
||||||
export const EXAMPLE_SKETCHES_GROUP: MenuPath = [...OPEN_SKETCH_PATH, '3_examples'];
|
|
||||||
}
|
|
||||||
|
|
||||||
@injectable()
|
|
||||||
export class ArduinoToolbarMenuContribution implements MenuContribution {
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
@inject(MenuModelRegistry) protected readonly menuRegistry: MenuModelRegistry) {
|
|
||||||
}
|
|
||||||
|
|
||||||
registerMenus(registry: MenuModelRegistry) {
|
|
||||||
registry.registerMenuAction([...CommonMenus.FILE, '0_new_sletch'], {
|
|
||||||
commandId: ArduinoCommands.NEW_SKETCH.id
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
@ -14,7 +14,7 @@ import { QuickPickService } from '@theia/core/lib/common/quick-pick-service';
|
|||||||
import { BoardsListWidgetFrontendContribution } from './boards/boards-widget-frontend-contribution';
|
import { BoardsListWidgetFrontendContribution } from './boards/boards-widget-frontend-contribution';
|
||||||
import { BoardsServiceClientImpl } from './boards/boards-service-client-impl';
|
import { BoardsServiceClientImpl } from './boards/boards-service-client-impl';
|
||||||
import { WorkspaceRootUriAwareCommandHandler, WorkspaceCommands } from '@theia/workspace/lib/browser/workspace-commands';
|
import { WorkspaceRootUriAwareCommandHandler, WorkspaceCommands } from '@theia/workspace/lib/browser/workspace-commands';
|
||||||
import { SelectionService, MenuContribution, MenuModelRegistry, MAIN_MENU_BAR } from '@theia/core';
|
import { SelectionService, MenuContribution, MenuModelRegistry, MAIN_MENU_BAR, MenuPath } from '@theia/core';
|
||||||
import { ArduinoToolbar } from './toolbar/arduino-toolbar';
|
import { ArduinoToolbar } from './toolbar/arduino-toolbar';
|
||||||
import { EditorManager, EditorMainMenu } from '@theia/editor/lib/browser';
|
import { EditorManager, EditorMainMenu } from '@theia/editor/lib/browser';
|
||||||
import {
|
import {
|
||||||
@ -28,7 +28,6 @@ import {
|
|||||||
} from '@theia/core/lib/browser';
|
} from '@theia/core/lib/browser';
|
||||||
import { OpenFileDialogProps, FileDialogService } from '@theia/filesystem/lib/browser/file-dialog';
|
import { OpenFileDialogProps, FileDialogService } from '@theia/filesystem/lib/browser/file-dialog';
|
||||||
import { FileSystem, FileStat } from '@theia/filesystem/lib/common';
|
import { FileSystem, FileStat } from '@theia/filesystem/lib/common';
|
||||||
import { ArduinoToolbarContextMenu } from './arduino-file-menu';
|
|
||||||
import { Sketch, SketchesService } from '../common/protocol/sketches-service';
|
import { Sketch, SketchesService } from '../common/protocol/sketches-service';
|
||||||
import { WindowService } from '@theia/core/lib/browser/window/window-service';
|
import { WindowService } from '@theia/core/lib/browser/window/window-service';
|
||||||
import { CommonCommands, CommonMenus } from '@theia/core/lib/browser/common-frontend-contribution';
|
import { CommonCommands, CommonMenus } from '@theia/core/lib/browser/common-frontend-contribution';
|
||||||
@ -51,6 +50,13 @@ export namespace ArduinoMenus {
|
|||||||
export const TOOLS = [...MAIN_MENU_BAR, '4_tools'];
|
export const TOOLS = [...MAIN_MENU_BAR, '4_tools'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export namespace ArduinoToolbarContextMenu {
|
||||||
|
export const OPEN_SKETCH_PATH: MenuPath = ['arduino-open-sketch-context-menu'];
|
||||||
|
export const OPEN_GROUP: MenuPath = [...OPEN_SKETCH_PATH, '1_open'];
|
||||||
|
export const WS_SKETCHES_GROUP: MenuPath = [...OPEN_SKETCH_PATH, '2_sketches'];
|
||||||
|
export const EXAMPLE_SKETCHES_GROUP: MenuPath = [...OPEN_SKETCH_PATH, '3_examples'];
|
||||||
|
}
|
||||||
|
|
||||||
export namespace ArduinoAdvancedMode {
|
export namespace ArduinoAdvancedMode {
|
||||||
export const LS_ID = 'arduino-advanced-mode';
|
export const LS_ID = 'arduino-advanced-mode';
|
||||||
export const TOGGLED: boolean = (() => {
|
export const TOGGLED: boolean = (() => {
|
||||||
@ -381,7 +387,11 @@ export class ArduinoFrontendContribution implements TabBarToolbarContribution, C
|
|||||||
registry.registerMenuAction(CommonMenus.HELP, {
|
registry.registerMenuAction(CommonMenus.HELP, {
|
||||||
commandId: ArduinoCommands.TOGGLE_ADVANCED_MODE.id,
|
commandId: ArduinoCommands.TOGGLE_ADVANCED_MODE.id,
|
||||||
label: 'Advanced Mode'
|
label: 'Advanced Mode'
|
||||||
})
|
});
|
||||||
|
|
||||||
|
registry.registerMenuAction([...CommonMenus.FILE, '0_new_sketch'], {
|
||||||
|
commandId: ArduinoCommands.NEW_SKETCH.id
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
protected getMenuId(menuPath: string[]): string {
|
protected getMenuId(menuPath: string[]): string {
|
||||||
|
@ -28,7 +28,6 @@ import { WorkspaceService } from '@theia/workspace/lib/browser/workspace-service
|
|||||||
import { ArduinoWorkspaceService } from './arduino-workspace-service';
|
import { ArduinoWorkspaceService } from './arduino-workspace-service';
|
||||||
import { ThemeService } from '@theia/core/lib/browser/theming';
|
import { ThemeService } from '@theia/core/lib/browser/theming';
|
||||||
import { ArduinoTheme } from './arduino-theme';
|
import { ArduinoTheme } from './arduino-theme';
|
||||||
import { ArduinoToolbarMenuContribution } from './arduino-file-menu';
|
|
||||||
import { MenuContribution } from '@theia/core';
|
import { MenuContribution } from '@theia/core';
|
||||||
import { OutlineViewContribution } from '@theia/outline-view/lib/browser/outline-view-contribution';
|
import { OutlineViewContribution } from '@theia/outline-view/lib/browser/outline-view-contribution';
|
||||||
import { SilentOutlineViewContribution } from './customization/silent-outline-contribution';
|
import { SilentOutlineViewContribution } from './customization/silent-outline-contribution';
|
||||||
@ -80,7 +79,6 @@ export default new ContainerModule((bind: interfaces.Bind, unbind: interfaces.Un
|
|||||||
bind(MenuContribution).toService(ArduinoFrontendContribution);
|
bind(MenuContribution).toService(ArduinoFrontendContribution);
|
||||||
bind(TabBarToolbarContribution).toService(ArduinoFrontendContribution);
|
bind(TabBarToolbarContribution).toService(ArduinoFrontendContribution);
|
||||||
bind(FrontendApplicationContribution).toService(ArduinoFrontendContribution);
|
bind(FrontendApplicationContribution).toService(ArduinoFrontendContribution);
|
||||||
bind(MenuContribution).to(ArduinoToolbarMenuContribution).inSingletonScope();
|
|
||||||
|
|
||||||
bind(ArduinoToolbarContribution).toSelf().inSingletonScope();
|
bind(ArduinoToolbarContribution).toSelf().inSingletonScope();
|
||||||
bind(FrontendApplicationContribution).toService(ArduinoToolbarContribution);
|
bind(FrontendApplicationContribution).toService(ArduinoToolbarContribution);
|
||||||
|
@ -19,9 +19,10 @@ export class ArduinoTheme {
|
|||||||
deactivate() {
|
deactivate() {
|
||||||
ARDUINO_CSS.unuse();
|
ARDUINO_CSS.unuse();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
static readonly themes: Theme[] = [
|
static readonly themes: Theme[] = [
|
||||||
ArduinoTheme.arduino
|
ArduinoTheme.arduino
|
||||||
]
|
];
|
||||||
}
|
|
||||||
|
}
|
||||||
|
@ -1,51 +0,0 @@
|
|||||||
import { injectable } from 'inversify';
|
|
||||||
import { CommonFrontendContribution, CommonMenus, CommonCommands } from '@theia/core/lib/browser';
|
|
||||||
import { MenuModelRegistry } from '@theia/core';
|
|
||||||
import { ArduinoAdvancedMode } from '../arduino-frontend-contribution';
|
|
||||||
|
|
||||||
@injectable()
|
|
||||||
export class ArduinoCommonFrontendContribution extends CommonFrontendContribution {
|
|
||||||
|
|
||||||
registerMenus(registry: MenuModelRegistry): void {
|
|
||||||
if (!ArduinoAdvancedMode.TOGGLED) {
|
|
||||||
registry.registerSubmenu(CommonMenus.FILE, 'File');
|
|
||||||
registry.registerSubmenu(CommonMenus.EDIT, 'Edit');
|
|
||||||
|
|
||||||
registry.registerSubmenu(CommonMenus.FILE_SETTINGS_SUBMENU, 'Settings');
|
|
||||||
|
|
||||||
registry.registerMenuAction(CommonMenus.EDIT_UNDO, {
|
|
||||||
commandId: CommonCommands.UNDO.id,
|
|
||||||
order: '0'
|
|
||||||
});
|
|
||||||
registry.registerMenuAction(CommonMenus.EDIT_UNDO, {
|
|
||||||
commandId: CommonCommands.REDO.id,
|
|
||||||
order: '1'
|
|
||||||
});
|
|
||||||
|
|
||||||
registry.registerMenuAction(CommonMenus.EDIT_FIND, {
|
|
||||||
commandId: CommonCommands.FIND.id,
|
|
||||||
order: '0'
|
|
||||||
});
|
|
||||||
registry.registerMenuAction(CommonMenus.EDIT_FIND, {
|
|
||||||
commandId: CommonCommands.REPLACE.id,
|
|
||||||
order: '1'
|
|
||||||
});
|
|
||||||
|
|
||||||
registry.registerMenuAction(CommonMenus.EDIT_CLIPBOARD, {
|
|
||||||
commandId: CommonCommands.CUT.id,
|
|
||||||
order: '0'
|
|
||||||
});
|
|
||||||
registry.registerMenuAction(CommonMenus.EDIT_CLIPBOARD, {
|
|
||||||
commandId: CommonCommands.COPY.id,
|
|
||||||
order: '1'
|
|
||||||
});
|
|
||||||
registry.registerMenuAction(CommonMenus.EDIT_CLIPBOARD, {
|
|
||||||
commandId: CommonCommands.PASTE.id,
|
|
||||||
order: '2'
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
super.registerMenus(registry);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,11 +1,13 @@
|
|||||||
import { injectable } from "inversify";
|
import { injectable } from 'inversify';
|
||||||
import { BrowserMenuBarContribution } from "@theia/core/lib/browser/menu/browser-menu-plugin";
|
import { FrontendApplication } from '@theia/core/lib/browser';
|
||||||
import { FrontendApplication } from "@theia/core/lib/browser";
|
import { BrowserMenuBarContribution } from '@theia/core/lib/browser/menu/browser-menu-plugin';
|
||||||
|
|
||||||
@injectable()
|
@injectable()
|
||||||
export class ArduinoMenuContribution extends BrowserMenuBarContribution {
|
export class ArduinoMenuContribution extends BrowserMenuBarContribution {
|
||||||
|
|
||||||
onStart(app: FrontendApplication): void {
|
onStart(app: FrontendApplication): void {
|
||||||
const menu = this.factory.createMenuBar();
|
const menu = this.factory.createMenuBar();
|
||||||
app.shell.addWidget(menu, { area: 'top' });
|
app.shell.addWidget(menu, { area: 'top' });
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
}
|
||||||
|
@ -7,4 +7,4 @@ import '../../../src/browser/style/browser-menu.css'
|
|||||||
export default new ContainerModule((bind: interfaces.Bind, unbind: interfaces.Unbind) => {
|
export default new ContainerModule((bind: interfaces.Bind, unbind: interfaces.Unbind) => {
|
||||||
unbind(BrowserMenuBarContribution);
|
unbind(BrowserMenuBarContribution);
|
||||||
bind(BrowserMenuBarContribution).to(ArduinoMenuContribution).inSingletonScope();
|
bind(BrowserMenuBarContribution).to(ArduinoMenuContribution).inSingletonScope();
|
||||||
})
|
});
|
||||||
|
@ -1,49 +1,12 @@
|
|||||||
import * as electron from 'electron';
|
import { injectable } from 'inversify';
|
||||||
import { injectable, inject } from 'inversify';
|
|
||||||
import { isOSX } from '@theia/core/lib/common/os';
|
|
||||||
import { Disposable } from '@theia/core/lib/common/disposable';
|
|
||||||
import { FrontendApplication } from '@theia/core/lib/browser/frontend-application';
|
|
||||||
import { ElectronMenuContribution } from '@theia/core/lib/electron-browser/menu/electron-menu-contribution';
|
import { ElectronMenuContribution } from '@theia/core/lib/electron-browser/menu/electron-menu-contribution';
|
||||||
import { FrontendApplicationStateService, FrontendApplicationState } from '@theia/core/lib/browser/frontend-application-state';
|
|
||||||
|
|
||||||
// Code was copied from https://github.com/eclipse-theia/theia/pull/5140/commits/be873411eff1f48822a65261305bbe3549ac903d
|
|
||||||
@injectable()
|
@injectable()
|
||||||
export class ElectronArduinoMenuContribution extends ElectronMenuContribution {
|
export class ElectronArduinoMenuContribution extends ElectronMenuContribution {
|
||||||
|
|
||||||
@inject(FrontendApplicationStateService)
|
protected hideTopPanel(): void {
|
||||||
protected readonly stateService: FrontendApplicationStateService;
|
// NOOP
|
||||||
|
// We reuse the `div` for the Arduino toolbar.
|
||||||
onStart(app: FrontendApplication): void {
|
|
||||||
this.setMenu();
|
|
||||||
if (isOSX) {
|
|
||||||
// OSX: Recreate the menus when changing windows.
|
|
||||||
// OSX only has one menu bar for all windows, so we need to swap
|
|
||||||
// between them as the user switches windows.
|
|
||||||
electron.remote.getCurrentWindow().on('focus', () => this.setMenu());
|
|
||||||
}
|
|
||||||
// Make sure the application menu is complete, once the frontend application is ready.
|
|
||||||
// https://github.com/theia-ide/theia/issues/5100
|
|
||||||
let onStateChange: Disposable | undefined = undefined;
|
|
||||||
const stateServiceListener = (state: FrontendApplicationState) => {
|
|
||||||
if (state === 'ready') {
|
|
||||||
this.setMenu();
|
|
||||||
}
|
|
||||||
if (state === 'closing_window') {
|
|
||||||
if (!!onStateChange) {
|
|
||||||
onStateChange.dispose();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
onStateChange = this.stateService.onStateChanged(stateServiceListener);
|
|
||||||
}
|
|
||||||
|
|
||||||
private setMenu(menu: electron.Menu = this.factory.createMenuBar(), electronWindow: electron.BrowserWindow = electron.remote.getCurrentWindow()): void {
|
|
||||||
if (isOSX) {
|
|
||||||
electron.remote.Menu.setApplicationMenu(menu);
|
|
||||||
} else {
|
|
||||||
// Unix/Windows: Set the per-window menus
|
|
||||||
electronWindow.setMenu(menu);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import { ContainerModule } from "inversify";
|
import { ContainerModule } from 'inversify';
|
||||||
import { ElectronMenuContribution } from "@theia/core/lib/electron-browser/menu/electron-menu-contribution"
|
import { ElectronMenuContribution } from '@theia/core/lib/electron-browser/menu/electron-menu-contribution'
|
||||||
import { ElectronArduinoMenuContribution } from "./electron-arduino-menu-contribution";
|
import { ElectronArduinoMenuContribution } from './electron-arduino-menu-contribution';
|
||||||
|
|
||||||
export default new ContainerModule((bind, unbind, isBound, rebind) => {
|
export default new ContainerModule((bind, unbind, isBound, rebind) => {
|
||||||
bind(ElectronArduinoMenuContribution).toSelf().inSingletonScope();
|
bind(ElectronArduinoMenuContribution).toSelf().inSingletonScope();
|
||||||
rebind(ElectronMenuContribution).to(ElectronArduinoMenuContribution);
|
rebind(ElectronMenuContribution).to(ElectronArduinoMenuContribution);
|
||||||
})
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user