src/eric7/Sessions/SessionFile.py

Sat, 12 Oct 2024 13:00:39 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 12 Oct 2024 13:00:39 +0200
branch
eric7
changeset 10968
b462c3d33ca0
parent 10967
454391fb0bdf
child 10969
705b71b3fde6
permissions
-rw-r--r--

Removed some forgotten TODO markers.

8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
10439
21c28b0f9e41 Updated copyright for 2024.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10386
diff changeset
3 # Copyright (c) 2021 - 2024 Detlev Offenbach <detlev@die-offenbachs.de>
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
8025
aaad60a23960 Corrected some documentation strings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8016
diff changeset
7 Module implementing a class representing the session JSON file.
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
10958
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
10 import contextlib
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import json
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 import time
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
14 from PyQt6.QtCore import QObject, Qt
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9278
diff changeset
16 from eric7 import Preferences
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
17 from eric7.EricGui.EricOverrideCursor import EricOverridenCursor
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
18 from eric7.EricWidgets import EricMessageBox
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
19 from eric7.EricWidgets.EricApplication import ericApp
10596
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10459
diff changeset
20 from eric7.SystemUtilities import FileSystemUtilities
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 class SessionFile(QObject):
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 """
8025
aaad60a23960 Corrected some documentation strings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8016
diff changeset
25 Class representing the session JSON file.
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
27
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 def __init__(self, isGlobal: bool, parent: QObject = None):
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 """
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
31
8012
ecf45f723038 Several corrections to the JSON file handlers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8009
diff changeset
32 @param isGlobal flag indicating a file for a global session
ecf45f723038 Several corrections to the JSON file handlers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8009
diff changeset
33 @type bool
8016
e484fc67677e Corrected some code documentation strings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8012
diff changeset
34 @param parent reference to the parent object (defaults to None)
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 @type QObject (optional)
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8164
diff changeset
37 super().__init__(parent)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
38
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 self.__isGlobal = isGlobal
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
40
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 def writeFile(self, filename: str) -> bool:
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 """
8012
ecf45f723038 Several corrections to the JSON file handlers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8009
diff changeset
43 Public method to write the session data to a session JSON file.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
44
8012
ecf45f723038 Several corrections to the JSON file handlers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8009
diff changeset
45 @param filename name of the session file
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 @type str
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 @return flag indicating a successful write
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 @rtype bool
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 """
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 # get references to objects we need
10958
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
51 serverInterface = ericApp().getObject("EricServer")
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
52 fsInterface = serverInterface.getServiceInterface("FileSystem")
10596
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10459
diff changeset
53
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8319
diff changeset
54 project = ericApp().getObject("Project")
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8319
diff changeset
55 projectBrowser = ericApp().getObject("ProjectBrowser")
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8319
diff changeset
56 multiProject = ericApp().getObject("MultiProject")
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8319
diff changeset
57 vm = ericApp().getObject("ViewManager")
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8319
diff changeset
58 dbg = ericApp().getObject("DebugUI")
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8319
diff changeset
59 dbs = ericApp().getObject("DebugServer")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
60
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 # prepare the session data dictionary
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 # step 0: header
9278
36448ca469c2 Simplified some code iaw. recommendations of the extended style checker and reformatted the code with black.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
63 sessionDict = {"header": {}}
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 if not self.__isGlobal:
10621
f5631f40c4d9 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10459
diff changeset
65 sessionDict["header"]["comment"] = (
f5631f40c4d9 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10459
diff changeset
66 "eric session file for project {0}".format(project.getProjectName())
f5631f40c4d9 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10459
diff changeset
67 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
68 sessionDict["header"][
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
69 "warning"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
70 ] = "This file was generated automatically, do not edit."
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
71
8031
ce5858a237d2 Changed the Project and MultiProject configuration option "XMLTimestamp" to "TimestampFile". A configuration check is suggested.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8025
diff changeset
72 if Preferences.getProject("TimestampFile") or self.__isGlobal:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
73 sessionDict["header"]["saved"] = time.strftime("%Y-%m-%d, %H:%M:%S")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
74
10958
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
75 # step 1: eric-ide Server Connection
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
76 # ==================================
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
77 sessionDict["RemoteServer"] = (
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
78 serverInterface.getHost() if serverInterface.isServerConnected() else ""
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
79 )
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
80
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
81 # step 2: open multi project and project for global session
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
82 # =========================================================
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 sessionDict["MultiProject"] = ""
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 sessionDict["Project"] = ""
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 if self.__isGlobal:
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 if multiProject.isOpen():
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
87 sessionDict["MultiProject"] = multiProject.getMultiProjectFile()
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 if project.isOpen():
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 sessionDict["Project"] = project.getProjectFile()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
90
10958
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
91 # step 3: all open (project) filenames and the active editor
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
92 # ==========================================================
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 if vm.canSplit():
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 sessionDict["ViewManagerSplits"] = {
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 "Count": vm.splitCount(),
8319
ea11a3948f40 Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
96 "Orientation": vm.getSplitOrientation().value,
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 }
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 else:
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 sessionDict["ViewManagerSplits"] = {
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 "Count": 0,
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 "Orientation": 1,
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 }
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
103
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
104 editorsDict = {} # remember editors by file name to detect clones
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 sessionDict["Editors"] = []
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 allOpenEditorLists = vm.getOpenEditorsForSession()
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 for splitIndex, openEditorList in enumerate(allOpenEditorLists):
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 for editorIndex, editor in enumerate(openEditorList):
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 fileName = editor.getFileName()
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 if self.__isGlobal or project.isProjectFile(fileName):
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 if fileName in editorsDict:
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 isClone = editorsDict[fileName].isClone(editor)
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 else:
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 isClone = False
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 editorsDict[fileName] = editor
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 editorDict = {
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 "Filename": fileName,
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 "Cursor": editor.getCursorPosition(),
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 "Folds": editor.contractedFolds(),
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 "Zoom": editor.getZoom(),
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 "Clone": isClone,
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 "Splitindex": splitIndex,
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 "Editorindex": editorIndex,
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 }
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 sessionDict["Editors"].append(editorDict)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
126
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 aw = vm.getActiveName()
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 sessionDict["ActiveWindow"] = {}
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 if aw and (self.__isGlobal or project.isProjectFile(aw)):
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 ed = vm.getOpenEditor(aw)
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 sessionDict["ActiveWindow"] = {
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 "Filename": aw,
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 "Cursor": ed.getCursorPosition(),
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 }
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
135
10958
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
136 # step 4: breakpoints
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
137 # ===================
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 allBreaks = Preferences.getProject("SessionAllBreakpoints")
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 projectFiles = project.getSources(True)
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 bpModel = dbs.getBreakPointModel()
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 if self.__isGlobal or allBreaks:
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 sessionDict["Breakpoints"] = bpModel.getAllBreakpoints()
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 else:
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 sessionDict["Breakpoints"] = [
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
145 bp for bp in bpModel.getAllBreakpoints() if bp[0] in projectFiles
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 ]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
147
10958
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
148 # step 5: watch expressions
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
149 # =========================
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 wpModel = dbs.getWatchPointModel()
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 sessionDict["Watchpoints"] = wpModel.getAllWatchpoints()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
152
10958
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
153 # step 6: debug info
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
154 # ==================
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 if self.__isGlobal:
8529
569623270e29 Finished implementing an extension to the debug/run/... start dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
156 if len(dbg.scriptsHistory):
569623270e29 Finished implementing an extension to the debug/run/... start dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
157 dbgScriptName = dbg.scriptsHistory[0]
569623270e29 Finished implementing an extension to the debug/run/... start dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
158 else:
569623270e29 Finished implementing an extension to the debug/run/... start dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
159 dbgScriptName = ""
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 if len(dbg.argvHistory):
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 dbgCmdline = dbg.argvHistory[0]
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 else:
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 dbgCmdline = ""
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 if len(dbg.wdHistory):
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 dbgWd = dbg.wdHistory[0]
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 else:
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 dbgWd = ""
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 if len(dbg.envHistory):
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 dbgEnv = dbg.envHistory[0]
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 else:
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 dbgEnv = ""
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 if len(dbg.multiprocessNoDebugHistory):
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
173 dbgMultiprocessNoDebug = dbg.multiprocessNoDebugHistory[0]
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 else:
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 dbgMultiprocessNoDebug = ""
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 sessionDict["DebugInfo"] = {
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 "VirtualEnv": dbg.lastUsedVenvName,
8529
569623270e29 Finished implementing an extension to the debug/run/... start dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
178 "ScriptName": dbgScriptName,
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 "CommandLine": dbgCmdline,
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 "WorkingDirectory": dbgWd,
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 "Environment": dbgEnv,
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 "Exceptions": dbg.excList,
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 "IgnoredExceptions": dbg.excIgnoreList,
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 "AutoClearShell": dbg.autoClearShell,
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 "TracePython": dbg.tracePython,
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 "AutoContinue": dbg.autoContinue,
10321
4a017fdf316f Debugger
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10050
diff changeset
187 "ReportAllExceptions": dbg.reportAllExceptions,
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 "EnableMultiprocess": dbg.enableMultiprocess,
8163
29fb6d420a25 Debugger
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8064
diff changeset
189 "MultiprocessNoDebug": dbgMultiprocessNoDebug,
29fb6d420a25 Debugger
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8064
diff changeset
190 "GlobalConfigOverride": dbg.overrideGlobalConfig,
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 }
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 else:
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 sessionDict["DebugInfo"] = {
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 "VirtualEnv": project.dbgVirtualEnv,
8529
569623270e29 Finished implementing an extension to the debug/run/... start dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
195 "ScriptName": "",
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 "CommandLine": project.dbgCmdline,
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 "WorkingDirectory": project.dbgWd,
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 "Environment": project.dbgEnv,
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 "Exceptions": project.dbgExcList,
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 "IgnoredExceptions": project.dbgExcIgnoreList,
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 "AutoClearShell": project.dbgAutoClearShell,
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 "TracePython": project.dbgTracePython,
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 "AutoContinue": project.dbgAutoContinue,
10321
4a017fdf316f Debugger
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10050
diff changeset
204 "ReportAllExceptions": project.dbgReportAllExceptions,
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 "EnableMultiprocess": project.dbgEnableMultiprocess,
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 "MultiprocessNoDebug": project.dbgMultiprocessNoDebug,
8163
29fb6d420a25 Debugger
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8064
diff changeset
207 "GlobalConfigOverride": project.dbgGlobalConfigOverride,
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 }
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
209
10958
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
210 # step 7: bookmarks
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
211 # =================
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 bookmarksList = []
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 for fileName in editorsDict:
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 if self.__isGlobal or project.isProjectFile(fileName):
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 editor = editorsDict[fileName]
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 bookmarks = editor.getBookmarks()
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 if bookmarks:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
218 bookmarksList.append(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
219 {
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
220 "Filename": fileName,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
221 "Lines": bookmarks,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
222 }
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
223 )
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 sessionDict["Bookmarks"] = bookmarksList
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
225
10958
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
226 # step 8: state of the various project browsers
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
227 # =============================================
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228 browsersList = []
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 for browserName in projectBrowser.getProjectBrowserNames():
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
230 expandedItems = projectBrowser.getProjectBrowser(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
231 browserName
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
232 ).getExpandedItemNames()
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 if expandedItems:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
234 browsersList.append(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
235 {
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
236 "Name": browserName,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
237 "ExpandedItems": expandedItems,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
238 }
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
239 )
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 sessionDict["ProjectBrowserStates"] = browsersList
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
241
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 try:
10459
5c5ed40d533d Changed the JSON based file writers to ensure a "\n" at the end to make them please version control systems (see issue 528).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
243 jsonString = json.dumps(sessionDict, indent=2) + "\n"
10596
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10459
diff changeset
244 if FileSystemUtilities.isRemoteFileName(filename):
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10459
diff changeset
245 title = self.tr("Save Remote Session")
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10459
diff changeset
246 fsInterface.writeFile(filename, jsonString.encode("utf-8"))
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10459
diff changeset
247 else:
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10459
diff changeset
248 title = self.tr("Save Session")
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10459
diff changeset
249 with open(filename, "w") as f:
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10459
diff changeset
250 f.write(jsonString)
10050
3750abc45d5e Corrected some code style issues detected by the extended checkers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9937
diff changeset
251 except (OSError, TypeError) as err:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8319
diff changeset
252 with EricOverridenCursor():
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8319
diff changeset
253 EricMessageBox.critical(
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 None,
10596
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10459
diff changeset
255 title,
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256 self.tr(
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 "<p>The session file <b>{0}</b> could not be"
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 " written.</p><p>Reason: {1}</p>"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
259 ).format(filename, str(err)),
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260 )
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261 return False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
262
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
263 return True
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
264
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
265 def readFile(self, filename: str) -> bool:
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266 """
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
267 Public method to read the session data from a session JSON file.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
268
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269 @param filename name of the project file
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
270 @type str
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
271 @return flag indicating a successful read
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
272 @rtype bool
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273 """
10596
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10459
diff changeset
274 fsInterface = (
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10459
diff changeset
275 ericApp().getObject("EricServer").getServiceInterface("FileSystem")
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10459
diff changeset
276 )
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10459
diff changeset
277
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
278 try:
10596
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10459
diff changeset
279 if FileSystemUtilities.isRemoteFileName(filename):
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10459
diff changeset
280 title = self.tr("Read Remote Session")
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10459
diff changeset
281 jsonString = fsInterface.readFile(filename).decode("utf-8")
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10459
diff changeset
282 else:
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10459
diff changeset
283 title = self.tr("Read Session")
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10459
diff changeset
284 with open(filename, "r") as f:
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10459
diff changeset
285 jsonString = f.read()
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286 sessionDict = json.loads(jsonString)
8240
93b8a353c4bf Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
287 except (OSError, json.JSONDecodeError) as err:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8319
diff changeset
288 EricMessageBox.critical(
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289 None,
10596
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10459
diff changeset
290 title,
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291 self.tr(
8012
ecf45f723038 Several corrections to the JSON file handlers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8009
diff changeset
292 "<p>The session file <b>{0}</b> could not be read.</p>"
ecf45f723038 Several corrections to the JSON file handlers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8009
diff changeset
293 "<p>Reason: {1}</p>"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
294 ).format(filename, str(err)),
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
295 )
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
296 return False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
297
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
298 # get references to objects we need
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8319
diff changeset
299 project = ericApp().getObject("Project")
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8319
diff changeset
300 projectBrowser = ericApp().getObject("ProjectBrowser")
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8319
diff changeset
301 multiProject = ericApp().getObject("MultiProject")
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8319
diff changeset
302 vm = ericApp().getObject("ViewManager")
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8319
diff changeset
303 dbg = ericApp().getObject("DebugUI")
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8319
diff changeset
304 dbs = ericApp().getObject("DebugServer")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
305
10958
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
306 serverInterface = ericApp().getObject("EricServer")
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
307
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
308 # step 1: eric-ide Server Connection
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
309 # ==================================
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
310 with contextlib.suppress(KeyError):
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
311 if sessionDict["RemoteServer"]:
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
312 hostname, port = serverInterface.parseHost(sessionDict["RemoteServer"])
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
313 serverInterface.connectToServer(hostname, port)
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
314
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
315 # step 2: multi project and project
8164
c8b88e73b56f Fixed an issue related to an empty global config override dictionary.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8163
diff changeset
316 # =================================
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
317 if sessionDict["MultiProject"]:
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
318 multiProject.openMultiProject(sessionDict["MultiProject"], False)
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
319 if sessionDict["Project"]:
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
320 project.openProject(sessionDict["Project"], False)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
321
10958
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
322 # step 3: (project) filenames and the active editor
8164
c8b88e73b56f Fixed an issue related to an empty global config override dictionary.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8163
diff changeset
323 # =================================================
8319
ea11a3948f40 Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
324 vm.setSplitOrientation(
ea11a3948f40 Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
325 Qt.Orientation(sessionDict["ViewManagerSplits"]["Orientation"])
ea11a3948f40 Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
326 )
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
327 vm.setSplitCount(sessionDict["ViewManagerSplits"]["Count"])
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
328
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
329 editorsDict = {}
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
330 for editorDict in sessionDict["Editors"]:
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
331 if editorDict["Clone"] and editorDict["Filename"] in editorsDict:
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
332 editor = editorsDict[editorDict["Filename"]]
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
333 ed = vm.newEditorView(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
334 editorDict["Filename"],
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
335 editor,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
336 editor.getFileType(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
337 indexes=(editorDict["Splitindex"], editorDict["Editorindex"]),
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
338 )
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339 else:
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
340 ed = vm.openSourceFile(
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
341 editorDict["Filename"],
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
342 indexes=(editorDict["Splitindex"], editorDict["Editorindex"]),
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
343 )
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
344 editorsDict[editorDict["Filename"]] = ed
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
345 if ed is not None:
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
346 ed.zoomTo(editorDict["Zoom"])
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
347 if editorDict["Folds"]:
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
348 ed.recolor()
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
349 ed.setContractedFolds(editorDict["Folds"])
9937
a56c297bfd61 Bugfix to restore cursor position on startup of eric.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 9653
diff changeset
350 ed.setCursorPosition(*editorDict["Cursor"])
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
351
10958
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
352 # step 4: breakpoints
8164
c8b88e73b56f Fixed an issue related to an empty global config override dictionary.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8163
diff changeset
353 # ===================
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
354 bpModel = dbs.getBreakPointModel()
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
355 bpModel.addBreakPoints(sessionDict["Breakpoints"])
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
356
10958
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
357 # step 5: watch expressions
8164
c8b88e73b56f Fixed an issue related to an empty global config override dictionary.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8163
diff changeset
358 # =========================
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
359 wpModel = dbs.getWatchPointModel()
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
360 wpModel.addWatchPoints(sessionDict["Watchpoints"])
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
361
10958
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
362 # step 6: debug info
8164
c8b88e73b56f Fixed an issue related to an empty global config override dictionary.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8163
diff changeset
363 # ==================
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
364 debugInfoDict = sessionDict["DebugInfo"]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
365
8164
c8b88e73b56f Fixed an issue related to an empty global config override dictionary.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8163
diff changeset
366 # adjust for newer session types
c8b88e73b56f Fixed an issue related to an empty global config override dictionary.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8163
diff changeset
367 if "GlobalConfigOverride" not in debugInfoDict:
c8b88e73b56f Fixed an issue related to an empty global config override dictionary.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8163
diff changeset
368 debugInfoDict["GlobalConfigOverride"] = {
c8b88e73b56f Fixed an issue related to an empty global config override dictionary.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8163
diff changeset
369 "enable": False,
c8b88e73b56f Fixed an issue related to an empty global config override dictionary.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8163
diff changeset
370 "redirect": True,
c8b88e73b56f Fixed an issue related to an empty global config override dictionary.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8163
diff changeset
371 }
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
372
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
373 dbg.lastUsedVenvName = debugInfoDict["VirtualEnv"]
10385
43fed9763dd1 Corrected an issue in SessionFile.py causing an exception when reading a session file with pre 23.12 debugger info data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10339
diff changeset
374 dbg.setScriptsHistory(debugInfoDict.get("ScriptName", ""))
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
375 dbg.setArgvHistory(debugInfoDict["CommandLine"])
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
376 dbg.setWdHistory(debugInfoDict["WorkingDirectory"])
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
377 dbg.setEnvHistory(debugInfoDict["Environment"])
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
378 dbg.setExcList(debugInfoDict["Exceptions"])
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
379 dbg.setExcIgnoreList(debugInfoDict["IgnoredExceptions"])
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
380 dbg.setAutoClearShell(debugInfoDict["AutoClearShell"])
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
381 dbg.setTracePython(debugInfoDict["TracePython"])
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
382 dbg.setAutoContinue(debugInfoDict["AutoContinue"])
10385
43fed9763dd1 Corrected an issue in SessionFile.py causing an exception when reading a session file with pre 23.12 debugger info data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10339
diff changeset
383 dbg.setExceptionReporting(debugInfoDict.get("ReportAllExceptions", False))
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
384 dbg.setEnableMultiprocess(debugInfoDict["EnableMultiprocess"])
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
385 dbg.setMultiprocessNoDebugHistory(debugInfoDict["MultiprocessNoDebug"])
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
386 dbg.setEnableGlobalConfigOverride(debugInfoDict["GlobalConfigOverride"])
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
387 if not self.__isGlobal:
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
388 project.setDbgInfo(
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
389 debugInfoDict["VirtualEnv"],
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
390 debugInfoDict["CommandLine"],
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
391 debugInfoDict["WorkingDirectory"],
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
392 debugInfoDict["Environment"],
10339
446d22fa1aea Renamed "isBsdPlatform()" to "isFreeBsdPlatform()" to express its real test.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10336
diff changeset
393 debugInfoDict["Exceptions"],
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
394 debugInfoDict["IgnoredExceptions"],
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
395 debugInfoDict["AutoClearShell"],
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
396 debugInfoDict["TracePython"],
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
397 debugInfoDict["AutoContinue"],
10385
43fed9763dd1 Corrected an issue in SessionFile.py causing an exception when reading a session file with pre 23.12 debugger info data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10339
diff changeset
398 debugInfoDict.get("ReportAllExceptions", False),
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
399 debugInfoDict["EnableMultiprocess"],
8163
29fb6d420a25 Debugger
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8064
diff changeset
400 debugInfoDict["MultiprocessNoDebug"],
29fb6d420a25 Debugger
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8064
diff changeset
401 debugInfoDict["GlobalConfigOverride"],
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
402 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
403
10958
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
404 # step 7: bookmarks
8164
c8b88e73b56f Fixed an issue related to an empty global config override dictionary.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8163
diff changeset
405 # =================
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
406 for bookmark in sessionDict["Bookmarks"]:
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
407 editor = vm.getOpenEditor(bookmark["Filename"])
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
408 if editor is not None:
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
409 for lineno in bookmark["Lines"]:
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
410 editor.toggleBookmark(lineno)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
411
10958
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
412 # step 8: state of the various project browsers
8164
c8b88e73b56f Fixed an issue related to an empty global config override dictionary.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8163
diff changeset
413 # =============================================
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
414 for browserState in sessionDict["ProjectBrowserStates"]:
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
415 browser = projectBrowser.getProjectBrowser(browserState["Name"])
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
416 if browser is not None:
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
417 browser.expandItemsByName(browserState["ExpandedItems"])
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
418
10958
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
419 # step 9: active window
8164
c8b88e73b56f Fixed an issue related to an empty global config override dictionary.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8163
diff changeset
420 # =====================
8064
756747ba088c SessionFile: corrected an issue reading a session file with an empty active window entry.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8031
diff changeset
421 if sessionDict["ActiveWindow"]:
756747ba088c SessionFile: corrected an issue reading a session file with an empty active window entry.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8031
diff changeset
422 vm.openFiles(sessionDict["ActiveWindow"]["Filename"])
756747ba088c SessionFile: corrected an issue reading a session file with an empty active window entry.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8031
diff changeset
423 ed = vm.getOpenEditor(sessionDict["ActiveWindow"]["Filename"])
756747ba088c SessionFile: corrected an issue reading a session file with an empty active window entry.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8031
diff changeset
424 if ed is not None:
756747ba088c SessionFile: corrected an issue reading a session file with an empty active window entry.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8031
diff changeset
425 ed.setCursorPosition(*sessionDict["ActiveWindow"]["Cursor"])
756747ba088c SessionFile: corrected an issue reading a session file with an empty active window entry.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8031
diff changeset
426 ed.ensureCursorVisible()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
427
8009
29818ac4853c Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
428 return True

eric ide

mercurial