src/eric7/UI/UserInterface.py

branch
server
changeset 10598
79c6ea2cb2e7
parent 10596
ea35c92a3c7c
parent 10595
59579e8aff98
child 10630
552a790fd9bc
equal deleted inserted replaced
10597:fbe93720ee9f 10598:79c6ea2cb2e7
22 from PyQt6 import sip 22 from PyQt6 import sip
23 from PyQt6.Qsci import QSCINTILLA_VERSION_STR 23 from PyQt6.Qsci import QSCINTILLA_VERSION_STR
24 from PyQt6.QtCore import ( 24 from PyQt6.QtCore import (
25 PYQT_VERSION_STR, 25 PYQT_VERSION_STR,
26 QDate, 26 QDate,
27 QFile,
28 QIODevice,
29 QObject, 27 QObject,
30 QProcess, 28 QProcess,
31 QSize, 29 QSize,
32 Qt, 30 Qt,
33 QThread, 31 QThread,
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
1677 try: 1673 try:
1678 ext = os.path.normcase(os.path.splitext(filename)[1]) 1674 ext = os.path.normcase(os.path.splitext(filename)[1])
1679 except IndexError: 1675 except IndexError:
1680 ext = "" 1676 ext = ""
1681 1677
1682 if ext in (".epj", ".e4p"): 1678 if ext in (".epj",):
1683 self.project.openProject(filename) 1679 self.project.openProject(filename)
1684 opens += 1 1680 opens += 1
1685 elif ext in (".emj", ".e4m", ".e5m"): 1681 elif ext in (".emj",):
1686 self.multiProject.openMultiProject(filename) 1682 self.multiProject.openMultiProject(filename)
1687 opens += 1 1683 opens += 1
1688 else: 1684 else:
1689 self.viewmanager.openFiles(filename) 1685 self.viewmanager.openFiles(filename)
1690 opens += 1 1686 opens += 1
7484 """ 7480 """
7485 fn = EricFileDialog.getOpenFileName( 7481 fn = EricFileDialog.getOpenFileName(
7486 None, 7482 None,
7487 self.tr("Import Keyboard Shortcuts"), 7483 self.tr("Import Keyboard Shortcuts"),
7488 "", 7484 "",
7489 self.tr( 7485 self.tr("Keyboard Shortcuts File (*.ekj)"),
7490 "Keyboard Shortcuts File (*.ekj);;XML Keyboard shortcut file (*.e4k)"
7491 ),
7492 ) 7486 )
7493 7487
7494 if fn: 7488 if fn:
7495 Shortcuts.importShortcuts(fn) 7489 Shortcuts.importShortcuts(fn)
7496 7490
7652 fn = os.path.join(Globals.getConfigDir(), "eric7tasks.etj") 7646 fn = os.path.join(Globals.getConfigDir(), "eric7tasks.etj")
7653 self.__tasksFile.writeFile(fn) 7647 self.__tasksFile.writeFile(fn)
7654 7648
7655 def __readTasks(self): 7649 def __readTasks(self):
7656 """ 7650 """
7657 Private slot to read in the tasks file (.etj or .e6t). 7651 Private slot to read in the tasks file (.etj).
7658 """ 7652 """
7659 fn = os.path.join(Globals.getConfigDir(), "eric7tasks.etj") 7653 fn = os.path.join(Globals.getConfigDir(), "eric7tasks.etj")
7660 if os.path.exists(fn): 7654 if os.path.exists(fn):
7661 # try new style JSON file first
7662 self.__tasksFile.readFile(fn) 7655 self.__tasksFile.readFile(fn)
7663 else:
7664 # try old style XML file second
7665 fn = os.path.join(Globals.getConfigDir(), "eric7tasks.e6t")
7666 if os.path.exists(fn):
7667 f = QFile(fn)
7668 if f.open(QIODevice.OpenModeFlag.ReadOnly):
7669 reader = TasksReader(f, viewer=self.taskViewer)
7670 reader.readXML()
7671 f.close()
7672 else:
7673 EricMessageBox.critical(
7674 self,
7675 self.tr("Read Tasks"),
7676 self.tr(
7677 "<p>The tasks file <b>{0}</b> could not be read.</p>"
7678 ).format(fn),
7679 )
7680 7656
7681 def __writeSession(self, filename="", crashSession=False): 7657 def __writeSession(self, filename="", crashSession=False):
7682 """ 7658 """
7683 Private slot to write the session data to a JSON file (.esj). 7659 Private slot to write the session data to a JSON file (.esj).
7684 7660
7698 7674
7699 return self.__sessionFile.writeFile(fn) 7675 return self.__sessionFile.writeFile(fn)
7700 7676
7701 def __readSession(self, filename=""): 7677 def __readSession(self, filename=""):
7702 """ 7678 """
7703 Private slot to read in the session file (.esj or .e5s). 7679 Private slot to read in the session file (.esj).
7704 7680
7705 @param filename name of a session file to read 7681 @param filename name of a session file to read
7706 @type str 7682 @type str
7707 @return flag indicating success 7683 @return flag indicating success
7708 @rtype bool 7684 @rtype bool
7710 if filename: 7686 if filename:
7711 fn = filename 7687 fn = filename
7712 else: 7688 else:
7713 fn = os.path.join(Globals.getConfigDir(), "eric7session.esj") 7689 fn = os.path.join(Globals.getConfigDir(), "eric7session.esj")
7714 if not os.path.exists(fn): 7690 if not os.path.exists(fn):
7715 fn = os.path.join(Globals.getConfigDir(), "eric7session.e5s") 7691 EricMessageBox.critical(
7716 if not os.path.exists(fn): 7692 self,
7717 EricMessageBox.critical( 7693 self.tr("Read Session"),
7718 self, 7694 self.tr(
7719 self.tr("Read Session"), 7695 "<p>The session file <b>{0}</b> could not be read.</p>"
7720 self.tr( 7696 ).format(fn),
7721 "<p>The session file <b>{0}</b> could not be read.</p>" 7697 )
7722 ).format(fn), 7698 fn = ""
7723 )
7724 fn = ""
7725 7699
7726 res = False 7700 res = False
7727 if fn: 7701 if fn:
7728 if fn.endswith(".esj"): 7702 self.__readingSession = True
7729 # new JSON based format 7703 res = self.__sessionFile.readFile(fn)
7730 self.__readingSession = True 7704 self.__readingSession = False
7731 res = self.__sessionFile.readFile(fn)
7732 self.__readingSession = False
7733 else:
7734 # old XML based format
7735 f = QFile(fn)
7736 if f.open(QIODevice.OpenModeFlag.ReadOnly):
7737 self.__readingSession = True
7738 reader = SessionReader(f, True)
7739 reader.readXML()
7740 self.__readingSession = False
7741 f.close()
7742 res = True
7743 else:
7744 EricMessageBox.critical(
7745 self,
7746 self.tr("Read session"),
7747 self.tr(
7748 "<p>The session file <b>{0}</b> could not be read.</p>"
7749 ).format(fn),
7750 )
7751 7705
7752 # Write a crash session after a session was read. 7706 # Write a crash session after a session was read.
7753 self.__writeCrashSession() 7707 self.__writeCrashSession()
7754 7708
7755 return res 7709 return res
7783 """ 7737 """
7784 sessionFile = EricFileDialog.getOpenFileName( 7738 sessionFile = EricFileDialog.getOpenFileName(
7785 self, 7739 self,
7786 self.tr("Load session"), 7740 self.tr("Load session"),
7787 OSUtilities.getHomeDir(), 7741 OSUtilities.getHomeDir(),
7788 self.tr("eric Session Files (*.esj);;eric XML Session Files (*.e5s)"), 7742 self.tr("eric Session Files (*.esj)"),
7789 ) 7743 )
7790 7744
7791 if not sessionFile: 7745 if not sessionFile:
7792 return 7746 return
7793 7747
7795 7749
7796 def __deleteCrashSession(self): 7750 def __deleteCrashSession(self):
7797 """ 7751 """
7798 Private slot to delete the crash session file. 7752 Private slot to delete the crash session file.
7799 """ 7753 """
7800 for ext in (".esj", ".e5s"): 7754 fn = os.path.join(Globals.getConfigDir(), "eric7_crash_session.esj")
7801 fn = os.path.join(Globals.getConfigDir(), f"eric7_crash_session{ext}") 7755 if os.path.exists(fn):
7802 if os.path.exists(fn): 7756 with contextlib.suppress(OSError):
7803 with contextlib.suppress(OSError): 7757 os.remove(fn)
7804 os.remove(fn)
7805 7758
7806 def __writeCrashSession(self): 7759 def __writeCrashSession(self):
7807 """ 7760 """
7808 Private slot to write a crash session file. 7761 Private slot to write a crash session file.
7809 """ 7762 """

eric ide

mercurial