From 89faa9d45c4464052dca71d12f1cc476493b1455 Mon Sep 17 00:00:00 2001 From: Akos Kitta Date: Sat, 18 Jul 2020 18:00:26 +0200 Subject: [PATCH] Open in external. Signed-off-by: Akos Kitta --- .../browser/arduino-ide-frontend-module.ts | 2 + .../contributions/open-sketch-external.ts | 52 +++++++++++++++++++ .../browser/contributions/upload-sketch.ts | 2 +- 3 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 arduino-ide-extension/src/browser/contributions/open-sketch-external.ts diff --git a/arduino-ide-extension/src/browser/arduino-ide-frontend-module.ts b/arduino-ide-extension/src/browser/arduino-ide-frontend-module.ts index 19460d28..aba606d4 100644 --- a/arduino-ide-extension/src/browser/arduino-ide-frontend-module.ts +++ b/arduino-ide-extension/src/browser/arduino-ide-frontend-module.ts @@ -97,6 +97,7 @@ import { VerifySketch } from './contributions/verify-sketch'; import { UploadSketch } from './contributions/upload-sketch'; import { CommonFrontendContribution } from './customization/core/common-frontend-contribution'; import { EditContributions } from './contributions/edit-contributions'; +import { OpenSketchExternal } from './contributions/open-sketch-external'; const ElementQueries = require('css-element-queries/src/ElementQueries'); @@ -325,5 +326,6 @@ export default new ContainerModule((bind: interfaces.Bind, unbind: interfaces.Un Contribution.configure(bind, SaveAsSketch); Contribution.configure(bind, VerifySketch); Contribution.configure(bind, UploadSketch); + Contribution.configure(bind, OpenSketchExternal); Contribution.configure(bind, EditContributions); }); diff --git a/arduino-ide-extension/src/browser/contributions/open-sketch-external.ts b/arduino-ide-extension/src/browser/contributions/open-sketch-external.ts new file mode 100644 index 00000000..51c3d260 --- /dev/null +++ b/arduino-ide-extension/src/browser/contributions/open-sketch-external.ts @@ -0,0 +1,52 @@ +import { injectable } from 'inversify'; +import { remote } from 'electron'; +import { ArduinoMenus } from '../menu/arduino-menus'; +import { SketchContribution, Command, CommandRegistry, MenuModelRegistry, KeybindingRegistry, URI } from './contribution'; + +@injectable() +export class OpenSketchExternal extends SketchContribution { + + registerCommands(registry: CommandRegistry): void { + registry.registerCommand(OpenSketchExternal.Commands.OPEN_EXTERNAL, { + execute: () => this.openExternal() + }); + } + + registerMenus(registry: MenuModelRegistry): void { + registry.registerMenuAction(ArduinoMenus.SKETCH__UTILS_GROUP, { + commandId: OpenSketchExternal.Commands.OPEN_EXTERNAL.id, + label: 'Show Sketch Folder', + order: '0' + }); + } + + registerKeybindings(registry: KeybindingRegistry): void { + registry.registerKeybinding({ + command: OpenSketchExternal.Commands.OPEN_EXTERNAL.id, + keybinding: 'CtrlCmd+Alt+K' + }); + } + + protected async openExternal(): Promise { + const sketch = await this.currentSketch(); + if (sketch) { + const uri = new URI(sketch.uri).resolve(`${sketch.name}.ino`).toString(); + const exists = this.fileSystem.exists(uri); + if (exists) { + const fsPath = await this.fileSystem.getFsPath(uri); + if (fsPath) { + remote.shell.showItemInFolder(fsPath); + } + } + } + } + +} + +export namespace OpenSketchExternal { + export namespace Commands { + export const OPEN_EXTERNAL: Command = { + id: 'arduino-open-sketch-external' + }; + } +} diff --git a/arduino-ide-extension/src/browser/contributions/upload-sketch.ts b/arduino-ide-extension/src/browser/contributions/upload-sketch.ts index b8182ba8..8ce87723 100644 --- a/arduino-ide-extension/src/browser/contributions/upload-sketch.ts +++ b/arduino-ide-extension/src/browser/contributions/upload-sketch.ts @@ -35,7 +35,7 @@ export class UploadSketch extends SketchContribution { registerMenus(registry: MenuModelRegistry): void { registry.registerMenuAction(ArduinoMenus.SKETCH__MAIN_GROUP, { commandId: UploadSketch.Commands.UPLOAD_SKETCH.id, - label: 'Verify', + label: 'Upload', order: '0' }); }