--- 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): """