From 4c63af572ee9a2b7e0f7b4be18b454666ed47a02 Mon Sep 17 00:00:00 2001 From: jbicker Date: Fri, 24 Jan 2020 10:04:23 +0100 Subject: [PATCH] Added debug button to toolbar. Signed-off-by: jbicker --- ...debug-frontend-application-contribution.ts | 30 +++++++++++++++++-- .../src/browser/frontend-module.ts | 3 ++ .../src/browser/style/debug-dark.svg | 4 +++ .../src/browser/style/index.css | 16 ++++++++++ .../browser/arduino-frontend-contribution.tsx | 9 ++++-- .../src/browser/toolbar/arduino-toolbar.tsx | 2 +- 6 files changed, 58 insertions(+), 6 deletions(-) create mode 100644 arduino-debugger-extension/src/browser/style/debug-dark.svg create mode 100644 arduino-debugger-extension/src/browser/style/index.css diff --git a/arduino-debugger-extension/src/browser/arduino-debug-frontend-application-contribution.ts b/arduino-debugger-extension/src/browser/arduino-debug-frontend-application-contribution.ts index ade15c39..8f9b6ea0 100644 --- a/arduino-debugger-extension/src/browser/arduino-debug-frontend-application-contribution.ts +++ b/arduino-debugger-extension/src/browser/arduino-debug-frontend-application-contribution.ts @@ -1,6 +1,6 @@ import { injectable, inject } from 'inversify'; -import { MenuModelRegistry, Path, MessageService } from '@theia/core'; -import { KeybindingRegistry } from '@theia/core/lib/browser'; +import { MenuModelRegistry, Path, MessageService, Command, CommandRegistry } from '@theia/core'; +import { KeybindingRegistry, Widget } from '@theia/core/lib/browser'; import { TabBarToolbarRegistry } from '@theia/core/lib/browser/shell/tab-bar-toolbar'; import { DebugFrontendApplicationContribution, DebugCommands } from '@theia/debug/lib/browser/debug-frontend-application-contribution'; import { DebugSessionOptions } from "@theia/debug/lib/browser/debug-session-options"; @@ -11,6 +11,14 @@ import { SketchesService } from 'arduino-ide-extension/lib/common/protocol/sketc import { FileSystem } from '@theia/filesystem/lib/common'; import URI from '@theia/core/lib/common/uri'; import { EditorManager } from '@theia/editor/lib/browser'; +import { ArduinoToolbar } from 'arduino-ide-extension/lib/browser/toolbar/arduino-toolbar'; + +export namespace ArduinoDebugCommands { + export const START_DEBUG: Command = { + id: 'arduino-start-debug', + label: 'Start Debugging' + } +} @injectable() export class ArduinoDebugFrontendApplicationContribution extends DebugFrontendApplicationContribution { @@ -104,6 +112,24 @@ export class ArduinoDebugFrontendApplicationContribution extends DebugFrontendAp if (this.editorMode.proMode) { super.registerToolbarItems(toolbar); } + toolbar.registerItem({ + id: ArduinoDebugCommands.START_DEBUG.id, + command: ArduinoDebugCommands.START_DEBUG.id, + tooltip: 'Start Debugging', + priority: 1 + }); } + registerCommands(registry: CommandRegistry): void { + super.registerCommands(registry); + registry.registerCommand(ArduinoDebugCommands.START_DEBUG, { + isVisible: widget => ArduinoToolbar.is(widget) && widget.side === 'left', + isEnabled: widget => ArduinoToolbar.is(widget) && widget.side === 'left', + execute: async (widget: Widget, target: EventTarget) => { + registry.executeCommand(DebugCommands.START.id); + } + }); + } + + } diff --git a/arduino-debugger-extension/src/browser/frontend-module.ts b/arduino-debugger-extension/src/browser/frontend-module.ts index d02ff16e..1270812a 100644 --- a/arduino-debugger-extension/src/browser/frontend-module.ts +++ b/arduino-debugger-extension/src/browser/frontend-module.ts @@ -8,6 +8,9 @@ import { ArduinoDebugConfigurationManager } from './arduino-debug-configuration- import { ArduinoDebugFrontendApplicationContribution } from './arduino-debug-frontend-application-contribution'; import { ArduinoDebugSessionManager } from './arduino-debug-session-manager'; +import '../../src/browser/style/index.css'; + + export default new ContainerModule((bind, unbind, isBound, rebind) => { bind(ArduinoVariableResolver).toSelf().inSingletonScope(); bind(VariableContribution).toService(ArduinoVariableResolver); diff --git a/arduino-debugger-extension/src/browser/style/debug-dark.svg b/arduino-debugger-extension/src/browser/style/debug-dark.svg new file mode 100644 index 00000000..5c414170 --- /dev/null +++ b/arduino-debugger-extension/src/browser/style/debug-dark.svg @@ -0,0 +1,4 @@ + + + + diff --git a/arduino-debugger-extension/src/browser/style/index.css b/arduino-debugger-extension/src/browser/style/index.css new file mode 100644 index 00000000..1e3d51a6 --- /dev/null +++ b/arduino-debugger-extension/src/browser/style/index.css @@ -0,0 +1,16 @@ +.arduino-start-debug-icon { + -webkit-mask: url('debug-dark.svg') 50%; + mask: url('debug-dark.svg') 50%; + -webkit-mask-size: 100%; + mask-size: 100%; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + display: flex; + justify-content: center; + align-items: center; + color: var(--theia-ui-button-font-color); +} + +.arduino-start-debug { + border-radius: 12px; +} diff --git a/arduino-ide-extension/src/browser/arduino-frontend-contribution.tsx b/arduino-ide-extension/src/browser/arduino-frontend-contribution.tsx index bcdd133a..2bafe514 100644 --- a/arduino-ide-extension/src/browser/arduino-frontend-contribution.tsx +++ b/arduino-ide-extension/src/browser/arduino-frontend-contribution.tsx @@ -192,12 +192,14 @@ export class ArduinoFrontendContribution implements FrontendApplicationContribut registry.registerItem({ id: ArduinoCommands.SHOW_OPEN_CONTEXT_MENU.id, command: ArduinoCommands.SHOW_OPEN_CONTEXT_MENU.id, - tooltip: 'Open' + tooltip: 'Open', + priority: 2 }); registry.registerItem({ id: ArduinoCommands.SAVE_SKETCH.id, command: ArduinoCommands.SAVE_SKETCH.id, - tooltip: 'Save' + tooltip: 'Save', + priority: 2 }); registry.registerItem({ id: BoardsToolBarItem.TOOLBAR_ID, @@ -206,7 +208,8 @@ export class ArduinoFrontendContribution implements FrontendApplicationContribut commands={this.commandRegistry} boardsServiceClient={this.boardsServiceClient} boardService={this.boardsService} />, - isVisible: widget => ArduinoToolbar.is(widget) && widget.side === 'left' + isVisible: widget => ArduinoToolbar.is(widget) && widget.side === 'left', + priority: 2 }); registry.registerItem({ id: 'toggle-serial-monitor', diff --git a/arduino-ide-extension/src/browser/toolbar/arduino-toolbar.tsx b/arduino-ide-extension/src/browser/toolbar/arduino-toolbar.tsx index 88a6ed3a..f9b6b5ab 100644 --- a/arduino-ide-extension/src/browser/toolbar/arduino-toolbar.tsx +++ b/arduino-ide-extension/src/browser/toolbar/arduino-toolbar.tsx @@ -91,7 +91,7 @@ export class ArduinoToolbar extends ReactWidget { protected updateItems(items: Array): void { this.items.clear(); - const revItems = items.reverse(); + const revItems = items.sort(TabBarToolbarItem.PRIORITY_COMPARATOR).reverse(); for (const item of revItems) { this.items.set(item.id, item); }