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() |