--- a/eric6/Project/Project.py Fri Oct 09 17:19:29 2020 +0200 +++ b/eric6/Project/Project.py Sat Oct 10 12:20:51 2020 +0200 @@ -18,9 +18,9 @@ from PyQt5.QtCore import ( pyqtSlot, QFile, QFileInfo, pyqtSignal, QCryptographicHash, QIODevice, - QByteArray, QObject, Qt, QProcess + QByteArray, QObject, QProcess ) -from PyQt5.QtGui import QCursor, QKeySequence +from PyQt5.QtGui import QKeySequence from PyQt5.QtWidgets import ( QLineEdit, QToolBar, QDialog, QInputDialog, QApplication, QMenu, QAction ) @@ -30,6 +30,7 @@ from E5Gui import E5FileDialog, E5MessageBox from E5Gui.E5ListSelectionDialog import E5ListSelectionDialog from E5Gui.E5ProgressDialog import E5ProgressDialog +from E5Gui.E5OverrideCursor import E5OverrideCursor, E5OverridenCursor from Globals import recentNameProject @@ -778,7 +779,6 @@ res = not reader.hasError() f.close() else: - QApplication.restoreOverrideCursor() E5MessageBox.critical( self.ui, self.tr("Read project file"), @@ -2617,91 +2617,90 @@ # Show the file type associations for the user to change self.__showFiletypeAssociations() - QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) - QApplication.processEvents() - - # search the project directory for files with known extensions - filespecs = list(self.pdata["FILETYPES"].keys()) - for filespec in filespecs: - files = Utilities.direntries(self.ppath, True, filespec) - for file in files: - self.appendFile(file) - - # special handling for translation files - if self.translationsRoot: - tpd = os.path.join(self.ppath, self.translationsRoot) - if not self.translationsRoot.endswith(os.sep): - tpd = os.path.dirname(tpd) - else: - tpd = self.ppath - tslist = [] - if self.pdata["TRANSLATIONPATTERN"]: - pattern = os.path.basename(self.pdata["TRANSLATIONPATTERN"]) - if "%language%" in pattern: - pattern = pattern.replace("%language%", "*") + with E5OverrideCursor(): + # search the project directory for files with known extensions + filespecs = list(self.pdata["FILETYPES"].keys()) + for filespec in filespecs: + files = Utilities.direntries(self.ppath, True, filespec) + for file in files: + self.appendFile(file) + + # special handling for translation files + if self.translationsRoot: + tpd = os.path.join(self.ppath, self.translationsRoot) + if not self.translationsRoot.endswith(os.sep): + tpd = os.path.dirname(tpd) else: - tpd = self.pdata["TRANSLATIONPATTERN"].split( - "%language%")[0] - else: - pattern = "*.ts" - tslist.extend(Utilities.direntries(tpd, True, pattern)) - pattern = self.__binaryTranslationFile(pattern) - if pattern: + tpd = self.ppath + tslist = [] + if self.pdata["TRANSLATIONPATTERN"]: + pattern = os.path.basename(self.pdata["TRANSLATIONPATTERN"]) + if "%language%" in pattern: + pattern = pattern.replace("%language%", "*") + else: + tpd = self.pdata["TRANSLATIONPATTERN"].split( + "%language%")[0] + else: + pattern = "*.ts" tslist.extend(Utilities.direntries(tpd, True, pattern)) - if tslist: - if '_' in os.path.basename(tslist[0]): - # the first entry determines the mainscript name - mainscriptname = ( - os.path.splitext(mainscript)[0] or - os.path.basename(tslist[0]).split('_')[0] - ) - self.pdata["TRANSLATIONPATTERN"] = os.path.join( - os.path.dirname(tslist[0]), - "{0}_%language%{1}".format( - os.path.basename(tslist[0]).split('_')[0], - os.path.splitext(tslist[0])[1])) - else: - mainscriptname = "" - pattern, ok = QInputDialog.getText( - None, - self.tr("Translation Pattern"), - self.tr( - "Enter the path pattern for translation files " - "(use '%language%' in place of the language code):"), - # __IGNORE_WARNING_M601__ - QLineEdit.Normal, - tslist[0]) - if pattern: - self.pdata["TRANSLATIONPATTERN"] = pattern - if self.pdata["TRANSLATIONPATTERN"]: - self.pdata["TRANSLATIONPATTERN"] = self.getRelativePath( - self.pdata["TRANSLATIONPATTERN"]) - pattern = self.pdata["TRANSLATIONPATTERN"].replace( - "%language%", "*") - for ts in tslist: - if fnmatch.fnmatch(ts, pattern): - self.pdata["TRANSLATIONS"].append(ts) - self.projectLanguageAdded.emit(ts) - if self.pdata["TRANSLATIONSBINPATH"]: - tpd = os.path.join(self.ppath, - self.pdata["TRANSLATIONSBINPATH"]) - pattern = os.path.basename( - self.pdata["TRANSLATIONPATTERN"]).replace( + pattern = self.__binaryTranslationFile(pattern) + if pattern: + tslist.extend(Utilities.direntries(tpd, True, pattern)) + if tslist: + if '_' in os.path.basename(tslist[0]): + # the first entry determines the mainscript name + mainscriptname = ( + os.path.splitext(mainscript)[0] or + os.path.basename(tslist[0]).split('_')[0] + ) + self.pdata["TRANSLATIONPATTERN"] = os.path.join( + os.path.dirname(tslist[0]), + "{0}_%language%{1}".format( + os.path.basename(tslist[0]).split('_')[0], + os.path.splitext(tslist[0])[1])) + else: + mainscriptname = "" + pattern, ok = QInputDialog.getText( + None, + self.tr("Translation Pattern"), + self.tr( + "Enter the path pattern for translation files " + "(use '%language%' in place of the language" + " code):"), + QLineEdit.Normal, + tslist[0]) + if pattern: + self.pdata["TRANSLATIONPATTERN"] = pattern + if self.pdata["TRANSLATIONPATTERN"]: + self.pdata["TRANSLATIONPATTERN"] = self.getRelativePath( + self.pdata["TRANSLATIONPATTERN"]) + pattern = self.pdata["TRANSLATIONPATTERN"].replace( "%language%", "*") - pattern = self.__binaryTranslationFile(pattern) - qmlist = Utilities.direntries(tpd, True, pattern) - for qm in qmlist: - self.pdata["TRANSLATIONS"].append(qm) - self.projectLanguageAdded.emit(qm) - if not self.pdata["MAINSCRIPT"] and bool(mainscriptname): - if self.pdata["PROGLANGUAGE"] in [ - "Python3", "MicroPython" - ]: - self.pdata["MAINSCRIPT"] = '{0}.py'.format(mainscriptname) - elif self.pdata["PROGLANGUAGE"] == "Ruby": - self.pdata["MAINSCRIPT"] = '{0}.rb'.format(mainscriptname) - self.setDirty(True) - QApplication.restoreOverrideCursor() + for ts in tslist: + if fnmatch.fnmatch(ts, pattern): + self.pdata["TRANSLATIONS"].append(ts) + self.projectLanguageAdded.emit(ts) + if self.pdata["TRANSLATIONSBINPATH"]: + tpd = os.path.join(self.ppath, + self.pdata["TRANSLATIONSBINPATH"]) + pattern = os.path.basename( + self.pdata["TRANSLATIONPATTERN"]).replace( + "%language%", "*") + pattern = self.__binaryTranslationFile(pattern) + qmlist = Utilities.direntries(tpd, True, pattern) + for qm in qmlist: + self.pdata["TRANSLATIONS"].append(qm) + self.projectLanguageAdded.emit(qm) + if not self.pdata["MAINSCRIPT"] and bool(mainscriptname): + if self.pdata["PROGLANGUAGE"] in [ + "Python3", "MicroPython" + ]: + self.pdata["MAINSCRIPT"] = '{0}.py'.format( + mainscriptname) + elif self.pdata["PROGLANGUAGE"] == "Ruby": + self.pdata["MAINSCRIPT"] = '{0}.rb'.format( + mainscriptname) + self.setDirty(True) def __showProperties(self): """ @@ -2895,18 +2894,15 @@ if fn: if self.closeProject(): - QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) - QApplication.processEvents() - if self.__readProject(fn): + with E5OverrideCursor(): + ok = self.__readProject(fn) + if ok: self.opened = True if not self.pdata["FILETYPES"]: self.initFileTypes() else: self.updateFileTypes() - QApplication.restoreOverrideCursor() - QApplication.processEvents() - try: # create management directory if not present self.createProjectManagementDir() @@ -2923,94 +2919,88 @@ # read a user specific project file self.__readUserProperties() - QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) - QApplication.processEvents() - - oldState = self.isDirty() - self.vcs = self.initVCS() - if self.vcs is None and self.isDirty() == oldState: - # check, if project is version controlled - pluginManager = e5App().getObject("PluginManager") - for indicator, vcsData in ( - pluginManager.getVcsSystemIndicators().items() - ): - if os.path.exists( - os.path.join(self.ppath, indicator)): - if len(vcsData) > 1: - vcsList = [] - for _vcsSystemStr, vcsSystemDisplay in ( - vcsData - ): - vcsList.append(vcsSystemDisplay) - QApplication.restoreOverrideCursor() - res, vcs_ok = QInputDialog.getItem( - None, - self.tr("New Project"), - self.tr( - "Select Version Control System"), - vcsList, - 0, False) - QApplication.setOverrideCursor( - QCursor(Qt.WaitCursor)) - QApplication.processEvents() - if vcs_ok: - for vcsSystemStr, vcsSystemDisplay in ( - vcsData - ): - if res == vcsSystemDisplay: - vcsSystem = vcsSystemStr - break + with E5OverrideCursor(): + oldState = self.isDirty() + self.vcs = self.initVCS() + if self.vcs is None and self.isDirty() == oldState: + # check, if project is version controlled + pluginManager = e5App().getObject("PluginManager") + for indicator, vcsData in ( + pluginManager.getVcsSystemIndicators().items() + ): + if os.path.exists( + os.path.join(self.ppath, indicator)): + if len(vcsData) > 1: + vcsList = [] + for ( + _vcsSystemStr, vcsSystemDisplay + ) in vcsData: + vcsList.append(vcsSystemDisplay) + with E5OverridenCursor(): + res, vcs_ok = QInputDialog.getItem( + None, + self.tr("New Project"), + self.tr( + "Select Version Control" + " System"), + vcsList, + 0, False) + if vcs_ok: + for ( + vcsSystemStr, vcsSystemDisplay + ) in vcsData: + if res == vcsSystemDisplay: + vcsSystem = vcsSystemStr + break + else: + vcsSystem = "None" else: vcsSystem = "None" else: - vcsSystem = "None" - else: - vcsSystem = vcsData[0][0] - self.pdata["VCS"] = vcsSystem - self.vcs = self.initVCS() - self.setDirty(True) - if ( - self.vcs is not None and - (self.vcs.vcsRegisteredState(self.ppath) != - self.vcs.canBeCommitted) - ): - self.pdata["VCS"] = 'None' - self.vcs = self.initVCS() - self.closeAct.setEnabled(True) - self.saveasAct.setEnabled(True) - self.actGrp2.setEnabled(True) - self.propsAct.setEnabled(True) - self.userPropsAct.setEnabled(True) - self.filetypesAct.setEnabled(True) - self.lexersAct.setEnabled(True) - self.sessActGrp.setEnabled(True) - self.dbgActGrp.setEnabled(True) - self.menuDebuggerAct.setEnabled(True) - self.menuSessionAct.setEnabled(True) - self.menuCheckAct.setEnabled(True) - self.menuShowAct.setEnabled(True) - self.menuDiagramAct.setEnabled(True) - self.menuApidocAct.setEnabled(True) - self.menuPackagersAct.setEnabled(True) - self.pluginGrp.setEnabled( - self.pdata["PROJECTTYPE"] in ["E6Plugin"]) - self.addLanguageAct.setEnabled( - bool(self.pdata["TRANSLATIONPATTERN"])) - self.makeGrp.setEnabled( - self.pdata["MAKEPARAMS"]["MakeEnabled"]) - self.menuMakeAct.setEnabled( - self.pdata["MAKEPARAMS"]["MakeEnabled"]) - - # open a project debugger properties file being quiet - # about errors - if Preferences.getProject("AutoLoadDbgProperties"): - self.__readDebugProperties(True) - - self.__model.projectOpened() - self.projectOpenedHooks.emit() - self.projectOpened.emit() - - QApplication.restoreOverrideCursor() + vcsSystem = vcsData[0][0] + self.pdata["VCS"] = vcsSystem + self.vcs = self.initVCS() + self.setDirty(True) + if ( + self.vcs is not None and + (self.vcs.vcsRegisteredState(self.ppath) != + self.vcs.canBeCommitted) + ): + self.pdata["VCS"] = 'None' + self.vcs = self.initVCS() + self.closeAct.setEnabled(True) + self.saveasAct.setEnabled(True) + self.actGrp2.setEnabled(True) + self.propsAct.setEnabled(True) + self.userPropsAct.setEnabled(True) + self.filetypesAct.setEnabled(True) + self.lexersAct.setEnabled(True) + self.sessActGrp.setEnabled(True) + self.dbgActGrp.setEnabled(True) + self.menuDebuggerAct.setEnabled(True) + self.menuSessionAct.setEnabled(True) + self.menuCheckAct.setEnabled(True) + self.menuShowAct.setEnabled(True) + self.menuDiagramAct.setEnabled(True) + self.menuApidocAct.setEnabled(True) + self.menuPackagersAct.setEnabled(True) + self.pluginGrp.setEnabled( + self.pdata["PROJECTTYPE"] in ["E6Plugin"]) + self.addLanguageAct.setEnabled( + bool(self.pdata["TRANSLATIONPATTERN"])) + self.makeGrp.setEnabled( + self.pdata["MAKEPARAMS"]["MakeEnabled"]) + self.menuMakeAct.setEnabled( + self.pdata["MAKEPARAMS"]["MakeEnabled"]) + + # open a project debugger properties file being quiet + # about errors + if Preferences.getProject("AutoLoadDbgProperties"): + self.__readDebugProperties(True) + + self.__model.projectOpened() + self.projectOpenedHooks.emit() + self.projectOpened.emit() if Preferences.getProject("SearchNewFiles"): self.__doSearchNewFiles() @@ -3050,8 +3040,6 @@ self.vcsStatusMonitorInfo) self.vcs.vcsStatusChanged.connect( self.__vcsStatusChanged) - else: - QApplication.restoreOverrideCursor() def reopenProject(self): """ @@ -4774,10 +4762,11 @@ if not self.isOpen(): return - name = self.getRelativePath(fullname) - self.prepareRepopulateItem.emit(name) - self.__model.repopulateItem(name) - self.completeRepopulateItem.emit(name) + with E5OverrideCursor(): + name = self.getRelativePath(fullname) + self.prepareRepopulateItem.emit(name) + self.__model.repopulateItem(name) + self.completeRepopulateItem.emit(name) ############################################################## ## Below is the VCS interface @@ -4825,25 +4814,26 @@ if not vcsExists: if override: # override failed, revert to original - QApplication.restoreOverrideCursor() + with E5OverridenCursor(): + E5MessageBox.critical( + self.ui, + self.tr("Version Control System"), + self.tr( + "<p>The selected VCS <b>{0}</b> could not be" + " found. <br/>Reverting override.</p><p>{1}" + "</p>") + .format(vcsSystem, msg)) + self.pudata["VCSOVERRIDE"] = "" + return self.initVCS(nooverride=True) + + with E5OverridenCursor(): E5MessageBox.critical( self.ui, self.tr("Version Control System"), self.tr( "<p>The selected VCS <b>{0}</b> could not be" - " found. <br/>Reverting override.</p><p>{1}</p>") - .format(vcsSystem, msg)) - self.pudata["VCSOVERRIDE"] = "" - return self.initVCS(nooverride=True) - - QApplication.restoreOverrideCursor() - E5MessageBox.critical( - self.ui, - self.tr("Version Control System"), - self.tr( - "<p>The selected VCS <b>{0}</b> could not be" - " found.<br/>Disabling version control.</p>" - "<p>{1}</p>").format(vcsSystem, msg)) + " found.<br/>Disabling version control.</p>" + "<p>{1}</p>").format(vcsSystem, msg)) vcs = None if forProject: self.pdata["VCS"] = 'None' @@ -5843,3 +5833,6 @@ "CompressionDisable": False, "PathPrefix": "", } + +# +# eflag: noqa = M601