@theia/filesystem 1.22.0-next.8 → 1.23.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/electron-browser/file-dialog/electron-file-dialog-service.d.ts +1 -1
- package/lib/electron-browser/file-dialog/electron-file-dialog-service.d.ts.map +1 -1
- package/lib/electron-browser/file-dialog/electron-file-dialog-service.js +15 -9
- package/lib/electron-browser/file-dialog/electron-file-dialog-service.js.map +1 -1
- package/package.json +4 -4
- package/src/electron-browser/file-dialog/electron-file-dialog-service.ts +20 -9
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
-
import { FileFilter, OpenDialogOptions, SaveDialogOptions } from '@theia/core/shared/electron';
|
|
16
|
+
import { FileFilter, OpenDialogOptions, SaveDialogOptions } from '@theia/core/electron-shared/electron';
|
|
17
17
|
import URI from '@theia/core/lib/common/uri';
|
|
18
18
|
import { MaybeArray } from '@theia/core/lib/common/types';
|
|
19
19
|
import { MessageService } from '@theia/core/lib/common/message-service';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"electron-file-dialog-service.d.ts","sourceRoot":"","sources":["../../../src/electron-browser/file-dialog/electron-file-dialog-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAGlF,OAAO,
|
|
1
|
+
{"version":3,"file":"electron-file-dialog-service.d.ts","sourceRoot":"","sources":["../../../src/electron-browser/file-dialog/electron-file-dialog-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAGlF,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAExG,OAAO,GAAG,MAAM,4BAA4B,CAAC;AAE7C,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAI/G,aAAK,gBAAgB,GAAG,UAAU,GAAG,eAAe,GAAG,iBAAiB,GAAG,iBAAiB,GACxF,iBAAiB,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,yBAAyB,GAAG,iBAAiB,CAAC;AAW9G,qBACa,yBAA0B,SAAQ,wBAAwB;IAE3C,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAEpE,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG;QAAE,aAAa,EAAE,IAAI,CAAA;KAAE,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IAC7H,cAAc,CAAC,KAAK,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC;IAiBvF,cAAc,CAAC,KAAK,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC;cAoB7E,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;cAUrD,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAchE,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,mBAAmB,GAAG,mBAAmB,EAAE,WAAW,EAAE,MAAM,GAAG,QAAQ,CAAC,eAAe;IAoBpI,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,mBAAmB,GAAG,iBAAiB;IAMtF,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,mBAAmB,GAAG,iBAAiB;CASzF;AAED,yBAAiB,QAAQ,CAAC;IAEtB;;OAEG;IACH,UAAiB,eAAe;QAE5B;;WAEG;QACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAExB;;WAEG;QACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAE9B;;WAEG;QACH,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;KAEnC;IAED,UAAiB,MAAM,CAAC;QAEpB;;;;;;;WAOG;QACH,SAAgB,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,GAAG,KAAK,CAAC,gBAAgB,CAAC,CA6BtF;KACJ;CACJ"}
|
|
@@ -26,7 +26,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
26
26
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
27
|
exports.electron = exports.ElectronFileDialogService = void 0;
|
|
28
28
|
const inversify_1 = require("@theia/core/shared/inversify");
|
|
29
|
-
const
|
|
29
|
+
const electronRemote = require("@theia/core/electron-shared/@electron/remote");
|
|
30
30
|
const os_1 = require("@theia/core/lib/common/os");
|
|
31
31
|
const message_service_1 = require("@theia/core/lib/common/message-service");
|
|
32
32
|
const filesystem_1 = require("../../common/filesystem");
|
|
@@ -43,7 +43,7 @@ let ElectronFileDialogService = class ElectronFileDialogService extends file_dia
|
|
|
43
43
|
async showOpenDialog(props, folder) {
|
|
44
44
|
const rootNode = await this.getRootNode(folder);
|
|
45
45
|
if (rootNode) {
|
|
46
|
-
const { filePaths } = await
|
|
46
|
+
const { filePaths } = await electronRemote.dialog.showOpenDialog(this.toOpenDialogOptions(rootNode.uri, props));
|
|
47
47
|
if (filePaths.length === 0) {
|
|
48
48
|
return undefined;
|
|
49
49
|
}
|
|
@@ -57,7 +57,7 @@ let ElectronFileDialogService = class ElectronFileDialogService extends file_dia
|
|
|
57
57
|
async showSaveDialog(props, folder) {
|
|
58
58
|
const rootNode = await this.getRootNode(folder);
|
|
59
59
|
if (rootNode) {
|
|
60
|
-
const { filePath } = await
|
|
60
|
+
const { filePath } = await electronRemote.dialog.showSaveDialog(this.toSaveDialogOptions(rootNode.uri, props));
|
|
61
61
|
if (!filePath) {
|
|
62
62
|
return undefined;
|
|
63
63
|
}
|
|
@@ -94,13 +94,19 @@ let ElectronFileDialogService = class ElectronFileDialogService extends file_dia
|
|
|
94
94
|
return unreadableResourcePaths.length === 0;
|
|
95
95
|
}
|
|
96
96
|
toDialogOptions(uri, props, dialogTitle) {
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
97
|
+
const electronProps = {
|
|
98
|
+
title: props.title || dialogTitle,
|
|
99
|
+
defaultPath: file_uri_1.FileUri.fsPath(uri),
|
|
100
|
+
};
|
|
101
|
+
const { canSelectFiles = true, canSelectFolders = false, } = props;
|
|
102
|
+
if (!os_1.isOSX && canSelectFiles && canSelectFolders) {
|
|
103
|
+
console.warn('canSelectFiles === true && canSelectFolders === true is only supported on OSX!');
|
|
104
|
+
}
|
|
105
|
+
if ((os_1.isOSX && canSelectFiles) || !canSelectFolders) {
|
|
106
|
+
electronProps.filters = props.filters ? Object.entries(props.filters).map(([name, extensions]) => ({ name, extensions })) : [];
|
|
107
|
+
electronProps.filters.push({ name: 'All Files', extensions: ['*'] });
|
|
102
108
|
}
|
|
103
|
-
return
|
|
109
|
+
return electronProps;
|
|
104
110
|
}
|
|
105
111
|
toOpenDialogOptions(uri, props) {
|
|
106
112
|
const properties = electron.dialog.toDialogProperties(props);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"electron-file-dialog-service.js","sourceRoot":"","sources":["../../../src/electron-browser/file-dialog/electron-file-dialog-service.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;;;;;;;;;;AAElF,4DAAkE;
|
|
1
|
+
{"version":3,"file":"electron-file-dialog-service.js","sourceRoot":"","sources":["../../../src/electron-browser/file-dialog/electron-file-dialog-service.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;;;;;;;;;;AAElF,4DAAkE;AAElE,+EAA+E;AAE/E,kDAAkD;AAElD,4EAAwE;AAExE,wDAAqD;AACrD,2DAA+G;AAO/G,EAAE;AACF,6FAA6F;AAC7F,gGAAgG;AAChG,8FAA8F;AAC9F,YAAY;AACZ,EAAE;AACF,uDAAuD;AACvD,4DAAwD;AAGxD,IAAa,yBAAyB,GAAtC,MAAa,yBAA0B,SAAQ,sCAAwB;IAMnE,KAAK,CAAC,cAAc,CAAC,KAA0B,EAAE,MAAiB;QAC9D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,QAAQ,EAAE;YACV,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;YAChH,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;gBACxB,OAAO,SAAS,CAAC;aACpB;YAED,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YACzD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1E,OAAO,MAAM,CAAC;SACjB;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,KAA0B,EAAE,MAAiB;QAC9D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,QAAQ,EAAE;YACV,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;YAC/G,IAAI,CAAC,QAAQ,EAAE;gBACX,OAAO,SAAS,CAAC;aACpB;YAED,MAAM,GAAG,GAAG,kBAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClD,IAAI,CAAC,MAAM,EAAE;gBACT,OAAO,GAAG,CAAC;aACd;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAC9C,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;SACrC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAES,KAAK,CAAC,YAAY,CAAC,IAAqB;QAC9C,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;YACnD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,uBAAU,CAAC,SAAS,CAAC,IAAI,GAAG,uBAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE;gBAC9F,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,6BAA6B,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;gBACpE,OAAO,KAAK,CAAC;aAChB;SACJ;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAES,KAAK,CAAC,OAAO,CAAC,IAAqB;QACzC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,uBAAuB,GAAa,EAAE,CAAC;QAC7C,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAC,QAAQ,EAAC,EAAE;YAC7C,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,uBAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBACrE,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;aAC1D;QACL,CAAC,CAAC,CAAC,CAAC;QACJ,IAAI,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAAE;YACpC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,eAAe,uBAAuB,CAAC,MAAM,iBAAiB,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACjI;QACD,OAAO,uBAAuB,CAAC,MAAM,KAAK,CAAC,CAAC;IAChD,CAAC;IAES,eAAe,CAAC,GAAQ,EAAE,KAAgD,EAAE,WAAmB;QAErG,MAAM,aAAa,GAAsC;YACrD,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,WAAW;YACjC,WAAW,EAAE,kBAAO,CAAC,MAAM,CAAC,GAAG,CAAC;SACnC,CAAC;QACF,MAAM,EACF,cAAc,GAAG,IAAI,EACrB,gBAAgB,GAAG,KAAK,GAC3B,GAAG,KAA4B,CAAC;QACjC,IAAI,CAAC,UAAK,IAAI,cAAc,IAAI,gBAAgB,EAAE;YAC9C,OAAO,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAC;SAClG;QACD,IAAI,CAAC,UAAK,IAAI,cAAc,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAChD,aAAa,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/H,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SACxE;QACD,OAAO,aAAa,CAAC;IACzB,CAAC;IAES,mBAAmB,CAAC,GAAQ,EAAE,KAA0B;QAC9D,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC7D,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC;QACpC,uCAAY,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,KAAE,UAAU,EAAE,WAAW,IAAG;IACpF,CAAC;IAES,mBAAmB,CAAC,GAAQ,EAAE,KAA0B;QAC9D,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC;QACpC,IAAI,KAAK,CAAC,UAAU,EAAE;YAClB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;SACvC;QACD,MAAM,WAAW,GAAG,kBAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACxC,uCAAY,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,KAAE,WAAW,EAAE,WAAW,IAAG;IACrF,CAAC;CAEJ,CAAA;AAnG2B;IAAvB,kBAAM,CAAC,gCAAc,CAAC;8BAAoC,gCAAc;iEAAC;AAFjE,yBAAyB;IADrC,sBAAU,EAAE;GACA,yBAAyB,CAqGrC;AArGY,8DAAyB;AAuGtC,IAAiB,QAAQ,CAiExB;AAjED,WAAiB,QAAQ;IAwBrB,IAAiB,MAAM,CAwCtB;IAxCD,WAAiB,MAAM;QAEnB;;;;;;;WAOG;QACH,SAAgB,kBAAkB,CAAC,KAA0B;YACzD,IAAI,CAAC,UAAK,IAAI,KAAK,CAAC,cAAc,KAAK,KAAK,IAAI,KAAK,CAAC,gBAAgB,KAAK,IAAI,EAAE;gBAC7E,OAAO,CAAC,IAAI,CAAC,mHAAmH,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAE1J,sEAAsE;gBACtE,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC;gBAC7B,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC;aACjC;YACD,MAAM,UAAU,GAA4B,EAAE,CAAC;YAC/C,IAAI,CAAC,UAAK,EAAE;gBACR,IAAI,KAAK,CAAC,cAAc,KAAK,KAAK,IAAI,KAAK,CAAC,gBAAgB,KAAK,IAAI,EAAE;oBACnE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBAC/B;gBACD,IAAI,KAAK,CAAC,gBAAgB,KAAK,IAAI,IAAI,KAAK,CAAC,cAAc,KAAK,KAAK,EAAE;oBACnE,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;iBACpC;aACJ;iBAAM;gBACH,IAAI,KAAK,CAAC,cAAc,KAAK,KAAK,EAAE;oBAChC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBAC/B;gBACD,IAAI,KAAK,CAAC,gBAAgB,KAAK,IAAI,EAAE;oBACjC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;oBACjC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;iBACtC;aACJ;YACD,IAAI,KAAK,CAAC,aAAa,KAAK,IAAI,EAAE;gBAC9B,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;aACtC;YACD,OAAO,UAAU,CAAC;QACtB,CAAC;QA7Be,yBAAkB,qBA6BjC,CAAA;IACL,CAAC,EAxCgB,MAAM,GAAN,eAAM,KAAN,eAAM,QAwCtB;AACL,CAAC,EAjEgB,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAiExB"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/filesystem",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.23.0-next.0+edeee9cfae1",
|
|
4
4
|
"description": "Theia - FileSystem Extension",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/core": "1.
|
|
6
|
+
"@theia/core": "1.23.0-next.0+edeee9cfae1",
|
|
7
7
|
"@types/body-parser": "^1.17.0",
|
|
8
8
|
"@types/multer": "^1.4.7",
|
|
9
9
|
"@types/rimraf": "^2.0.2",
|
|
@@ -64,10 +64,10 @@
|
|
|
64
64
|
"watch": "theiaext watch"
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
67
|
-
"@theia/ext-scripts": "1.
|
|
67
|
+
"@theia/ext-scripts": "1.22.1"
|
|
68
68
|
},
|
|
69
69
|
"nyc": {
|
|
70
70
|
"extends": "../../configs/nyc.json"
|
|
71
71
|
},
|
|
72
|
-
"gitHead": "
|
|
72
|
+
"gitHead": "edeee9cfae17e46a0c244b5e7b63de479e3d8031"
|
|
73
73
|
}
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
********************************************************************************/
|
|
16
16
|
|
|
17
17
|
import { inject, injectable } from '@theia/core/shared/inversify';
|
|
18
|
-
import {
|
|
18
|
+
import { FileFilter, OpenDialogOptions, SaveDialogOptions } from '@theia/core/electron-shared/electron';
|
|
19
|
+
import * as electronRemote from '@theia/core/electron-shared/@electron/remote';
|
|
19
20
|
import URI from '@theia/core/lib/common/uri';
|
|
20
21
|
import { isOSX } from '@theia/core/lib/common/os';
|
|
21
22
|
import { MaybeArray } from '@theia/core/lib/common/types';
|
|
@@ -48,7 +49,7 @@ export class ElectronFileDialogService extends DefaultFileDialogService {
|
|
|
48
49
|
async showOpenDialog(props: OpenFileDialogProps, folder?: FileStat): Promise<MaybeArray<URI> | undefined> {
|
|
49
50
|
const rootNode = await this.getRootNode(folder);
|
|
50
51
|
if (rootNode) {
|
|
51
|
-
const { filePaths } = await
|
|
52
|
+
const { filePaths } = await electronRemote.dialog.showOpenDialog(this.toOpenDialogOptions(rootNode.uri, props));
|
|
52
53
|
if (filePaths.length === 0) {
|
|
53
54
|
return undefined;
|
|
54
55
|
}
|
|
@@ -64,7 +65,7 @@ export class ElectronFileDialogService extends DefaultFileDialogService {
|
|
|
64
65
|
async showSaveDialog(props: SaveFileDialogProps, folder?: FileStat): Promise<URI | undefined> {
|
|
65
66
|
const rootNode = await this.getRootNode(folder);
|
|
66
67
|
if (rootNode) {
|
|
67
|
-
const { filePath } = await
|
|
68
|
+
const { filePath } = await electronRemote.dialog.showSaveDialog(this.toSaveDialogOptions(rootNode.uri, props));
|
|
68
69
|
if (!filePath) {
|
|
69
70
|
return undefined;
|
|
70
71
|
}
|
|
@@ -106,13 +107,23 @@ export class ElectronFileDialogService extends DefaultFileDialogService {
|
|
|
106
107
|
}
|
|
107
108
|
|
|
108
109
|
protected toDialogOptions(uri: URI, props: SaveFileDialogProps | OpenFileDialogProps, dialogTitle: string): electron.FileDialogProps {
|
|
109
|
-
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
110
|
+
type Mutable<T> = { -readonly [K in keyof T]: T[K] };
|
|
111
|
+
const electronProps: Mutable<electron.FileDialogProps> = {
|
|
112
|
+
title: props.title || dialogTitle,
|
|
113
|
+
defaultPath: FileUri.fsPath(uri),
|
|
114
|
+
};
|
|
115
|
+
const {
|
|
116
|
+
canSelectFiles = true,
|
|
117
|
+
canSelectFolders = false,
|
|
118
|
+
} = props as OpenFileDialogProps;
|
|
119
|
+
if (!isOSX && canSelectFiles && canSelectFolders) {
|
|
120
|
+
console.warn('canSelectFiles === true && canSelectFolders === true is only supported on OSX!');
|
|
121
|
+
}
|
|
122
|
+
if ((isOSX && canSelectFiles) || !canSelectFolders) {
|
|
123
|
+
electronProps.filters = props.filters ? Object.entries(props.filters).map(([name, extensions]) => ({ name, extensions })) : [];
|
|
124
|
+
electronProps.filters.push({ name: 'All Files', extensions: ['*'] });
|
|
114
125
|
}
|
|
115
|
-
return
|
|
126
|
+
return electronProps;
|
|
116
127
|
}
|
|
117
128
|
|
|
118
129
|
protected toOpenDialogOptions(uri: URI, props: OpenFileDialogProps): OpenDialogOptions {
|