Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
a731263d
V
vscode
项目概览
掘金者说
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a731263d
编写于
9月 07, 2017
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
also add showSaveDialog-api, #13807
上级
550e32ea
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
62 addition
and
14 deletion
+62
-14
src/vs/vscode.proposed.d.ts
src/vs/vscode.proposed.d.ts
+8
-2
src/vs/workbench/api/electron-browser/mainThreadDialogs.ts
src/vs/workbench/api/electron-browser/mainThreadDialogs.ts
+36
-9
src/vs/workbench/api/node/extHost.api.impl.ts
src/vs/workbench/api/node/extHost.api.impl.ts
+3
-0
src/vs/workbench/api/node/extHost.protocol.ts
src/vs/workbench/api/node/extHost.protocol.ts
+9
-3
src/vs/workbench/api/node/extHostDialogs.ts
src/vs/workbench/api/node/extHostDialogs.ts
+6
-0
未找到文件。
src/vs/vscode.proposed.d.ts
浏览文件 @
a731263d
...
...
@@ -8,15 +8,21 @@
declare
module
'
vscode
'
{
export
interface
OpenDialogOptions
{
uri
?:
Uri
;
defaultResource
?:
Uri
;
openLabel
?:
string
;
openFiles
?:
boolean
;
openFolders
?:
boolean
;
openMany
?:
boolean
;
}
export
namespace
window
{
export
interface
SaveDialogOptions
{
defaultResource
?:
Uri
;
saveLabel
?:
string
;
}
export
namespace
window
{
export
function
showOpenDialog
(
options
:
OpenDialogOptions
):
Thenable
<
Uri
[]
>
;
export
function
showSaveDialog
(
options
:
OpenDialogOptions
):
Thenable
<
Uri
>
;
}
// todo@joh discover files etc
...
...
src/vs/workbench/api/electron-browser/mainThreadDialogs.ts
浏览文件 @
a731263d
...
...
@@ -6,7 +6,7 @@
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
{
isFalsyOrEmpty
}
from
'
vs/base/common/arrays
'
;
import
{
MainThreadDiaglogsShape
,
MainContext
,
IExtHostContext
,
MainThreadDialogOptions
}
from
'
../node/extHost.protocol
'
;
import
{
MainThreadDiaglogsShape
,
MainContext
,
IExtHostContext
,
MainThreadDialogOp
enOptions
,
MainThreadDialogSaveOp
tions
}
from
'
../node/extHost.protocol
'
;
import
{
extHostNamedCustomer
}
from
'
vs/workbench/api/electron-browser/extHostCustomers
'
;
import
{
IWindowService
}
from
'
vs/platform/windows/common/windows
'
;
...
...
@@ -24,27 +24,41 @@ export class MainThreadDialogs implements MainThreadDiaglogsShape {
//
}
$showOpenDialog
(
options
:
MainThreadDialogOptions
):
TPromise
<
string
[]
>
{
$showOpenDialog
(
options
:
MainThreadDialogOp
enOp
tions
):
TPromise
<
string
[]
>
{
// TODO@joh what about remote dev setup?
if
(
options
.
uri
&&
options
.
uri
.
scheme
!==
'
file
'
)
{
if
(
options
.
defaultResource
&&
options
.
defaultResource
.
scheme
!==
'
file
'
)
{
return
TPromise
.
wrapError
(
new
Error
(
'
bad path
'
));
}
return
new
TPromise
<
string
[]
>
(
resolve
=>
{
this
.
_windowService
.
showOpenDialog
(
MainThreadDialogs
.
_convertOptions
(
options
),
filenames
=>
{
resolve
(
isFalsyOrEmpty
(
filenames
)
?
undefined
:
filenames
);
});
this
.
_windowService
.
showOpenDialog
(
MainThreadDialogs
.
_convertOpenOptions
(
options
),
filenames
=>
resolve
(
isFalsyOrEmpty
(
filenames
)
?
undefined
:
filenames
)
);
});
}
private
static
_convertOptions
(
options
:
MainThreadDialogOptions
):
Electron
.
OpenDialogOptions
{
$showSaveDialog
(
options
:
MainThreadDialogSaveOptions
):
TPromise
<
string
>
{
// TODO@joh what about remote dev setup?
if
(
options
.
defaultResource
&&
options
.
defaultResource
.
scheme
!==
'
file
'
)
{
return
TPromise
.
wrapError
(
new
Error
(
'
bad path
'
));
}
return
new
TPromise
<
string
>
(
resolve
=>
{
this
.
_windowService
.
showSaveDialog
(
MainThreadDialogs
.
_convertSaveOptions
(
options
),
filename
=>
resolve
(
!
filename
?
undefined
:
filename
)
);
});
}
private
static
_convertOpenOptions
(
options
:
MainThreadDialogOpenOptions
):
Electron
.
OpenDialogOptions
{
const
result
:
Electron
.
OpenDialogOptions
=
{
properties
:
[
'
createDirectory
'
]
};
if
(
options
.
openLabel
)
{
result
.
buttonLabel
=
options
.
openLabel
;
}
if
(
options
.
uri
)
{
result
.
defaultPath
=
options
.
uri
.
fsPath
;
if
(
options
.
defaultResource
)
{
result
.
defaultPath
=
options
.
defaultResource
.
fsPath
;
}
if
(
!
options
.
openFiles
&&
!
options
.
openFolders
)
{
options
.
openFiles
=
true
;
...
...
@@ -60,4 +74,17 @@ export class MainThreadDialogs implements MainThreadDiaglogsShape {
}
return
result
;
}
private
static
_convertSaveOptions
(
options
:
MainThreadDialogSaveOptions
):
Electron
.
SaveDialogOptions
{
const
result
:
Electron
.
SaveDialogOptions
=
{
};
if
(
options
.
defaultResource
)
{
result
.
defaultPath
=
options
.
defaultResource
.
fsPath
;
}
if
(
options
.
saveLabel
)
{
result
.
buttonLabel
=
options
.
saveLabel
;
}
return
result
;
}
}
src/vs/workbench/api/node/extHost.api.impl.ts
浏览文件 @
a731263d
...
...
@@ -382,6 +382,9 @@ export function createApiFactory(
}),
showOpenDialog
:
proposedApiFunction
(
extension
,
options
=>
{
return
extHostDialogs
.
showOpenDialog
(
options
);
}),
showSaveDialog
:
proposedApiFunction
(
extension
,
options
=>
{
return
extHostDialogs
.
showSaveDialog
(
options
);
})
};
...
...
src/vs/workbench/api/node/extHost.protocol.ts
浏览文件 @
a731263d
...
...
@@ -114,16 +114,22 @@ export interface MainThreadDiagnosticsShape extends IDisposable {
$clear
(
owner
:
string
):
TPromise
<
any
>
;
}
export
interface
MainThreadDialogOptions
{
uri
?:
URI
;
export
interface
MainThreadDialogOp
enOp
tions
{
defaultResource
?:
URI
;
openLabel
?:
string
;
openFiles
?:
boolean
;
openFolders
?:
boolean
;
openMany
?:
boolean
;
}
export
interface
MainThreadDialogSaveOptions
{
defaultResource
?:
URI
;
saveLabel
?:
string
;
}
export
interface
MainThreadDiaglogsShape
extends
IDisposable
{
$showOpenDialog
(
options
:
MainThreadDialogOptions
):
TPromise
<
string
[]
>
;
$showOpenDialog
(
options
:
MainThreadDialogOpenOptions
):
TPromise
<
string
[]
>
;
$showSaveDialog
(
options
:
MainThreadDialogSaveOptions
):
TPromise
<
string
>
;
}
export
interface
MainThreadDocumentContentProvidersShape
extends
IDisposable
{
...
...
src/vs/workbench/api/node/extHostDialogs.ts
浏览文件 @
a731263d
...
...
@@ -21,4 +21,10 @@ export class ExtHostDialogs {
return
filepaths
&&
filepaths
.
map
(
URI
.
file
);
});
}
showSaveDialog
(
options
:
vscode
.
SaveDialogOptions
):
Thenable
<
URI
>
{
return
this
.
_proxy
.
$showSaveDialog
(
<
any
>
options
).
then
(
filepath
=>
{
return
filepath
&&
URI
.
file
(
filepath
);
});
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录