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);
}