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']) |