101 lines
2.7 KiB
HTML
101 lines
2.7 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<title>Information Dialog</title>
|
|
</head>
|
|
|
|
<body>
|
|
<div class="section-wrapper">
|
|
<h1>Use system dialogs</h1>
|
|
|
|
<h3>
|
|
The <code>dialog</code> module in Electron allows you to use native
|
|
system dialogs for opening files or directories, saving a file or
|
|
displaying informational messages.
|
|
</h3>
|
|
|
|
<p>
|
|
This is a main process module because this process is more efficient
|
|
with native utilities and it allows the call to happen without
|
|
interrupting the visible elements in your page's renderer process.
|
|
</p>
|
|
|
|
<p>
|
|
Open the
|
|
<a href="https://www.electronjs.org/docs/latest/api/dialog/">
|
|
full API documentation (opens in new window)
|
|
</a>
|
|
in your browser.
|
|
</p>
|
|
</div>
|
|
|
|
<div>
|
|
<div>
|
|
<h2>Information Dialog</h2>
|
|
<div>
|
|
<div>
|
|
<button id="information-dialog">
|
|
View Demo
|
|
</button>
|
|
<span id="info-selection"></span>
|
|
</div>
|
|
<p>
|
|
In this demo, the <code>ipc</code> module is used to send a message
|
|
from the renderer process instructing the main process to launch the
|
|
information dialog. Options may be provided for responses which can
|
|
then be relayed back to the renderer process.
|
|
</p>
|
|
|
|
<p>
|
|
Note: The <code>title</code> property is not displayed in macOS.
|
|
</p>
|
|
|
|
<p>
|
|
An information dialog can contain an icon, your choice of buttons,
|
|
title and message.
|
|
</p>
|
|
<h5>Renderer Process</h5>
|
|
<pre>
|
|
<code>
|
|
const {ipcRenderer} = require('electron')
|
|
|
|
const informationBtn = document.getElementById('information-dialog')
|
|
|
|
informationBtn.addEventListener('click', (event) => {
|
|
ipcRenderer.send('open-information-dialog')
|
|
})
|
|
|
|
ipcRenderer.on('information-dialog-selection', (event, index) => {
|
|
let message = 'You selected '
|
|
if (index === 0) message += 'yes.'
|
|
else message += 'no.'
|
|
document.getElementById('info-selection').innerHTML = message
|
|
})
|
|
</code>
|
|
</pre>
|
|
<h5>Main Process</h5>
|
|
<pre>
|
|
<code>
|
|
const {ipcMain, dialog} = require('electron')
|
|
|
|
ipcMain.on('open-information-dialog', (event) => {
|
|
const options = {
|
|
type: 'info',
|
|
title: 'Information',
|
|
message: "This is an information dialog. Isn't it nice?",
|
|
buttons: ['Yes', 'No']
|
|
}
|
|
dialog.showMessageBox(options, (index) => {
|
|
event.sender.send('information-dialog-selection', index)
|
|
})
|
|
})
|
|
</code>
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script src="renderer.js"></script>
|
|
</body>
|
|
</html>
|