src/eric7/Project/PropertiesDialog.py

branch
eric7
changeset 9610
b45bccbdf331
parent 9514
2b104ad132a4
child 9624
b47dfa7a137d
equal deleted inserted replaced
9609:c2f9c10c47cc 9610:b45bccbdf331
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 """
398 ) 459 )
399 460
400 self.project.setProjectData( 461 self.project.setProjectData(
401 self.embeddedVenvCheckBox.isChecked(), dataKey="EMBEDDED_VENV" 462 self.embeddedVenvCheckBox.isChecked(), dataKey="EMBEDDED_VENV"
402 ) 463 )
464
465 if self.__fileTypesDict:
466 self.project.setProjectData(self.__fileTypesDict, dataKey="FILETYPES")

eric ide

mercurial