eric6/MultiProject/MultiProject.py

changeset 7254
f00d825fbdb3
parent 7229
53054eb5b15a
child 7360
9190402e4505
equal deleted inserted replaced
7253:50dbe65a1334 7254:f00d825fbdb3
9 9
10 10
11 import os 11 import os
12 import shutil 12 import shutil
13 13
14 from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QFileInfo, QFile, \ 14 from PyQt5.QtCore import (
15 QIODevice, QObject, QUuid 15 pyqtSignal, pyqtSlot, Qt, QFileInfo, QFile, QIODevice, QObject, QUuid
16 )
16 from PyQt5.QtGui import QCursor 17 from PyQt5.QtGui import QCursor
17 from PyQt5.QtWidgets import QMenu, QApplication, QDialog, QToolBar 18 from PyQt5.QtWidgets import QMenu, QApplication, QDialog, QToolBar
18 19
19 from Globals import recentNameMultiProject 20 from Globals import recentNameMultiProject
20 21
199 def __extractCategories(self): 200 def __extractCategories(self):
200 """ 201 """
201 Private slot to extract the categories used in the project definitions. 202 Private slot to extract the categories used in the project definitions.
202 """ 203 """
203 for project in self.__projects.values(): 204 for project in self.__projects.values():
204 if project['category'] and \ 205 if (
205 project['category'] not in self.categories: 206 project['category'] and
207 project['category'] not in self.categories
208 ):
206 self.categories.append(project['category']) 209 self.categories.append(project['category'])
207 210
208 def getCategories(self): 211 def getCategories(self):
209 """ 212 """
210 Public method to get the list of defined categories. 213 Public method to get the list of defined categories.
269 272
270 f = QFile(fn) 273 f = QFile(fn)
271 if f.open(QIODevice.WriteOnly): 274 if f.open(QIODevice.WriteOnly):
272 from E5XML.MultiProjectWriter import MultiProjectWriter 275 from E5XML.MultiProjectWriter import MultiProjectWriter
273 MultiProjectWriter( 276 MultiProjectWriter(
274 f, self, os.path.splitext(os.path.basename(fn))[0])\ 277 f,
275 .writeXML() 278 self, os.path.splitext(os.path.basename(fn))[0]
279 ).writeXML()
276 res = True 280 res = True
277 else: 281 else:
278 E5MessageBox.critical( 282 E5MessageBox.critical(
279 self.ui, 283 self.ui,
280 self.tr("Save multiproject file"), 284 self.tr("Save multiproject file"),
319 if not startdir: 323 if not startdir:
320 startdir = Preferences.getMultiProject("Workspace") 324 startdir = Preferences.getMultiProject("Workspace")
321 dlg = AddProjectDialog(self.ui, startdir=startdir, 325 dlg = AddProjectDialog(self.ui, startdir=startdir,
322 categories=self.categories, category=category) 326 categories=self.categories, category=category)
323 if dlg.exec_() == QDialog.Accepted: 327 if dlg.exec_() == QDialog.Accepted:
324 name, filename, isMaster, description, category, uid = \ 328 name, filename, isMaster, description, category, uid = (
325 dlg.getData() 329 dlg.getData()
330 )
326 331
327 # step 1: check, if project was already added 332 # step 1: check, if project was already added
328 for project in self.__projects.values(): 333 for project in self.__projects.values():
329 if project['file'] == filename: 334 if project['file'] == filename:
330 return 335 return
373 " already):"), 378 " already):"),
374 mode=E5PathPickerModes.DirectoryMode, 379 mode=E5PathPickerModes.DirectoryMode,
375 path=srcProjectDirectory, 380 path=srcProjectDirectory,
376 defaultDirectory=startdir, 381 defaultDirectory=startdir,
377 ) 382 )
378 if ok and dstProjectDirectory and \ 383 if (
379 not os.path.exists(dstProjectDirectory): 384 ok and
385 dstProjectDirectory and
386 not os.path.exists(dstProjectDirectory)
387 ):
380 try: 388 try:
381 shutil.copytree(srcProjectDirectory, dstProjectDirectory) 389 shutil.copytree(srcProjectDirectory, dstProjectDirectory)
382 except shutil.Error: 390 except shutil.Error:
383 E5MessageBox.critical( 391 E5MessageBox.critical(
384 self.parent(), 392 self.parent(),
592 """ 600 """
593 defaultFilter = self.tr("Multiproject Files (*.e5m)") 601 defaultFilter = self.tr("Multiproject Files (*.e5m)")
594 if self.ppath: 602 if self.ppath:
595 defaultPath = self.ppath 603 defaultPath = self.ppath
596 else: 604 else:
597 defaultPath = Preferences.getMultiProject("Workspace") or \ 605 defaultPath = (
606 Preferences.getMultiProject("Workspace") or
598 Utilities.getHomeDir() 607 Utilities.getHomeDir()
608 )
599 fn, selectedFilter = E5FileDialog.getSaveFileNameAndFilter( 609 fn, selectedFilter = E5FileDialog.getSaveFileNameAndFilter(
600 self.parent(), 610 self.parent(),
601 self.tr("Save multiproject as"), 611 self.tr("Save multiproject as"),
602 defaultPath, 612 defaultPath,
603 self.tr("Multiproject Files (*.e5m)"), 613 self.tr("Multiproject Files (*.e5m)"),
975 @param reopen flag indicating, that the master project should be 985 @param reopen flag indicating, that the master project should be
976 reopened, if it has been opened already (boolean) 986 reopened, if it has been opened already (boolean)
977 """ 987 """
978 for project in self.__projects.values(): 988 for project in self.__projects.values():
979 if project['master']: 989 if project['master']:
980 if reopen or \ 990 if (
981 not self.projectObject.isOpen() or \ 991 reopen or
982 self.projectObject.getProjectFile() != project['file']: 992 not self.projectObject.isOpen() or
993 self.projectObject.getProjectFile() != project['file']
994 ):
983 self.openProject(project['file']) 995 self.openProject(project['file'])
984 return 996 return
985 997
986 def getMasterProjectFile(self): 998 def getMasterProjectFile(self):
987 """ 999 """

eric ide

mercurial