Elétron - Diálogos do Sistema
É muito importante que qualquer aplicativo seja amigável. Como resultado, você não deve criar caixas de diálogo usando chamadas alert (). Electron fornece uma interface muito boa para realizar a tarefa de criar caixas de diálogo. Vamos dar uma olhada nisso.
Elétron fornece um dialog módulo que podemos usar para exibir diálogos nativos do sistema para abrir e salvar arquivos, alertar, etc.
Vamos pular diretamente para um exemplo e criar um aplicativo para exibir arquivos de texto simples.
Crie um novo arquivo main.js e insira o seguinte código nele -
const {app, BrowserWindow} = require('electron')
const url = require('url')
const path = require('path')
const {ipcMain} = require('electron')
let win
function createWindow() {
win = new BrowserWindow({width: 800, height: 600})
win.loadURL(url.format ({
pathname: path.join(__dirname, 'index.html'),
protocol: 'file:',
slashes: true
}))
}
ipcMain.on('openFile', (event, path) => {
const {dialog} = require('electron')
const fs = require('fs')
dialog.showOpenDialog(function (fileNames) {
// fileNames is an array that contains all the selected
if(fileNames === undefined) {
console.log("No file selected");
} else {
readFile(fileNames[0]);
}
});
function readFile(filepath) {
fs.readFile(filepath, 'utf-8', (err, data) => {
if(err){
alert("An error ocurred reading the file :" + err.message)
return
}
// handle the file content
event.sender.send('fileData', data)
})
}
})
app.on('ready', createWindow)
Este código irá abrir a caixa de diálogo aberta sempre que nosso processo principal receber uma mensagem 'openFile' de um processo de renderização. Esta mensagem redirecionará o conteúdo do arquivo de volta ao processo de renderização. Agora teremos que imprimir o conteúdo.
Agora, crie um novo index.html arquivo com o seguinte conteúdo -
<!DOCTYPE html>
<html>
<head>
<meta charset = "UTF-8">
<title>File read using system dialogs</title>
</head>
<body>
<script type = "text/javascript">
const {ipcRenderer} = require('electron')
ipcRenderer.send('openFile', () => {
console.log("Event sent.");
})
ipcRenderer.on('fileData', (event, data) => {
document.write(data)
})
</script>
</body>
</html>
Agora, sempre que executamos nosso aplicativo, uma caixa de diálogo nativa aberta aparecerá, conforme mostrado na imagem a seguir -
Depois de selecionar um arquivo para exibir, seu conteúdo será exibido na janela do aplicativo -
Este foi apenas um dos quatro diálogos que Electron oferece. Todos eles têm um uso semelhante. Depois de aprender a fazer isso usandoshowOpenDialog, então você pode usar qualquer uma das outras caixas de diálogo.
Os diálogos com a mesma funcionalidade são -
- showSaveDialog ([browserWindow,] options [, callback])
- showMessageDialog ([browserWindow,] options [, callback])
- showErrorDialog (título, conteúdo)