97 self.opened = False |
97 self.opened = False |
98 self.__projects = {} |
98 self.__projects = {} |
99 # dict of project info keyed by 'uid'; each info entry is a dictionary |
99 # dict of project info keyed by 'uid'; each info entry is a dictionary |
100 # 'name' : name of the project |
100 # 'name' : name of the project |
101 # 'file' : project file name |
101 # 'file' : project file name |
102 # 'master' : flag indicating the master |
102 # 'master' : flag indicating the main project |
103 # project |
|
104 # 'description' : description of the project |
103 # 'description' : description of the project |
105 # 'category' : name of the group |
104 # 'category' : name of the group |
106 # 'uid' : unique identifier |
105 # 'uid' : unique identifier |
107 self.categories = [] |
106 self.categories = [] |
108 |
107 |
313 startdir = Preferences.getMultiProject("Workspace") |
312 startdir = Preferences.getMultiProject("Workspace") |
314 dlg = AddProjectDialog( |
313 dlg = AddProjectDialog( |
315 self.ui, startdir=startdir, categories=self.categories, category=category |
314 self.ui, startdir=startdir, categories=self.categories, category=category |
316 ) |
315 ) |
317 if dlg.exec() == QDialog.DialogCode.Accepted: |
316 if dlg.exec() == QDialog.DialogCode.Accepted: |
318 name, filename, isMaster, description, category, uid = dlg.getData() |
317 name, filename, isMain, description, category, uid = dlg.getData() |
319 |
318 |
320 # step 1: check, if project was already added |
319 # step 1: check, if project was already added |
321 for project in self.__projects.values(): |
320 for project in self.__projects.values(): |
322 if project["file"] == filename: |
321 if project["file"] == filename: |
323 return |
322 return |
324 |
323 |
325 # step 2: check, if master should be changed |
324 # step 2: check, if main should be changed |
326 if isMaster: |
325 if isMain: |
327 for project in self.__projects.values(): |
326 for project in self.__projects.values(): |
328 if project["master"]: |
327 if project["master"]: |
329 project["master"] = False |
328 project["master"] = False |
330 self.projectDataChanged.emit(project) |
329 self.projectDataChanged.emit(project) |
331 self.setDirty(True) |
330 self.setDirty(True) |
403 """ |
402 """ |
404 Public method to change the data of a project entry. |
403 Public method to change the data of a project entry. |
405 |
404 |
406 @param pro dictionary with the project data (string) |
405 @param pro dictionary with the project data (string) |
407 """ |
406 """ |
408 # step 1: check, if master should be changed |
407 # step 1: check, if main should be changed |
409 if pro["master"]: |
408 if pro["master"]: |
410 for project in self.__projects.values(): |
409 for project in self.__projects.values(): |
411 if project["master"]: |
410 if project["master"]: |
412 if project["uid"] != pro["uid"]: |
411 if project["uid"] != pro["uid"]: |
413 project["master"] = False |
412 project["master"] = False |
515 self.setDirty(True) |
514 self.setDirty(True) |
516 self.multiProjectPropertiesChanged.emit() |
515 self.multiProjectPropertiesChanged.emit() |
517 |
516 |
518 @pyqtSlot() |
517 @pyqtSlot() |
519 @pyqtSlot(str) |
518 @pyqtSlot(str) |
520 def openMultiProject(self, fn=None, openMaster=True): |
519 def openMultiProject(self, fn=None, openMain=True): |
521 """ |
520 """ |
522 Public slot to open a multi project. |
521 Public slot to open a multi project. |
523 |
522 |
524 @param fn optional filename of the multi project file to be |
523 @param fn optional filename of the multi project file to be |
525 read |
524 read |
526 @type str |
525 @type str |
527 @param openMaster flag indicating, that the master project |
526 @param openMain flag indicating, that the main project |
528 should be opened depending on the configuration |
527 should be opened depending on the configuration |
529 @type bool |
528 @type bool |
530 """ |
529 """ |
531 if not self.checkDirty(): |
530 if not self.checkDirty(): |
532 return |
531 return |
556 self.addProjectAct.setEnabled(True) |
555 self.addProjectAct.setEnabled(True) |
557 self.propsAct.setEnabled(True) |
556 self.propsAct.setEnabled(True) |
558 |
557 |
559 self.multiProjectOpened.emit() |
558 self.multiProjectOpened.emit() |
560 |
559 |
561 if openMaster and Preferences.getMultiProject( |
560 if openMain and Preferences.getMultiProject( |
562 "OpenMasterAutomatically" |
561 "OpenMasterAutomatically" |
563 ): |
562 ): |
564 self.__openMasterProject(False) |
563 self.__openMainProject(False) |
565 |
564 |
566 def saveMultiProject(self): |
565 def saveMultiProject(self): |
567 """ |
566 """ |
568 Public slot to save the current multi project. |
567 Public slot to save the current multi project. |
569 |
568 |
998 @param filename filename of the project file (string) |
997 @param filename filename of the project file (string) |
999 """ |
998 """ |
1000 self.projectObject.openProject(filename) |
999 self.projectObject.openProject(filename) |
1001 self.projectOpened.emit(filename) |
1000 self.projectOpened.emit(filename) |
1002 |
1001 |
1003 def __openMasterProject(self, reopen=True): |
1002 def __openMainProject(self, reopen=True): |
1004 """ |
1003 """ |
1005 Private slot to open the master project. |
1004 Private slot to open the main project. |
1006 |
1005 |
1007 @param reopen flag indicating, that the master project should be |
1006 @param reopen flag indicating, that the main project should be |
1008 reopened, if it has been opened already (boolean) |
1007 reopened, if it has been opened already (boolean) |
1009 """ |
1008 """ |
1010 for project in self.__projects.values(): |
1009 for project in self.__projects.values(): |
1011 if project["master"] and ( |
1010 if project["master"] and ( |
1012 reopen |
1011 reopen |
1014 or self.projectObject.getProjectFile() != project["file"] |
1013 or self.projectObject.getProjectFile() != project["file"] |
1015 ): |
1014 ): |
1016 self.openProject(project["file"]) |
1015 self.openProject(project["file"]) |
1017 return |
1016 return |
1018 |
1017 |
1019 def getMasterProjectFile(self): |
1018 def getMainProjectFile(self): |
1020 """ |
1019 """ |
1021 Public method to get the filename of the master project. |
1020 Public method to get the filename of the main project. |
1022 |
1021 |
1023 @return name of the master project file (string) |
1022 @return name of the main project file |
|
1023 @rtype str |
1024 """ |
1024 """ |
1025 for project in self.__projects: |
1025 for project in self.__projects: |
1026 if project["master"]: |
1026 if project["master"]: |
1027 return project["file"] |
1027 return project["file"] |
1028 |
1028 |