diff -r 0eab9aafa3b2 -r 8c5296fe3056 eric7/Preferences/ConfigurationPages/EditorAPIsPage.py --- a/eric7/Preferences/ConfigurationPages/EditorAPIsPage.py Wed Jun 15 08:54:13 2022 +0200 +++ b/eric7/Preferences/ConfigurationPages/EditorAPIsPage.py Wed Jun 15 09:44:07 2022 +0200 @@ -7,11 +7,14 @@ Module implementing the Editor APIs configuration page. """ -from PyQt6.QtCore import QDir, pyqtSlot, QFileInfo -from PyQt6.QtWidgets import QInputDialog +import pathlib + +from PyQt6.QtCore import pyqtSlot +from PyQt6.QtWidgets import QDialog from EricWidgets.EricApplication import ericApp from EricWidgets import EricMessageBox +from EricWidgets.EricListSelectionDialog import EricListSelectionDialog from EricWidgets.EricPathPicker import EricPathPickerModes from .ConfigurationPageBase import ConfigurationPageBase @@ -240,21 +243,21 @@ """ installedAPIFiles = self.__currentAPI.installedAPIFiles() if installedAPIFiles: - installedAPIFilesPath = QFileInfo(installedAPIFiles[0]).path() - installedAPIFilesShort = [] - for installedAPIFile in installedAPIFiles: - installedAPIFilesShort.append( - QFileInfo(installedAPIFile).fileName()) - file, ok = QInputDialog.getItem( - self, - self.tr("Add from installed APIs"), - self.tr("Select from the list of installed API files"), - installedAPIFilesShort, - 0, False) - if ok: - self.apiList.addItem(Utilities.toNativeSeparators( - QFileInfo(QDir(installedAPIFilesPath), file) - .absoluteFilePath())) + installedAPIFilesPath = pathlib.Path(installedAPIFiles[0]).parent + installedAPIFilesShort = [ + pathlib.Path(f).name for f in installedAPIFiles + ] + dlg = EricListSelectionDialog( + sorted(installedAPIFilesShort), + title=self.tr("Add from installed APIs"), + message=self.tr("Select from the list of installed API files"), + checkBoxSelection=True, + parent=self + ) + if dlg.exec() == QDialog.DialogCode.Accepted: + self.apiList.addItems([ + str(installedAPIFilesPath / s) for s in dlg.getSelection() + ]) else: EricMessageBox.warning( self, @@ -272,19 +275,21 @@ """ pluginAPIFiles = self.pluginManager.getPluginApiFiles( self.__currentApiLanguage) - pluginAPIFilesDict = {} - for apiFile in pluginAPIFiles: - pluginAPIFilesDict[QFileInfo(apiFile).fileName()] = apiFile - file, ok = QInputDialog.getItem( - self, - self.tr("Add from Plugin APIs"), - self.tr( + pluginAPIFilesDict = { + pathlib.Path(f).name:pathlib.Path(f) for f in pluginAPIFiles + } + dlg = EricListSelectionDialog( + sorted(pluginAPIFilesDict.keys()), + title=self.tr("Add from Plugin APIs"), + message=self.tr( "Select from the list of API files installed by plugins"), - sorted(pluginAPIFilesDict.keys()), - 0, False) - if ok: - self.apiList.addItem(Utilities.toNativeSeparators( - pluginAPIFilesDict[file])) + checkBoxSelection=True, + parent=self + ) + if dlg.exec() == QDialog.DialogCode.Accepted: + self.apiList.addItems([ + str(pluginAPIFilesDict[s]) for s in dlg.getSelection() + ]) self.prepareApiButton.setEnabled(self.apiList.count() > 0) @pyqtSlot()