cpp

Окно для выбора файла или каталога

Метод showOpenDialog() объекта dialog асинхронно отображает диалоговое окно, в котором можно выбрать открываемый файл или каталог. Формат метода:

const { dialog } = require('electron');
Promise<Объект> = dialog.showOpenDialog([<Ссылка на окно>, ]<Опции>)

Если в первом параметре указана ссылка на родительское окно, то диалоговое окно будет модальным. Во втором параметре указывается объект со следующими опциями (полный список см. в документации):

  • title — текст заголовка окна;
  • defaultPath — путь к каталогу, отображаемому в окне;
  • buttonLabel — текст на кнопке подтверждения выбора файла или каталога;
  • filters — массив объектов, задающих типы файлов для ограничения выбора. Каждый объект должен содержать свойства name (название фильтра) и extensions (массив строк, задающих расширения файлов):
filters: [
   { name: 'Мои файлы', extensions: ['txt', 'js'] },
   { name: 'Все файлы', extensions: ['*'] }
]
  • properties — массив, содержащий следующие основные значения (полный список см. в документации):
  • 'openFile' — можно выбирать файлы;
  • 'openDirectory' — можно выбирать каталоги;
  • 'multiSelections' — можно выбрать сращу несколько объектов;
  • 'showHiddenFiles' — отображать скрытые файлы;
  • 'createDirectory' — можно создавать новые каталоги (для MacOS).

Метод showOpenDialog() возвращает объект Promise, содержащий объект с двумя свойствами:

  • canceled — значение true, если была нажата кнопка Отмена, и false — в противном случае;
  • filePaths — массив строк, содержащий выбранные объекты. Если была нажата кнопка Отмена, то массив будет пустой.

Пример диалогового окна, позволяющего выбрать несколько файлов:

ipcMain.on('event-show-dialog', async (e) => {
   let result = await dialog.showOpenDialog(win, {
      title: 'Заголовок окна',
      defaultPath: 'C:\\book',
      buttonLabel: 'Выбрать файл',
      filters: [
         { name: 'Мои файлы', extensions: ['txt', 'js'] },
         { name: 'Все файлы', extensions: ['*'] }
      ],
      properties: ['openFile', 'multiSelections', 'showHiddenFiles']
   });
   console.log(result);
   // { canceled: false,
   //  filePaths: [ 'C:\\book\\e1\\main.js', 'C:\\book\\e1\\test.js' ] }
});

Результат показан на рис. 4.6.

Рис. 4.6. Окно для выбора файлов

Пример диалогового окна, позволяющего выбрать каталог:

ipcMain.on('event-show-dialog2', async (e) => {
   let result = await dialog.showOpenDialog(win, {
      title: 'Заголовок окна',
      defaultPath: 'C:\\book',
      buttonLabel: 'Выбрать каталог',
      properties: ['openDirectory', 'createDirectory']
   });
   console.log(result);
   // { canceled: false, filePaths: [ 'C:\\book\\e1' ] }
});

Можно также воспользоваться методом showOpenDialogSync() объекта dialog, который выполняет операцию синхронно, блокируя процесс. Формат метода:

const { dialog } = require('electron');
<Результат> = dialog.showOpenDialogSync([<Ссылка на окно>, ]<Опции>)

Все параметры аналогичны одноименным параметрам метода showOpenDialog(). Метод showOpenDialogSync() возвращает массив строк с выбранными объектами или значение undefined, если была нажата кнопка Отмена. Пример отображения окна внутри обработчика события:

ipcMain.on('event-show-dialog', (e) => {
   let result = dialog.showOpenDialogSync(win, {
      title: 'Заголовок окна',
      defaultPath: 'C:\\book',
      buttonLabel: 'Выбрать файл',
      filters: [
         { name: 'Мои файлы', extensions: ['txt', 'js'] },
         { name: 'Все файлы', extensions: ['*'] }
      ],
      properties: ['openFile', 'multiSelections', 'showHiddenFiles']
   });
   console.log(result);
   // [ 'C:\\book\\e1\\main.js', 'C:\\book\\e1\\test.js' ]
});

Учебник по Electron js
Учебник по Electron js в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

cpp