MultiProject/MultiProject.py

changeset 3545
4a0bbb2d5457
parent 3541
5c35f4f0ecf1
child 3546
adce5fd2d051
equal deleted inserted replaced
3544:431c842fd09a 3545:4a0bbb2d5457
97 # 'file' : project file name 97 # 'file' : project file name
98 # 'master' : flag indicating the master 98 # 'master' : flag indicating the master
99 # project 99 # project
100 # 'description' : description of the project 100 # 'description' : description of the project
101 # 'category' : name of the group 101 # 'category' : name of the group
102 # 'uid' : unique identifier
102 self.categories = [] 103 self.categories = []
103 104
104 def __loadRecent(self): 105 def __loadRecent(self):
105 """ 106 """
106 Private method to load the recently opened multi project filenames. 107 Private method to load the recently opened multi project filenames.
211 """ 212 """
212 return [c for c in self.categories if c] 213 return [c for c in self.categories if c]
213 214
214 def __readMultiProject(self, fn): 215 def __readMultiProject(self, fn):
215 """ 216 """
216 Private method to read in a multi project (.e4m) file. 217 Private method to read in a multi project (.e4m, .e5m) file.
217 218
218 @param fn filename of the multi project file to be read (string) 219 @param fn filename of the multi project file to be read (string)
219 @return flag indicating success 220 @return flag indicating success
220 """ 221 """
221 f = QFile(fn) 222 f = QFile(fn)
305 if not startdir: 306 if not startdir:
306 startdir = Preferences.getMultiProject("Workspace") 307 startdir = Preferences.getMultiProject("Workspace")
307 dlg = AddProjectDialog(self.ui, startdir=startdir, 308 dlg = AddProjectDialog(self.ui, startdir=startdir,
308 categories=self.categories) 309 categories=self.categories)
309 if dlg.exec_() == QDialog.Accepted: 310 if dlg.exec_() == QDialog.Accepted:
310 name, filename, isMaster, description, category = dlg.getData() 311 name, filename, isMaster, description, category, uid = \
312 dlg.getData()
311 313
312 # step 1: check, if project was already added 314 # step 1: check, if project was already added
313 for project in self.projects: 315 for project in self.projects:
314 if project['file'] == filename: 316 if project['file'] == filename:
315 return 317 return
328 'name': name, 330 'name': name,
329 'file': filename, 331 'file': filename,
330 'master': isMaster, 332 'master': isMaster,
331 'description': description, 333 'description': description,
332 'category': category, 334 'category': category,
335 'uid': uid,
333 } 336 }
334 self.projects.append(project) 337 self.projects.append(project)
335 if category not in self.categories: 338 if category not in self.categories:
336 self.categories.append(category) 339 self.categories.append(category)
337 self.projectAdded.emit(project) 340 self.projectAdded.emit(project)
345 """ 348 """
346 # step 1: check, if master should be changed 349 # step 1: check, if master should be changed
347 if pro['master']: 350 if pro['master']:
348 for project in self.projects: 351 for project in self.projects:
349 if project['master']: 352 if project['master']:
350 if project['file'] != pro['file']: 353 if project['uid'] != pro['uid']:
351 project['master'] = False 354 project['master'] = False
352 self.projectDataChanged.emit(project) 355 self.projectDataChanged.emit(project)
353 self.setDirty(True) 356 self.setDirty(True)
354 break 357 break
355 358
356 # step 2: change the entry 359 # step 2: change the entry
357 for project in self.projects: 360 for project in self.projects:
358 if project['file'] == pro['file']: 361 if project['uid'] == pro['uid']:
359 # project file name is not changeable via interface 362 # project UID is not changeable via interface
363 project['file'] = pro['file']
360 project['name'] = pro['name'] 364 project['name'] = pro['name']
361 project['master'] = pro['master'] 365 project['master'] = pro['master']
362 project['description'] = pro['description'] 366 project['description'] = pro['description']
363 project['category'] = pro['category'] 367 project['category'] = pro['category']
364 if project['category'] not in self.categories: 368 if project['category'] not in self.categories:
912 916
913 return None 917 return None
914 918
915 def getDependantProjectFiles(self): 919 def getDependantProjectFiles(self):
916 """ 920 """
917 Public method to get the filenames of the dependant projects. 921 Public method to get the filenames of the dependent projects.
918 922
919 @return names of the dependant project files (list of strings) 923 @return names of the dependent project files (list of strings)
920 """ 924 """
921 files = [] 925 files = []
922 for project in self.projects: 926 for project in self.projects:
923 if not project['master']: 927 if not project['master']:
924 files.append(project['file']) 928 files.append(project['file'])

eric ide

mercurial