src/eric7/Project/PropertiesDialog.py

branch
eric7
changeset 10608
43dd9d48c4d6
parent 10606
db294fc15954
child 10616
4aa36fcd4a30
child 10632
1109854f15f9
diff -r 96cb59c9c3f4 -r 43dd9d48c4d6 src/eric7/Project/PropertiesDialog.py
--- 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.

eric ide

mercurial