src/eric7/Project/PropertiesDialog.py

branch
eric7-maintenance
changeset 10616
4aa36fcd4a30
parent 10460
3b34efa2857c
parent 10608
43dd9d48c4d6
child 10814
ba20efe10336
equal deleted inserted replaced
10558:e3381757d40d 10616:4aa36fcd4a30
65 self.transPropertiesDlg = None 65 self.transPropertiesDlg = None
66 self.spellPropertiesDlg = None 66 self.spellPropertiesDlg = None
67 self.makePropertiesDlg = None 67 self.makePropertiesDlg = None
68 self.__fileTypesDict = {} 68 self.__fileTypesDict = {}
69 69
70 patterns = []
71 for pattern, filetype in self.project.getProjectData(
72 dataKey="FILETYPES"
73 ).items():
74 if filetype == "SOURCES":
75 patterns.append(pattern)
76 filters = self.tr("Source Files ({0});;All Files (*)").format(
77 " ".join(sorted(patterns))
78 )
79 self.mainscriptPicker.setFilters(filters)
80
81 self.languageComboBox.addItems(project.getProgrammingLanguages()) 70 self.languageComboBox.addItems(project.getProgrammingLanguages())
82 71
83 projectTypes = [] 72 projectTypes = []
84 for projectTypeItem in project.getProjectTypes().items(): 73 for projectTypeItem in project.getProjectTypes().items():
85 projectTypes.append((projectTypeItem[1], projectTypeItem[0])) 74 projectTypes.append((projectTypeItem[1], projectTypeItem[0]))
97 self.__populateLicenseComboBox() 86 self.__populateLicenseComboBox()
98 87
99 if not new: 88 if not new:
100 name = os.path.splitext(self.project.pfile)[0] 89 name = os.path.splitext(self.project.pfile)[0]
101 self.nameEdit.setText(os.path.basename(name)) 90 self.nameEdit.setText(os.path.basename(name))
91 self.nameEdit.setReadOnly(True)
102 self.languageComboBox.setCurrentIndex( 92 self.languageComboBox.setCurrentIndex(
103 self.languageComboBox.findText( 93 self.languageComboBox.findText(
104 self.project.getProjectData(dataKey="PROGLANGUAGE") 94 self.project.getProjectData(dataKey="PROGLANGUAGE")
105 ) 95 )
106 ) 96 )
181 171
182 self.__origProgrammingLanguage = self.languageComboBox.currentText() 172 self.__origProgrammingLanguage = self.languageComboBox.currentText()
183 self.__origMixedFlag = self.mixedLanguageCheckBox.isChecked() 173 self.__origMixedFlag = self.mixedLanguageCheckBox.isChecked()
184 self.__origProjectType = self.getProjectType() 174 self.__origProjectType = self.getProjectType()
185 175
176 self.__initFileTypesDict(force=True)
177
186 self.languageComboBox.currentTextChanged.connect(self.__initFileTypesDict) 178 self.languageComboBox.currentTextChanged.connect(self.__initFileTypesDict)
187 self.mixedLanguageCheckBox.stateChanged.connect(self.__initFileTypesDict) 179 self.mixedLanguageCheckBox.stateChanged.connect(self.__initFileTypesDict)
188 self.projectTypeComboBox.currentIndexChanged.connect(self.__initFileTypesDict) 180 self.projectTypeComboBox.currentIndexChanged.connect(self.__initFileTypesDict)
189 181
190 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled( 182 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled(
191 bool(self.dirPicker.text()) 183 bool(self.dirPicker.text())
192 and self.dirPicker.text() not in self.__initPaths 184 and self.dirPicker.text() not in self.__initPaths
193 ) 185 )
186
187 def __setMainScriptPickerFilters(self):
188 """
189 Private method to set the filters for the main script file picker.
190 """
191 patterns = []
192 for pattern, filetype in self.__fileTypesDict.items():
193 if filetype == "SOURCES":
194 patterns.append(pattern)
195 filters = (
196 self.tr("Source Files ({0});;All Files (*)").format(
197 " ".join(sorted(patterns))
198 )
199 if patterns
200 else self.tr("All Files (*)")
201 )
202 self.mainscriptPicker.setFilters(filters)
194 203
195 def __populateLicenseComboBox(self): 204 def __populateLicenseComboBox(self):
196 """ 205 """
197 Private method to populate the license selector with the list of trove 206 Private method to populate the license selector with the list of trove
198 license types. 207 license types.
380 @rtype str 389 @rtype str
381 """ 390 """
382 return os.path.abspath(self.dirPicker.text()) 391 return os.path.abspath(self.dirPicker.text())
383 392
384 @pyqtSlot() 393 @pyqtSlot()
385 def __initFileTypesDict(self): 394 def __initFileTypesDict(self, force=False):
386 """ 395 """
387 Private slot to (re-)initialize the filetype dictionary. 396 Private slot to (re-)initialize the filetype dictionary.
397
398 @param force flag indicating to force the initialization (defaults to False)
399 @type bool (optional)
388 """ 400 """
389 if ( 401 if (
390 self.__origProgrammingLanguage != self.languageComboBox.currentText() 402 force
403 or self.__origProgrammingLanguage != self.languageComboBox.currentText()
391 or self.__origMixedFlag != self.mixedLanguageCheckBox.isChecked() 404 or self.__origMixedFlag != self.mixedLanguageCheckBox.isChecked()
392 or self.__origProjectType != self.getProjectType() 405 or self.__origProjectType != self.getProjectType()
393 ): 406 ):
394 # any of the defining data got changed 407 # any of the defining data got changed
395 self.__fileTypesDict = self.project.defaultFileTypes( 408 self.__fileTypesDict = self.project.defaultFileTypes(
398 self.getProjectType(), 411 self.getProjectType(),
399 ) 412 )
400 else: 413 else:
401 # all of the defining data was changed back to original 414 # all of the defining data was changed back to original
402 self.__fileTypesDict = self.project.getProjectData(dataKey="FILETYPES") 415 self.__fileTypesDict = self.project.getProjectData(dataKey="FILETYPES")
416
417 self.__setMainScriptPickerFilters()
403 418
404 @pyqtSlot() 419 @pyqtSlot()
405 def on_filetypesButton_clicked(self): 420 def on_filetypesButton_clicked(self):
406 """ 421 """
407 Private slot to open a dialog to edit the filetype associations. 422 Private slot to open a dialog to edit the filetype associations.
426 441
427 dlg = FiletypeAssociationDialog(self.project, self.__fileTypesDict) 442 dlg = FiletypeAssociationDialog(self.project, self.__fileTypesDict)
428 if dlg.exec() == QDialog.DialogCode.Accepted: 443 if dlg.exec() == QDialog.DialogCode.Accepted:
429 self.__fileTypesDict = dlg.getData() 444 self.__fileTypesDict = dlg.getData()
430 445
446 self.__setMainScriptPickerFilters()
447
431 def storeData(self): 448 def storeData(self):
432 """ 449 """
433 Public method to store the entered/modified data. 450 Public method to store the entered/modified data.
434 """ 451 """
435 self.project.ppath = os.path.abspath(self.dirPicker.text()) 452 self.project.ppath = os.path.abspath(self.dirPicker.text())
436 fn = self.nameEdit.text() 453 fn = self.nameEdit.text()
437 if fn: 454 if fn:
438 self.project.name = fn 455 self.project.name = fn
439 fn = "{0}.epj".format(fn) 456 fn = f"{fn}.epj"
440 self.project.pfile = os.path.join(self.project.ppath, fn) 457 self.project.pfile = os.path.join(self.project.ppath, fn)
441 else: 458 else:
442 self.project.pfile = "" 459 self.project.pfile = ""
443 self.project.setProjectData(self.versionEdit.text(), dataKey="VERSION") 460 self.project.setProjectData(self.versionEdit.text(), dataKey="VERSION")
444 srcDir = self.srcDirPicker.text() 461 srcDir = self.srcDirPicker.text()

eric ide

mercurial