diff --git a/arduino-ide-extension/package.json b/arduino-ide-extension/package.json index 49d774e2b..a85ab38ff 100644 --- a/arduino-ide-extension/package.json +++ b/arduino-ide-extension/package.json @@ -21,22 +21,22 @@ "dependencies": { "arduino-serial-plotter-webapp": "0.0.15", "@grpc/grpc-js": "^1.3.7", - "@theia/application-package": "1.18.0", - "@theia/core": "1.18.0", - "@theia/editor": "1.18.0", - "@theia/editor-preview": "1.18.0", - "@theia/filesystem": "1.18.0", - "@theia/git": "1.18.0", - "@theia/keymaps": "1.18.0", - "@theia/markers": "1.18.0", - "@theia/monaco": "1.18.0", - "@theia/navigator": "1.18.0", - "@theia/outline-view": "1.18.0", - "@theia/output": "1.18.0", - "@theia/preferences": "1.18.0", - "@theia/search-in-workspace": "1.18.0", - "@theia/terminal": "1.18.0", - "@theia/workspace": "1.18.0", + "@theia/application-package": "1.19.0", + "@theia/core": "1.19.0", + "@theia/editor": "1.19.0", + "@theia/editor-preview": "1.19.0", + "@theia/filesystem": "1.19.0", + "@theia/git": "1.19.0", + "@theia/keymaps": "1.19.0", + "@theia/markers": "1.19.0", + "@theia/monaco": "1.19.0", + "@theia/navigator": "1.19.0", + "@theia/outline-view": "1.19.0", + "@theia/output": "1.19.0", + "@theia/preferences": "1.19.0", + "@theia/search-in-workspace": "1.19.0", + "@theia/terminal": "1.19.0", + "@theia/workspace": "1.19.0", "@tippyjs/react": "^4.2.5", "@types/atob": "^2.1.2", "@types/auth0-js": "^9.14.0", @@ -149,7 +149,7 @@ ], "arduino": { "cli": { - "version": "0.20.0" + "version": "0.20.1" }, "fwuploader": { "version": "2.0.0" diff --git a/arduino-ide-extension/scripts/download-ls.js b/arduino-ide-extension/scripts/download-ls.js index 0d2bfdc06..6e53f9dcc 100755 --- a/arduino-ide-extension/scripts/download-ls.js +++ b/arduino-ide-extension/scripts/download-ls.js @@ -4,69 +4,78 @@ // - https://downloads.arduino.cc/arduino-language-server/clangd/clangd_${VERSION}_${SUFFIX} (() => { + const DEFAULT_ALS_VERSION = '0.5.0-rc2'; + const DEFAULT_CLANGD_VERSION = 'snapshot_20210124'; - const DEFAULT_ALS_VERSION = 'nightly'; - const DEFAULT_CLANGD_VERSION = 'snapshot_20210124'; + const path = require('path'); + const shell = require('shelljs'); + const downloader = require('./downloader'); - const path = require('path'); - const shell = require('shelljs'); - const downloader = require('./downloader'); + const yargs = require('yargs') + .option('ls-version', { + alias: 'lv', + default: DEFAULT_ALS_VERSION, + describe: `The version of the 'arduino-language-server' to download. Defaults to ${DEFAULT_ALS_VERSION}.`, + }) + .option('clangd-version', { + alias: 'cv', + default: DEFAULT_CLANGD_VERSION, + choices: ['snapshot_20210124'], + describe: `The version of 'clangd' to download. Defaults to ${DEFAULT_CLANGD_VERSION}.`, + }) + .option('force-download', { + alias: 'fd', + default: false, + describe: `If set, this script force downloads the 'arduino-language-server' even if it already exists on the file system.`, + }) + .version(false) + .parse(); - const yargs = require('yargs') - .option('ls-version', { - alias: 'lv', - default: DEFAULT_ALS_VERSION, - choices: ['nightly'], - describe: `The version of the 'arduino-language-server' to download. Defaults to ${DEFAULT_ALS_VERSION}.` - }) - .option('clangd-version', { - alias: 'cv', - default: DEFAULT_CLANGD_VERSION, - choices: ['snapshot_20210124'], - describe: `The version of 'clangd' to download. Defaults to ${DEFAULT_CLANGD_VERSION}.` - }) - .option('force-download', { - alias: 'fd', - default: false, - describe: `If set, this script force downloads the 'arduino-language-server' even if it already exists on the file system.` - }) - .version(false).parse(); + const alsVersion = yargs['ls-version']; + const clangdVersion = yargs['clangd-version']; + const force = yargs['force-download']; + const { platform, arch } = process; - const alsVersion = yargs['ls-version']; - const clangdVersion = yargs['clangd-version'] - const force = yargs['force-download']; - const { platform, arch } = process; + const build = path.join(__dirname, '..', 'build'); + const lsExecutablePath = path.join( + build, + `arduino-language-server${platform === 'win32' ? '.exe' : ''}` + ); - const build = path.join(__dirname, '..', 'build'); - const lsExecutablePath = path.join(build, `arduino-language-server${platform === 'win32' ? '.exe' : ''}`); + let clangdExecutablePath, lsSuffix, clangdPrefix; + switch (platform) { + case 'darwin': + clangdExecutablePath = path.join(build, 'bin', 'clangd'); + lsSuffix = 'macOS_64bit.tar.gz'; + clangdPrefix = 'mac'; + break; + case 'linux': + clangdExecutablePath = path.join(build, 'bin', 'clangd'); + lsSuffix = 'Linux_64bit.tar.gz'; + clangdPrefix = 'linux'; + break; + case 'win32': + clangdExecutablePath = path.join(build, 'bin', 'clangd.exe'); + lsSuffix = 'Windows_64bit.zip'; + clangdPrefix = 'windows'; + break; + } + if (!lsSuffix) { + shell.echo( + `The arduino-language-server is not available for ${platform} ${arch}.` + ); + shell.exit(1); + } - let clangdExecutablePath, lsSuffix, clangdPrefix; - switch (platform) { - case 'darwin': - clangdExecutablePath = path.join(build, 'bin', 'clangd') - lsSuffix = 'macOS_amd64.zip'; - clangdPrefix = 'mac'; - break; - case 'linux': - clangdExecutablePath = path.join(build, 'bin', 'clangd') - lsSuffix = 'Linux_amd64.zip'; - clangdPrefix = 'linux' - break; - case 'win32': - clangdExecutablePath = path.join(build, 'bin', 'clangd.exe') - lsSuffix = 'Windows_amd64.zip'; - clangdPrefix = 'windows'; - break; - } - if (!lsSuffix) { - shell.echo(`The arduino-language-server is not available for ${platform} ${arch}.`); - shell.exit(1); - } - - const alsUrl = `https://downloads.arduino.cc/arduino-language-server/${alsVersion === 'nightly' ? 'nightly/arduino-language-server' : 'arduino-language-server_' + alsVersion}_${lsSuffix}`; - downloader.downloadUnzipAll(alsUrl, build, lsExecutablePath, force); - - const clangdUrl = `https://downloads.arduino.cc/arduino-language-server/clangd/clangd-${clangdPrefix}-${clangdVersion}.zip`; - downloader.downloadUnzipAll(clangdUrl, build, clangdExecutablePath, force, { strip: 1 }); // `strip`: the new clangd (12.x) is zipped into a folder, so we have to strip the outmost folder. + const alsUrl = `https://downloads.arduino.cc/arduino-language-server/${ + alsVersion === 'nightly' + ? 'nightly/arduino-language-server' + : 'arduino-language-server_' + alsVersion + }_${lsSuffix}`; + downloader.downloadUnzipAll(alsUrl, build, lsExecutablePath, force); + const clangdUrl = `https://downloads.arduino.cc/arduino-language-server/clangd/clangd-${clangdPrefix}-${clangdVersion}.zip`; + downloader.downloadUnzipAll(clangdUrl, build, clangdExecutablePath, force, { + strip: 1, + }); // `strip`: the new clangd (12.x) is zipped into a folder, so we have to strip the outmost folder. })(); diff --git a/arduino-ide-extension/src/browser/arduino-frontend-contribution.tsx b/arduino-ide-extension/src/browser/arduino-frontend-contribution.tsx index 55e70a2c2..3cfc49fd8 100644 --- a/arduino-ide-extension/src/browser/arduino-frontend-contribution.tsx +++ b/arduino-ide-extension/src/browser/arduino-frontend-contribution.tsx @@ -1,3 +1,13 @@ +import { inject, injectable, postConstruct } from 'inversify'; +import * as React from 'react'; +import { remote } from 'electron'; +import { + BoardsService, + Port, + SketchesService, + ExecutableService, + Sketch, +} from '../common/protocol'; import { Mutex } from 'async-mutex'; import { MAIN_MENU_BAR, @@ -13,7 +23,7 @@ import { StatusBar, StatusBarAlignment, } from '@theia/core/lib/browser'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; import { ColorContribution } from '@theia/core/lib/browser/color-application-contribution'; import { ColorRegistry } from '@theia/core/lib/browser/color-registry'; import { CommonMenus } from '@theia/core/lib/browser/common-frontend-contribution'; @@ -40,16 +50,10 @@ import { OutputContribution } from '@theia/output/lib/browser/output-contributio import { ScmContribution } from '@theia/scm/lib/browser/scm-contribution'; import { SearchInWorkspaceFrontendContribution } from '@theia/search-in-workspace/lib/browser/search-in-workspace-frontend-contribution'; import { TerminalMenus } from '@theia/terminal/lib/browser/terminal-frontend-contribution'; -import { inject, injectable, postConstruct } from 'inversify'; -import * as React from 'react'; -import { remote } from 'electron'; -import { - BoardsService, - Port, - SketchesService, - ExecutableService, - Sketch, -} from '../common/protocol'; +import { HostedPluginSupport } from '@theia/plugin-ext/lib/hosted/browser/hosted-plugin'; +import { FileService } from '@theia/filesystem/lib/browser/file-service'; +import { FileChangeType } from '@theia/filesystem/lib/browser'; +import { FrontendApplicationStateService } from '@theia/core/lib/browser/frontend-application-state'; import { ConfigService } from '../common/protocol/config-service'; import { ArduinoCommands } from './arduino-commands'; import { BoardsConfig } from './boards/boards-config'; @@ -60,13 +64,9 @@ import { EditorMode } from './editor-mode'; import { ArduinoMenus } from './menu/arduino-menus'; import { MonitorViewContribution } from './serial/monitor/monitor-view-contribution'; import { ArduinoToolbar } from './toolbar/arduino-toolbar'; -import { HostedPluginSupport } from '@theia/plugin-ext/lib/hosted/browser/hosted-plugin'; -import { FileService } from '@theia/filesystem/lib/browser/file-service'; import { ArduinoPreferences } from './arduino-preferences'; import { SketchesServiceClientImpl } from '../common/protocol/sketches-service-client-impl'; import { SaveAsSketch } from './contributions/save-as-sketch'; -import { FileChangeType } from '@theia/filesystem/lib/browser'; -import { FrontendApplicationStateService } from '@theia/core/lib/browser/frontend-application-state'; import { SketchbookWidgetContribution } from './widgets/sketchbook/sketchbook-widget-contribution'; const INIT_AVR_PACKAGES = 'initializedAvrPackages'; @@ -340,15 +340,14 @@ export class ArduinoFrontendContribution ); } } - const { clangdUri, cliUri, lsUri } = await this.executableService.list(); - const [clangdPath, cliPath, lsPath, cliConfigPath] = await Promise.all([ + const { clangdUri, lsUri } = await this.executableService.list(); + const [clangdPath, lsPath] = await Promise.all([ this.fileService.fsPath(new URI(clangdUri)), - this.fileService.fsPath(new URI(cliUri)), this.fileService.fsPath(new URI(lsUri)), - this.fileService.fsPath( - new URI(await this.configService.getCliConfigFileUri()) - ), ]); + + const config = await this.configService.getConfiguration(); + this.languageServerFqbn = await Promise.race([ new Promise((_, reject) => setTimeout( @@ -360,10 +359,10 @@ export class ArduinoFrontendContribution 'arduino.languageserver.start', { lsPath, - cliPath, + cliDaemonAddr: `localhost:${config.daemon.port}`, clangdPath, log: currentSketchPath ? currentSketchPath : log, - cliConfigPath, + cliDaemonInstance: '1', board: { fqbn, name: name ? `"${name}"` : undefined, 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 00a1ae5ad..700012bbd 100644 --- a/arduino-ide-extension/src/browser/arduino-ide-frontend-module.ts +++ b/arduino-ide-extension/src/browser/arduino-ide-frontend-module.ts @@ -154,7 +154,7 @@ import { } from '../common/protocol/examples-service'; import { BuiltInExamples, LibraryExamples } from './contributions/examples'; import { IncludeLibrary } from './contributions/include-library'; -import { OutputChannelManager as TheiaOutputChannelManager } from '@theia/output/lib/common/output-channel'; +import { OutputChannelManager as TheiaOutputChannelManager } from '@theia/output/lib/browser/output-channel'; import { OutputChannelManager } from './theia/output/output-channel'; import { OutputChannelRegistryMainImpl as TheiaOutputChannelRegistryMainImpl, @@ -190,12 +190,12 @@ import { BoardSelection } from './contributions/board-selection'; import { OpenRecentSketch } from './contributions/open-recent-sketch'; import { Help } from './contributions/help'; import { bindArduinoPreferences } from './arduino-preferences'; +import { SettingsService } from './dialogs/settings/settings'; import { - SettingsService, SettingsDialog, SettingsWidget, SettingsDialogProps, -} from './settings'; +} from './dialogs/settings/settings-dialog'; import { AddFile } from './contributions/add-file'; import { ArchiveSketch } from './contributions/archive-sketch'; import { OutputToolbarContribution as TheiaOutputToolbarContribution } from '@theia/output/lib/browser/output-toolbar-contribution'; @@ -207,6 +207,8 @@ import { DebugConfigurationManager } from './theia/debug/debug-configuration-man import { DebugConfigurationManager as TheiaDebugConfigurationManager } from '@theia/debug/lib/browser/debug-configuration-manager'; import { SearchInWorkspaceWidget as TheiaSearchInWorkspaceWidget } from '@theia/search-in-workspace/lib/browser/search-in-workspace-widget'; import { SearchInWorkspaceWidget } from './theia/search-in-workspace/search-in-workspace-widget'; +import { SearchInWorkspaceFactory as TheiaSearchInWorkspaceFactory } from '@theia/search-in-workspace/lib/browser/search-in-workspace-factory'; +import { SearchInWorkspaceFactory } from './theia/search-in-workspace/search-in-workspace-factory'; import { SearchInWorkspaceResultTreeWidget as TheiaSearchInWorkspaceResultTreeWidget } from '@theia/search-in-workspace/lib/browser/search-in-workspace-result-tree-widget'; import { SearchInWorkspaceResultTreeWidget } from './theia/search-in-workspace/search-in-workspace-result-tree-widget'; import { MonacoEditorProvider } from './theia/monaco/monaco-editor-provider'; @@ -259,7 +261,7 @@ import { UserFieldsDialogProps, UserFieldsDialogWidget, } from './dialogs/user-fields/user-fields-dialog'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; const ElementQueries = require('css-element-queries/src/ElementQueries'); @@ -492,6 +494,12 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => { bind(SearchInWorkspaceWidget).toSelf(); rebind(TheiaSearchInWorkspaceWidget).toService(SearchInWorkspaceWidget); + + // replace search icon + rebind(TheiaSearchInWorkspaceFactory) + .to(SearchInWorkspaceFactory) + .inSingletonScope(); + rebind(TheiaSearchInWorkspaceResultTreeWidget).toDynamicValue( ({ container }) => { const childContainer = createTreeContainer(container); @@ -678,7 +686,10 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => { bind(SettingsWidget).toSelf().inSingletonScope(); bind(SettingsDialog).toSelf().inSingletonScope(); bind(SettingsDialogProps).toConstantValue({ - title: 'Preferences', + title: nls.localize( + 'vscode/preferences.contribution/preferences', + 'Preferences' + ), }); bind(StorageWrapper).toSelf().inSingletonScope(); diff --git a/arduino-ide-extension/src/browser/arduino-preferences.ts b/arduino-ide-extension/src/browser/arduino-preferences.ts index 02de6d5ad..5e1013a1d 100644 --- a/arduino-ide-extension/src/browser/arduino-preferences.ts +++ b/arduino-ide-extension/src/browser/arduino-preferences.ts @@ -6,7 +6,7 @@ import { PreferenceContribution, PreferenceSchema, } from '@theia/core/lib/browser/preferences'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; import { CompilerWarningLiterals, CompilerWarnings } from '../common/protocol'; export const ArduinoConfigSchema: PreferenceSchema = { diff --git a/arduino-ide-extension/src/browser/boards/boards-auto-installer.ts b/arduino-ide-extension/src/browser/boards/boards-auto-installer.ts index e99618d96..97fefb84d 100644 --- a/arduino-ide-extension/src/browser/boards/boards-auto-installer.ts +++ b/arduino-ide-extension/src/browser/boards/boards-auto-installer.ts @@ -10,7 +10,7 @@ import { BoardsServiceProvider } from './boards-service-provider'; import { BoardsConfig } from './boards-config'; import { Installable, ResponseServiceArduino } from '../../common/protocol'; import { BoardsListWidgetFrontendContribution } from './boards-widget-frontend-contribution'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; /** * Listens on `BoardsConfig.Config` changes, if a board is selected which does not diff --git a/arduino-ide-extension/src/browser/boards/boards-config-dialog.ts b/arduino-ide-extension/src/browser/boards/boards-config-dialog.ts index 8f44eef8d..0ef4bad3c 100644 --- a/arduino-ide-extension/src/browser/boards/boards-config-dialog.ts +++ b/arduino-ide-extension/src/browser/boards/boards-config-dialog.ts @@ -6,7 +6,7 @@ import { BoardsConfig } from './boards-config'; import { BoardsService } from '../../common/protocol/boards-service'; import { BoardsServiceProvider } from './boards-service-provider'; import { BoardsConfigDialogWidget } from './boards-config-dialog-widget'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; @injectable() export class BoardsConfigDialogProps extends DialogProps {} diff --git a/arduino-ide-extension/src/browser/boards/boards-config.tsx b/arduino-ide-extension/src/browser/boards/boards-config.tsx index dd2e82989..6d614745c 100644 --- a/arduino-ide-extension/src/browser/boards/boards-config.tsx +++ b/arduino-ide-extension/src/browser/boards/boards-config.tsx @@ -14,8 +14,8 @@ import { AvailableBoard, BoardsServiceProvider, } from './boards-service-provider'; -import { nls } from '@theia/core/lib/browser/nls'; import { naturalCompare } from '../../common/utils'; +import { nls } from '@theia/core/lib/common'; export namespace BoardsConfig { export interface Config { diff --git a/arduino-ide-extension/src/browser/boards/boards-data-menu-updater.ts b/arduino-ide-extension/src/browser/boards/boards-data-menu-updater.ts index 19d23b87e..5447427de 100644 --- a/arduino-ide-extension/src/browser/boards/boards-data-menu-updater.ts +++ b/arduino-ide-extension/src/browser/boards/boards-data-menu-updater.ts @@ -12,7 +12,7 @@ import { FrontendApplicationContribution } from '@theia/core/lib/browser'; import { BoardsDataStore } from './boards-data-store'; import { MainMenuManager } from '../../common/main-menu-manager'; import { ArduinoMenus, unregisterSubmenu } from '../menu/arduino-menus'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; @injectable() export class BoardsDataMenuUpdater implements FrontendApplicationContribution { diff --git a/arduino-ide-extension/src/browser/boards/boards-list-widget.ts b/arduino-ide-extension/src/browser/boards/boards-list-widget.ts index d41f2a4e3..81749ea91 100644 --- a/arduino-ide-extension/src/browser/boards/boards-list-widget.ts +++ b/arduino-ide-extension/src/browser/boards/boards-list-widget.ts @@ -5,7 +5,7 @@ import { } from '../../common/protocol/boards-service'; import { ListWidget } from '../widgets/component-list/list-widget'; import { ListItemRenderer } from '../widgets/component-list/list-item-renderer'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; @injectable() export class BoardsListWidget extends ListWidget { diff --git a/arduino-ide-extension/src/browser/boards/boards-service-provider.ts b/arduino-ide-extension/src/browser/boards/boards-service-provider.ts index 295891c8f..f1edefe14 100644 --- a/arduino-ide-extension/src/browser/boards/boards-service-provider.ts +++ b/arduino-ide-extension/src/browser/boards/boards-service-provider.ts @@ -19,7 +19,7 @@ import { naturalCompare } from '../../common/utils'; import { NotificationCenter } from '../notification-center'; import { ArduinoCommands } from '../arduino-commands'; import { StorageWrapper } from '../storage-wrapper'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; @injectable() export class BoardsServiceProvider implements FrontendApplicationContribution { diff --git a/arduino-ide-extension/src/browser/boards/boards-toolbar-item.tsx b/arduino-ide-extension/src/browser/boards/boards-toolbar-item.tsx index b55ec33a7..622e8fa50 100644 --- a/arduino-ide-extension/src/browser/boards/boards-toolbar-item.tsx +++ b/arduino-ide-extension/src/browser/boards/boards-toolbar-item.tsx @@ -9,7 +9,7 @@ import { BoardsServiceProvider, AvailableBoard, } from './boards-service-provider'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; export interface BoardsDropDownListCoords { readonly top: number; diff --git a/arduino-ide-extension/src/browser/contributions/about.ts b/arduino-ide-extension/src/browser/contributions/about.ts index 13593341f..662781a00 100644 --- a/arduino-ide-extension/src/browser/contributions/about.ts +++ b/arduino-ide-extension/src/browser/contributions/about.ts @@ -12,7 +12,7 @@ import { } from './contribution'; import { ArduinoMenus } from '../menu/arduino-menus'; import { ConfigService } from '../../common/protocol'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; @injectable() export class About extends Contribution { diff --git a/arduino-ide-extension/src/browser/contributions/add-file.ts b/arduino-ide-extension/src/browser/contributions/add-file.ts index 9d279cd8e..d6155d927 100644 --- a/arduino-ide-extension/src/browser/contributions/add-file.ts +++ b/arduino-ide-extension/src/browser/contributions/add-file.ts @@ -9,7 +9,7 @@ import { URI, } from './contribution'; import { FileDialogService } from '@theia/filesystem/lib/browser'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; @injectable() export class AddFile extends SketchContribution { diff --git a/arduino-ide-extension/src/browser/contributions/add-zip-library.ts b/arduino-ide-extension/src/browser/contributions/add-zip-library.ts index 0e37ca109..6b97c3ec2 100644 --- a/arduino-ide-extension/src/browser/contributions/add-zip-library.ts +++ b/arduino-ide-extension/src/browser/contributions/add-zip-library.ts @@ -15,7 +15,7 @@ import { CommandRegistry, MenuModelRegistry, } from './contribution'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; @injectable() export class AddZipLibrary extends SketchContribution { diff --git a/arduino-ide-extension/src/browser/contributions/archive-sketch.ts b/arduino-ide-extension/src/browser/contributions/archive-sketch.ts index 6b7e00c25..315ad5156 100644 --- a/arduino-ide-extension/src/browser/contributions/archive-sketch.ts +++ b/arduino-ide-extension/src/browser/contributions/archive-sketch.ts @@ -9,7 +9,7 @@ import { CommandRegistry, MenuModelRegistry, } from './contribution'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; @injectable() export class ArchiveSketch extends SketchContribution { diff --git a/arduino-ide-extension/src/browser/contributions/board-selection.ts b/arduino-ide-extension/src/browser/contributions/board-selection.ts index eb8237c7b..bcca5a8ce 100644 --- a/arduino-ide-extension/src/browser/contributions/board-selection.ts +++ b/arduino-ide-extension/src/browser/contributions/board-selection.ts @@ -23,7 +23,7 @@ import { Port, } from '../../common/protocol'; import { SketchContribution, Command, CommandRegistry } from './contribution'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; @injectable() export class BoardSelection extends SketchContribution { diff --git a/arduino-ide-extension/src/browser/contributions/burn-bootloader.ts b/arduino-ide-extension/src/browser/contributions/burn-bootloader.ts index 0f24cc185..1ee0dea56 100644 --- a/arduino-ide-extension/src/browser/contributions/burn-bootloader.ts +++ b/arduino-ide-extension/src/browser/contributions/burn-bootloader.ts @@ -1,5 +1,5 @@ import { inject, injectable } from 'inversify'; -import { OutputChannelManager } from '@theia/output/lib/common/output-channel'; +import { OutputChannelManager } from '@theia/output/lib/browser/output-channel'; import { CoreService } from '../../common/protocol'; import { ArduinoMenus } from '../menu/arduino-menus'; import { BoardsDataStore } from '../boards/boards-data-store'; @@ -11,7 +11,7 @@ import { CommandRegistry, MenuModelRegistry, } from './contribution'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; @injectable() export class BurnBootloader extends SketchContribution { diff --git a/arduino-ide-extension/src/browser/contributions/close.ts b/arduino-ide-extension/src/browser/contributions/close.ts index bf66dd212..b134873f2 100644 --- a/arduino-ide-extension/src/browser/contributions/close.ts +++ b/arduino-ide-extension/src/browser/contributions/close.ts @@ -15,7 +15,7 @@ import { KeybindingRegistry, URI, } from './contribution'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; /** * Closes the `current` closeable editor, or any closeable current widget from the main area, or the current sketch window. diff --git a/arduino-ide-extension/src/browser/contributions/contribution.ts b/arduino-ide-extension/src/browser/contributions/contribution.ts index 14e6e9715..ee65185c0 100644 --- a/arduino-ide-extension/src/browser/contributions/contribution.ts +++ b/arduino-ide-extension/src/browser/contributions/contribution.ts @@ -9,7 +9,7 @@ import { EditorManager } from '@theia/editor/lib/browser/editor-manager'; import { MessageService } from '@theia/core/lib/common/message-service'; import { WorkspaceService } from '@theia/workspace/lib/browser/workspace-service'; import { open, OpenerService } from '@theia/core/lib/browser/opener-service'; -import { OutputChannelManager } from '@theia/output/lib/common/output-channel'; +import { OutputChannelManager } from '@theia/output/lib/browser/output-channel'; import { MenuModelRegistry, MenuContribution, @@ -33,7 +33,7 @@ import { CommandService, } from '@theia/core/lib/common/command'; import { EditorMode } from '../editor-mode'; -import { SettingsService } from '../settings'; +import { SettingsService } from '../dialogs/settings/settings'; import { SketchesServiceClientImpl } from '../../common/protocol/sketches-service-client-impl'; import { SketchesService, diff --git a/arduino-ide-extension/src/browser/contributions/debug.ts b/arduino-ide-extension/src/browser/contributions/debug.ts index e1a98aa8c..a67f832e9 100644 --- a/arduino-ide-extension/src/browser/contributions/debug.ts +++ b/arduino-ide-extension/src/browser/contributions/debug.ts @@ -12,7 +12,7 @@ import { SketchContribution, TabBarToolbarRegistry, } from './contribution'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; @injectable() export class Debug extends SketchContribution { diff --git a/arduino-ide-extension/src/browser/contributions/edit-contributions.ts b/arduino-ide-extension/src/browser/contributions/edit-contributions.ts index d55aae6c5..1f7d56353 100644 --- a/arduino-ide-extension/src/browser/contributions/edit-contributions.ts +++ b/arduino-ide-extension/src/browser/contributions/edit-contributions.ts @@ -11,7 +11,7 @@ import { CommandRegistry, } from './contribution'; import { ArduinoMenus } from '../menu/arduino-menus'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; // TODO: [macOS]: to remove `Start Dictation...` and `Emoji & Symbol` see this thread: https://github.com/electron/electron/issues/8283#issuecomment-269522072 // Depends on https://github.com/eclipse-theia/theia/pull/7964 diff --git a/arduino-ide-extension/src/browser/contributions/examples.ts b/arduino-ide-extension/src/browser/contributions/examples.ts index 8dfa163c2..9fd045c3b 100644 --- a/arduino-ide-extension/src/browser/contributions/examples.ts +++ b/arduino-ide-extension/src/browser/contributions/examples.ts @@ -22,7 +22,7 @@ import { } from './contribution'; import { NotificationCenter } from '../notification-center'; import { Board, Sketch, SketchContainer } from '../../common/protocol'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; @injectable() export abstract class Examples extends SketchContribution { diff --git a/arduino-ide-extension/src/browser/contributions/help.ts b/arduino-ide-extension/src/browser/contributions/help.ts index 98eeb806b..51cbd4a2a 100644 --- a/arduino-ide-extension/src/browser/contributions/help.ts +++ b/arduino-ide-extension/src/browser/contributions/help.ts @@ -12,7 +12,7 @@ import { CommandRegistry, KeybindingRegistry, } from './contribution'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; @injectable() export class Help extends Contribution { diff --git a/arduino-ide-extension/src/browser/contributions/include-library.ts b/arduino-ide-extension/src/browser/contributions/include-library.ts index 0110977d6..77f6bcf39 100644 --- a/arduino-ide-extension/src/browser/contributions/include-library.ts +++ b/arduino-ide-extension/src/browser/contributions/include-library.ts @@ -15,7 +15,7 @@ import { LibraryListWidget } from '../library/library-list-widget'; import { BoardsServiceProvider } from '../boards/boards-service-provider'; import { SketchContribution, Command, CommandRegistry } from './contribution'; import { NotificationCenter } from '../notification-center'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; @injectable() export class IncludeLibrary extends SketchContribution { diff --git a/arduino-ide-extension/src/browser/contributions/new-sketch.ts b/arduino-ide-extension/src/browser/contributions/new-sketch.ts index 5bd677534..fa4e6686e 100644 --- a/arduino-ide-extension/src/browser/contributions/new-sketch.ts +++ b/arduino-ide-extension/src/browser/contributions/new-sketch.ts @@ -1,4 +1,4 @@ -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; import { injectable } from 'inversify'; import { ArduinoMenus } from '../menu/arduino-menus'; import { ArduinoToolbar } from '../toolbar/arduino-toolbar'; diff --git a/arduino-ide-extension/src/browser/contributions/open-recent-sketch.ts b/arduino-ide-extension/src/browser/contributions/open-recent-sketch.ts index 4958fb027..468aef749 100644 --- a/arduino-ide-extension/src/browser/contributions/open-recent-sketch.ts +++ b/arduino-ide-extension/src/browser/contributions/open-recent-sketch.ts @@ -14,7 +14,7 @@ import { ArduinoMenus } from '../menu/arduino-menus'; import { MainMenuManager } from '../../common/main-menu-manager'; import { OpenSketch } from './open-sketch'; import { NotificationCenter } from '../notification-center'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; @injectable() export class OpenRecentSketch extends SketchContribution { diff --git a/arduino-ide-extension/src/browser/contributions/open-sketch-external.ts b/arduino-ide-extension/src/browser/contributions/open-sketch-external.ts index 4221874b8..0f66a27ea 100644 --- a/arduino-ide-extension/src/browser/contributions/open-sketch-external.ts +++ b/arduino-ide-extension/src/browser/contributions/open-sketch-external.ts @@ -9,7 +9,7 @@ import { MenuModelRegistry, KeybindingRegistry, } from './contribution'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; @injectable() export class OpenSketchExternal extends SketchContribution { diff --git a/arduino-ide-extension/src/browser/contributions/open-sketch.ts b/arduino-ide-extension/src/browser/contributions/open-sketch.ts index 9a82f2c6c..1c77491ca 100644 --- a/arduino-ide-extension/src/browser/contributions/open-sketch.ts +++ b/arduino-ide-extension/src/browser/contributions/open-sketch.ts @@ -22,7 +22,7 @@ import { ExamplesService } from '../../common/protocol/examples-service'; import { BuiltInExamples } from './examples'; import { Sketchbook } from './sketchbook'; import { SketchContainer } from '../../common/protocol'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; @injectable() export class OpenSketch extends SketchContribution { diff --git a/arduino-ide-extension/src/browser/contributions/quit-app.ts b/arduino-ide-extension/src/browser/contributions/quit-app.ts index 01cf64ca8..a37bad9a6 100644 --- a/arduino-ide-extension/src/browser/contributions/quit-app.ts +++ b/arduino-ide-extension/src/browser/contributions/quit-app.ts @@ -9,7 +9,7 @@ import { CommandRegistry, } from './contribution'; import { ArduinoMenus } from '../menu/arduino-menus'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; @injectable() export class QuitApp extends Contribution { diff --git a/arduino-ide-extension/src/browser/contributions/save-as-sketch.ts b/arduino-ide-extension/src/browser/contributions/save-as-sketch.ts index 3781cedcf..fbf81f8af 100644 --- a/arduino-ide-extension/src/browser/contributions/save-as-sketch.ts +++ b/arduino-ide-extension/src/browser/contributions/save-as-sketch.ts @@ -10,7 +10,7 @@ import { MenuModelRegistry, KeybindingRegistry, } from './contribution'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; @injectable() export class SaveAsSketch extends SketchContribution { diff --git a/arduino-ide-extension/src/browser/contributions/save-sketch.ts b/arduino-ide-extension/src/browser/contributions/save-sketch.ts index a9f578632..5dddcffa1 100644 --- a/arduino-ide-extension/src/browser/contributions/save-sketch.ts +++ b/arduino-ide-extension/src/browser/contributions/save-sketch.ts @@ -11,7 +11,7 @@ import { KeybindingRegistry, TabBarToolbarRegistry, } from './contribution'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; @injectable() export class SaveSketch extends SketchContribution { diff --git a/arduino-ide-extension/src/browser/contributions/settings.ts b/arduino-ide-extension/src/browser/contributions/settings.ts index 996ecc494..912b33eb8 100644 --- a/arduino-ide-extension/src/browser/contributions/settings.ts +++ b/arduino-ide-extension/src/browser/contributions/settings.ts @@ -7,8 +7,9 @@ import { KeybindingRegistry, } from './contribution'; import { ArduinoMenus } from '../menu/arduino-menus'; -import { Settings as Preferences, SettingsDialog } from '../settings'; -import { nls } from '@theia/core/lib/browser/nls'; +import { Settings as Preferences } from '../dialogs/settings/settings'; +import { SettingsDialog } from '../dialogs/settings/settings-dialog'; +import { nls } from '@theia/core/lib/common'; @injectable() export class Settings extends SketchContribution { diff --git a/arduino-ide-extension/src/browser/contributions/sketch-control.ts b/arduino-ide-extension/src/browser/contributions/sketch-control.ts index 2b714336a..38bc33fe3 100644 --- a/arduino-ide-extension/src/browser/contributions/sketch-control.ts +++ b/arduino-ide-extension/src/browser/contributions/sketch-control.ts @@ -21,7 +21,7 @@ import { ArduinoMenus, PlaceholderMenuNode } from '../menu/arduino-menus'; import { EditorManager } from '@theia/editor/lib/browser/editor-manager'; import { SketchesServiceClientImpl } from '../../common/protocol/sketches-service-client-impl'; import { LocalCacheFsProvider } from '../local-cache/local-cache-fs-provider'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; @injectable() export class SketchControl extends SketchContribution { diff --git a/arduino-ide-extension/src/browser/contributions/sketchbook.ts b/arduino-ide-extension/src/browser/contributions/sketchbook.ts index e026ced4f..a5f691974 100644 --- a/arduino-ide-extension/src/browser/contributions/sketchbook.ts +++ b/arduino-ide-extension/src/browser/contributions/sketchbook.ts @@ -7,7 +7,7 @@ import { NotificationCenter } from '../notification-center'; import { Examples } from './examples'; import { SketchContainer } from '../../common/protocol'; import { OpenSketch } from './open-sketch'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; @injectable() export class Sketchbook extends Examples { diff --git a/arduino-ide-extension/src/browser/contributions/upload-certificate.ts b/arduino-ide-extension/src/browser/contributions/upload-certificate.ts index eb0160eac..0a4f9be39 100644 --- a/arduino-ide-extension/src/browser/contributions/upload-certificate.ts +++ b/arduino-ide-extension/src/browser/contributions/upload-certificate.ts @@ -18,7 +18,7 @@ import { certificateList, } from '../dialogs/certificate-uploader/utils'; import { ArduinoFirmwareUploader } from '../../common/protocol/arduino-firmware-uploader'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; @injectable() export class UploadCertificate extends Contribution { diff --git a/arduino-ide-extension/src/browser/contributions/upload-firmware.ts b/arduino-ide-extension/src/browser/contributions/upload-firmware.ts index 627062b0d..6b706a551 100644 --- a/arduino-ide-extension/src/browser/contributions/upload-firmware.ts +++ b/arduino-ide-extension/src/browser/contributions/upload-firmware.ts @@ -7,7 +7,7 @@ import { } from './contribution'; import { ArduinoMenus } from '../menu/arduino-menus'; import { UploadFirmwareDialog } from '../dialogs/firmware-uploader/firmware-uploader-dialog'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; @injectable() export class UploadFirmware extends Contribution { diff --git a/arduino-ide-extension/src/browser/contributions/upload-sketch.ts b/arduino-ide-extension/src/browser/contributions/upload-sketch.ts index af3e033f5..b18861b0d 100644 --- a/arduino-ide-extension/src/browser/contributions/upload-sketch.ts +++ b/arduino-ide-extension/src/browser/contributions/upload-sketch.ts @@ -15,8 +15,7 @@ import { TabBarToolbarRegistry, } from './contribution'; import { UserFieldsDialog } from '../dialogs/user-fields/user-fields-dialog'; -import { nls } from '@theia/core/lib/browser/nls'; -import { DisposableCollection } from '@theia/core'; +import { DisposableCollection, nls } from '@theia/core/lib/common'; @injectable() export class UploadSketch extends SketchContribution { diff --git a/arduino-ide-extension/src/browser/contributions/verify-sketch.ts b/arduino-ide-extension/src/browser/contributions/verify-sketch.ts index 299655087..2440f1a6b 100644 --- a/arduino-ide-extension/src/browser/contributions/verify-sketch.ts +++ b/arduino-ide-extension/src/browser/contributions/verify-sketch.ts @@ -13,7 +13,7 @@ import { KeybindingRegistry, TabBarToolbarRegistry, } from './contribution'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; @injectable() export class VerifySketch extends SketchContribution { diff --git a/arduino-ide-extension/src/browser/dialogs/certificate-uploader/certificate-add-new.tsx b/arduino-ide-extension/src/browser/dialogs/certificate-uploader/certificate-add-new.tsx index 3a3cf5cf5..2cb3e3253 100644 --- a/arduino-ide-extension/src/browser/dialogs/certificate-uploader/certificate-add-new.tsx +++ b/arduino-ide-extension/src/browser/dialogs/certificate-uploader/certificate-add-new.tsx @@ -1,4 +1,4 @@ -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; import * as React from 'react'; export const CertificateAddComponent = ({ diff --git a/arduino-ide-extension/src/browser/dialogs/certificate-uploader/certificate-uploader-component.tsx b/arduino-ide-extension/src/browser/dialogs/certificate-uploader/certificate-uploader-component.tsx index 603708932..b3e4497fb 100644 --- a/arduino-ide-extension/src/browser/dialogs/certificate-uploader/certificate-uploader-component.tsx +++ b/arduino-ide-extension/src/browser/dialogs/certificate-uploader/certificate-uploader-component.tsx @@ -4,7 +4,7 @@ import { AvailableBoard } from '../../boards/boards-service-provider'; import { CertificateListComponent } from './certificate-list'; import { SelectBoardComponent } from './select-board-components'; import { CertificateAddComponent } from './certificate-add-new'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; export const CertificateUploaderComponent = ({ availableBoards, diff --git a/arduino-ide-extension/src/browser/dialogs/certificate-uploader/certificate-uploader-dialog.tsx b/arduino-ide-extension/src/browser/dialogs/certificate-uploader/certificate-uploader-dialog.tsx index e6d0eece0..4e371d2d9 100644 --- a/arduino-ide-extension/src/browser/dialogs/certificate-uploader/certificate-uploader-dialog.tsx +++ b/arduino-ide-extension/src/browser/dialogs/certificate-uploader/certificate-uploader-dialog.tsx @@ -18,7 +18,7 @@ import { import { CommandRegistry } from '@theia/core/lib/common/command'; import { certificateList, sanifyCertString } from './utils'; import { ArduinoFirmwareUploader } from '../../../common/protocol/arduino-firmware-uploader'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; @injectable() export class UploadCertificateDialogWidget extends ReactWidget { diff --git a/arduino-ide-extension/src/browser/dialogs/certificate-uploader/select-board-components.tsx b/arduino-ide-extension/src/browser/dialogs/certificate-uploader/select-board-components.tsx index 49b11c7b4..f852e04fb 100644 --- a/arduino-ide-extension/src/browser/dialogs/certificate-uploader/select-board-components.tsx +++ b/arduino-ide-extension/src/browser/dialogs/certificate-uploader/select-board-components.tsx @@ -1,4 +1,4 @@ -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; import * as React from 'react'; import { AvailableBoard } from '../../boards/boards-service-provider'; import { ArduinoSelect } from '../../widgets/arduino-select'; diff --git a/arduino-ide-extension/src/browser/dialogs/cloud-share-sketch-dialog.tsx b/arduino-ide-extension/src/browser/dialogs/cloud-share-sketch-dialog.tsx index 9578d6e7f..3ecf1e28d 100644 --- a/arduino-ide-extension/src/browser/dialogs/cloud-share-sketch-dialog.tsx +++ b/arduino-ide-extension/src/browser/dialogs/cloud-share-sketch-dialog.tsx @@ -6,7 +6,7 @@ import { clipboard } from 'electron'; import { ReactWidget, DialogProps } from '@theia/core/lib/browser'; import { AbstractDialog } from '../theia/dialogs/dialogs'; import { CreateApi } from '../create/create-api'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; const RadioButton = (props: { id: string; diff --git a/arduino-ide-extension/src/browser/dialogs/do-not-ask-again-dialog.ts b/arduino-ide-extension/src/browser/dialogs/do-not-ask-again-dialog.ts index b8c457310..eb23fec0a 100644 --- a/arduino-ide-extension/src/browser/dialogs/do-not-ask-again-dialog.ts +++ b/arduino-ide-extension/src/browser/dialogs/do-not-ask-again-dialog.ts @@ -6,7 +6,7 @@ import { ConfirmDialogProps, DialogError, } from '@theia/core/lib/browser/dialogs'; -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; @injectable() export class DoNotAskAgainDialogProps extends ConfirmDialogProps { diff --git a/arduino-ide-extension/src/browser/dialogs/firmware-uploader/firmware-uploader-component.tsx b/arduino-ide-extension/src/browser/dialogs/firmware-uploader/firmware-uploader-component.tsx index d4dc01ba0..04a4c8e11 100644 --- a/arduino-ide-extension/src/browser/dialogs/firmware-uploader/firmware-uploader-component.tsx +++ b/arduino-ide-extension/src/browser/dialogs/firmware-uploader/firmware-uploader-component.tsx @@ -1,4 +1,4 @@ -import { nls } from '@theia/core/lib/browser/nls'; +import { nls } from '@theia/core/lib/common'; import * as React from 'react'; import { ArduinoFirmwareUploader, diff --git a/arduino-ide-extension/src/browser/settings.tsx b/arduino-ide-extension/src/browser/dialogs/settings/settings-component.tsx similarity index 58% rename from arduino-ide-extension/src/browser/settings.tsx rename to arduino-ide-extension/src/browser/dialogs/settings/settings-component.tsx index 17bb959bc..62c166c5e 100644 --- a/arduino-ide-extension/src/browser/settings.tsx +++ b/arduino-ide-extension/src/browser/dialogs/settings/settings-component.tsx @@ -1,324 +1,22 @@ import * as React from 'react'; -import { injectable, inject, postConstruct } from 'inversify'; -import { Widget } from '@phosphor/widgets'; -import { Message } from '@phosphor/messaging'; import { Tab, Tabs, TabList, TabPanel } from 'react-tabs'; import 'react-tabs/style/react-tabs.css'; import { Disable } from 'react-disable'; -import URI from '@theia/core/lib/common/uri'; -import { Emitter } from '@theia/core/lib/common/event'; -import { Deferred } from '@theia/core/lib/common/promise-util'; import { deepClone } from '@theia/core/lib/common/objects'; import { FileService } from '@theia/filesystem/lib/browser/file-service'; import { ThemeService } from '@theia/core/lib/browser/theming'; -import { MaybePromise } from '@theia/core/lib/common/types'; import { WindowService } from '@theia/core/lib/browser/window/window-service'; import { FileDialogService } from '@theia/filesystem/lib/browser/file-dialog/file-dialog-service'; import { DisposableCollection } from '@theia/core/lib/common/disposable'; -import { FrontendApplicationStateService } from '@theia/core/lib/browser/frontend-application-state'; import { - DialogProps, - PreferenceService, - PreferenceScope, - DialogError, - ReactWidget, -} from '@theia/core/lib/browser'; -import { Index } from '../common/types'; -import { - CompilerWarnings, CompilerWarningLiterals, - ConfigService, - FileSystemExt, Network, ProxySettings, -} from '../common/protocol'; -import { AbstractDialog } from './theia/dialogs/dialogs'; -import { nls } from '@theia/core/lib/browser/nls'; - -const EDITOR_SETTING = 'editor'; -const FONT_SIZE_SETTING = `${EDITOR_SETTING}.fontSize`; -const AUTO_SAVE_SETTING = `${EDITOR_SETTING}.autoSave`; -const QUICK_SUGGESTIONS_SETTING = `${EDITOR_SETTING}.quickSuggestions`; -const ARDUINO_SETTING = 'arduino'; -const WINDOW_SETTING = `${ARDUINO_SETTING}.window`; -// const IDE_SETTING = `${ARDUINO_SETTING}.ide`; -const COMPILE_SETTING = `${ARDUINO_SETTING}.compile`; -const UPLOAD_SETTING = `${ARDUINO_SETTING}.upload`; -const SKETCHBOOK_SETTING = `${ARDUINO_SETTING}.sketchbook`; -const AUTO_SCALE_SETTING = `${WINDOW_SETTING}.autoScale`; -const ZOOM_LEVEL_SETTING = `${WINDOW_SETTING}.zoomLevel`; -// const AUTO_UPDATE_SETTING = `${IDE_SETTING}.autoUpdate`; -const COMPILE_VERBOSE_SETTING = `${COMPILE_SETTING}.verbose`; -const COMPILE_WARNINGS_SETTING = `${COMPILE_SETTING}.warnings`; -const UPLOAD_VERBOSE_SETTING = `${UPLOAD_SETTING}.verbose`; -const UPLOAD_VERIFY_SETTING = `${UPLOAD_SETTING}.verify`; -const SHOW_ALL_FILES_SETTING = `${SKETCHBOOK_SETTING}.showAllFiles`; - -export interface Settings extends Index { - editorFontSize: number; // `editor.fontSize` - themeId: string; // `workbench.colorTheme` - autoSave: 'on' | 'off'; // `editor.autoSave` - quickSuggestions: Record<'other' | 'comments' | 'strings', boolean>; // `editor.quickSuggestions` - - autoScaleInterface: boolean; // `arduino.window.autoScale` - interfaceScale: number; // `arduino.window.zoomLevel` https://github.com/eclipse-theia/theia/issues/8751 - checkForUpdates?: boolean; // `arduino.ide.autoUpdate` - verboseOnCompile: boolean; // `arduino.compile.verbose` - compilerWarnings: CompilerWarnings; // `arduino.compile.warnings` - verboseOnUpload: boolean; // `arduino.upload.verbose` - verifyAfterUpload: boolean; // `arduino.upload.verify` - sketchbookShowAllFiles: boolean; // `arduino.sketchbook.showAllFiles` - - sketchbookPath: string; // CLI - additionalUrls: string[]; // CLI - network: Network; // CLI -} -export namespace Settings { - export function belongsToCli(key: K): boolean { - return key === 'sketchbookPath' || key === 'additionalUrls'; - } -} - -@injectable() -export class SettingsService { - @inject(FileService) - protected readonly fileService: FileService; - - @inject(FileSystemExt) - protected readonly fileSystemExt: FileSystemExt; - - @inject(ConfigService) - protected readonly configService: ConfigService; - - @inject(PreferenceService) - protected readonly preferenceService: PreferenceService; - - @inject(FrontendApplicationStateService) - protected readonly appStateService: FrontendApplicationStateService; - - protected readonly onDidChangeEmitter = new Emitter>(); - readonly onDidChange = this.onDidChangeEmitter.event; - - protected ready = new Deferred(); - protected _settings: Settings; - - @postConstruct() - protected async init(): Promise { - await this.appStateService.reachedState('ready'); // Hack for https://github.com/eclipse-theia/theia/issues/8993 - const settings = await this.loadSettings(); - this._settings = deepClone(settings); - this.ready.resolve(); - } - - protected async loadSettings(): Promise { - await this.preferenceService.ready; - const [ - editorFontSize, - themeId, - autoSave, - quickSuggestions, - autoScaleInterface, - interfaceScale, - // checkForUpdates, - verboseOnCompile, - compilerWarnings, - verboseOnUpload, - verifyAfterUpload, - sketchbookShowAllFiles, - cliConfig, - ] = await Promise.all([ - this.preferenceService.get(FONT_SIZE_SETTING, 12), - this.preferenceService.get( - 'workbench.colorTheme', - 'arduino-theme' - ), - this.preferenceService.get<'on' | 'off'>(AUTO_SAVE_SETTING, 'on'), - this.preferenceService.get< - Record<'other' | 'comments' | 'strings', boolean> - >(QUICK_SUGGESTIONS_SETTING, { - other: false, - comments: false, - strings: false, - }), - this.preferenceService.get(AUTO_SCALE_SETTING, true), - this.preferenceService.get(ZOOM_LEVEL_SETTING, 0), - // this.preferenceService.get(AUTO_UPDATE_SETTING, true), - this.preferenceService.get(COMPILE_VERBOSE_SETTING, true), - this.preferenceService.get(COMPILE_WARNINGS_SETTING, 'None'), - this.preferenceService.get(UPLOAD_VERBOSE_SETTING, true), - this.preferenceService.get(UPLOAD_VERIFY_SETTING, true), - this.preferenceService.get(SHOW_ALL_FILES_SETTING, false), - this.configService.getConfiguration(), - ]); - const { additionalUrls, sketchDirUri, network } = cliConfig; - const sketchbookPath = await this.fileService.fsPath(new URI(sketchDirUri)); - return { - editorFontSize, - themeId, - autoSave, - quickSuggestions, - autoScaleInterface, - interfaceScale, - // checkForUpdates, - verboseOnCompile, - compilerWarnings, - verboseOnUpload, - verifyAfterUpload, - sketchbookShowAllFiles, - additionalUrls, - sketchbookPath, - network, - }; - } - - async settings(): Promise { - await this.ready.promise; - return this._settings; - } - - async update(settings: Settings, fireDidChange = false): Promise { - await this.ready.promise; - for (const key of Object.keys(settings)) { - this._settings[key] = settings[key]; - } - if (fireDidChange) { - this.onDidChangeEmitter.fire(this._settings); - } - } - - async reset(): Promise { - const settings = await this.loadSettings(); - return this.update(settings, true); - } - - async validate( - settings: MaybePromise = this.settings() - ): Promise { - try { - const { sketchbookPath, editorFontSize, themeId } = await settings; - const sketchbookDir = await this.fileSystemExt.getUri(sketchbookPath); - if (!(await this.fileService.exists(new URI(sketchbookDir)))) { - return nls.localize( - 'arduino/preferences/invalid.sketchbook.location', - 'Invalid sketchbook location: {0}', - sketchbookPath - ); - } - if (editorFontSize <= 0) { - return nls.localize( - 'arduino/preferences/invalid.editorFontSize', - 'Invalid editor font size. It must be a positive integer.' - ); - } - if ( - !ThemeService.get() - .getThemes() - .find(({ id }) => id === themeId) - ) { - return nls.localize( - 'arduino/preferences/invalid.theme', - 'Invalid theme.' - ); - } - return true; - } catch (err) { - if (err instanceof Error) { - return err.message; - } - return String(err); - } - } - - async save(): Promise { - await this.ready.promise; - const { - editorFontSize, - themeId, - autoSave, - quickSuggestions, - autoScaleInterface, - interfaceScale, - // checkForUpdates, - verboseOnCompile, - compilerWarnings, - verboseOnUpload, - verifyAfterUpload, - sketchbookPath, - additionalUrls, - network, - sketchbookShowAllFiles, - } = this._settings; - const [config, sketchDirUri] = await Promise.all([ - this.configService.getConfiguration(), - this.fileSystemExt.getUri(sketchbookPath), - ]); - (config as any).additionalUrls = additionalUrls; - (config as any).sketchDirUri = sketchDirUri; - (config as any).network = network; - - await Promise.all([ - this.preferenceService.set( - 'editor.fontSize', - editorFontSize, - PreferenceScope.User - ), - this.preferenceService.set( - 'workbench.colorTheme', - themeId, - PreferenceScope.User - ), - this.preferenceService.set( - 'editor.autoSave', - autoSave, - PreferenceScope.User - ), - this.preferenceService.set( - 'editor.quickSuggestions', - quickSuggestions, - PreferenceScope.User - ), - this.preferenceService.set( - AUTO_SCALE_SETTING, - autoScaleInterface, - PreferenceScope.User - ), - this.preferenceService.set( - ZOOM_LEVEL_SETTING, - interfaceScale, - PreferenceScope.User - ), - // this.preferenceService.set(AUTO_UPDATE_SETTING, checkForUpdates, PreferenceScope.User), - this.preferenceService.set( - COMPILE_VERBOSE_SETTING, - verboseOnCompile, - PreferenceScope.User - ), - this.preferenceService.set( - COMPILE_WARNINGS_SETTING, - compilerWarnings, - PreferenceScope.User - ), - this.preferenceService.set( - UPLOAD_VERBOSE_SETTING, - verboseOnUpload, - PreferenceScope.User - ), - this.preferenceService.set( - UPLOAD_VERIFY_SETTING, - verifyAfterUpload, - PreferenceScope.User - ), - this.preferenceService.set( - SHOW_ALL_FILES_SETTING, - sketchbookShowAllFiles, - PreferenceScope.User - ), - this.configService.setConfiguration(config), - ]); - this.onDidChangeEmitter.fire(this._settings); - return true; - } -} +} from '../../../common/protocol'; +import { nls } from '@theia/core/lib/common'; +import { Settings, SettingsService } from './settings'; +import { AdditionalUrlsDialog } from './settings-dialog'; +import { AsyncLocalizationProvider } from '@theia/core/lib/common/i18n/localization'; export class SettingsComponent extends React.Component< SettingsComponent.Props, @@ -426,6 +124,12 @@ export class SettingsComponent extends React.Component< 'Theme' ) + ':'} +
+ {nls.localize( + 'vscode/editorStatus/status.editor.mode', + 'Language' + ) + ':'} +
{nls.localize( 'arduino/preferences/showVerbose', @@ -491,6 +195,27 @@ export class SettingsComponent extends React.Component< ))}
+
+ + + ( + {nls.localize( + 'vscode/extensionsActions/reloadRequired', + 'Reload required' + )} + ) + +