13 import shutil |
13 import shutil |
14 |
14 |
15 from PyQt6.QtCore import QFile, QIODevice, QObject, QUuid, pyqtSignal, pyqtSlot |
15 from PyQt6.QtCore import QFile, QIODevice, QObject, QUuid, pyqtSignal, pyqtSlot |
16 from PyQt6.QtWidgets import QDialog, QMenu, QToolBar |
16 from PyQt6.QtWidgets import QDialog, QMenu, QToolBar |
17 |
17 |
18 from eric7 import Preferences, Utilities |
18 from eric7 import Preferences |
19 from eric7.EricGui import EricPixmapCache |
19 from eric7.EricGui import EricPixmapCache |
20 from eric7.EricGui.EricAction import EricAction, createActionGroup |
20 from eric7.EricGui.EricAction import EricAction, createActionGroup |
21 from eric7.EricGui.EricOverrideCursor import EricOverrideCursor |
21 from eric7.EricGui.EricOverrideCursor import EricOverrideCursor |
22 from eric7.EricWidgets import EricFileDialog, EricMessageBox, EricPathPickerDialog |
22 from eric7.EricWidgets import EricFileDialog, EricMessageBox, EricPathPickerDialog |
23 from eric7.EricWidgets.EricPathPickerDialog import EricPathPickerModes |
23 from eric7.EricWidgets.EricPathPickerDialog import EricPathPickerModes |
24 from eric7.EricXML.MultiProjectReader import MultiProjectReader |
24 from eric7.EricXML.MultiProjectReader import MultiProjectReader |
25 from eric7.Globals import recentNameMultiProject |
25 from eric7.Globals import recentNameMultiProject |
|
26 from eric7.SystemUtilities import FileSystemUtilities, OSUtilities |
26 from eric7.UI import Config |
27 from eric7.UI import Config |
27 |
28 |
28 from .MultiProjectFile import MultiProjectFile |
29 from .MultiProjectFile import MultiProjectFile |
29 |
30 |
30 |
31 |
533 |
534 |
534 if fn is None: |
535 if fn is None: |
535 fn = EricFileDialog.getOpenFileName( |
536 fn = EricFileDialog.getOpenFileName( |
536 self.parent(), |
537 self.parent(), |
537 self.tr("Open Multi Project"), |
538 self.tr("Open Multi Project"), |
538 Preferences.getMultiProject("Workspace") or Utilities.getHomeDir(), |
539 Preferences.getMultiProject("Workspace") or OSUtilities.getHomeDir(), |
539 self.tr( |
540 self.tr( |
540 "Multi Project Files (*.emj);;" |
541 "Multi Project Files (*.emj);;" |
541 "XML Multi Project Files (*.e5m *.e4m)" |
542 "XML Multi Project Files (*.e5m *.e4m)" |
542 ), |
543 ), |
543 ) |
544 ) |
593 """ |
594 """ |
594 defaultFilter = self.tr("Multi Project Files (*.emj)") |
595 defaultFilter = self.tr("Multi Project Files (*.emj)") |
595 defaultPath = ( |
596 defaultPath = ( |
596 self.ppath |
597 self.ppath |
597 if self.ppath |
598 if self.ppath |
598 else (Preferences.getMultiProject("Workspace") or Utilities.getHomeDir()) |
599 else (Preferences.getMultiProject("Workspace") or OSUtilities.getHomeDir()) |
599 ) |
600 ) |
600 fn, selectedFilter = EricFileDialog.getSaveFileNameAndFilter( |
601 fn, selectedFilter = EricFileDialog.getSaveFileNameAndFilter( |
601 self.parent(), |
602 self.parent(), |
602 self.tr("Save Multiproject"), |
603 self.tr("Save Multiproject"), |
603 defaultPath, |
604 defaultPath, |
905 """ |
906 """ |
906 Private method to synchronize the list of recently opened multi |
907 Private method to synchronize the list of recently opened multi |
907 projects with the central store. |
908 projects with the central store. |
908 """ |
909 """ |
909 for recent in self.recent[:]: |
910 for recent in self.recent[:]: |
910 if Utilities.samepath(self.pfile, recent): |
911 if FileSystemUtilities.samepath(self.pfile, recent): |
911 self.recent.remove(recent) |
912 self.recent.remove(recent) |
912 self.recent.insert(0, self.pfile) |
913 self.recent.insert(0, self.pfile) |
913 maxRecent = Preferences.getProject("RecentNumber") |
914 maxRecent = Preferences.getProject("RecentNumber") |
914 if len(self.recent) > maxRecent: |
915 if len(self.recent) > maxRecent: |
915 self.recent = self.recent[:maxRecent] |
916 self.recent = self.recent[:maxRecent] |
925 |
926 |
926 for idx, rp in enumerate(self.recent, start=1): |
927 for idx, rp in enumerate(self.recent, start=1): |
927 formatStr = "&{0:d}. {1}" if idx < 10 else "{0:d}. {1}" |
928 formatStr = "&{0:d}. {1}" if idx < 10 else "{0:d}. {1}" |
928 act = self.recentMenu.addAction( |
929 act = self.recentMenu.addAction( |
929 formatStr.format( |
930 formatStr.format( |
930 idx, Utilities.compactPath(rp, self.ui.maxMenuFilePathLen) |
931 idx, FileSystemUtilities.compactPath(rp, self.ui.maxMenuFilePathLen) |
931 ) |
932 ) |
932 ) |
933 ) |
933 act.setData(rp) |
934 act.setData(rp) |
934 act.setEnabled(pathlib.Path(rp).exists()) |
935 act.setEnabled(pathlib.Path(rp).exists()) |
935 |
936 |