src/eric7/MultiProject/MultiProject.py

branch
eric7
changeset 9971
773ad1f1ed22
parent 9695
ad962e9b904d
child 9972
68ac01294544
equal deleted inserted replaced
9970:c3686b43f76b 9971:773ad1f1ed22
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)
333 332
334 # step 3: add the project entry 333 # step 3: add the project entry
335 project = { 334 project = {
336 "name": name, 335 "name": name,
337 "file": filename, 336 "file": filename,
338 "master": isMaster, 337 "master": isMain,
339 "description": description, 338 "description": description,
340 "category": category, 339 "category": category,
341 "uid": uid, 340 "uid": uid,
342 } 341 }
343 self.__projects[uid] = project 342 self.__projects[uid] = project
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

eric ide

mercurial