Electron官方文档(v1.6.1)中文翻译

5. dialog

2017-03-15  本文已影响250人  Shmily落墨

原文:https://github.com/electron/electron/blob/master/docs/api/dialog.md
译者:Lin

显示本地系统的对话框来打开或者保存文件、提示等等。

进程:主进程

一个展示对话框来选择多个文件和目录的例子:

const {dialog} = require('electron')
console.log(dialog.showOpenDialog({properties: ['openFile', 'openDirectory', 'multiSelections']}))

对话框从Electron的主进程中被打开。如果你想在渲染进程中使用dialog对象,记得使用remote来获取它:

const {dialog} = require('electron').remote
console.log(dialog)

方法

dialog模块有以下方法:

dialog.showOpenDialog([browserWindow, ]options[, callback])

返回值为String[]类型,一个被用户选中的文件路径的数组,如果callback被启用那么就返回undefined

browserWindow参数允许对话框把它自己固定到一个父窗口上,使他自己变为模态状态。

当你想对用户限制指定的类型时,filters指定一个可以被显示或选择的文件类型的数组。例如:

{
    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,这个接口将会被异步调用,并将结果通过callback(filenames)传回。

注意:Windows和Linux下,一个打开的对话框不可能既是一个文件选择器也是一个文件夹选择器,所以如果你在这两个平台上设置properties['openFile', 'openDirectory'],那么将展示一个文件夹选择器。

dialog.showSaveDialog([browserWindow, ]options[, callback])

返回值为String类型, 一个被用户选中的文件路径,如果callback被启用那么就返回undefined

browserWindow参数允许对话框把它自己固定到一个父窗口上,使他自己变为模态状态。

filters指定一个可以被显示或选择的文件类型的数组。查看dialog.showOpenDialog的例子。

如果传入了一个callback,这个接口将会被异步调用,并将结果通过callback(filename)传回。

dialog.showMessageBox([browserWindow, ]options[, callback])

返回值为Integer类型,是选中的按钮的索引值,如果提供了一个回调,那么它将返回undefined

展示一个消息盒子,它将阻塞进程直到消息对话框被关闭。它返回被点击的按钮的索引值。

browserWindow参数允许对话框把它自己固定到一个父窗口上,使他自己变为模态状态。

如果传入了一个callback,这个接口将会被异步调用,并将结果通过callback(response)传回。

dialog.showErrorBox(title, content)

显示一个模态对话框来展示一个错误信息

这个接口可以在app模块的ready事件被分发之前被安全的调用,它通常被用来在启动的早期报告错误。在Linux中如果载应用的ready事件之前被调用,这个消息将被分发为一个标准错误,将展示一个没有GUI的对话框。

MacOS下,如果你给BrowserWindow参数提供了一个browserWindow引用,那么对话框将以窗口的附属表的形式展示,如果没有窗口被提供那么就是模态状态。

你可以调用BrowserWindow.getCurrentWindow().setSheetOffset(offset)来改变相对于表附属的窗口的边框的位置。

上一篇 下一篇

猜你喜欢

热点阅读