src/eric7/RemoteServerInterface/EricServerDebuggerInterface.py

Tue, 10 Dec 2024 15:46:34 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 10 Dec 2024 15:46:34 +0100
branch
eric7
changeset 11090
f5f5f5803935
parent 10962
b56b76c0221b
child 11148
15e30f0c76a8
permissions
-rw-r--r--

Updated copyright for 2025.

10555
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
11090
f5f5f5803935 Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10962
diff changeset
3 # Copyright (c) 2024 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
10555
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the file system interface to the eric-ide server.
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 from PyQt6.QtCore import QEventLoop, QObject, pyqtSignal, pyqtSlot
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 from eric7.EricWidgets import EricMessageBox
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 from eric7.EricWidgets.EricApplication import ericApp
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 from eric7.RemoteServer.EricRequestCategory import EricRequestCategory
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 from eric7.SystemUtilities import FileSystemUtilities
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 class EricServerDebuggerInterface(QObject):
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 """
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 Class implementing the file system interface to the eric-ide server.
10574
622e59b51640 Implemented the profiling and code coverage interface of the dialogs to the eric-ide server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10563
diff changeset
21
622e59b51640 Implemented the profiling and code coverage interface of the dialogs to the eric-ide server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10563
diff changeset
22 @signal debugClientResponse(response:str) emitted to relay a response of
622e59b51640 Implemented the profiling and code coverage interface of the dialogs to the eric-ide server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10563
diff changeset
23 the remote debug client
622e59b51640 Implemented the profiling and code coverage interface of the dialogs to the eric-ide server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10563
diff changeset
24 @signal debugClientDisconnected(debuggerId:str) emitted when a remote debug
622e59b51640 Implemented the profiling and code coverage interface of the dialogs to the eric-ide server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10563
diff changeset
25 client did disconnect from the eric-ide server
622e59b51640 Implemented the profiling and code coverage interface of the dialogs to the eric-ide server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10563
diff changeset
26 @signal lastClientExited() emitted to indicate that the last debug client of
622e59b51640 Implemented the profiling and code coverage interface of the dialogs to the eric-ide server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10563
diff changeset
27 the eric-ide server exited
10555
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 """
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 debugClientResponse = pyqtSignal(str)
10561
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
31 debugClientDisconnected = pyqtSignal(str)
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
32 lastClientExited = pyqtSignal()
10555
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 def __init__(self, serverInterface):
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 """
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 Constructor
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 @param serverInterface reference to the eric-ide server interface
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 @type EricServerInterface
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 """
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 super().__init__(parent=serverInterface)
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 self.__serverInterface = serverInterface
10561
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
44 self.__clientStarted = False
10555
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 self.__replyMethodMapping = {
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 "DebuggerRequestError": self.__handleDbgRequestError,
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 "DebugClientResponse": self.__handleDbgClientResponse,
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 "DebugClientDisconnected": self.__handleDbgClientDisconnected,
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 "LastDebugClientExited": self.__handleLastDbgClientExited,
10561
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
51 "MainClientExited": self.__handleMainClientExited,
10962
b56b76c0221b eric-ide Server Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10636
diff changeset
52 "StartClientError": self.__handleStartClientError,
10555
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 }
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 # connect some signals
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 self.__serverInterface.remoteDebuggerReply.connect(self.__handleDebuggerReply)
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 def sendClientCommand(self, debuggerId, jsonCommand):
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 """
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 Public method to rely a debug client command via the eric-ide server.
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 @param debuggerId id of the debug client to send the command to
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 @type str
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 @param jsonCommand JSON encoded command dictionary to be relayed
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 @type str
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 """
10563
b4b47c1a02ba Made the eric-ide server a single connection server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10561
diff changeset
67 if self.__serverInterface.isServerConnected():
b4b47c1a02ba Made the eric-ide server a single connection server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10561
diff changeset
68 self.__serverInterface.sendJson(
b4b47c1a02ba Made the eric-ide server a single connection server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10561
diff changeset
69 category=EricRequestCategory.Debugger,
b4b47c1a02ba Made the eric-ide server a single connection server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10561
diff changeset
70 request="DebugClientCommand",
b4b47c1a02ba Made the eric-ide server a single connection server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10561
diff changeset
71 params={"debugger_id": debuggerId, "command": jsonCommand},
b4b47c1a02ba Made the eric-ide server a single connection server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10561
diff changeset
72 )
10555
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 @pyqtSlot(str, dict)
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 def __handleDebuggerReply(self, reply, params):
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 """
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 Private slot to handle a debugger reply from the eric-ide server.
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 @param reply name of the server reply
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 @type str
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 @param params dictionary containing the reply data
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 @type dict
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 """
10563
b4b47c1a02ba Made the eric-ide server a single connection server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10561
diff changeset
84 if self.__serverInterface.isServerConnected():
b4b47c1a02ba Made the eric-ide server a single connection server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10561
diff changeset
85 try:
b4b47c1a02ba Made the eric-ide server a single connection server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10561
diff changeset
86 self.__replyMethodMapping[reply](params)
b4b47c1a02ba Made the eric-ide server a single connection server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10561
diff changeset
87 except KeyError:
b4b47c1a02ba Made the eric-ide server a single connection server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10561
diff changeset
88 EricMessageBox.critical(
b4b47c1a02ba Made the eric-ide server a single connection server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10561
diff changeset
89 None,
b4b47c1a02ba Made the eric-ide server a single connection server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10561
diff changeset
90 self.tr("Unknown Server Reply"),
b4b47c1a02ba Made the eric-ide server a single connection server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10561
diff changeset
91 self.tr(
b4b47c1a02ba Made the eric-ide server a single connection server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10561
diff changeset
92 "<p>The eric-ide server debugger interface sent the unknown"
b4b47c1a02ba Made the eric-ide server a single connection server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10561
diff changeset
93 " reply <b>{0}</b>.</p>"
b4b47c1a02ba Made the eric-ide server a single connection server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10561
diff changeset
94 ).format(reply),
b4b47c1a02ba Made the eric-ide server a single connection server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10561
diff changeset
95 )
10555
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 #######################################################################
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 ## Methods for handling of debug client replies.
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 #######################################################################
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 def __handleDbgRequestError(self, params):
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 """
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 Private method to handle an error reported by the debugger interface of
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 the eric-ide server.
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 @param params dictionary containing the reply data
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 @type dict
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 """
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 EricMessageBox.warning(
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 None,
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 self.tr("Debug Client Command"),
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 self.tr(
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 "<p>The IDE received an error message.</p><p>Error: {0}</p>"
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 ).format(params["Error"]),
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 )
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 def __handleDbgClientResponse(self, params):
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 """
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 Private method to handle a response from a debug client connected to the
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 eric-ide server.
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 @param params dictionary containing the reply data
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 @type dict
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 """
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 self.debugClientResponse.emit(params["response"])
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 def __handleDbgClientDisconnected(self, params):
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 """
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 Private method to handle a debug client disconnect report of the
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 eric-ide server.
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 @param params dictionary containing the reply data
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 @type dict
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 """
10561
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
135 self.debugClientDisconnected.emit(params["debugger_id"])
10555
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136
10561
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
137 def __handleLastDbgClientExited(self, params): # noqa: U100
10555
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 """
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 Private method to handle a report of the eric-ide server, that the last
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 debug client has disconnected.
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 @param params dictionary containing the reply data
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 @type dict
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 """
10561
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
145 self.__clientStarted = False
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
146 self.lastClientExited.emit()
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
147
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
148 def __handleMainClientExited(self, params): # noqa: U100
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
149 """
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
150 Private method to handle the main client exiting.
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
151
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
152 @param params dictionary containing the reply data
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
153 @type dict
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
154 """
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
155 self.__clientStarted = False
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
156 ericApp().getObject("DebugServer").signalMainClientExit()
10555
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157
10962
b56b76c0221b eric-ide Server Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10636
diff changeset
158 def __handleStartClientError(self, params):
b56b76c0221b eric-ide Server Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10636
diff changeset
159 """
b56b76c0221b eric-ide Server Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10636
diff changeset
160 Private method to handle an error starting the remote debug client.
b56b76c0221b eric-ide Server Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10636
diff changeset
161
b56b76c0221b eric-ide Server Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10636
diff changeset
162 @param params dictionary containing the reply data
b56b76c0221b eric-ide Server Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10636
diff changeset
163 @type dict
b56b76c0221b eric-ide Server Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10636
diff changeset
164 """
b56b76c0221b eric-ide Server Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10636
diff changeset
165 EricMessageBox.warning(
b56b76c0221b eric-ide Server Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10636
diff changeset
166 None,
b56b76c0221b eric-ide Server Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10636
diff changeset
167 self.tr("Start Debug Client"),
b56b76c0221b eric-ide Server Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10636
diff changeset
168 self.tr(
b56b76c0221b eric-ide Server Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10636
diff changeset
169 "<p>The debug client of the 'eric-ide' server could not be started.</p>"
b56b76c0221b eric-ide Server Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10636
diff changeset
170 "<p>Error: {0}</p>"
b56b76c0221b eric-ide Server Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10636
diff changeset
171 ).format(params["Error"]),
b56b76c0221b eric-ide Server Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10636
diff changeset
172 )
b56b76c0221b eric-ide Server Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10636
diff changeset
173
10555
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 #######################################################################
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 ## Methods for sending debug server commands to the eric-ide server.
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 #######################################################################
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 def startClient(self, interpreter, originalPathString, args, workingDir=""):
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 """
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 Public method to send a command to start a debug client.
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 @param interpreter path of the remote interpreter to be used
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 @type str
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 @param originalPathString original PATH environment variable
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 @type str
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 @param args list of command line parameters for the debug client
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 @type list of str
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 @param workingDir directory to start the debugger client in (defaults to "")
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 @type str (optional)
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 """
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 self.__serverInterface.sendJson(
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 category=EricRequestCategory.Debugger,
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 request="StartClient",
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 params={
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 "interpreter": FileSystemUtilities.plainFileName(interpreter),
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 "path": originalPathString,
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 "arguments": args,
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 "working_dir": FileSystemUtilities.plainFileName(workingDir),
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 },
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 )
10561
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
201 self.__clientStarted = True
10555
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 def stopClient(self):
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 """
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 Public method to stop the debug client synchronously.
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 """
10561
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
207 if self.__serverInterface.isServerConnected() and self.__clientStarted:
10555
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 loop = QEventLoop()
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209
10561
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
210 def callback(reply, params): # noqa: U100
10555
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 """
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 Function to handle the server reply
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 @param reply name of the server reply
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 @type str
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 @param params dictionary containing the reply data
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 @type dict
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 """
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 if reply == "StopClient":
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 loop.quit()
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 self.__serverInterface.sendJson(
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223 category=EricRequestCategory.Debugger,
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 request="StopClient",
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225 params={},
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 callback=callback,
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 )
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228
08e853c0c77b Implemented an eric-ide Server Shell.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 loop.exec()
10561
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
230 self.__clientStarted = False

eric ide

mercurial