Метод showMessageBox() объекта dialog асинхронно отображает диалоговое окно с сообщением и одной или несколькими кнопками. Формат метода:
const { dialog } = require('electron');
Promise<Объект> = dialog.showMessageBox([<Ссылка на окно>, ]<Опции>)Если в первом параметре указана ссылка на родительское окно, то диалоговое окно будет модальным. Во втором параметре указывается объект со следующими опциями:
message — текст сообщения;detail — дополнительные сведения (отображается под текстом сообщения);title — текст заголовка окна;buttons — массив строк с названиями кнопок;defaultId — индекс кнопки из массива buttons, выбранной по умолчанию;cancelId — индекс кнопки из массива buttons, выбираемой при нажатии клавиши <Esc>;type — тип диалогового окна в виде строки. Можно указать значения none, info, error, warning и question;noLink — если указано значение true, то кнопки не будут преобразовываться в ссылки (значение по умолчанию: false);icon — задает значок;checkboxLabel — если указано значение, то будет отображен флажок с указанным текстом;checkboxChecked — если указано значение true, то флажок будет установлен, а если false — то сброшен;normalizeAccessKeys — если указано значение true, то символ & перед буквой в названии кнопки, задающий клавишу быстрого доступа совместно с клавишей <Alt>, будет нормализован в зависимости от платформы (значение по умолчанию: false).Метод showMessageBox() возвращает объект Promise, содержащий объект с двумя свойствами:
response — индекс кнопки из массива buttons, нажатой пользователем;checkboxChecked — значение true, если флажок установлен, и false — если сброшен.Пример отображения окна внутри обработчика события:
ipcMain.on('event-show-dialog_info', async (e) => {
let result = await dialog.showMessageBox(win, {
message: 'Текст сообщения',
detail: 'Дополнительные сведения',
title: 'Заголовок окна',
buttons: ['OK', 'Отмена'],
defaultId: 0,
cancelId: 1,
type: 'info',
noLink: true,
checkboxLabel: 'checkboxLabel',
checkboxChecked: true,
normalizeAccessKeys: false
});
console.log(result); // { response: 1, checkboxChecked: true }
});Можно также воспользоваться методом showMessageBoxSync() объекта dialog, который выполняет операцию синхронно, блокируя процесс. Формат метода:
const { dialog } = require('electron');
<Индекс кнопки> = dialog.showMessageBoxSync([<Ссылка на окно>, ]<Опции>)Все параметры аналогичны одноименным параметрам метода showMessageBox(). Метод showMessageBoxSync() возвращает индекс кнопки из массива buttons, нажатой пользователем. Пример отображения окна внутри обработчика события:
ipcMain.on('event-show-dialog_error', (e) => {
let result = dialog.showMessageBoxSync(win, {
message: 'Текст сообщения',
detail: 'Дополнительные сведения',
title: 'Заголовок окна',
buttons: ['OK', 'Отмена'],
defaultId: 0,
cancelId: 1,
type: 'error',
noLink: true,
normalizeAccessKeys: false
});
console.log(result); // 0 или 1
});