src/eric7/UI/UserInterface.py

branch
eric7
changeset 10595
59579e8aff98
parent 10518
1682f3203ae5
child 10598
79c6ea2cb2e7
child 10616
4aa36fcd4a30
child 10646
37900a37e522
equal deleted inserted replaced
10593:b7ebfc2e47d4 10595:59579e8aff98
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
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
7450 """ 7446 """
7451 fn = EricFileDialog.getOpenFileName( 7447 fn = EricFileDialog.getOpenFileName(
7452 None, 7448 None,
7453 self.tr("Import Keyboard Shortcuts"), 7449 self.tr("Import Keyboard Shortcuts"),
7454 "", 7450 "",
7455 self.tr( 7451 self.tr("Keyboard Shortcuts File (*.ekj)"),
7456 "Keyboard Shortcuts File (*.ekj);;XML Keyboard shortcut file (*.e4k)"
7457 ),
7458 ) 7452 )
7459 7453
7460 if fn: 7454 if fn:
7461 Shortcuts.importShortcuts(fn) 7455 Shortcuts.importShortcuts(fn)
7462 7456
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 """

eric ide

mercurial