src/eric7/Project/ProjectFormsBrowser.py

branch
eric7
changeset 9517
d73c3a1e432b
parent 9516
0f023e61a9b5
child 9520
e12589f1d408
--- a/src/eric7/Project/ProjectFormsBrowser.py	Wed Nov 16 18:11:52 2022 +0100
+++ b/src/eric7/Project/ProjectFormsBrowser.py	Thu Nov 17 18:11:42 2022 +0100
@@ -141,6 +141,7 @@
         project.projectPropertiesChanged.connect(self._initMenusAndVcs)
 
         projectBrowser.preferencesChanged.connect(self.handlePreferencesChanged)
+        projectBrowser.processChangedProjectFiles.connect(self.__compileChangedForms)
 
         self.appendStderr.connect(projectBrowser.appendStderr)
         self.closeSourceWindow.connect(projectBrowser.closeSourceWindow)
@@ -801,7 +802,7 @@
                     self.tr("Form Compilation"),
                     self.tr("The compilation of the form file" " was successful."),
                 )
-                self.project.projectFormCompiled.emit(self.compiledFile)
+                self.project.projectFileCompiled.emit(self.compiledFile, "FORMS")
             except OSError as msg:
                 ui.showNotification(
                     EricPixmapCache.getPixmap("designer48"),
@@ -1026,81 +1027,82 @@
                     break
             progress.setValue(numForms)
 
-    def compileChangedForms(self):
+    def __compileChangedForms(self):
         """
-        Public method to compile all changed forms to source files.
+        Private method to compile all changed forms to source files.
         """
-        if self.hooks["compileChangedForms"] is not None:
-            self.hooks["compileChangedForms"](
-                self.project.getProjectData(dataKey="FORMS")
-            )
-        else:
-            if self.project.getProjectType() not in [
-                "PyQt5",
-                "PyQt6",
-                "E7Plugin",
-                "PySide2",
-                "PySide6",
-            ]:
-                # ignore the request for non Qt GUI projects
-                return
+        if Preferences.getProject("AutoCompileForms"):
+            if self.hooks["compileChangedForms"] is not None:
+                self.hooks["compileChangedForms"](
+                    self.project.getProjectData(dataKey="FORMS")
+                )
+            else:
+                if self.project.getProjectType() not in [
+                    "PyQt5",
+                    "PyQt6",
+                    "E7Plugin",
+                    "PySide2",
+                    "PySide6",
+                ]:
+                    # ignore the request for non Qt GUI projects
+                    return
+
+                if len(self.project.getProjectData(dataKey="FORMS")) == 0:
+                    # The project does not contain form files.
+                    return
 
-            if len(self.project.getProjectData(dataKey="FORMS")) == 0:
-                # The project does not contain form files.
-                return
+                progress = EricProgressDialog(
+                    self.tr("Determining changed forms..."),
+                    self.tr("Abort"),
+                    0,
+                    100,
+                    self.tr("%v/%m Forms"),
+                    self,
+                )
+                progress.setMinimumDuration(0)
+                progress.setWindowTitle(self.tr("Forms"))
 
-            progress = EricProgressDialog(
-                self.tr("Determining changed forms..."),
-                self.tr("Abort"),
-                0,
-                100,
-                self.tr("%v/%m Forms"),
-                self,
-            )
-            progress.setMinimumDuration(0)
-            progress.setWindowTitle(self.tr("Forms"))
+                # get list of changed forms
+                changedForms = []
+                progress.setMaximum(len(self.project.getProjectData(dataKey="FORMS")))
+                for prog, fn in enumerate(self.project.getProjectData(dataKey="FORMS")):
+                    progress.setValue(prog)
+                    QApplication.processEvents()
 
-            # get list of changed forms
-            changedForms = []
-            progress.setMaximum(len(self.project.getProjectData(dataKey="FORMS")))
-            for prog, fn in enumerate(self.project.getProjectData(dataKey="FORMS")):
-                progress.setValue(prog)
+                    ifn = os.path.join(self.project.ppath, fn)
+                    if self.project.getProjectLanguage() == "Python3":
+                        dirname, filename = os.path.split(os.path.splitext(ifn)[0])
+                        ofn = os.path.join(dirname, "Ui_" + filename + ".py")
+                    elif self.project.getProjectLanguage() == "Ruby":
+                        ofn = os.path.splitext(ifn)[0] + ".rb"
+                    if (
+                        not os.path.exists(ofn)
+                        or os.stat(ifn).st_mtime > os.stat(ofn).st_mtime
+                    ):
+                        changedForms.append(fn)
+                progress.setValue(len(self.project.getProjectData(dataKey="FORMS")))
                 QApplication.processEvents()
 
-                ifn = os.path.join(self.project.ppath, fn)
-                if self.project.getProjectLanguage() == "Python3":
-                    dirname, filename = os.path.split(os.path.splitext(ifn)[0])
-                    ofn = os.path.join(dirname, "Ui_" + filename + ".py")
-                elif self.project.getProjectLanguage() == "Ruby":
-                    ofn = os.path.splitext(ifn)[0] + ".rb"
-                if (
-                    not os.path.exists(ofn)
-                    or os.stat(ifn).st_mtime > os.stat(ofn).st_mtime
-                ):
-                    changedForms.append(fn)
-            progress.setValue(len(self.project.getProjectData(dataKey="FORMS")))
-            QApplication.processEvents()
+                if changedForms:
+                    progress.setLabelText(self.tr("Compiling changed forms..."))
+                    progress.setMaximum(len(changedForms))
+                    progress.setValue(prog)
+                    QApplication.processEvents()
+                    for prog, fn in enumerate(changedForms):
+                        progress.setValue(prog)
+                        if progress.wasCanceled():
+                            break
 
-            if changedForms:
-                progress.setLabelText(self.tr("Compiling changed forms..."))
-                progress.setMaximum(len(changedForms))
-                progress.setValue(prog)
-                QApplication.processEvents()
-                for prog, fn in enumerate(changedForms):
-                    progress.setValue(prog)
-                    if progress.wasCanceled():
-                        break
-
-                    proc = self.__compileUI(fn, True, progress)
-                    if proc is not None:
-                        while proc.state() == QProcess.ProcessState.Running:
-                            QApplication.processEvents()
-                            QThread.msleep(300)
-                            QApplication.processEvents()
-                    else:
-                        break
-                progress.setValue(len(changedForms))
-                QApplication.processEvents()
+                        proc = self.__compileUI(fn, True, progress)
+                        if proc is not None:
+                            while proc.state() == QProcess.ProcessState.Running:
+                                QApplication.processEvents()
+                                QThread.msleep(300)
+                                QApplication.processEvents()
+                        else:
+                            break
+                    progress.setValue(len(changedForms))
+                    QApplication.processEvents()
 
     def handlePreferencesChanged(self):
         """

eric ide

mercurial