Sun, 31 Dec 2023 20:27:52 +0100
Changed the JSON based file writers to ensure a "\n" at the end to make them please version control systems (see issue 528).
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 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | import json |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | import time |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | |
9473
3f23dbf37dbe
Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9413
diff
changeset
|
13 | from PyQt6.QtCore import QObject, Qt |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | |
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
|
15 | from eric7 import Preferences |
9473
3f23dbf37dbe
Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9413
diff
changeset
|
16 | from eric7.EricGui.EricOverrideCursor import EricOverridenCursor |
3f23dbf37dbe
Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9413
diff
changeset
|
17 | from eric7.EricWidgets import EricMessageBox |
3f23dbf37dbe
Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9413
diff
changeset
|
18 | from eric7.EricWidgets.EricApplication import ericApp |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | class SessionFile(QObject): |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | """ |
8025
aaad60a23960
Corrected some documentation strings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8016
diff
changeset
|
23 | Class representing the session JSON file. |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | """ |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
25 | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | def __init__(self, isGlobal: bool, parent: QObject = None): |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | """ |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | Constructor |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
29 | |
8012
ecf45f723038
Several corrections to the JSON file handlers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8009
diff
changeset
|
30 | @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
|
31 | @type bool |
8016
e484fc67677e
Corrected some code documentation strings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8012
diff
changeset
|
32 | @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
|
33 | @type QObject (optional) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | """ |
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
|
35 | super().__init__(parent) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
36 | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | self.__isGlobal = isGlobal |
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 | def writeFile(self, filename: str) -> bool: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | """ |
8012
ecf45f723038
Several corrections to the JSON file handlers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8009
diff
changeset
|
41 | 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
|
42 | |
8012
ecf45f723038
Several corrections to the JSON file handlers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8009
diff
changeset
|
43 | @param filename name of the session file |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | @type str |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | @return flag indicating a successful write |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | @rtype bool |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | """ |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | # 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
|
49 | 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
|
50 | 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
|
51 | 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
|
52 | 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
|
53 | 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
|
54 | dbs = ericApp().getObject("DebugServer") |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
55 | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | # prepare the session data dictionary |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | # 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
|
58 | sessionDict = {"header": {}} |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | if not self.__isGlobal: |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
60 | sessionDict["header"][ |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
61 | "comment" |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
62 | ] = "eric session file for project {0}".format(project.getProjectName()) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
63 | sessionDict["header"][ |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
64 | "warning" |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
65 | ] = "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
|
66 | |
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
|
67 | 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
|
68 | 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
|
69 | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | # step 1: open multi project and project for global session |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | sessionDict["MultiProject"] = "" |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | sessionDict["Project"] = "" |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | if self.__isGlobal: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | if multiProject.isOpen(): |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
75 | sessionDict["MultiProject"] = multiProject.getMultiProjectFile() |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | if project.isOpen(): |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | sessionDict["Project"] = project.getProjectFile() |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
78 | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | # step 2: all open (project) filenames and the active editor |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | if vm.canSplit(): |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | sessionDict["ViewManagerSplits"] = { |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | "Count": vm.splitCount(), |
8319
ea11a3948f40
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
83 | "Orientation": vm.getSplitOrientation().value, |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | } |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | else: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | sessionDict["ViewManagerSplits"] = { |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | "Count": 0, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | "Orientation": 1, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | } |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
90 | |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
91 | 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
|
92 | sessionDict["Editors"] = [] |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | allOpenEditorLists = vm.getOpenEditorsForSession() |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | for splitIndex, openEditorList in enumerate(allOpenEditorLists): |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | for editorIndex, editor in enumerate(openEditorList): |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | fileName = editor.getFileName() |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | if self.__isGlobal or project.isProjectFile(fileName): |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | if fileName in editorsDict: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | isClone = editorsDict[fileName].isClone(editor) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | else: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | isClone = False |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | editorsDict[fileName] = editor |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | editorDict = { |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | "Filename": fileName, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | "Cursor": editor.getCursorPosition(), |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | "Folds": editor.contractedFolds(), |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | "Zoom": editor.getZoom(), |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | "Clone": isClone, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | "Splitindex": splitIndex, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | "Editorindex": editorIndex, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | } |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | sessionDict["Editors"].append(editorDict) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
113 | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | aw = vm.getActiveName() |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | sessionDict["ActiveWindow"] = {} |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | 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
|
117 | ed = vm.getOpenEditor(aw) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | sessionDict["ActiveWindow"] = { |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | "Filename": aw, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | "Cursor": ed.getCursorPosition(), |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | } |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
122 | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | # step 3: breakpoints |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | allBreaks = Preferences.getProject("SessionAllBreakpoints") |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | projectFiles = project.getSources(True) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126 | bpModel = dbs.getBreakPointModel() |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | if self.__isGlobal or allBreaks: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | sessionDict["Breakpoints"] = bpModel.getAllBreakpoints() |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | else: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | sessionDict["Breakpoints"] = [ |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
131 | 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
|
132 | ] |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
133 | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | # step 4: watch expressions |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | wpModel = dbs.getWatchPointModel() |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | sessionDict["Watchpoints"] = wpModel.getAllWatchpoints() |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
137 | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138 | # step 5: debug info |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | 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
|
140 | 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
|
141 | 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
|
142 | else: |
569623270e29
Finished implementing an extension to the debug/run/... start dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8358
diff
changeset
|
143 | dbgScriptName = "" |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | if len(dbg.argvHistory): |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145 | dbgCmdline = dbg.argvHistory[0] |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | else: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | dbgCmdline = "" |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | if len(dbg.wdHistory): |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149 | dbgWd = dbg.wdHistory[0] |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150 | else: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
151 | dbgWd = "" |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152 | if len(dbg.envHistory): |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
153 | dbgEnv = dbg.envHistory[0] |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154 | else: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
155 | dbgEnv = "" |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156 | if len(dbg.multiprocessNoDebugHistory): |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
157 | dbgMultiprocessNoDebug = dbg.multiprocessNoDebugHistory[0] |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
158 | else: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159 | dbgMultiprocessNoDebug = "" |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160 | sessionDict["DebugInfo"] = { |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
161 | "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
|
162 | "ScriptName": dbgScriptName, |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
163 | "CommandLine": dbgCmdline, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164 | "WorkingDirectory": dbgWd, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165 | "Environment": dbgEnv, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
166 | "Exceptions": dbg.excList, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167 | "IgnoredExceptions": dbg.excIgnoreList, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168 | "AutoClearShell": dbg.autoClearShell, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169 | "TracePython": dbg.tracePython, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
170 | "AutoContinue": dbg.autoContinue, |
10321 | 171 | "ReportAllExceptions": dbg.reportAllExceptions, |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
172 | "EnableMultiprocess": dbg.enableMultiprocess, |
8163 | 173 | "MultiprocessNoDebug": dbgMultiprocessNoDebug, |
174 | "GlobalConfigOverride": dbg.overrideGlobalConfig, | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
175 | } |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
176 | else: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
177 | sessionDict["DebugInfo"] = { |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
178 | "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
|
179 | "ScriptName": "", |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
180 | "CommandLine": project.dbgCmdline, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
181 | "WorkingDirectory": project.dbgWd, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
182 | "Environment": project.dbgEnv, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183 | "Exceptions": project.dbgExcList, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
184 | "IgnoredExceptions": project.dbgExcIgnoreList, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
185 | "AutoClearShell": project.dbgAutoClearShell, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
186 | "TracePython": project.dbgTracePython, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
187 | "AutoContinue": project.dbgAutoContinue, |
10321 | 188 | "ReportAllExceptions": project.dbgReportAllExceptions, |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
189 | "EnableMultiprocess": project.dbgEnableMultiprocess, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
190 | "MultiprocessNoDebug": project.dbgMultiprocessNoDebug, |
8163 | 191 | "GlobalConfigOverride": project.dbgGlobalConfigOverride, |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
192 | } |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
193 | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
194 | # step 6: bookmarks |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
195 | bookmarksList = [] |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
196 | for fileName in editorsDict: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
197 | if self.__isGlobal or project.isProjectFile(fileName): |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
198 | editor = editorsDict[fileName] |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
199 | bookmarks = editor.getBookmarks() |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
200 | if bookmarks: |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
201 | bookmarksList.append( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
202 | { |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
203 | "Filename": fileName, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
204 | "Lines": bookmarks, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
205 | } |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
206 | ) |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
207 | sessionDict["Bookmarks"] = bookmarksList |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
208 | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
209 | # step 7: state of the various project browsers |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
210 | browsersList = [] |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
211 | 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
|
212 | expandedItems = projectBrowser.getProjectBrowser( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
213 | browserName |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
214 | ).getExpandedItemNames() |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
215 | if expandedItems: |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
216 | browsersList.append( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
217 | { |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
218 | "Name": browserName, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
219 | "ExpandedItems": expandedItems, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
220 | } |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
221 | ) |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
222 | sessionDict["ProjectBrowserStates"] = browsersList |
9221
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 | 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
|
225 | jsonString = json.dumps(sessionDict, indent=2) + "\n" |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
226 | with open(filename, "w") as f: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
227 | 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
|
228 | 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
|
229 | 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
|
230 | EricMessageBox.critical( |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
231 | None, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
232 | self.tr("Save Session"), |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
233 | self.tr( |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
234 | "<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
|
235 | " 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
|
236 | ).format(filename, str(err)), |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
237 | ) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
238 | return False |
9221
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 | return True |
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 | def readFile(self, filename: str) -> bool: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
243 | """ |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
244 | 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
|
245 | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
246 | @param filename name of the project file |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
247 | @type str |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
248 | @return flag indicating a successful read |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
249 | @rtype bool |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
250 | """ |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
251 | try: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
252 | with open(filename, "r") as f: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
253 | jsonString = f.read() |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
254 | 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
|
255 | 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
|
256 | EricMessageBox.critical( |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
257 | None, |
8012
ecf45f723038
Several corrections to the JSON file handlers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8009
diff
changeset
|
258 | self.tr("Read Session"), |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
259 | self.tr( |
8012
ecf45f723038
Several corrections to the JSON file handlers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8009
diff
changeset
|
260 | "<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
|
261 | "<p>Reason: {1}</p>" |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
262 | ).format(filename, str(err)), |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
263 | ) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
264 | return False |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
265 | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
266 | # 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
|
267 | 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
|
268 | 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
|
269 | 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
|
270 | 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
|
271 | 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
|
272 | dbs = ericApp().getObject("DebugServer") |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
273 | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
274 | # step 1: 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
|
275 | # ================================= |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
276 | if sessionDict["MultiProject"]: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
277 | multiProject.openMultiProject(sessionDict["MultiProject"], False) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
278 | if sessionDict["Project"]: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
279 | 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
|
280 | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
281 | # step 2: (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
|
282 | # ================================================= |
8319
ea11a3948f40
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
283 | vm.setSplitOrientation( |
ea11a3948f40
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
284 | Qt.Orientation(sessionDict["ViewManagerSplits"]["Orientation"]) |
ea11a3948f40
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
285 | ) |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
286 | 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
|
287 | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
288 | editorsDict = {} |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
289 | for editorDict in sessionDict["Editors"]: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
290 | if editorDict["Clone"] and editorDict["Filename"] in editorsDict: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
291 | editor = editorsDict[editorDict["Filename"]] |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
292 | ed = vm.newEditorView( |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
293 | editorDict["Filename"], |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
294 | editor, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
295 | editor.getFileType(), |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
296 | indexes=(editorDict["Splitindex"], editorDict["Editorindex"]), |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
297 | ) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
298 | else: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
299 | ed = vm.openSourceFile( |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
300 | editorDict["Filename"], |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
301 | indexes=(editorDict["Splitindex"], editorDict["Editorindex"]), |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
302 | ) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
303 | editorsDict[editorDict["Filename"]] = ed |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
304 | if ed is not None: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
305 | ed.zoomTo(editorDict["Zoom"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
306 | if editorDict["Folds"]: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
307 | ed.recolor() |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
308 | 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
|
309 | ed.setCursorPosition(*editorDict["Cursor"]) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
310 | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
311 | # step 3: breakpoints |
8164
c8b88e73b56f
Fixed an issue related to an empty global config override dictionary.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8163
diff
changeset
|
312 | # =================== |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
313 | bpModel = dbs.getBreakPointModel() |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
314 | bpModel.addBreakPoints(sessionDict["Breakpoints"]) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
315 | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
316 | # step 4: 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
|
317 | # ========================= |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
318 | wpModel = dbs.getWatchPointModel() |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
319 | wpModel.addWatchPoints(sessionDict["Watchpoints"]) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
320 | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
321 | # step 5: 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
|
322 | # ================== |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
323 | debugInfoDict = sessionDict["DebugInfo"] |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
324 | |
8164
c8b88e73b56f
Fixed an issue related to an empty global config override dictionary.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8163
diff
changeset
|
325 | # 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
|
326 | 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
|
327 | debugInfoDict["GlobalConfigOverride"] = { |
c8b88e73b56f
Fixed an issue related to an empty global config override dictionary.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8163
diff
changeset
|
328 | "enable": False, |
c8b88e73b56f
Fixed an issue related to an empty global config override dictionary.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8163
diff
changeset
|
329 | "redirect": True, |
c8b88e73b56f
Fixed an issue related to an empty global config override dictionary.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8163
diff
changeset
|
330 | } |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
331 | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
332 | 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
|
333 | dbg.setScriptsHistory(debugInfoDict.get("ScriptName", "")) |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
334 | dbg.setArgvHistory(debugInfoDict["CommandLine"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
335 | dbg.setWdHistory(debugInfoDict["WorkingDirectory"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
336 | dbg.setEnvHistory(debugInfoDict["Environment"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
337 | dbg.setExcList(debugInfoDict["Exceptions"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
338 | dbg.setExcIgnoreList(debugInfoDict["IgnoredExceptions"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
339 | dbg.setAutoClearShell(debugInfoDict["AutoClearShell"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
340 | dbg.setTracePython(debugInfoDict["TracePython"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
341 | 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
|
342 | dbg.setExceptionReporting(debugInfoDict.get("ReportAllExceptions", False)) |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
343 | dbg.setEnableMultiprocess(debugInfoDict["EnableMultiprocess"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
344 | dbg.setMultiprocessNoDebugHistory(debugInfoDict["MultiprocessNoDebug"]) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
345 | dbg.setEnableGlobalConfigOverride(debugInfoDict["GlobalConfigOverride"]) |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
346 | if not self.__isGlobal: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
347 | project.setDbgInfo( |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
348 | debugInfoDict["VirtualEnv"], |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
349 | debugInfoDict["CommandLine"], |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
350 | debugInfoDict["WorkingDirectory"], |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
351 | debugInfoDict["Environment"], |
10339
446d22fa1aea
Renamed "isBsdPlatform()" to "isFreeBsdPlatform()" to express its real test.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10336
diff
changeset
|
352 | debugInfoDict["Exceptions"], |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
353 | debugInfoDict["IgnoredExceptions"], |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
354 | debugInfoDict["AutoClearShell"], |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
355 | debugInfoDict["TracePython"], |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
356 | 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
|
357 | debugInfoDict.get("ReportAllExceptions", False), |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
358 | debugInfoDict["EnableMultiprocess"], |
8163 | 359 | debugInfoDict["MultiprocessNoDebug"], |
360 | debugInfoDict["GlobalConfigOverride"], | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
361 | ) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
362 | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
363 | # step 6: bookmarks |
8164
c8b88e73b56f
Fixed an issue related to an empty global config override dictionary.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8163
diff
changeset
|
364 | # ================= |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
365 | for bookmark in sessionDict["Bookmarks"]: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
366 | editor = vm.getOpenEditor(bookmark["Filename"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
367 | if editor is not None: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
368 | for lineno in bookmark["Lines"]: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
369 | editor.toggleBookmark(lineno) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
370 | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
371 | # step 7: 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
|
372 | # ============================================= |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
373 | for browserState in sessionDict["ProjectBrowserStates"]: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
374 | browser = projectBrowser.getProjectBrowser(browserState["Name"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
375 | if browser is not None: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
376 | browser.expandItemsByName(browserState["ExpandedItems"]) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
377 | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
378 | # step 8: 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
|
379 | # ===================== |
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
|
380 | 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
|
381 | 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
|
382 | 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
|
383 | 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
|
384 | 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
|
385 | ed.ensureCursorVisible() |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
386 | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
387 | return True |