mirror of
https://github.com/arduino/arduino-ide.git
synced 2025-06-27 14:36:35 +00:00
wipe the entire sketch when deleting the main file
Signed-off-by: Akos Kitta <kittaakos@typefox.io>
This commit is contained in:
parent
b87782ed05
commit
a49ba05d5e
arduino-ide-extension/src/browser
@ -111,6 +111,8 @@ import { SketchControl } from './contributions/sketch-control';
|
|||||||
import { Settings } from './contributions/settings';
|
import { Settings } from './contributions/settings';
|
||||||
import { KeybindingRegistry } from './theia/core/keybindings';
|
import { KeybindingRegistry } from './theia/core/keybindings';
|
||||||
import { WorkspaceCommandContribution } from './theia/workspace/workspace-commands';
|
import { WorkspaceCommandContribution } from './theia/workspace/workspace-commands';
|
||||||
|
import { WorkspaceDeleteHandler as TheiaWorkspaceDeleteHandler } from '@theia/workspace/lib/browser/workspace-delete-handler';
|
||||||
|
import { WorkspaceDeleteHandler } from './theia/workspace/workspace-delete-handler';
|
||||||
|
|
||||||
const ElementQueries = require('css-element-queries/src/ElementQueries');
|
const ElementQueries = require('css-element-queries/src/ElementQueries');
|
||||||
|
|
||||||
@ -289,6 +291,7 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => {
|
|||||||
rebind(TheiaPreferencesContribution).to(PreferencesContribution).inSingletonScope();
|
rebind(TheiaPreferencesContribution).to(PreferencesContribution).inSingletonScope();
|
||||||
rebind(TheiaKeybindingRegistry).to(KeybindingRegistry).inSingletonScope();
|
rebind(TheiaKeybindingRegistry).to(KeybindingRegistry).inSingletonScope();
|
||||||
rebind(TheiaWorkspaceCommandContribution).to(WorkspaceCommandContribution).inSingletonScope();
|
rebind(TheiaWorkspaceCommandContribution).to(WorkspaceCommandContribution).inSingletonScope();
|
||||||
|
rebind(TheiaWorkspaceDeleteHandler).to(WorkspaceDeleteHandler).inSingletonScope();
|
||||||
|
|
||||||
// Show a disconnected status bar, when the daemon is not available
|
// Show a disconnected status bar, when the daemon is not available
|
||||||
bind(ApplicationConnectionStatusContribution).toSelf().inSingletonScope();
|
bind(ApplicationConnectionStatusContribution).toSelf().inSingletonScope();
|
||||||
|
@ -0,0 +1,36 @@
|
|||||||
|
import { inject, injectable } from 'inversify';
|
||||||
|
import { remote } from 'electron';
|
||||||
|
import URI from '@theia/core/lib/common/uri';
|
||||||
|
import { WorkspaceDeleteHandler as TheiaWorkspaceDeleteHandler } from '@theia/workspace/lib/browser/workspace-delete-handler';
|
||||||
|
import { SketchesServiceClientImpl } from '../../../common/protocol/sketches-service-client-impl';
|
||||||
|
|
||||||
|
@injectable()
|
||||||
|
export class WorkspaceDeleteHandler extends TheiaWorkspaceDeleteHandler {
|
||||||
|
|
||||||
|
@inject(SketchesServiceClientImpl)
|
||||||
|
protected readonly sketchesServiceClient: SketchesServiceClientImpl;
|
||||||
|
|
||||||
|
async execute(uris: URI[]): Promise<void> {
|
||||||
|
const sketch = await this.sketchesServiceClient.currentSketch();
|
||||||
|
if (!sketch) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Deleting the main sketch file.
|
||||||
|
if (uris.map(uri => uri.toString()).some(uri => uri === sketch.mainFileUri)) {
|
||||||
|
const { response } = await remote.dialog.showMessageBox({
|
||||||
|
type: 'question',
|
||||||
|
buttons: ['Cancel', 'OK'],
|
||||||
|
title: 'Delete',
|
||||||
|
message: 'Do you want to delete the current sketch?'
|
||||||
|
});
|
||||||
|
if (response === 1) { // OK
|
||||||
|
await Promise.all([...sketch.additionalFileUris, ...sketch.otherSketchFileUris, sketch.mainFileUri].map(uri => this.closeWithoutSaving(new URI(uri))));
|
||||||
|
await this.fileSystem.delete(sketch.uri);
|
||||||
|
window.close();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return super.execute(uris);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user