electron/docs/api/dialog.md

148 lines
6 KiB
Markdown
Raw Normal View History

2013-09-09 07:35:57 +00:00
# dialog
2013-08-14 22:43:35 +00:00
2016-04-21 22:39:12 +00:00
> Display native system dialogs for opening and saving files, alerting, etc.
2013-08-14 22:43:35 +00:00
2016-11-03 17:26:00 +00:00
Process: [Main](../tutorial/quick-start.md#main-process)
2013-08-14 22:43:35 +00:00
An example of showing a dialog to select multiple files and directories:
```javascript
const {dialog} = require('electron')
console.log(dialog.showOpenDialog({properties: ['openFile', 'openDirectory', 'multiSelections']}))
2013-08-14 22:43:35 +00:00
```
The Dialog is opened from Electron's main thread. If you want to use the dialog
object from a renderer process, remember to access it using the remote:
```javascript
const {dialog} = require('electron').remote
console.log(dialog)
```
2015-08-25 12:46:06 +00:00
## Methods
2013-08-14 22:43:35 +00:00
2015-08-25 12:46:06 +00:00
The `dialog` module has the following methods:
### `dialog.showOpenDialog([browserWindow, ]options[, callback])`
2015-08-25 12:46:06 +00:00
* `browserWindow` BrowserWindow (optional)
* `options` Object
2016-11-05 08:42:45 +00:00
* `title` String (optional)
2016-10-30 10:46:20 +00:00
* `defaultPath` String (optional)
* `buttonLabel` String (optional) - Custom label for the confirmation button, when
2016-05-16 01:09:41 +00:00
left empty the default label will be used.
2016-11-05 08:42:45 +00:00
* `filters` [FileFilter[]](structrs/file-filter.md) (optional)
* `properties` String[] - (optional) - Contains which features the dialog should use, can
2016-07-11 04:52:44 +00:00
contain `openFile`, `openDirectory`, `multiSelections`, `createDirectory`
and `showHiddenFiles`.
2015-08-25 12:46:06 +00:00
* `callback` Function (optional)
2016-10-13 06:30:57 +00:00
* `filePaths` String[] - An array of file paths chosen by the user
2013-08-14 22:43:35 +00:00
2016-11-05 08:42:45 +00:00
Returns `String[]`, an array of file paths chosen by the user,
if the callback is provided it returns `undefined`.
2013-08-14 22:43:35 +00:00
2014-08-06 07:00:31 +00:00
The `filters` specifies an array of file types that can be displayed or
2015-08-25 12:46:06 +00:00
selected when you want to limit the user to a specific type. For example:
2014-08-06 07:00:31 +00:00
2016-08-16 21:50:21 +00:00
```javascript
2014-08-06 07:00:31 +00:00
{
filters: [
{name: 'Images', extensions: ['jpg', 'png', 'gif']},
{name: 'Movies', extensions: ['mkv', 'avi', 'mp4']},
{name: 'Custom File Type', extensions: ['as']},
{name: 'All Files', extensions: ['*']}
]
2014-08-06 07:00:31 +00:00
}
```
2015-09-02 01:19:18 +00:00
The `extensions` array should contain extensions without wildcards or dots (e.g.
2015-08-25 12:46:06 +00:00
`'png'` is good but `'.png'` and `'*.png'` are bad). To show all files, use the
`'*'` wildcard (no other wildcard is supported).
2014-08-06 07:00:31 +00:00
2015-08-25 12:46:06 +00:00
If a `callback` is passed, the API call will be asynchronous and the result
2015-09-02 01:19:18 +00:00
will be passed via `callback(filenames)`
2014-03-13 06:09:30 +00:00
2015-08-26 23:41:25 +00:00
**Note:** On Windows and Linux an open dialog can not be both a file selector
2015-06-07 19:32:54 +00:00
and a directory selector, so if you set `properties` to
`['openFile', 'openDirectory']` on these platforms, a directory selector will be
shown.
2013-08-14 22:43:35 +00:00
### `dialog.showSaveDialog([browserWindow, ]options[, callback])`
2013-08-14 22:43:35 +00:00
2015-08-25 12:46:06 +00:00
* `browserWindow` BrowserWindow (optional)
* `options` Object
2016-11-05 08:42:45 +00:00
* `title` String (optional)
2016-10-30 10:46:20 +00:00
* `defaultPath` String (optional)
* `buttonLabel` String (optional) - Custom label for the confirmation button, when
2016-05-16 01:09:41 +00:00
left empty the default label will be used.
2016-11-05 08:42:45 +00:00
* `filters` [FileFilter[]](structrs/file-filter.md) (optional)
2015-08-25 12:46:06 +00:00
* `callback` Function (optional)
2016-10-13 06:30:57 +00:00
* `filename` String
2013-08-14 22:43:35 +00:00
2016-11-05 08:42:45 +00:00
Returns `String`, the path of the file chosen by the user,
if a callback is provided it returns `undefined`.
2013-08-14 22:43:35 +00:00
2014-08-06 07:00:31 +00:00
The `filters` specifies an array of file types that can be displayed, see
`dialog.showOpenDialog` for an example.
2015-06-07 19:32:54 +00:00
If a `callback` is passed, the API call will be asynchronous and the result
will be passed via `callback(filename)`
2013-08-14 22:43:35 +00:00
### `dialog.showMessageBox([browserWindow, ]options[, callback])`
2013-08-14 22:43:35 +00:00
2015-08-25 12:46:06 +00:00
* `browserWindow` BrowserWindow (optional)
* `options` Object
2016-10-30 10:46:20 +00:00
* `type` String (optional) - Can be `"none"`, `"info"`, `"error"`, `"question"` or
`"warning"`. On Windows, "question" displays the same icon as "info", unless
2015-08-25 12:46:06 +00:00
you set an icon using the "icon" option.
* `buttons` String[] - (optional) - Array of texts for buttons. On Windows, an empty array
will result in one button labeled "OK".
2016-10-30 10:46:20 +00:00
* `defaultId` Integer (optional) - Index of the button in the buttons array which will
2016-01-11 03:15:40 +00:00
be selected by default when the message box opens.
2016-10-30 10:46:20 +00:00
* `title` String (optional) - Title of the message box, some platforms will not show it.
2015-08-25 12:46:06 +00:00
* `message` String - Content of the message box.
2016-10-30 10:46:20 +00:00
* `detail` String (optional) - Extra information of the message.
* `icon` [NativeImage](native-image.md) (optional)
* `cancelId` Integer (optional) - The value will be returned when user cancels the dialog
2015-07-07 10:51:49 +00:00
instead of clicking the buttons of the dialog. By default it is the index
of the buttons that have "cancel" or "no" as label, or 0 if there is no such
2016-06-18 13:26:26 +00:00
buttons. On macOS and Windows the index of "Cancel" button will always be
2015-08-25 12:46:06 +00:00
used as `cancelId`, not matter whether it is already specified.
2016-10-30 10:46:20 +00:00
* `noLink` Boolean (optional) - On Windows Electron will try to figure out which one of
2015-07-23 09:20:43 +00:00
the `buttons` are common buttons (like "Cancel" or "Yes"), and show the
2015-08-25 12:46:06 +00:00
others as command links in the dialog. This can make the dialog appear in
2015-07-23 09:20:43 +00:00
the style of modern Windows apps. If you don't like this behavior, you can
2015-08-25 12:46:06 +00:00
set `noLink` to `true`.
2016-11-05 08:42:45 +00:00
* `callback` Function (optional)
2016-10-13 06:30:57 +00:00
* `response` Number - The index of the button that was clicked
2013-08-14 22:43:35 +00:00
2016-11-05 08:42:45 +00:00
Returns `Integer`, the index of the clicked button, if a callback is provided
it returns undefined.
2015-08-25 12:46:06 +00:00
Shows a message box, it will block the process until the message box is closed.
It returns the index of the clicked button.
2013-08-14 22:43:35 +00:00
2015-06-07 19:32:54 +00:00
If a `callback` is passed, the API call will be asynchronous and the result
2015-08-25 12:46:06 +00:00
will be passed via `callback(response)`.
2015-08-25 12:46:06 +00:00
### `dialog.showErrorBox(title, content)`
2016-08-25 17:52:19 +00:00
* `title` String - The title to display in the error box
* `content` String - The text content to display in the error box
2015-08-25 12:46:06 +00:00
Displays a modal dialog that shows an error message.
2015-08-25 12:46:06 +00:00
This API can be called safely before the `ready` event the `app` module emits,
it is usually used to report errors in early stage of startup. If called
before the app `ready`event on Linux, the message will be emitted to stderr,
2015-10-31 23:04:01 +00:00
and no GUI dialog will appear.
## Sheets
2016-06-18 13:26:26 +00:00
On macOS, dialogs are presented as sheets attached to a window if you provide
a `BrowserWindow` reference in the `browserWindow` parameter, or modals if no
window is provided.
You can call `BrowserWindow.getCurrentWindow().setSheetOffset(offset)` to change
the offset from the window frame where sheets are attached.