--- a/src/eric7/Project/PropertiesDialog.py Sun Feb 25 11:57:25 2024 +0100 +++ b/src/eric7/Project/PropertiesDialog.py Sun Feb 25 12:51:06 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 = [] @@ -184,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) @@ -193,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 @@ -383,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() ): @@ -402,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): """ @@ -429,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.