diff -r 0f023e61a9b5 -r d73c3a1e432b src/eric7/Project/ProjectResourcesBrowser.py --- a/src/eric7/Project/ProjectResourcesBrowser.py Wed Nov 16 18:11:52 2022 +0100 +++ b/src/eric7/Project/ProjectResourcesBrowser.py Thu Nov 17 18:11:42 2022 +0100 @@ -85,6 +85,9 @@ project.projectPropertiesChanged.connect(self._initMenusAndVcs) projectBrowser.preferencesChanged.connect(self.handlePreferencesChanged) + projectBrowser.processChangedProjectFiles.connect( + self.__compileChangedResources + ) self.appendStderr.connect(projectBrowser.appendStderr) self.closeSourceWindow.connect(projectBrowser.closeSourceWindow) @@ -879,76 +882,81 @@ return False - def compileChangedResources(self): + def __compileChangedResources(self): """ - Public method to compile all changed resources to source files. + Private method to compile all changed resources to source files. """ - if self.hooks["compileChangedResources"] is not None: - self.hooks["compileChangedResources"]( - self.project.getProjectData(dataKey="RESOURCES") - ) - else: - if len(self.project.getProjectData(dataKey="RESOURCES")) == 0: - # The project does not contain resource files - return + if Preferences.getProject("AutoCompileResources"): + if self.hooks["compileChangedResources"] is not None: + self.hooks["compileChangedResources"]( + self.project.getProjectData(dataKey="RESOURCES") + ) + else: + if len(self.project.getProjectData(dataKey="RESOURCES")) == 0: + # The project does not contain resource files + return + + progress = EricProgressDialog( + self.tr("Determining changed resources..."), + self.tr("Abort"), + 0, + 100, + self.tr("%v/%m Resources"), + self, + ) + progress.setMinimumDuration(0) + progress.setWindowTitle(self.tr("Resources")) - progress = EricProgressDialog( - self.tr("Determining changed resources..."), - self.tr("Abort"), - 0, - 100, - self.tr("%v/%m Resources"), - self, - ) - progress.setMinimumDuration(0) - progress.setWindowTitle(self.tr("Resources")) - - # get list of changed resources - changedResources = [] - progress.setMaximum(len(self.project.getProjectData(dataKey="RESOURCES"))) - for prog, fn in enumerate(self.project.getProjectData(dataKey="RESOURCES")): - progress.setValue(prog) + # get list of changed resources + changedResources = [] + progress.setMaximum( + len(self.project.getProjectData(dataKey="RESOURCES")) + ) + for prog, fn in enumerate( + self.project.getProjectData(dataKey="RESOURCES") + ): + progress.setValue(prog) + 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, self.RCFilenameFormatPython.format(filename) + ) + elif self.project.getProjectLanguage() == "Ruby": + dirname, filename = os.path.split(os.path.splitext(ifn)[0]) + ofn = os.path.join( + dirname, self.RCFilenameFormatRuby.format(filename) + ) + else: + return + if ( + not os.path.exists(ofn) + or os.stat(ifn).st_mtime > os.stat(ofn).st_mtime + or self.__checkResourcesNewer(ifn, os.stat(ofn).st_mtime) + ): + changedResources.append(fn) + progress.setValue(len(self.project.getProjectData(dataKey="RESOURCES"))) 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, self.RCFilenameFormatPython.format(filename) - ) - elif self.project.getProjectLanguage() == "Ruby": - dirname, filename = os.path.split(os.path.splitext(ifn)[0]) - ofn = os.path.join( - dirname, self.RCFilenameFormatRuby.format(filename) - ) - else: - return - if ( - not os.path.exists(ofn) - or os.stat(ifn).st_mtime > os.stat(ofn).st_mtime - or self.__checkResourcesNewer(ifn, os.stat(ofn).st_mtime) - ): - changedResources.append(fn) - progress.setValue(len(self.project.getProjectData(dataKey="RESOURCES"))) - QApplication.processEvents() - if changedResources: - progress.setLabelText(self.tr("Compiling changed resources...")) - progress.setMaximum(len(changedResources)) - progress.setValue(0) - QApplication.processEvents() - for prog, fn in enumerate(changedResources): - progress.setValue(prog) - if progress.wasCanceled(): - break - proc = self.__compileQRC(fn, True, progress) - if proc is not None: - while proc.state() == QProcess.ProcessState.Running: - QThread.msleep(100) - QApplication.processEvents() - else: - break - progress.setValue(len(changedResources)) - QApplication.processEvents() + if changedResources: + progress.setLabelText(self.tr("Compiling changed resources...")) + progress.setMaximum(len(changedResources)) + progress.setValue(0) + QApplication.processEvents() + for prog, fn in enumerate(changedResources): + progress.setValue(prog) + if progress.wasCanceled(): + break + proc = self.__compileQRC(fn, True, progress) + if proc is not None: + while proc.state() == QProcess.ProcessState.Running: + QThread.msleep(100) + QApplication.processEvents() + else: + break + progress.setValue(len(changedResources)) + QApplication.processEvents() def handlePreferencesChanged(self): """