electron/docs-translations/zh-CN/api/dialog.md
2017-02-09 17:01:30 +08:00

143 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# dialog
> 显示用于打开和保存文件alert框等的原生的系统对话框
进程: [Main](../glossary.md#main-process)
对话框例子,展示了选择文件和目录:
```javascript
const {dialog} = require('electron')
console.log(dialog.showOpenDialog({properties: ['openFile', 'openDirectory', 'multiSelections']}))
```
对话框从 Electron 的主线程打开。如果要从渲染器进程使用对话框
对象,记得使用 remote 访问它:
```javascript
const {dialog} = require('electron').remote
console.log(dialog)
```
## 方法
`dialog` 模块有以下方法:
### `dialog.showOpenDialog([browserWindow, ]options[, callback])`
* `browserWindow` BrowserWindow (可选)
* `options` Object
* `title` String (可选)
* `defaultPath` String (可选)
* `buttonLabel` String (可选) - Custom label for the confirmation button, when
left empty the default label will be used.
* `filters` [FileFilter[]](structures/file-filter.md) (optional)
* `properties` String[] (可选) - Contains which features the dialog should
use. The following values are supported:
* `openFile` - Allow files to be selected.
* `openDirectory` - Allow directories to be selected.
* `multiSelections` - Allow multiple paths to be selected.
* `showHiddenFiles` - Show hidden files in dialog.
* `createDirectory` _macOS_ - Allow creating new directories from dialog.
* `promptToCreate` _Windows_ - Prompt for creation if the file path entered
in the dialog does not exist. This does not actually create the file at
the path but allows non-existent paths to be returned that should be
created by the application.
* `normalizeAccessKeys` Boolean (可选) - Normalize the keyboard access keys
across platforms. Default is `false`. Enabling this assumes `&` is used in
the button labels for the placement of the keyboard shortcut access key
and labels will be converted so they work correctly on each platform, `&`
characters are removed on macOS, converted to `_` on Linux, and left
untouched on Windows. For example, a button label of `Vie&w` will be
converted to `Vie_w` on Linux and `View` on macOS and can be selected
via `Alt-W` on Windows and Linux.
* `callback` Function (可选)
* `filePaths` String[] - An array of file paths chosen by the user
成功使用这个方法的话,就返回一个可供用户选择的文件路径数组,失败返回 `undefined`
`browserWindow` 参数允许对话框将自身附加到父窗口,使其成为模态。
`filters` 当需要限定用户的行为的时候,指定一个文件数组给用户展示或选择。例如:
```javascript
{
filters: [
{name: 'Images', extensions: ['jpg', 'png', 'gif']},
{name: 'Movies', extensions: ['mkv', 'avi', 'mp4']},
{name: 'Custom File Type', extensions: ['as']},
{name: 'All Files', extensions: ['*']}
]
}
```
`extensions` 数组应当只包含扩展名,不应该包含通配符或 '.' 号 (例如
`'png'` 正确,但是 `'.png'``'*.png'` 不正确)。展示全部文件的话,使用
`'*'` 通配符 (不支持其他通配符)。
如果 `callback` 被调用,将异步调用 API ,并且结果将用过 `callback(filenames)` 展示。
**注意:** 在 Windows 和 Linux ,一个打开的 dialog 不能既是文件选择框又是目录选择框, 所以如果在这些平台上设置 `properties` 的值为
`['openFile', 'openDirectory']` ,将展示一个目录选择框。
### `dialog.showSaveDialog([browserWindow, ]options[, callback])`
* `browserWindow` BrowserWindow (可选)
* `options` Object
* `title` String (可选)
* `defaultPath` String (可选)
* `buttonLabel` String (可选) - Custom label for the confirmation button, when
left empty the default label will be used.
* `filters` [FileFilter[]](structures/file-filter.md) (optional)
* `callback` Function (可选)
* `filename` String
成功使用这个方法的话,就返回一个可供用户选择的文件路径数组,失败返回 `undefined`
`browserWindow` 参数允许对话框将自身附加到父窗口,使其成为模态。
`filters` 指定展示一个文件类型数组, 例子
`dialog.showOpenDialog`
如果 `callback` 被调用, 将异步调用 API ,并且结果将用过 `callback(filenames)` 展示。
### `dialog.showMessageBox([browserWindow, ]options[, callback])`
* `browserWindow` BrowserWindow (可选)
* `options` Object
* `type` String - 可以是 `"none"`, `"info"`, `"error"`, `"question"`
`"warning"`. 在 Windows, "question" 与 "info" 展示图标相同, 除非你使用 "icon" 参数.
* `buttons` Array - buttons 内容,数组.
* `defaultId` Integer - 在message box 对话框打开的时候设置默认button选中值为在 buttons 数组中的button索引.
* `title` String - message box 的标题,一些平台不显示.
* `message` String - message box 内容.
* `detail` String - 额外信息.
* `icon` [NativeImage](native-image.md)
* `cancelId` Integer - 当用户关闭对话框的时候不是通过点击对话框的button就返回值.默认值为对应 "cancel" 或 "no" 标签button 的索引值, 或者如果没有这种button就返回0. 在 macOS 和 Windows 上, "Cancel" button 的索引值将一直是 `cancelId`, 不管之前是不是特别指出的.
* `noLink` Boolean - 在 Windows Electron 将尝试识别哪个button 是普通 button (如 "Cancel" 或 "Yes"), 然后在对话框中以链接命令(command links)方式展现其它的 button . 这能让对话框展示得很炫酷.如果你不喜欢这种效果,你可以设置 `noLink``true`.
* `callback` Function (可选)
* `response` Number - The index of the button that was clicked
返回 `Integer`,如果提供了回调,它会返回点击的按钮的索引或者 undefined 。
展示 message box, 它会阻塞进程,直到 message box 关闭为止.返回点击按钮的索引值。
`browserWindow` 参数允许对话框将自身附加到父窗口,使其成为模态。
如果 `callback` 被调用, 将异步调用 API ,并且结果将用过 `callback(response)` 展示。
### `dialog.showErrorBox(title, content)`
* `title` String - 错误框中的标题
* `content` String - 错误框中的内容
展示一个传统的包含错误信息的对话框.
`app` 模块触发 `ready` 事件之前,这个 api 可以被安全调用,通常它被用来在启动的早期阶段报告错误. 在 Linux 上,如果在 `app` 模块触发 `ready` 事件之前调用message 将会被触发显示 stderr ,并且没有实际 GUI 框显示.
## Sheets
在 macOS 上,如果你想像 sheets 一样展示对话框,只需要在`browserWindow` 参数中提供一个 `BrowserWindow` 的引用对象.,如果没有则为模态窗口。
你可以调用 `BrowserWindow.getCurrentWindow().setSheetOffset(offset)` 来改变
sheets 的窗口框架的偏移量。