--- a/src/eric7/Project/PropertiesDialog.py Sat Feb 10 11:02:45 2024 +0100 +++ b/src/eric7/Project/PropertiesDialog.py Sun Mar 03 10:39:29 2024 +0100 @@ -67,17 +67,6 @@ self.makePropertiesDlg = None self.__fileTypesDict = {} - patterns = [] - for pattern, filetype in self.project.getProjectData( - dataKey="FILETYPES" - ).items(): - if filetype == "SOURCES": - patterns.append(pattern) - filters = self.tr("Source Files ({0});;All Files (*)").format( - " ".join(sorted(patterns)) - ) - self.mainscriptPicker.setFilters(filters) - self.languageComboBox.addItems(project.getProgrammingLanguages()) projectTypes = [] @@ -99,6 +88,7 @@ if not new: name = os.path.splitext(self.project.pfile)[0] self.nameEdit.setText(os.path.basename(name)) + self.nameEdit.setReadOnly(True) self.languageComboBox.setCurrentIndex( self.languageComboBox.findText( self.project.getProjectData(dataKey="PROGLANGUAGE") @@ -183,6 +173,8 @@ self.__origMixedFlag = self.mixedLanguageCheckBox.isChecked() self.__origProjectType = self.getProjectType() + self.__initFileTypesDict(force=True) + self.languageComboBox.currentTextChanged.connect(self.__initFileTypesDict) self.mixedLanguageCheckBox.stateChanged.connect(self.__initFileTypesDict) self.projectTypeComboBox.currentIndexChanged.connect(self.__initFileTypesDict) @@ -192,6 +184,23 @@ and self.dirPicker.text() not in self.__initPaths ) + def __setMainScriptPickerFilters(self): + """ + Private method to set the filters for the main script file picker. + """ + patterns = [] + for pattern, filetype in self.__fileTypesDict.items(): + if filetype == "SOURCES": + patterns.append(pattern) + filters = ( + self.tr("Source Files ({0});;All Files (*)").format( + " ".join(sorted(patterns)) + ) + if patterns + else self.tr("All Files (*)") + ) + self.mainscriptPicker.setFilters(filters) + def __populateLicenseComboBox(self): """ Private method to populate the license selector with the list of trove @@ -382,12 +391,16 @@ return os.path.abspath(self.dirPicker.text()) @pyqtSlot() - def __initFileTypesDict(self): + def __initFileTypesDict(self, force=False): """ Private slot to (re-)initialize the filetype dictionary. + + @param force flag indicating to force the initialization (defaults to False) + @type bool (optional) """ if ( - self.__origProgrammingLanguage != self.languageComboBox.currentText() + force + or self.__origProgrammingLanguage != self.languageComboBox.currentText() or self.__origMixedFlag != self.mixedLanguageCheckBox.isChecked() or self.__origProjectType != self.getProjectType() ): @@ -401,6 +414,8 @@ # all of the defining data was changed back to original self.__fileTypesDict = self.project.getProjectData(dataKey="FILETYPES") + self.__setMainScriptPickerFilters() + @pyqtSlot() def on_filetypesButton_clicked(self): """ @@ -428,6 +443,8 @@ if dlg.exec() == QDialog.DialogCode.Accepted: self.__fileTypesDict = dlg.getData() + self.__setMainScriptPickerFilters() + def storeData(self): """ Public method to store the entered/modified data. @@ -436,7 +453,7 @@ fn = self.nameEdit.text() if fn: self.project.name = fn - fn = "{0}.epj".format(fn) + fn = f"{fn}.epj" self.project.pfile = os.path.join(self.project.ppath, fn) else: self.project.pfile = ""