10 import json |
10 import json |
11 import time |
11 import time |
12 |
12 |
13 from PyQt6.QtCore import Qt, QObject |
13 from PyQt6.QtCore import Qt, QObject |
14 |
14 |
15 from E5Gui import E5MessageBox |
15 from E5Gui import EricMessageBox |
16 from E5Gui.E5OverrideCursor import E5OverridenCursor |
16 from E5Gui.EricOverrideCursor import EricOverridenCursor |
17 from E5Gui.E5Application import e5App |
17 from E5Gui.EricApplication import ericApp |
18 |
18 |
19 import Preferences |
19 import Preferences |
20 |
20 |
21 |
21 |
22 class SessionFile(QObject): |
22 class SessionFile(QObject): |
44 @type str |
44 @type str |
45 @return flag indicating a successful write |
45 @return flag indicating a successful write |
46 @rtype bool |
46 @rtype bool |
47 """ |
47 """ |
48 # get references to objects we need |
48 # get references to objects we need |
49 project = e5App().getObject("Project") |
49 project = ericApp().getObject("Project") |
50 projectBrowser = e5App().getObject("ProjectBrowser") |
50 projectBrowser = ericApp().getObject("ProjectBrowser") |
51 multiProject = e5App().getObject("MultiProject") |
51 multiProject = ericApp().getObject("MultiProject") |
52 vm = e5App().getObject("ViewManager") |
52 vm = ericApp().getObject("ViewManager") |
53 dbg = e5App().getObject("DebugUI") |
53 dbg = ericApp().getObject("DebugUI") |
54 dbs = e5App().getObject("DebugServer") |
54 dbs = ericApp().getObject("DebugServer") |
55 |
55 |
56 # prepare the session data dictionary |
56 # prepare the session data dictionary |
57 # step 0: header |
57 # step 0: header |
58 sessionDict = {} |
58 sessionDict = {} |
59 sessionDict["header"] = {} |
59 sessionDict["header"] = {} |
225 try: |
225 try: |
226 jsonString = json.dumps(sessionDict, indent=2) |
226 jsonString = json.dumps(sessionDict, indent=2) |
227 with open(filename, "w") as f: |
227 with open(filename, "w") as f: |
228 f.write(jsonString) |
228 f.write(jsonString) |
229 except (TypeError, OSError) as err: |
229 except (TypeError, OSError) as err: |
230 with E5OverridenCursor(): |
230 with EricOverridenCursor(): |
231 E5MessageBox.critical( |
231 EricMessageBox.critical( |
232 None, |
232 None, |
233 self.tr("Save Session"), |
233 self.tr("Save Session"), |
234 self.tr( |
234 self.tr( |
235 "<p>The session file <b>{0}</b> could not be" |
235 "<p>The session file <b>{0}</b> could not be" |
236 " written.</p><p>Reason: {1}</p>" |
236 " written.</p><p>Reason: {1}</p>" |
252 try: |
252 try: |
253 with open(filename, "r") as f: |
253 with open(filename, "r") as f: |
254 jsonString = f.read() |
254 jsonString = f.read() |
255 sessionDict = json.loads(jsonString) |
255 sessionDict = json.loads(jsonString) |
256 except (OSError, json.JSONDecodeError) as err: |
256 except (OSError, json.JSONDecodeError) as err: |
257 E5MessageBox.critical( |
257 EricMessageBox.critical( |
258 None, |
258 None, |
259 self.tr("Read Session"), |
259 self.tr("Read Session"), |
260 self.tr( |
260 self.tr( |
261 "<p>The session file <b>{0}</b> could not be read.</p>" |
261 "<p>The session file <b>{0}</b> could not be read.</p>" |
262 "<p>Reason: {1}</p>" |
262 "<p>Reason: {1}</p>" |
263 ).format(filename, str(err)) |
263 ).format(filename, str(err)) |
264 ) |
264 ) |
265 return False |
265 return False |
266 |
266 |
267 # get references to objects we need |
267 # get references to objects we need |
268 project = e5App().getObject("Project") |
268 project = ericApp().getObject("Project") |
269 projectBrowser = e5App().getObject("ProjectBrowser") |
269 projectBrowser = ericApp().getObject("ProjectBrowser") |
270 multiProject = e5App().getObject("MultiProject") |
270 multiProject = ericApp().getObject("MultiProject") |
271 vm = e5App().getObject("ViewManager") |
271 vm = ericApp().getObject("ViewManager") |
272 dbg = e5App().getObject("DebugUI") |
272 dbg = ericApp().getObject("DebugUI") |
273 dbs = e5App().getObject("DebugServer") |
273 dbs = ericApp().getObject("DebugServer") |
274 |
274 |
275 # step 1: multi project and project |
275 # step 1: multi project and project |
276 # ================================= |
276 # ================================= |
277 if sessionDict["MultiProject"]: |
277 if sessionDict["MultiProject"]: |
278 multiProject.openMultiProject(sessionDict["MultiProject"], False) |
278 multiProject.openMultiProject(sessionDict["MultiProject"], False) |