From c0e279f3e82d4315bb86794519390e41fd6bc6d3 Mon Sep 17 00:00:00 2001 From: Akos Kitta Date: Tue, 23 Jul 2019 20:58:14 +0200 Subject: [PATCH 1/2] [win] Open sketch. Signed-off-by: Akos Kitta --- .../browser/arduino-frontend-contribution.tsx | 9 ++-- .../src/common/protocol/sketches-service.ts | 2 +- .../src/node/sketches-service-impl.ts | 42 ++++++++----------- 3 files changed, 23 insertions(+), 30 deletions(-) diff --git a/arduino-ide-extension/src/browser/arduino-frontend-contribution.tsx b/arduino-ide-extension/src/browser/arduino-frontend-contribution.tsx index 80b8af0e..ecdc465f 100644 --- a/arduino-ide-extension/src/browser/arduino-frontend-contribution.tsx +++ b/arduino-ide-extension/src/browser/arduino-frontend-contribution.tsx @@ -357,11 +357,10 @@ export class ArduinoFrontendContribution implements TabBarToolbarContribution, C async openSketchFiles(uri: string) { const fileStat = await this.fileSystem.getFileStat(uri); if (fileStat) { - const sketchFiles = await this.sketches.getSketchFiles(fileStat); - sketchFiles.forEach(sketchFile => { - const uri = new URI(sketchFile.uri); - this.editorManager.open(uri); - }); + const uris = await this.sketches.getSketchFiles(fileStat); + for (const uri of uris) { + this.editorManager.open(new URI(uri)); + } } } diff --git a/arduino-ide-extension/src/common/protocol/sketches-service.ts b/arduino-ide-extension/src/common/protocol/sketches-service.ts index fa85d851..bea5ffc8 100644 --- a/arduino-ide-extension/src/common/protocol/sketches-service.ts +++ b/arduino-ide-extension/src/common/protocol/sketches-service.ts @@ -4,7 +4,7 @@ export const SketchesServicePath = '/services/sketches-service'; export const SketchesService = Symbol('SketchesService'); export interface SketchesService { getSketches(fileStat?: FileStat): Promise - getSketchFiles(fileStat: FileStat): Promise + getSketchFiles(fileStat: FileStat): Promise } export interface Sketch { diff --git a/arduino-ide-extension/src/node/sketches-service-impl.ts b/arduino-ide-extension/src/node/sketches-service-impl.ts index ab5d774e..2107ec0d 100644 --- a/arduino-ide-extension/src/node/sketches-service-impl.ts +++ b/arduino-ide-extension/src/node/sketches-service-impl.ts @@ -4,6 +4,7 @@ import URI from "@theia/core/lib/common/uri"; import { FileStat, FileSystem } from "@theia/filesystem/lib/common"; import * as fs from 'fs'; import * as path from 'path'; +import { FileUri } from "@theia/core/lib/node"; export const ALLOWED_FILE_EXTENSIONS = [".c", ".cpp", ".h", ".hh", ".hpp", ".s", ".pde", ".ino"]; @@ -19,16 +20,16 @@ export class SketchesServiceImpl implements SketchesService { const uri = new URI(fileStat.uri); const sketchFolderPath = await this.filesystem.getFsPath(uri.toString()); if (sketchFolderPath) { - const files = fs.readdirSync(sketchFolderPath); - files.forEach(file => { - const filePath = path.join(sketchFolderPath, file); - if (this.isSketchFolder(filePath, file)) { + const fileNames = fs.readdirSync(sketchFolderPath); + for (const fileName of fileNames) { + const filePath = path.join(sketchFolderPath, fileName); + if (this.isSketchFolder(filePath, fileName)) { sketches.push({ - name: file, - uri: filePath + name: fileName, + uri: FileUri.create(filePath).toString() }); } - }); + } } } return sketches; @@ -38,25 +39,19 @@ export class SketchesServiceImpl implements SketchesService { * Return all allowed files. * File extensions: "c", "cpp", "h", "hh", "hpp", "s", "pde", "ino" */ - async getSketchFiles(sketchFileStat: FileStat): Promise { - const files: FileStat[] = []; + async getSketchFiles(sketchFileStat: FileStat): Promise { + const uris: string[] = []; const sketchUri = new URI(sketchFileStat.uri); const sketchPath = await this.filesystem.getFsPath(sketchUri.toString()); if (sketchPath) { if (sketchFileStat.isDirectory && this.isSketchFolder(sketchPath, sketchUri.displayName)) { - const sketchDirContents = fs.readdirSync(sketchPath); - for (const i in sketchDirContents) { - const fileName = sketchDirContents[i]; + const fileNames = fs.readdirSync(sketchPath); + for (const fileName of fileNames) { const filePath = path.join(sketchPath, fileName); - if (fs.existsSync(filePath) && - fs.lstatSync(filePath).isFile() && - ALLOWED_FILE_EXTENSIONS.indexOf(path.extname(filePath)) !== -1) { - const fileStat = await this.filesystem.getFileStat(filePath); - if (fileStat) { - console.log("111111111111", fileStat); - files.push(fileStat); - console.log("222222222222222", files); - } + if (ALLOWED_FILE_EXTENSIONS.indexOf(path.extname(filePath)) !== -1 + && fs.existsSync(filePath) + && fs.lstatSync(filePath).isFile()) { + uris.push(FileUri.create(filePath).toString()) } } } else { @@ -65,13 +60,12 @@ export class SketchesServiceImpl implements SketchesService { const sketchFolderStat = await this.filesystem.getFileStat(sketchUri.path.dir.toString()); if (sketchFolderStat) { const sketchDirContents = await this.getSketchFiles(sketchFolderStat); - files.push(...sketchDirContents); + uris.push(...sketchDirContents); } } } } - console.log("###FILEPATH###", files); - return files; + return uris; } protected isSketchFolder(path: string, name: string): boolean { From 457b283ca5a3be5404bb71b383a57c82c3f87854 Mon Sep 17 00:00:00 2001 From: Jan Bicker Date: Wed, 24 Jul 2019 07:47:02 -0700 Subject: [PATCH 2/2] Use theia main menu factory for electron again. --- .../electron-arduino-main-menu-factory.ts | 20 ------------------- .../electron-arduino-menu-module.ts | 5 ----- 2 files changed, 25 deletions(-) delete mode 100644 arduino-ide-extension/src/electron-browser/electron-arduino-main-menu-factory.ts diff --git a/arduino-ide-extension/src/electron-browser/electron-arduino-main-menu-factory.ts b/arduino-ide-extension/src/electron-browser/electron-arduino-main-menu-factory.ts deleted file mode 100644 index 0b971357..00000000 --- a/arduino-ide-extension/src/electron-browser/electron-arduino-main-menu-factory.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { injectable } from "inversify"; -import * as electron from 'electron'; -import { ElectronMainMenuFactory } from "@theia/core/lib/electron-browser/menu/electron-main-menu-factory"; -import { - isOSX -} from '@theia/core/lib/common'; - -@injectable() -export class ElectronArduinoMainMenuFactory extends ElectronMainMenuFactory { - createMenuBar(): Electron.Menu { - const menuModel = this.menuProvider.getMenu(); - const template = this.fillMenuTemplate([], menuModel); - if (isOSX) { - template.unshift(this.createOSXMenu()); - } - const menu = electron.remote.Menu.buildFromTemplate(template); - this._menu = menu; - return menu; - } -} \ No newline at end of file diff --git a/arduino-ide-extension/src/electron-browser/electron-arduino-menu-module.ts b/arduino-ide-extension/src/electron-browser/electron-arduino-menu-module.ts index a2d28f7b..57573c4f 100644 --- a/arduino-ide-extension/src/electron-browser/electron-arduino-menu-module.ts +++ b/arduino-ide-extension/src/electron-browser/electron-arduino-menu-module.ts @@ -1,13 +1,8 @@ import { ContainerModule } from "inversify"; -import { ElectronArduinoMainMenuFactory } from "./electron-arduino-main-menu-factory"; -import { ElectronMainMenuFactory } from "@theia/core/lib/electron-browser/menu/electron-main-menu-factory"; import { ElectronMenuContribution } from "@theia/core/lib/electron-browser/menu/electron-menu-contribution" import { ElectronArduinoMenuContribution } from "./electron-arduino-menu-contribution"; export default new ContainerModule((bind, unbind, isBound, rebind) => { - bind(ElectronArduinoMainMenuFactory).toSelf().inSingletonScope(); - rebind(ElectronMainMenuFactory).to(ElectronArduinoMainMenuFactory); - bind(ElectronArduinoMenuContribution).toSelf().inSingletonScope(); rebind(ElectronMenuContribution).to(ElectronArduinoMenuContribution); }) \ No newline at end of file