10 |
10 |
11 import os |
11 import os |
12 import shutil |
12 import shutil |
13 |
13 |
14 from PyQt5.QtCore import ( |
14 from PyQt5.QtCore import ( |
15 pyqtSignal, pyqtSlot, Qt, QFileInfo, QFile, QIODevice, QObject, QUuid |
15 pyqtSignal, pyqtSlot, QFileInfo, QFile, QIODevice, QObject, QUuid |
16 ) |
16 ) |
17 from PyQt5.QtGui import QCursor |
|
18 from PyQt5.QtWidgets import QMenu, QApplication, QDialog, QToolBar |
17 from PyQt5.QtWidgets import QMenu, QApplication, QDialog, QToolBar |
19 |
18 |
20 from Globals import recentNameMultiProject |
19 from Globals import recentNameMultiProject |
21 |
20 |
22 from E5Gui.E5Action import E5Action, createActionGroup |
21 from E5Gui.E5Action import E5Action, createActionGroup |
23 from E5Gui import E5FileDialog, E5MessageBox, E5PathPickerDialog |
22 from E5Gui import E5FileDialog, E5MessageBox, E5PathPickerDialog |
24 from E5Gui.E5PathPickerDialog import E5PathPickerModes |
23 from E5Gui.E5PathPickerDialog import E5PathPickerModes |
|
24 from E5Gui.E5OverrideCursor import E5OverrideCursor |
25 |
25 |
26 import UI.PixmapCache |
26 import UI.PixmapCache |
27 |
27 |
28 import Preferences |
28 import Preferences |
29 import Utilities |
29 import Utilities |
223 @param fn filename of the multi project file to be read (string) |
223 @param fn filename of the multi project file to be read (string) |
224 @return flag indicating success |
224 @return flag indicating success |
225 """ |
225 """ |
226 f = QFile(fn) |
226 f = QFile(fn) |
227 if f.open(QIODevice.ReadOnly): |
227 if f.open(QIODevice.ReadOnly): |
228 from E5XML.MultiProjectReader import MultiProjectReader |
228 with E5OverrideCursor(): |
229 reader = MultiProjectReader(f, self) |
229 from E5XML.MultiProjectReader import MultiProjectReader |
230 reader.readXML() |
230 reader = MultiProjectReader(f, self) |
231 f.close() |
231 reader.readXML() |
|
232 f.close() |
232 if reader.hasError(): |
233 if reader.hasError(): |
233 return False |
234 return False |
234 else: |
235 else: |
235 QApplication.restoreOverrideCursor() |
|
236 E5MessageBox.critical( |
236 E5MessageBox.critical( |
237 self.ui, |
237 self.ui, |
238 self.tr("Read multiproject file"), |
238 self.tr("Read multiproject file"), |
239 self.tr( |
239 self.tr( |
240 "<p>The multiproject file <b>{0}</b> could not be" |
240 "<p>The multiproject file <b>{0}</b> could not be" |
551 fn = None |
551 fn = None |
552 |
552 |
553 QApplication.processEvents() |
553 QApplication.processEvents() |
554 |
554 |
555 if fn is not None: |
555 if fn is not None: |
556 QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) |
|
557 QApplication.processEvents() |
|
558 self.closeMultiProject() |
556 self.closeMultiProject() |
559 if self.__readMultiProject(fn): |
557 ok = self.__readMultiProject(fn) |
|
558 if ok: |
560 self.opened = True |
559 self.opened = True |
561 QApplication.restoreOverrideCursor() |
|
562 QApplication.processEvents() |
|
563 |
560 |
564 self.closeAct.setEnabled(True) |
561 self.closeAct.setEnabled(True) |
565 self.saveasAct.setEnabled(True) |
562 self.saveasAct.setEnabled(True) |
566 self.addProjectAct.setEnabled(True) |
563 self.addProjectAct.setEnabled(True) |
567 self.propsAct.setEnabled(True) |
564 self.propsAct.setEnabled(True) |
569 self.multiProjectOpened.emit() |
566 self.multiProjectOpened.emit() |
570 |
567 |
571 if openMaster and Preferences.getMultiProject( |
568 if openMaster and Preferences.getMultiProject( |
572 "OpenMasterAutomatically"): |
569 "OpenMasterAutomatically"): |
573 self.__openMasterProject(False) |
570 self.__openMasterProject(False) |
574 else: |
|
575 QApplication.restoreOverrideCursor() |
|
576 |
571 |
577 def saveMultiProject(self): |
572 def saveMultiProject(self): |
578 """ |
573 """ |
579 Public slot to save the current multi project. |
574 Public slot to save the current multi project. |
580 |
575 |