71 from eric7.EricWidgets.EricClickableLabel import EricClickableLabel |
69 from eric7.EricWidgets.EricClickableLabel import EricClickableLabel |
72 from eric7.EricWidgets.EricMainWindow import EricMainWindow |
70 from eric7.EricWidgets.EricMainWindow import EricMainWindow |
73 from eric7.EricWidgets.EricSingleApplication import EricSingleApplicationServer |
71 from eric7.EricWidgets.EricSingleApplication import EricSingleApplicationServer |
74 from eric7.EricWidgets.EricToolBarManager import EricToolBarManager |
72 from eric7.EricWidgets.EricToolBarManager import EricToolBarManager |
75 from eric7.EricWidgets.EricZoomWidget import EricZoomWidget |
73 from eric7.EricWidgets.EricZoomWidget import EricZoomWidget |
76 from eric7.EricXML.SessionReader import SessionReader |
|
77 from eric7.EricXML.TasksReader import TasksReader |
|
78 from eric7.Globals import getConfig |
74 from eric7.Globals import getConfig |
79 from eric7.MultiProject.MultiProject import MultiProject |
75 from eric7.MultiProject.MultiProject import MultiProject |
80 from eric7.PipInterface.Pip import Pip |
76 from eric7.PipInterface.Pip import Pip |
81 from eric7.PluginManager.PluginManager import PluginManager |
77 from eric7.PluginManager.PluginManager import PluginManager |
82 from eric7.PluginManager.PluginRepositoryDialog import PluginRepositoryDownloadCleanup |
78 from eric7.PluginManager.PluginRepositoryDialog import PluginRepositoryDownloadCleanup |
1658 try: |
1654 try: |
1659 ext = os.path.normcase(os.path.splitext(filename)[1]) |
1655 ext = os.path.normcase(os.path.splitext(filename)[1]) |
1660 except IndexError: |
1656 except IndexError: |
1661 ext = "" |
1657 ext = "" |
1662 |
1658 |
1663 if ext in (".epj", ".e4p"): |
1659 if ext in (".epj",): |
1664 self.project.openProject(filename) |
1660 self.project.openProject(filename) |
1665 opens += 1 |
1661 opens += 1 |
1666 elif ext in (".emj", ".e4m", ".e5m"): |
1662 elif ext in (".emj",): |
1667 self.multiProject.openMultiProject(filename) |
1663 self.multiProject.openMultiProject(filename) |
1668 opens += 1 |
1664 opens += 1 |
1669 else: |
1665 else: |
1670 self.viewmanager.openFiles(filename) |
1666 self.viewmanager.openFiles(filename) |
1671 opens += 1 |
1667 opens += 1 |
7618 fn = os.path.join(Globals.getConfigDir(), "eric7tasks.etj") |
7612 fn = os.path.join(Globals.getConfigDir(), "eric7tasks.etj") |
7619 self.__tasksFile.writeFile(fn) |
7613 self.__tasksFile.writeFile(fn) |
7620 |
7614 |
7621 def __readTasks(self): |
7615 def __readTasks(self): |
7622 """ |
7616 """ |
7623 Private slot to read in the tasks file (.etj or .e6t). |
7617 Private slot to read in the tasks file (.etj). |
7624 """ |
7618 """ |
7625 fn = os.path.join(Globals.getConfigDir(), "eric7tasks.etj") |
7619 fn = os.path.join(Globals.getConfigDir(), "eric7tasks.etj") |
7626 if os.path.exists(fn): |
7620 if os.path.exists(fn): |
7627 # try new style JSON file first |
|
7628 self.__tasksFile.readFile(fn) |
7621 self.__tasksFile.readFile(fn) |
7629 else: |
|
7630 # try old style XML file second |
|
7631 fn = os.path.join(Globals.getConfigDir(), "eric7tasks.e6t") |
|
7632 if os.path.exists(fn): |
|
7633 f = QFile(fn) |
|
7634 if f.open(QIODevice.OpenModeFlag.ReadOnly): |
|
7635 reader = TasksReader(f, viewer=self.taskViewer) |
|
7636 reader.readXML() |
|
7637 f.close() |
|
7638 else: |
|
7639 EricMessageBox.critical( |
|
7640 self, |
|
7641 self.tr("Read Tasks"), |
|
7642 self.tr( |
|
7643 "<p>The tasks file <b>{0}</b> could not be read.</p>" |
|
7644 ).format(fn), |
|
7645 ) |
|
7646 |
7622 |
7647 def __writeSession(self, filename="", crashSession=False): |
7623 def __writeSession(self, filename="", crashSession=False): |
7648 """ |
7624 """ |
7649 Private slot to write the session data to a JSON file (.esj). |
7625 Private slot to write the session data to a JSON file (.esj). |
7650 |
7626 |
7664 |
7640 |
7665 return self.__sessionFile.writeFile(fn) |
7641 return self.__sessionFile.writeFile(fn) |
7666 |
7642 |
7667 def __readSession(self, filename=""): |
7643 def __readSession(self, filename=""): |
7668 """ |
7644 """ |
7669 Private slot to read in the session file (.esj or .e5s). |
7645 Private slot to read in the session file (.esj). |
7670 |
7646 |
7671 @param filename name of a session file to read |
7647 @param filename name of a session file to read |
7672 @type str |
7648 @type str |
7673 @return flag indicating success |
7649 @return flag indicating success |
7674 @rtype bool |
7650 @rtype bool |
7676 if filename: |
7652 if filename: |
7677 fn = filename |
7653 fn = filename |
7678 else: |
7654 else: |
7679 fn = os.path.join(Globals.getConfigDir(), "eric7session.esj") |
7655 fn = os.path.join(Globals.getConfigDir(), "eric7session.esj") |
7680 if not os.path.exists(fn): |
7656 if not os.path.exists(fn): |
7681 fn = os.path.join(Globals.getConfigDir(), "eric7session.e5s") |
7657 EricMessageBox.critical( |
7682 if not os.path.exists(fn): |
7658 self, |
7683 EricMessageBox.critical( |
7659 self.tr("Read Session"), |
7684 self, |
7660 self.tr( |
7685 self.tr("Read Session"), |
7661 "<p>The session file <b>{0}</b> could not be read.</p>" |
7686 self.tr( |
7662 ).format(fn), |
7687 "<p>The session file <b>{0}</b> could not be read.</p>" |
7663 ) |
7688 ).format(fn), |
7664 fn = "" |
7689 ) |
|
7690 fn = "" |
|
7691 |
7665 |
7692 res = False |
7666 res = False |
7693 if fn: |
7667 if fn: |
7694 if fn.endswith(".esj"): |
7668 self.__readingSession = True |
7695 # new JSON based format |
7669 res = self.__sessionFile.readFile(fn) |
7696 self.__readingSession = True |
7670 self.__readingSession = False |
7697 res = self.__sessionFile.readFile(fn) |
|
7698 self.__readingSession = False |
|
7699 else: |
|
7700 # old XML based format |
|
7701 f = QFile(fn) |
|
7702 if f.open(QIODevice.OpenModeFlag.ReadOnly): |
|
7703 self.__readingSession = True |
|
7704 reader = SessionReader(f, True) |
|
7705 reader.readXML() |
|
7706 self.__readingSession = False |
|
7707 f.close() |
|
7708 res = True |
|
7709 else: |
|
7710 EricMessageBox.critical( |
|
7711 self, |
|
7712 self.tr("Read session"), |
|
7713 self.tr( |
|
7714 "<p>The session file <b>{0}</b> could not be read.</p>" |
|
7715 ).format(fn), |
|
7716 ) |
|
7717 |
7671 |
7718 # Write a crash session after a session was read. |
7672 # Write a crash session after a session was read. |
7719 self.__writeCrashSession() |
7673 self.__writeCrashSession() |
7720 |
7674 |
7721 return res |
7675 return res |
7749 """ |
7703 """ |
7750 sessionFile = EricFileDialog.getOpenFileName( |
7704 sessionFile = EricFileDialog.getOpenFileName( |
7751 self, |
7705 self, |
7752 self.tr("Load session"), |
7706 self.tr("Load session"), |
7753 OSUtilities.getHomeDir(), |
7707 OSUtilities.getHomeDir(), |
7754 self.tr("eric Session Files (*.esj);;eric XML Session Files (*.e5s)"), |
7708 self.tr("eric Session Files (*.esj)"), |
7755 ) |
7709 ) |
7756 |
7710 |
7757 if not sessionFile: |
7711 if not sessionFile: |
7758 return |
7712 return |
7759 |
7713 |
7761 |
7715 |
7762 def __deleteCrashSession(self): |
7716 def __deleteCrashSession(self): |
7763 """ |
7717 """ |
7764 Private slot to delete the crash session file. |
7718 Private slot to delete the crash session file. |
7765 """ |
7719 """ |
7766 for ext in (".esj", ".e5s"): |
7720 fn = os.path.join(Globals.getConfigDir(), "eric7_crash_session.esj") |
7767 fn = os.path.join(Globals.getConfigDir(), f"eric7_crash_session{ext}") |
7721 if os.path.exists(fn): |
7768 if os.path.exists(fn): |
7722 with contextlib.suppress(OSError): |
7769 with contextlib.suppress(OSError): |
7723 os.remove(fn) |
7770 os.remove(fn) |
|
7771 |
7724 |
7772 def __writeCrashSession(self): |
7725 def __writeCrashSession(self): |
7773 """ |
7726 """ |
7774 Private slot to write a crash session file. |
7727 Private slot to write a crash session file. |
7775 """ |
7728 """ |