src/eric7/Plugins/PluginEricapi.py

branch
eric7
changeset 10315
4102a69604eb
parent 10069
435cc5875135
child 10317
f1b00d7dec16
--- 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

eric ide

mercurial