33 def __init__(self, project, new=True, parent=None, name=None): |
33 def __init__(self, project, new=True, parent=None, name=None): |
34 """ |
34 """ |
35 Constructor |
35 Constructor |
36 |
36 |
37 @param project reference to the project object |
37 @param project reference to the project object |
|
38 @type Project |
38 @param new flag indicating the generation of a new project |
39 @param new flag indicating the generation of a new project |
39 @param parent parent widget of this dialog (QWidget) |
40 (defaults to True) |
40 @param name name of this dialog (string) |
41 @type bool (optional) |
|
42 @param parent parent widget of this dialog (defaults to None) |
|
43 @type QWidget (optional) |
|
44 @param name name of this dialog (defaults to None) |
|
45 @type str (optional) |
41 """ |
46 """ |
42 super().__init__(parent) |
47 super().__init__(parent) |
43 if name: |
48 if name: |
44 self.setObjectName(name) |
49 self.setObjectName(name) |
45 self.setupUi(self) |
50 self.setupUi(self) |
56 self.project = project |
61 self.project = project |
57 self.newProject = new |
62 self.newProject = new |
58 self.transPropertiesDlg = None |
63 self.transPropertiesDlg = None |
59 self.spellPropertiesDlg = None |
64 self.spellPropertiesDlg = None |
60 self.makePropertiesDlg = None |
65 self.makePropertiesDlg = None |
|
66 self.__fileTypesDict = {} |
61 |
67 |
62 patterns = [] |
68 patterns = [] |
63 for pattern, filetype in self.project.getProjectData( |
69 for pattern, filetype in self.project.getProjectData( |
64 dataKey="FILETYPES" |
70 dataKey="FILETYPES" |
65 ).items(): |
71 ).items(): |
168 self.vcsLabel.hide() |
174 self.vcsLabel.hide() |
169 self.vcsInfoButton.hide() |
175 self.vcsInfoButton.hide() |
170 if not self.project.vcsSoftwareAvailable(): |
176 if not self.project.vcsSoftwareAvailable(): |
171 self.vcsCheckBox.hide() |
177 self.vcsCheckBox.hide() |
172 |
178 |
|
179 self.__origProgrammingLanguage = self.languageComboBox.currentText() |
|
180 self.__origMixedFlag = self.mixedLanguageCheckBox.isChecked() |
|
181 self.__origProjectType = self.getProjectType() |
|
182 |
|
183 self.languageComboBox.currentTextChanged.connect(self.__initFileTypesDict) |
|
184 self.mixedLanguageCheckBox.stateChanged.connect(self.__initFileTypesDict) |
|
185 self.projectTypeComboBox.currentIndexChanged.connect(self.__initFileTypesDict) |
|
186 |
173 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled( |
187 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled( |
174 bool(self.dirPicker.text()) |
188 bool(self.dirPicker.text()) |
175 and self.dirPicker.text() not in self.__initPaths |
189 and self.dirPicker.text() not in self.__initPaths |
176 ) |
190 ) |
177 |
191 |
331 Public method to get the project path. |
345 Public method to get the project path. |
332 |
346 |
333 @return data of the project directory edit (string) |
347 @return data of the project directory edit (string) |
334 """ |
348 """ |
335 return os.path.abspath(self.dirPicker.text()) |
349 return os.path.abspath(self.dirPicker.text()) |
|
350 |
|
351 @pyqtSlot() |
|
352 def __initFileTypesDict(self): |
|
353 """ |
|
354 Private slot to (re-)initialize the filetype dictionary. |
|
355 """ |
|
356 if ( |
|
357 self.__origProgrammingLanguage != self.languageComboBox.currentText() |
|
358 or self.__origMixedFlag != self.mixedLanguageCheckBox.isChecked() |
|
359 or self.__origProjectType != self.getProjectType() |
|
360 ): |
|
361 # any of the defining data got changed |
|
362 self.__fileTypesDict = self.project.defaultFileTypes( |
|
363 self.languageComboBox.currentText(), |
|
364 self.mixedLanguageCheckBox.isChecked(), |
|
365 self.getProjectType(), |
|
366 ) |
|
367 else: |
|
368 # all of the defining data was changed back to original |
|
369 self.__fileTypesDict = self.project.getProjectData(dataKey="FILETYPES") |
|
370 |
|
371 @pyqtSlot() |
|
372 def on_filetypesButton_clicked(self): |
|
373 """ |
|
374 Private slot to open a dialog to edit the filetype associations. |
|
375 """ |
|
376 from .FiletypeAssociationDialog import FiletypeAssociationDialog |
|
377 |
|
378 if not self.__fileTypesDict: |
|
379 self.__fileTypesDict = self.project.getProjectData(dataKey="FILETYPES") |
|
380 if ( |
|
381 not self.__fileTypesDict |
|
382 or self.__origProgrammingLanguage != self.languageComboBox.currentText() |
|
383 or self.__origMixedFlag != self.mixedLanguageCheckBox.isChecked() |
|
384 or self.__origProjectType != self.getProjectType() |
|
385 ): |
|
386 # the associations were not defined yet or any of the defining data got |
|
387 # changed |
|
388 self.__fileTypesDict = self.project.defaultFileTypes( |
|
389 self.languageComboBox.currentText(), |
|
390 self.mixedLanguageCheckBox.isChecked(), |
|
391 self.getProjectType(), |
|
392 ) |
|
393 |
|
394 dlg = FiletypeAssociationDialog(self.project, self.__fileTypesDict) |
|
395 if dlg.exec() == QDialog.DialogCode.Accepted: |
|
396 self.__fileTypesDict = dlg.getData() |
336 |
397 |
337 def storeData(self): |
398 def storeData(self): |
338 """ |
399 """ |
339 Public method to store the entered/modified data. |
400 Public method to store the entered/modified data. |
340 """ |
401 """ |