Программно установить выбор элемента в showOpenDialogSync - PullRequest
1 голос
/ 17 февраля 2020

Я успешно использую Electron's showOpenDialogSyn c, но у меня есть небольшая проблема. Я хочу, чтобы пользователи могли изменять каталог root, скажем, для библиотеки из набора библиотек:

usr/project/library1/
usr/project/library2/
  subdir1/
  subdir2/
  subdir3/
usr/project/library3/

Теперь возникает проблема, когда я использую диалог showOpenDialogSync и пропускаю его usr/project/library2/ по умолчанию показывает все подкаталоги. Я бы предпочел, чтобы он отображал диалоговое окно для usr/project с выделенным library2, чтобы я мог быстро переключаться между библиотеками, не нажимая кнопку "Назад", чтобы выбрать другую библиотеку.

Я могу, конечно, , переключите путь по умолчанию на usr/project, но он не будет выбран library2 в качестве выбора по умолчанию (или я не понимаю, как).

Короче, как я могу получить showOpenDialogSync показать путь к родительской папке выбора по умолчанию, с выбором по умолчанию, вместо открытия полного пути этого выбора по умолчанию.

1 Ответ

2 голосов
/ 17 февраля 2020

К сожалению, в API диалога Electron такой функции не предусмотрено .

Если в вашем приложении Electron есть веские основания использовать эту функцию, вы можете рассмотреть возможность создания открытого диалоги сами Конечно, все, что дают вам готовые диалоги, теперь вы можете заново реализовать. Имейте в виду, что нестандартные диалоги скинут некоторых пользователей. Кроме того, если вам также потребуется диалоговое окно сохранения, вы можете в конечном итоге реализовать его также для единообразия.


Почему Electron не предлагает эту опцию? Electron использует файловые диалоги, предоставляемые базовой операционной системой. Вот почему они выглядят «родными» в каждой операционной системе. Это только проходит через звонки; его функциональные возможности не могут превышать возможности базовых диалогов.

Возможно, что файловый диалог определенной ОС c действительно способен делать то, что вы хотите. Относительно Windows, документы предполагают , что невозможно выбрать существующий элемент. Для GTK, с другой стороны, существует gtk_file_chooser_set_filename(), который (по крайней мере, для диалогов сохранения) позволяет выбрать элемент. Однако в реализации Electron в диалоге сохранения GTK используется gtk_file_chooser_set_current_name(), который позволяет задавать только имя файла.

Независимо от функциональности диалогов в данной ОС, Electron может понадобиться поддерживать эти параметры, чтобы у вас была возможность их использовать.

Кроссплатформенные инфраструктуры, такие как Electron, предлагают общую абстракцию функций ОС, таких как диалоги, поэтому разработчикам, создающим приложения с помощью Electron, не нужно иметь дело со спецификой ОС для каждой ОС, которая должна поддерживаться. С другой стороны, это также может означать, что доступен только общий набор функций .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...