8 """ |
8 """ |
9 |
9 |
10 import os |
10 import os |
11 import shutil |
11 import shutil |
12 import contextlib |
12 import contextlib |
|
13 import pathlib |
13 |
14 |
14 from PyQt6.QtCore import ( |
15 from PyQt6.QtCore import ( |
15 pyqtSignal, pyqtSlot, QFileInfo, QFile, QIODevice, QObject, QUuid |
16 pyqtSignal, pyqtSlot, QFile, QIODevice, QObject, QUuid |
16 ) |
17 ) |
17 from PyQt6.QtWidgets import QMenu, QDialog, QToolBar |
18 from PyQt6.QtWidgets import QMenu, QDialog, QToolBar |
18 |
19 |
19 from Globals import recentNameMultiProject |
20 from Globals import recentNameMultiProject |
20 |
21 |
115 self.recent = [] |
116 self.recent = [] |
116 Preferences.Prefs.rsettings.sync() |
117 Preferences.Prefs.rsettings.sync() |
117 rp = Preferences.Prefs.rsettings.value(recentNameMultiProject) |
118 rp = Preferences.Prefs.rsettings.value(recentNameMultiProject) |
118 if rp is not None: |
119 if rp is not None: |
119 for f in rp: |
120 for f in rp: |
120 if QFileInfo(f).exists(): |
121 if pathlib.Path(f).exists(): |
121 self.recent.append(f) |
122 self.recent.append(f) |
122 |
123 |
123 def __saveRecent(self): |
124 def __saveRecent(self): |
124 """ |
125 """ |
125 Private method to save the list of recently opened filenames. |
126 Private method to save the list of recently opened filenames. |
606 self.tr("Multi Project Files (*.emj)"), |
607 self.tr("Multi Project Files (*.emj)"), |
607 defaultFilter, |
608 defaultFilter, |
608 EricFileDialog.DontConfirmOverwrite) |
609 EricFileDialog.DontConfirmOverwrite) |
609 |
610 |
610 if fn: |
611 if fn: |
611 ext = QFileInfo(fn).suffix() |
612 fpath = pathlib.Path(fn) |
612 if not ext: |
613 if not fpath.suffix: |
613 ex = selectedFilter.split("(*")[1].split(")")[0] |
614 ex = selectedFilter.split("(*")[1].split(")")[0] |
614 if ex: |
615 if ex: |
615 fn += ex |
616 fpath = fpath.with_suffix(ex) |
616 if QFileInfo(fn).exists(): |
617 if fpath.exists(): |
617 res = EricMessageBox.yesNo( |
618 res = EricMessageBox.yesNo( |
618 self.parent(), |
619 self.parent(), |
619 self.tr("Save File"), |
620 self.tr("Save File"), |
620 self.tr("<p>The file <b>{0}</b> already exists." |
621 self.tr("<p>The file <b>{0}</b> already exists." |
621 " Overwrite it?</p>").format(fn), |
622 " Overwrite it?</p>").format(fn), |
622 icon=EricMessageBox.Warning) |
623 icon=EricMessageBox.Warning) |
623 if not res: |
624 if not res: |
624 return False |
625 return False |
625 |
626 |
626 self.name = QFileInfo(fn).baseName() |
627 self.name = fpath.stem() |
627 self.__writeMultiProject(fn) |
628 self.__writeMultiProject(str(fpath)) |
628 |
629 |
629 self.multiProjectClosed.emit() |
630 self.multiProjectClosed.emit() |
630 self.multiProjectOpened.emit() |
631 self.multiProjectOpened.emit() |
631 return True |
632 return True |
632 else: |
633 else: |
892 act = self.recentMenu.addAction( |
893 act = self.recentMenu.addAction( |
893 formatStr.format( |
894 formatStr.format( |
894 idx, |
895 idx, |
895 Utilities.compactPath(rp, self.ui.maxMenuFilePathLen))) |
896 Utilities.compactPath(rp, self.ui.maxMenuFilePathLen))) |
896 act.setData(rp) |
897 act.setData(rp) |
897 act.setEnabled(QFileInfo(rp).exists()) |
898 act.setEnabled(pathlib.Path(rp).exists()) |
898 |
899 |
899 self.recentMenu.addSeparator() |
900 self.recentMenu.addSeparator() |
900 self.recentMenu.addAction(self.tr('&Clear'), self.clearRecent) |
901 self.recentMenu.addAction(self.tr('&Clear'), self.clearRecent) |
901 |
902 |
902 def __openRecent(self, act): |
903 def __openRecent(self, act): |