Aligned the New and Save As... with the Java IDE.

From now on, sketches are created in the temp folder,
and will be moved to the `directories.user` location
when the user performs a manual `Save`.

A new sketch can be created with the `CtrlCmd+N` binding.

Closes: arduino/arduino-pro-ide#260
Closes: arduino/arduino-pro-ide#261

Signed-off-by: Akos Kitta <kittaakos@typefox.io>
This commit is contained in:
Akos Kitta
2020-07-14 17:18:46 +02:00
parent 3082b3d643
commit 2bd9eef146
15 changed files with 341 additions and 70 deletions

View File

@@ -1,22 +1,44 @@
export const SketchesServicePath = '/services/sketches-service';
export const SketchesService = Symbol('SketchesService');
export interface SketchesService {
/**
* Returns with the direct sketch folders from the location of the `fileStat`.
* The sketches returns with inverse-chronological order, the first item is the most recent one.
*/
getSketches(uri?: string): Promise<Sketch[]>
getSketchFiles(uri: string): Promise<string[]>
getSketches(uri?: string): Promise<Sketch[]>;
getSketchFiles(uri: string): Promise<string[]>;
/**
* Creates a new sketch folder in the `parentUri` location.
* Normally, `parentUri` is the client's workspace root, or the default `sketchDirUri` from the CLI.
* Note, `parentUri` and `sketchDirUri` can be the same.
* Creates a new sketch folder in the temp location.
*/
createNewSketch(parentUri: string): Promise<Sketch>
isSketchFolder(uri: string): Promise<boolean>
createNewSketch(): Promise<Sketch>;
isSketchFolder(uri: string): Promise<boolean>;
/**
* Sketches are created to the temp location by default and will be moved under `directories.user` on save.
* This method resolves to `true` if the `sketch` is still in the temp location. Otherwise, `false`.
*/
isTemp(sketch: Sketch): Promise<boolean>;
/**
* If `isTemp` is `true` for the `sketch`, you can call this method to move the sketch from the temp
* location to `directories.user`. Resolves with the URI of the sketch after the move. Rejects, when the sketch
* was not in the temp folder. This method always overrides. It's the callers responsibility to ask the user whether
* the files at the destination can be overwritten or not.
*/
copy(sketch: Sketch, options: { destinationUri: string }): Promise<string>;
/**
* Returns with the container sketch for the input `uri`. If the `uri` is not in a sketch folder, resolved `undefined`.
*/
getSketchFolder(uri: string): Promise<Sketch | undefined>;
}
export interface Sketch {
readonly name: string;
readonly uri: string
}
readonly uri: string;
}