Sat, 22 May 2021 18:51:46 +0200
Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
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 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
3 | # Copyright (c) 2021 Detlev Offenbach <detlev@die-offenbachs.de> |
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 | |
8319
ea11a3948f40
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
13 | from PyQt6.QtCore import Qt, QObject |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | |
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
|
15 | from E5Gui import EricMessageBox |
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
|
16 | from E5Gui.EricOverrideCursor import 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
|
17 | from E5Gui.EricApplication import ericApp |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | import Preferences |
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 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | class SessionFile(QObject): |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | """ |
8025
aaad60a23960
Corrected some documentation strings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8016
diff
changeset
|
24 | Class representing the session JSON file. |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | """ |
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 |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
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) |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | self.__isGlobal = isGlobal |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | |
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. |
8009
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 | @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") |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | |
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 |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | sessionDict = {} |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | sessionDict["header"] = {} |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | if not self.__isGlobal: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | sessionDict["header"]["comment"] = ( |
8012
ecf45f723038
Several corrections to the JSON file handlers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8009
diff
changeset
|
62 | "eric session file for project {0}" |
ecf45f723038
Several corrections to the JSON file handlers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8009
diff
changeset
|
63 | .format(project.getProjectName()) |
ecf45f723038
Several corrections to the JSON file handlers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8009
diff
changeset
|
64 | ) |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | sessionDict["header"]["warning"] = ( |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | "This file was generated automatically, do not edit." |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | ) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | |
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
|
69 | if Preferences.getProject("TimestampFile") or self.__isGlobal: |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | sessionDict["header"]["saved"] = ( |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | time.strftime('%Y-%m-%d, %H:%M:%S') |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | ) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | # 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
|
75 | sessionDict["MultiProject"] = "" |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | sessionDict["Project"] = "" |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | if self.__isGlobal: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | if multiProject.isOpen(): |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | sessionDict["MultiProject"] = ( |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | multiProject.getMultiProjectFile() |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | ) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | if project.isOpen(): |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | sessionDict["Project"] = project.getProjectFile() |
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 | # 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
|
86 | if vm.canSplit(): |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | sessionDict["ViewManagerSplits"] = { |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | "Count": vm.splitCount(), |
8319
ea11a3948f40
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
89 | "Orientation": vm.getSplitOrientation().value, |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | } |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | else: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | sessionDict["ViewManagerSplits"] = { |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | "Count": 0, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | "Orientation": 1, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | } |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | editorsDict = {} # remember editors by file name to detect clones |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | sessionDict["Editors"] = [] |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | allOpenEditorLists = vm.getOpenEditorsForSession() |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | for splitIndex, openEditorList in enumerate(allOpenEditorLists): |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | for editorIndex, editor in enumerate(openEditorList): |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | fileName = editor.getFileName() |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | if self.__isGlobal or project.isProjectFile(fileName): |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | if fileName in editorsDict: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | isClone = editorsDict[fileName].isClone(editor) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | else: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | isClone = False |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | editorsDict[fileName] = editor |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | editorDict = { |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | "Filename": fileName, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | "Cursor": editor.getCursorPosition(), |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | "Folds": editor.contractedFolds(), |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | "Zoom": editor.getZoom(), |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | "Clone": isClone, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | "Splitindex": splitIndex, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | "Editorindex": editorIndex, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | } |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | sessionDict["Editors"].append(editorDict) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | aw = vm.getActiveName() |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | sessionDict["ActiveWindow"] = {} |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | 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
|
123 | ed = vm.getOpenEditor(aw) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | sessionDict["ActiveWindow"] = { |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | "Filename": aw, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126 | "Cursor": ed.getCursorPosition(), |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | } |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | # step 3: breakpoints |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | allBreaks = Preferences.getProject("SessionAllBreakpoints") |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
131 | projectFiles = project.getSources(True) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
132 | bpModel = dbs.getBreakPointModel() |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | if self.__isGlobal or allBreaks: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | sessionDict["Breakpoints"] = bpModel.getAllBreakpoints() |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | else: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | sessionDict["Breakpoints"] = [ |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | bp |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138 | for bp in bpModel.getAllBreakpoints() |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | if bp[0] in projectFiles |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
140 | ] |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142 | # step 4: watch expressions |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | wpModel = dbs.getWatchPointModel() |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | sessionDict["Watchpoints"] = wpModel.getAllWatchpoints() |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | # step 5: debug info |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | if self.__isGlobal: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | if len(dbg.argvHistory): |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149 | dbgCmdline = dbg.argvHistory[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 | dbgCmdline = "" |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152 | if len(dbg.wdHistory): |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
153 | dbgWd = dbg.wdHistory[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 | dbgWd = "" |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156 | if len(dbg.envHistory): |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
157 | dbgEnv = dbg.envHistory[0] |
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 | dbgEnv = "" |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160 | if len(dbg.multiprocessNoDebugHistory): |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
161 | dbgMultiprocessNoDebug = ( |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
162 | dbg.multiprocessNoDebugHistory[0] |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
163 | ) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164 | else: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165 | dbgMultiprocessNoDebug = "" |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
166 | sessionDict["DebugInfo"] = { |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167 | "VirtualEnv": dbg.lastUsedVenvName, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168 | "CommandLine": dbgCmdline, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169 | "WorkingDirectory": dbgWd, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
170 | "Environment": dbgEnv, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
171 | "ReportExceptions": dbg.exceptions, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
172 | "Exceptions": dbg.excList, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
173 | "IgnoredExceptions": dbg.excIgnoreList, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
174 | "AutoClearShell": dbg.autoClearShell, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
175 | "TracePython": dbg.tracePython, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
176 | "AutoContinue": dbg.autoContinue, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
177 | "EnableMultiprocess": dbg.enableMultiprocess, |
8163 | 178 | "MultiprocessNoDebug": dbgMultiprocessNoDebug, |
179 | "GlobalConfigOverride": dbg.overrideGlobalConfig, | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
180 | } |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
181 | else: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
182 | sessionDict["DebugInfo"] = { |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183 | "VirtualEnv": project.dbgVirtualEnv, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
184 | "CommandLine": project.dbgCmdline, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
185 | "WorkingDirectory": project.dbgWd, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
186 | "Environment": project.dbgEnv, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
187 | "ReportExceptions": project.dbgReportExceptions, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
188 | "Exceptions": project.dbgExcList, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
189 | "IgnoredExceptions": project.dbgExcIgnoreList, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
190 | "AutoClearShell": project.dbgAutoClearShell, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
191 | "TracePython": project.dbgTracePython, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
192 | "AutoContinue": project.dbgAutoContinue, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
193 | "EnableMultiprocess": project.dbgEnableMultiprocess, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
194 | "MultiprocessNoDebug": project.dbgMultiprocessNoDebug, |
8163 | 195 | "GlobalConfigOverride": project.dbgGlobalConfigOverride, |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
196 | } |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
197 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
198 | # step 6: bookmarks |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
199 | bookmarksList = [] |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
200 | for fileName in editorsDict: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
201 | if self.__isGlobal or project.isProjectFile(fileName): |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
202 | editor = editorsDict[fileName] |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
203 | bookmarks = editor.getBookmarks() |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
204 | if bookmarks: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
205 | bookmarksList.append({ |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
206 | "Filename": fileName, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
207 | "Lines": bookmarks, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
208 | }) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
209 | sessionDict["Bookmarks"] = bookmarksList |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
210 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
211 | # step 7: state of the various project browsers |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
212 | browsersList = [] |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
213 | for browserName in projectBrowser.getProjectBrowserNames(): |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
214 | expandedItems = ( |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
215 | projectBrowser.getProjectBrowser(browserName) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
216 | .getExpandedItemNames() |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
217 | ) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
218 | if expandedItems: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
219 | browsersList.append({ |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
220 | "Name": browserName, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
221 | "ExpandedItems": expandedItems, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
222 | }) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
223 | sessionDict["ProjectBrowserStates"] = browsersList |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
224 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
225 | try: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
226 | jsonString = json.dumps(sessionDict, indent=2) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
227 | with open(filename, "w") as f: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
228 | f.write(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
|
229 | except (TypeError, OSError) 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
|
230 | 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
|
231 | EricMessageBox.critical( |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
232 | None, |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
233 | self.tr("Save Session"), |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
234 | self.tr( |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
235 | "<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
|
236 | " written.</p><p>Reason: {1}</p>" |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
237 | ).format(filename, str(err)) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
238 | ) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
239 | return False |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
240 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
241 | return True |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
242 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
243 | def readFile(self, filename: str) -> bool: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
244 | """ |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
245 | Public method to read the session data from a session JSON file. |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
246 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
247 | @param filename name of the project file |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
248 | @type str |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
249 | @return flag indicating a successful read |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
250 | @rtype bool |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
251 | """ |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
252 | try: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
253 | with open(filename, "r") as f: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
254 | jsonString = f.read() |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
255 | 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
|
256 | 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
|
257 | EricMessageBox.critical( |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
258 | None, |
8012
ecf45f723038
Several corrections to the JSON file handlers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8009
diff
changeset
|
259 | self.tr("Read Session"), |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
260 | self.tr( |
8012
ecf45f723038
Several corrections to the JSON file handlers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8009
diff
changeset
|
261 | "<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
|
262 | "<p>Reason: {1}</p>" |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
263 | ).format(filename, str(err)) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
264 | ) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
265 | return False |
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 | # 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
|
268 | 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
|
269 | 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
|
270 | 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
|
271 | 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
|
272 | 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
|
273 | dbs = ericApp().getObject("DebugServer") |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
274 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
275 | # 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
|
276 | # ================================= |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
277 | if sessionDict["MultiProject"]: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
278 | multiProject.openMultiProject(sessionDict["MultiProject"], False) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
279 | if sessionDict["Project"]: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
280 | project.openProject(sessionDict["Project"], False) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
281 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
282 | # 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
|
283 | # ================================================= |
8319
ea11a3948f40
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
284 | vm.setSplitOrientation( |
ea11a3948f40
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
285 | Qt.Orientation(sessionDict["ViewManagerSplits"]["Orientation"]) |
ea11a3948f40
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
286 | ) |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
287 | vm.setSplitCount(sessionDict["ViewManagerSplits"]["Count"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
288 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
289 | editorsDict = {} |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
290 | for editorDict in sessionDict["Editors"]: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
291 | if editorDict["Clone"] and editorDict["Filename"] in editorsDict: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
292 | editor = editorsDict[editorDict["Filename"]] |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
293 | ed = vm.newEditorView( |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
294 | editorDict["Filename"], editor, editor.getFileType(), |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
295 | indexes=(editorDict["Splitindex"], |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
296 | editorDict["Editorindex"]) |
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"], |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
301 | indexes=(editorDict["Splitindex"], |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
302 | editorDict["Editorindex"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
303 | ) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
304 | editorsDict[editorDict["Filename"]] = ed |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
305 | if ed is not None: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
306 | ed.zoomTo(editorDict["Zoom"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
307 | if editorDict["Folds"]: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
308 | ed.recolor() |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
309 | ed.setContractedFolds(editorDict["Folds"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
310 | ed.setCursorPosition(*editorDict["Cursor"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
311 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
312 | # 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
|
313 | # =================== |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
314 | bpModel = dbs.getBreakPointModel() |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
315 | bpModel.addBreakPoints(sessionDict["Breakpoints"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
316 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
317 | # 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
|
318 | # ========================= |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
319 | wpModel = dbs.getWatchPointModel() |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
320 | wpModel.addWatchPoints(sessionDict["Watchpoints"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
321 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
322 | # 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
|
323 | # ================== |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
324 | debugInfoDict = sessionDict["DebugInfo"] |
8164
c8b88e73b56f
Fixed an issue related to an empty global config override dictionary.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8163
diff
changeset
|
325 | |
c8b88e73b56f
Fixed an issue related to an empty global config override dictionary.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8163
diff
changeset
|
326 | # 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
|
327 | 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
|
328 | debugInfoDict["GlobalConfigOverride"] = { |
c8b88e73b56f
Fixed an issue related to an empty global config override dictionary.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8163
diff
changeset
|
329 | "enable": False, |
c8b88e73b56f
Fixed an issue related to an empty global config override dictionary.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8163
diff
changeset
|
330 | "redirect": True, |
c8b88e73b56f
Fixed an issue related to an empty global config override dictionary.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8163
diff
changeset
|
331 | } |
c8b88e73b56f
Fixed an issue related to an empty global config override dictionary.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8163
diff
changeset
|
332 | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
333 | dbg.lastUsedVenvName = debugInfoDict["VirtualEnv"] |
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.setExceptionReporting(debugInfoDict["ReportExceptions"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
338 | dbg.setExcList(debugInfoDict["Exceptions"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
339 | dbg.setExcIgnoreList(debugInfoDict["IgnoredExceptions"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
340 | dbg.setAutoClearShell(debugInfoDict["AutoClearShell"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
341 | dbg.setTracePython(debugInfoDict["TracePython"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
342 | dbg.setAutoContinue(debugInfoDict["AutoContinue"]) |
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"]) |
8163 | 345 | dbg.setEnableGlobalConfigOverride( |
346 | debugInfoDict["GlobalConfigOverride"]) | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
347 | if not self.__isGlobal: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
348 | project.setDbgInfo( |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
349 | debugInfoDict["VirtualEnv"], |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
350 | debugInfoDict["CommandLine"], |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
351 | debugInfoDict["WorkingDirectory"], |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
352 | debugInfoDict["Environment"], |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
353 | debugInfoDict["ReportExceptions"], |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
354 | debugInfoDict["Exceptions"], |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
355 | debugInfoDict["IgnoredExceptions"], |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
356 | debugInfoDict["AutoClearShell"], |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
357 | debugInfoDict["TracePython"], |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
358 | debugInfoDict["AutoContinue"], |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
359 | debugInfoDict["EnableMultiprocess"], |
8163 | 360 | debugInfoDict["MultiprocessNoDebug"], |
361 | debugInfoDict["GlobalConfigOverride"], | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
362 | ) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
363 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
364 | # 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
|
365 | # ================= |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
366 | for bookmark in sessionDict["Bookmarks"]: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
367 | editor = vm.getOpenEditor(bookmark["Filename"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
368 | if editor is not None: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
369 | for lineno in bookmark["Lines"]: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
370 | editor.toggleBookmark(lineno) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
371 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
372 | # 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
|
373 | # ============================================= |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
374 | for browserState in sessionDict["ProjectBrowserStates"]: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
375 | browser = projectBrowser.getProjectBrowser(browserState["Name"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
376 | if browser is not None: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
377 | browser.expandItemsByName(browserState["ExpandedItems"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
378 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
379 | # 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
|
380 | # ===================== |
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
|
381 | 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
|
382 | 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
|
383 | 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
|
384 | 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
|
385 | 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
|
386 | ed.ensureCursorVisible() |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
387 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
388 | return True |