--- a/src/eric7/Plugins/PluginEricapi.py Thu Nov 16 15:56:12 2023 +0100 +++ b/src/eric7/Plugins/PluginEricapi.py Thu Nov 16 16:45:23 2023 +0100 @@ -9,7 +9,7 @@ import os -from PyQt6.QtCore import QCoreApplication, QObject +from PyQt6.QtCore import QCoreApplication, QObject, pyqtSlot from PyQt6.QtWidgets import QDialog from eric7.EricGui.EricAction import EricAction @@ -108,6 +108,7 @@ Private slot to (re)initialize the plugin. """ self.__projectAct = None + self.__execDialog = None def activate(self): """ @@ -170,7 +171,7 @@ def __doEricapi(self): """ - Private slot to perform the eric7_api api generation. + Private slot to perform the eric7_api API generation. """ from eric7.Plugins.DocumentationPlugins.Ericapi.EricapiConfigDialog import ( EricapiConfigDialog, @@ -199,24 +200,40 @@ args.append("--eol={0}".format(eolTranslation[project.getEolString()])) # now do the call - dia = EricapiExecDialog("Ericapi") - res = dia.start(args, startDir) - if res: - dia.exec() + self.__execDialog = EricapiExecDialog("Ericapi") + self.__execDialog.finished.connect(self.__execDialogFinished) + self.__execDialog.processFinished.connect(self.__ericapiProcessFinished) + self.__execDialog.show() + self.__execDialog.start(args, startDir) - outputFileName = FileSystemUtilities.toNativeSeparators(parms["outputFile"]) + @pyqtSlot() + def __ericapiProcessFinished(self): + """ + Private slot to perform actions after the API data was generated. + """ + project = ericApp().getObject("Project") + parms = project.getData("DOCUMENTATIONPARMS", "ERIC4DOC") + + outputFileName = FileSystemUtilities.toNativeSeparators(parms["outputFile"]) - # add output files to the project data, if they aren't in already - for progLanguage in parms["languages"]: - if "%L" in outputFileName: - outfile = outputFileName.replace("%L", progLanguage) + # add output files to the project data, if they aren't in already + for progLanguage in parms["languages"]: + if "%L" in outputFileName: + outfile = outputFileName.replace("%L", progLanguage) + else: + if len(parms["languages"]) == 1: + outfile = outputFileName else: - if len(parms["languages"]) == 1: - outfile = outputFileName - else: - root, ext = os.path.splitext(outputFileName) - outfile = "{0}-{1}{2}".format(root, progLanguage.lower(), ext) + root, ext = os.path.splitext(outputFileName) + outfile = "{0}-{1}{2}".format(root, progLanguage.lower(), ext) + + outfile = project.getRelativePath(outfile) + if outfile not in project.getProjectData(dataKey="OTHERS"): + project.appendFile(outfile) - outfile = project.getRelativePath(outfile) - if outfile not in project.getProjectData(dataKey="OTHERS"): - project.appendFile(outfile) + @pyqtSlot() + def __execDialogFinished(self): + """ + Private slot to handle the execution dialog being closed. + """ + self.__execDialog = None