Sun, 16 May 2021 20:07:24 +0200
Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
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 | |
8318
962bce857696
Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
13 | from PyQt6.QtCore import QObject |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | from E5Gui import E5MessageBox |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | from E5Gui.E5OverrideCursor import E5OverridenCursor |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | from E5Gui.E5Application import e5App |
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 |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | project = e5App().getObject("Project") |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | projectBrowser = e5App().getObject("ProjectBrowser") |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | multiProject = e5App().getObject("MultiProject") |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | vm = e5App().getObject("ViewManager") |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | dbg = e5App().getObject("DebugUI") |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | dbs = e5App().getObject("DebugServer") |
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(), |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | "Orientation": vm.getSplitOrientation(), |
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: |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
230 | with E5OverridenCursor(): |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
231 | E5MessageBox.critical( |
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: |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
257 | E5MessageBox.critical( |
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 |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
268 | project = e5App().getObject("Project") |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
269 | projectBrowser = e5App().getObject("ProjectBrowser") |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
270 | multiProject = e5App().getObject("MultiProject") |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
271 | vm = e5App().getObject("ViewManager") |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
272 | dbg = e5App().getObject("DebugUI") |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
273 | dbs = e5App().getObject("DebugServer") |
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 | # ================================================= |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
284 | vm.setSplitOrientation(sessionDict["ViewManagerSplits"]["Orientation"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
285 | vm.setSplitCount(sessionDict["ViewManagerSplits"]["Count"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
286 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
287 | editorsDict = {} |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
288 | for editorDict in sessionDict["Editors"]: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
289 | if editorDict["Clone"] and editorDict["Filename"] in editorsDict: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
290 | editor = editorsDict[editorDict["Filename"]] |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
291 | ed = vm.newEditorView( |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
292 | editorDict["Filename"], editor, editor.getFileType(), |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
293 | indexes=(editorDict["Splitindex"], |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
294 | editorDict["Editorindex"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
295 | ) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
296 | else: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
297 | ed = vm.openSourceFile( |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
298 | editorDict["Filename"], |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
299 | indexes=(editorDict["Splitindex"], |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
300 | editorDict["Editorindex"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
301 | ) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
302 | editorsDict[editorDict["Filename"]] = ed |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
303 | if ed is not None: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
304 | ed.zoomTo(editorDict["Zoom"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
305 | if editorDict["Folds"]: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
306 | ed.recolor() |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
307 | ed.setContractedFolds(editorDict["Folds"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
308 | ed.setCursorPosition(*editorDict["Cursor"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
309 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
310 | # 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
|
311 | # =================== |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
312 | bpModel = dbs.getBreakPointModel() |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
313 | bpModel.addBreakPoints(sessionDict["Breakpoints"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
314 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
315 | # 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
|
316 | # ========================= |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
317 | wpModel = dbs.getWatchPointModel() |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
318 | wpModel.addWatchPoints(sessionDict["Watchpoints"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
319 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
320 | # 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
|
321 | # ================== |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
322 | 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
|
323 | |
c8b88e73b56f
Fixed an issue related to an empty global config override dictionary.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8163
diff
changeset
|
324 | # 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
|
325 | 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
|
326 | debugInfoDict["GlobalConfigOverride"] = { |
c8b88e73b56f
Fixed an issue related to an empty global config override dictionary.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8163
diff
changeset
|
327 | "enable": False, |
c8b88e73b56f
Fixed an issue related to an empty global config override dictionary.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8163
diff
changeset
|
328 | "redirect": True, |
c8b88e73b56f
Fixed an issue related to an empty global config override dictionary.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8163
diff
changeset
|
329 | } |
c8b88e73b56f
Fixed an issue related to an empty global config override dictionary.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8163
diff
changeset
|
330 | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
331 | dbg.lastUsedVenvName = debugInfoDict["VirtualEnv"] |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
332 | dbg.setArgvHistory(debugInfoDict["CommandLine"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
333 | dbg.setWdHistory(debugInfoDict["WorkingDirectory"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
334 | dbg.setEnvHistory(debugInfoDict["Environment"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
335 | dbg.setExceptionReporting(debugInfoDict["ReportExceptions"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
336 | dbg.setExcList(debugInfoDict["Exceptions"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
337 | dbg.setExcIgnoreList(debugInfoDict["IgnoredExceptions"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
338 | dbg.setAutoClearShell(debugInfoDict["AutoClearShell"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
339 | dbg.setTracePython(debugInfoDict["TracePython"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
340 | dbg.setAutoContinue(debugInfoDict["AutoContinue"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
341 | dbg.setEnableMultiprocess(debugInfoDict["EnableMultiprocess"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
342 | dbg.setMultiprocessNoDebugHistory(debugInfoDict["MultiprocessNoDebug"]) |
8163 | 343 | dbg.setEnableGlobalConfigOverride( |
344 | debugInfoDict["GlobalConfigOverride"]) | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
345 | if not self.__isGlobal: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
346 | project.setDbgInfo( |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
347 | debugInfoDict["VirtualEnv"], |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
348 | debugInfoDict["CommandLine"], |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
349 | debugInfoDict["WorkingDirectory"], |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
350 | debugInfoDict["Environment"], |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
351 | debugInfoDict["ReportExceptions"], |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
352 | debugInfoDict["Exceptions"], |
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"], |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
357 | debugInfoDict["EnableMultiprocess"], |
8163 | 358 | debugInfoDict["MultiprocessNoDebug"], |
359 | debugInfoDict["GlobalConfigOverride"], | |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
360 | ) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
361 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
362 | # 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
|
363 | # ================= |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
364 | for bookmark in sessionDict["Bookmarks"]: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
365 | editor = vm.getOpenEditor(bookmark["Filename"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
366 | if editor is not None: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
367 | for lineno in bookmark["Lines"]: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
368 | editor.toggleBookmark(lineno) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
369 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
370 | # 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
|
371 | # ============================================= |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
372 | for browserState in sessionDict["ProjectBrowserStates"]: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
373 | browser = projectBrowser.getProjectBrowser(browserState["Name"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
374 | if browser is not None: |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
375 | browser.expandItemsByName(browserState["ExpandedItems"]) |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
376 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
377 | # 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
|
378 | # ===================== |
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
|
379 | 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
|
380 | 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
|
381 | 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
|
382 | 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
|
383 | 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
|
384 | ed.ensureCursorVisible() |
8009
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
385 | |
29818ac4853c
Implemented the JSON based session files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
386 | return True |