Значок showMessageBox в процессе рендеринга? - PullRequest
4 голосов
/ 07 февраля 2020

Выборы v8.0.0; macOS 10.14.5

Кто-нибудь имел успех при получении значка для отображения с dialog.showMessageBox в процессе renderer?

Я могу заставить работать значок с процесс main, но не из процесса renderer. То же самое с Notifications - без значка, но без ошибок. Я могу console.log nativeImage, так что я знаю, что он создается, но я все еще получаю значок Electron по умолчанию.

Возможно, я мог бы обойти проблему, отправив сообщение main, отобразив showMessageBox, отправив обратно результат и т. Д. c. но это больше спагетти-кода, чем мне бы хотелось.

 const iconPath = upath.toUnix(upath.join(__dirname, "assets", "icon.png"));
 //debuging:
 var fileExists = fs.existsSync(iconPath)
 console.log('fileExists', fileExists);

 const dialogIcon = nativeImage.createFromPath(iconPath);
 //debuging:
 console.log('dialogIcon', dialogIcon);

var options = {
    type: 'question',
    buttons: ['&Yes', '&No'],
    title: 'Delete Event',
    icon: dialogIcon,
    normalizeAccessKeys: true,
    message: 'Permanently delete event?'
};

const win = BrowserWindow.getFocusedWindow();
dialog.showMessageBox(win, options)
    .then((choice) => {
        if (choice.response === 0) {
            // do something
        }
    }).catch(err => {
        console.log('ERROR', err);
    });

1 Ответ

1 голос
/ 13 февраля 2020

Таким образом, чтобы использовать nativeImage с модулем dialog в процессе render, необходимо получить доступ к nativeImage через remote, хотя nativeImage доступно как для main, так и для *1007*. render контексты:

const { ipcRenderer, remote } = require('electron');

Неправильно:

const { ipcRenderer, remote, nativeImage } = require('electron');

Справа:

const { BrowserWindow, dialog, nativeImage } = require('electron').remote;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...