src/eric7/RemoteServerInterface/EricServerInterface.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 11033
6b197c3389f7
permissions
-rw-r--r--

Updated copyright for 2025.

10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
11090
f5f5f5803935 Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11033
diff changeset
3 # Copyright (c) 2024 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the interface to the eric remote server.
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
10561
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
10 import collections
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import json
10762
d141283f7334 Adapted logging and improved receiving from the remote server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10723
diff changeset
12 import logging
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 import struct
10762
d141283f7334 Adapted logging and improved receiving from the remote server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10723
diff changeset
14 import time
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 import uuid
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 import zlib
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 from PyQt6.QtCore import QObject, pyqtSignal, pyqtSlot
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 from PyQt6.QtGui import QAction, QKeySequence
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 from PyQt6.QtNetwork import QAbstractSocket, QTcpSocket
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 from PyQt6.QtWidgets import QDialog, QMenu, QToolBar, QToolButton
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
10928
46651e194fbe Refactored some packages, modules and code to allow extracting the 'EricXxx' packages into a library project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10794
diff changeset
23 from eric7 import EricUtilities, Preferences
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 from eric7.EricGui import EricPixmapCache
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 from eric7.EricGui.EricAction import EricAction
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 from eric7.EricWidgets import EricMessageBox
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 from eric7.RemoteServer.EricRequestCategory import EricRequestCategory
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 class EricServerInterface(QObject):
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 Class implementing the interface to the eric remote server.
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 @signal showMenu(name:str, menu:QMenu) emitted when a menu is about to be shown.
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 The name of the menu and a reference to the menu are given.
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 @signal connectionStateChanged(state:bool) emitted to indicate a change of the
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 connection state
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10531
diff changeset
39 @signal aboutToDisconnect() emitted just befor the remote server is disconnected
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10531
diff changeset
40
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 @signal remoteReply(category:int, request:str, params:dict) emitted to deliver the
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 reply of an unknown category
10574
622e59b51640 Implemented the profiling and code coverage interface of the dialogs to the eric-ide server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10568
diff changeset
43 @signal remoteCoverageReply(request:str, params:dict) emitted to deliver the reply
622e59b51640 Implemented the profiling and code coverage interface of the dialogs to the eric-ide server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10568
diff changeset
44 of a remote server code coverage request
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 @signal remoteDebuggerReply(request:str, params:dict) emitted to deliver the reply
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 of a remote server debugger request
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 @signal remoteEchoReply(request:str, params:dict) emitted to deliver the reply of
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 a remote server echo request
10774
7f7ff7456904 Created a handler and interface for remote handling 'editor config' files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10771
diff changeset
49 @signal remoteEditorConfig(request:str, params:dict) emitted to deliver the reply
7f7ff7456904 Created a handler and interface for remote handling 'editor config' files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10771
diff changeset
50 of a remote server editor config request
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 @signal remoteFileSystemReply(request:str, params:dict) emitted to deliver the
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 reply of a remote server file system request
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 @signal remoteProjectReply(request:str, params:dict) emitted to deliver the reply
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 of a remote server project related request
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 @signal remoteServerReply(request:str, params:dict) emitted to deliver the reply
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 of a remote server control request
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 showMenu = pyqtSignal(str, QMenu)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10531
diff changeset
61 aboutToDisconnect = pyqtSignal()
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 connectionStateChanged = pyqtSignal(bool)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 remoteReply = pyqtSignal(int, str, dict)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65
10574
622e59b51640 Implemented the profiling and code coverage interface of the dialogs to the eric-ide server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10568
diff changeset
66 remoteCoverageReply = pyqtSignal(str, dict)
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 remoteDebuggerReply = pyqtSignal(str, dict)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 remoteEchoReply = pyqtSignal(str, dict)
10774
7f7ff7456904 Created a handler and interface for remote handling 'editor config' files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10771
diff changeset
69 remoteEditorConfig = pyqtSignal(str, dict)
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 remoteFileSystemReply = pyqtSignal(str, dict)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 remoteProjectReply = pyqtSignal(str, dict)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 remoteServerReply = pyqtSignal(str, dict)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 def __init__(self, parent=None):
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 Constructor
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 @param parent reference to the parent object (defaults to None)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 @type QObject (optional)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 super().__init__(parent=parent)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 self.__ui = parent
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 self.__categorySignalMapping = {
10574
622e59b51640 Implemented the profiling and code coverage interface of the dialogs to the eric-ide server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10568
diff changeset
86 EricRequestCategory.Coverage: self.remoteCoverageReply,
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 EricRequestCategory.Debugger: self.remoteDebuggerReply,
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 EricRequestCategory.Echo: self.remoteEchoReply,
10774
7f7ff7456904 Created a handler and interface for remote handling 'editor config' files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10771
diff changeset
89 EricRequestCategory.EditorConfig: self.remoteEditorConfig,
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 EricRequestCategory.FileSystem: self.remoteFileSystemReply,
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 EricRequestCategory.Project: self.remoteProjectReply,
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 EricRequestCategory.Server: self.remoteServerReply,
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 }
10775
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
94 self.__serviceFactory = {
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
95 # key: lower case service name; value method to create the service interface
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
96 "coverage": self.__createCoverageInterface,
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
97 "debugger": self.__createDebuggerInterface,
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
98 "editorconfig": self.__createEditorConfigInterface,
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
99 "filesystem": self.__createFilesystemInterface,
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
100 }
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10531
diff changeset
101 self.__serviceInterfaces = {}
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10531
diff changeset
102 # no specific service interfaces have been created yet
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 self.__connection = None
11033
6b197c3389f7 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
105 self.__clientId = b"" # prepended to each messge for validity checking
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 self.__callbacks = {} # callback references indexed by UUID
10561
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
107 self.__messageQueue = collections.deque()
10568
399d81a784a4 Implemented a guard against showing the connected/disconnected info twice in succession.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10567
diff changeset
108 self.__connected = False
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 self.connectionStateChanged.connect(self.__connectionStateChanged)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10531
diff changeset
112 def getServiceInterface(self, name):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10531
diff changeset
113 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10531
diff changeset
114 Public method to get a references to a specific service interface by
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10531
diff changeset
115 service name.
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10531
diff changeset
116
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10531
diff changeset
117 @param name service name
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10531
diff changeset
118 @type str
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10531
diff changeset
119 @return reference to the service interface
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10531
diff changeset
120 @rtype QObject
10561
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
121 @exception ValueError raised to indicate an unsupported server interface
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
122 was requested
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10531
diff changeset
123 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10531
diff changeset
124 lname = name.lower()
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10531
diff changeset
125 try:
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10531
diff changeset
126 return self.__serviceInterfaces[lname]
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10531
diff changeset
127 except KeyError:
10775
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
128 try:
10561
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
129 # instantiate the service interface
10775
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
130 self.__serviceFactory[lname]()
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
131 except KeyError:
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
132 raise ValueError(f"no such service supported ({name})")
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10531
diff changeset
133
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10531
diff changeset
134 return self.__serviceInterfaces[lname]
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10531
diff changeset
135
10775
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
136 def __createCoverageInterface(self):
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
137 """
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
138 Private method to create and register the 'Coverage' eric-ide server interface.
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
139 """
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
140 from .EricServerCoverageInterface import EricServerCoverageInterface
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
141
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
142 self.__serviceInterfaces["coverage"] = EricServerCoverageInterface(self)
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
143
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
144 def __createDebuggerInterface(self):
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
145 """
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
146 Private method to create and register the 'Debugger' eric-ide server interface.
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
147 """
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
148 from .EricServerDebuggerInterface import EricServerDebuggerInterface
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
149
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
150 self.__serviceInterfaces["debugger"] = EricServerDebuggerInterface(self)
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
151
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
152 def __createEditorConfigInterface(self):
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
153 """
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
154 Private method to create and register the 'EditorConfig' eric-ide server
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
155 interface.
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
156 """
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
157 from .EricServerEditorConfigInterface import EricServerEditorConfigInterface
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
158
10776
ec110553c5ab Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10775
diff changeset
159 self.__serviceInterfaces["editorconfig"] = EricServerEditorConfigInterface(self)
10775
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
160
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
161 def __createFilesystemInterface(self):
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
162 """
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
163 Private method to create and register the 'Filesystem' eric-ide server
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
164 interface.
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
165 """
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
166 from .EricServerFileSystemInterface import EricServerFileSystemInterface
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
167
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
168 self.__serviceInterfaces["filesystem"] = EricServerFileSystemInterface(self)
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
169
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 #######################################################################
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 ## Methods for handling the server connection.
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 #######################################################################
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173
11033
6b197c3389f7 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
174 def connectToServer(self, host, port=None, timeout=None, clientId=""):
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 """
10561
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
176 Public method to connect to the given host and port.
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 @param host host name or IP address of the eric remote server
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 @type str
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 @param port port number to connect to (defaults to None)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 @type int (optional)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 @param timeout timeout im seconds for the connection attempt
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 (defaults to None)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 @type int (optional)
11033
6b197c3389f7 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
185 @param clientId string prepended to each message for validity checking
6b197c3389f7 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
186 (defaults to "")
6b197c3389f7 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
187 @type str (optional)
10561
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
188 @return flag indicating success
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
189 @rtype bool
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 if not bool(port): # None or 0
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 # use default port
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 port = 42024
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 if not bool(timeout): # None or 0
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 # use configured default timeout
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 timeout = Preferences.getEricServer("ConnectionTimeout")
10561
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
198 timeout *= 1000 # convert to milliseconds
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 if self.__connection is not None:
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 self.disconnectFromServer()
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 self.__connection = QTcpSocket(self)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 self.__connection.connectToHost(host, port)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 if not self.__connection.waitForConnected(timeout):
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 EricMessageBox.critical(
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 None,
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 self.tr("Connect to eric-ide Server"),
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 self.tr(
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 "<p>The connection to the eric-ide server {0}:{1} could not be"
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 " established.</p><p>Reason: {2}</p>"
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 ).format(
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 host if ":" not in host else f"[{host}]",
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 port,
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 self.__connection.errorString(),
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 ),
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 )
10597
fbe93720ee9f Corrected a few formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
218
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 self.__connection = None
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 return False
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221
11033
6b197c3389f7 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
222 self.__clientId = clientId.encode("utf-8")
6b197c3389f7 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
223
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 self.__connection.readyRead.connect(self.__receiveJson)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225 self.__connection.disconnected.connect(self.__handleDisconnect)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 self.connectionStateChanged.emit(True)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 return True
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231 @pyqtSlot()
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 def disconnectFromServer(self):
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 Public method to disconnect from the eric remote server.
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 if self.__connection is not None and self.__connection.isValid():
10949
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
237 # signal we are about to disconnect
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10531
diff changeset
238 self.aboutToDisconnect.emit()
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10531
diff changeset
239
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10531
diff changeset
240 # disconnect from the eric-ide server
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 self.__connection.disconnectFromHost()
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 if self.__connection is not None:
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243 # may have disconnected already
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 self.__connection.waitForDisconnected(
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 Preferences.getEricServer("ConnectionTimeout") * 1000
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 )
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 self.connectionStateChanged.emit(False)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 self.__connection = None
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 self.__callbacks.clear()
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251
11033
6b197c3389f7 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
252 self.__clientId = b""
6b197c3389f7 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
253
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 def isServerConnected(self):
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256 Public method to check, if a connection to an eric-ide server has been
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 established.
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259 @return flag indicating the interface connection state
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260 @rtype bool
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
262 return (
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
263 self.__connection is not None
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
264 and self.__connection.state() == QAbstractSocket.SocketState.ConnectedState
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
265 )
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
267 @pyqtSlot()
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268 def __handleDisconnect(self):
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
270 Private slot handling a disconnect of the client.
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
271 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
272 if self.__connection is not None:
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273 self.__connection.close()
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
275 self.connectionStateChanged.emit(False)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
276 self.__connection = None
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
277 self.__callbacks.clear()
11033
6b197c3389f7 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
278 self.__clientId = b""
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
279
10723
88bec462b855 Extended the IDE server interface to get the host name and port as a string.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10630
diff changeset
280 def getHost(self):
88bec462b855 Extended the IDE server interface to get the host name and port as a string.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10630
diff changeset
281 """
88bec462b855 Extended the IDE server interface to get the host name and port as a string.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10630
diff changeset
282 Public method to get the connected host as "host name:port".
88bec462b855 Extended the IDE server interface to get the host name and port as a string.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10630
diff changeset
283
88bec462b855 Extended the IDE server interface to get the host name and port as a string.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10630
diff changeset
284 @return connected host as "host name:port" or an empty string, if there is no
88bec462b855 Extended the IDE server interface to get the host name and port as a string.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10630
diff changeset
285 valid connection
88bec462b855 Extended the IDE server interface to get the host name and port as a string.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10630
diff changeset
286 @rtype str
88bec462b855 Extended the IDE server interface to get the host name and port as a string.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10630
diff changeset
287 """
88bec462b855 Extended the IDE server interface to get the host name and port as a string.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10630
diff changeset
288 if self.isServerConnected():
10949
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
289 peerName = self.__connection.peerName()
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
290 return "{0}:{1}".format(
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
291 f"[{peerName}]" if ":" in peerName else peerName,
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
292 self.__connection.peerPort(),
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
293 )
10723
88bec462b855 Extended the IDE server interface to get the host name and port as a string.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10630
diff changeset
294 else:
88bec462b855 Extended the IDE server interface to get the host name and port as a string.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10630
diff changeset
295 return ""
88bec462b855 Extended the IDE server interface to get the host name and port as a string.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10630
diff changeset
296
10764
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10762
diff changeset
297 def getHostName(self):
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10762
diff changeset
298 """
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10762
diff changeset
299 Public method to get the name of the connected host.
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10762
diff changeset
300
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10762
diff changeset
301 @return name of the connected host or an empty string, if there is no
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10762
diff changeset
302 valid connection
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10762
diff changeset
303 @rtype str
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10762
diff changeset
304 """
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10762
diff changeset
305 if self.isServerConnected():
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10762
diff changeset
306 return self.__connection.peerName()
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10762
diff changeset
307 else:
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10762
diff changeset
308 return ""
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10762
diff changeset
309
10958
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
310 def parseHost(self, host):
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
311 """
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
312 Public method to parse a host string generated with 'getHost()'.
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
313
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
314 @param host host string
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
315 @type str
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
316 @return tuple containing the host name and the port
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
317 @rtype tuple of (str, int)
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
318 """
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
319 host = host.strip()
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
320 if "]" in host:
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
321 # IPv6 address
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
322 hostname, rest = host.split("]")
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
323 hostname = hostname[1:]
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
324 if rest and rest[0] == ":":
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
325 port = int(rest[1:])
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
326 else:
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
327 port = None
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
328 else:
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
329 if ":" in host:
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
330 hostname, port = host.split(":")
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
331 port = int(port)
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
332 else:
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
333 hostname = host
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
334 port = None
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
335
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
336 return hostname, port
79842be466d3 Extended the session file to contain the active 'eric-ide' server connection at the time of session creation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
337
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
338 #######################################################################
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339 ## Methods for sending requests and receiving the replies.
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
340 #######################################################################
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
341
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
342 @pyqtSlot()
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
343 def __receiveJson(self):
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
344 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
345 Private slot handling received data from the eric remote server.
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
346 """
10762
d141283f7334 Adapted logging and improved receiving from the remote server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10723
diff changeset
347 headerSize = struct.calcsize(b"!II")
d141283f7334 Adapted logging and improved receiving from the remote server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10723
diff changeset
348
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
349 while self.__connection and self.__connection.bytesAvailable():
10762
d141283f7334 Adapted logging and improved receiving from the remote server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10723
diff changeset
350 now = time.monotonic()
d141283f7334 Adapted logging and improved receiving from the remote server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10723
diff changeset
351 while self.__connection.bytesAvailable() < headerSize:
d141283f7334 Adapted logging and improved receiving from the remote server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10723
diff changeset
352 self.__connection.waitForReadyRead(50)
d141283f7334 Adapted logging and improved receiving from the remote server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10723
diff changeset
353 if time.monotonic() - now > 2.0: # 2 seconds timeout
d141283f7334 Adapted logging and improved receiving from the remote server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10723
diff changeset
354 return
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
355 header = self.__connection.read(struct.calcsize(b"!II"))
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
356 length, datahash = struct.unpack(b"!II", header)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
357
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
358 data = bytearray()
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
359 while len(data) < length:
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
360 maxSize = length - len(data)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
361 if self.__connection.bytesAvailable() < maxSize:
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
362 self.__connection.waitForReadyRead(50)
10567
b098e0d028cc Added some code to handle error conditions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10565
diff changeset
363 if not self.__connection:
b098e0d028cc Added some code to handle error conditions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10565
diff changeset
364 # connection to server is gone uncontrolled
b098e0d028cc Added some code to handle error conditions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10565
diff changeset
365 break
10561
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
366 newData = self.__connection.read(maxSize)
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
367 if newData:
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
368 data += newData
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
369
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
370 if zlib.adler32(data) & 0xFFFFFFFF != datahash:
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
371 # corrupted data -> discard and continue
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
372 continue
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
373
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
374 jsonString = data.decode("utf-8", "backslashreplace")
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
375
10762
d141283f7334 Adapted logging and improved receiving from the remote server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10723
diff changeset
376 logging.getLogger(__name__).debug(
d141283f7334 Adapted logging and improved receiving from the remote server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10723
diff changeset
377 f"<Remote Server Interface Rx> {jsonString}"
d141283f7334 Adapted logging and improved receiving from the remote server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10723
diff changeset
378 )
10561
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
379 # - print("Remote Server Interface Receive: {0}".format(jsonString))
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
380 # - this is for debugging only
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
381
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
382 try:
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
383 serverDataDict = json.loads(jsonString.strip())
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
384 except (TypeError, ValueError) as err:
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
385 EricMessageBox.critical(
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
386 None,
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
387 self.tr("JSON Protocol Error"),
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
388 self.tr(
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
389 """<p>The response received from the remote server"""
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
390 """ could not be decoded. Please report"""
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
391 """ this issue with the received data to the"""
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
392 """ eric bugs email address.</p>"""
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
393 """<p>Error: {0}</p>"""
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
394 """<p>Data:<br/>{1}</p>"""
10928
46651e194fbe Refactored some packages, modules and code to allow extracting the 'EricXxx' packages into a library project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10794
diff changeset
395 ).format(str(err), EricUtilities.html_encode(jsonString.strip())),
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
396 EricMessageBox.Ok,
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
397 )
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
398 return
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
399
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
400 reqUuid = serverDataDict["uuid"]
10561
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
401 if reqUuid:
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
402 # It is a response to a synchronous request -> handle the call back
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
403 # immediately.
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
404 self.__callbacks[reqUuid](
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
405 serverDataDict["reply"], serverDataDict["params"]
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
406 )
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
407 del self.__callbacks[reqUuid]
10561
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
408 else:
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
409 self.__messageQueue.append(serverDataDict)
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
410
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
411 while self.__messageQueue:
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
412 serverDataDict = self.__messageQueue.popleft() # get the first message
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
413 try:
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
414 self.__categorySignalMapping[serverDataDict["category"]].emit(
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
415 serverDataDict["reply"], serverDataDict["params"]
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
416 )
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
417 except KeyError:
10561
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
418 if serverDataDict["category"] == EricRequestCategory.Error:
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
419 # handle server errors in here
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
420 self.__handleServerError(
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
421 serverDataDict["reply"], serverDataDict["params"]
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
422 )
10561
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
423 else:
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
424 self.remoteReply.emit(
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
425 serverDataDict["category"],
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
426 serverDataDict["reply"],
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
427 serverDataDict["params"],
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
428 )
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
429
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
430 def sendJson(self, category, request, params, callback=None, flush=False):
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
431 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
432 Public method to send a single command to a client.
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
433
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
434 @param category service category
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
435 @type EricRequestCategory
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
436 @param request request name to be sent
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
437 @type str
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
438 @param params dictionary of named parameters for the request
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
439 @type dict
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
440 @param callback callback function for the reply from the eric remote server
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
441 (defaults to None)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
442 @type function (optional)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
443 @param flush flag indicating to flush the data to the socket
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
444 (defaults to False)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
445 @type bool (optional)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
446 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
447 if callback:
10561
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
448 reqUuid = str(uuid.uuid4())
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
449 self.__callbacks[reqUuid] = callback
10561
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
450 else:
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
451 reqUuid = ""
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
452
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
453 serviceDict = {
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
454 "jsonrpc": "2.0",
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
455 "category": category,
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
456 "request": request,
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
457 "params": params,
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
458 "uuid": reqUuid,
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
459 }
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
460 jsonString = json.dumps(serviceDict) + "\n"
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
461
10768
665dd4486071 Corrected a code style issue.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10764
diff changeset
462 logging.getLogger(__name__).debug(f"<Remote Server Interface Tx> {jsonString}")
10561
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
463 # - print("Remote Server Interface Send: {0}".format(jsonString))
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
464 # - this is for debugging only
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
465
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
466 if self.__connection is not None:
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
467 data = jsonString.encode("utf8", "backslashreplace")
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
468 header = struct.pack(b"!II", len(data), zlib.adler32(data) & 0xFFFFFFFF)
11033
6b197c3389f7 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
469 if self.__clientId:
6b197c3389f7 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
470 self.__connection.write(self.__clientId)
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
471 self.__connection.write(header)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
472 self.__connection.write(data)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
473 if flush:
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
474 self.__connection.flush()
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
475
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
476 def shutdownServer(self):
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
477 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
478 Public method shutdown the currebtly connected eric-ide remote server.
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
479 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
480 if self.__connection:
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
481 self.sendJson(
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
482 category=EricRequestCategory.Server,
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
483 request="Shutdown",
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
484 params={},
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
485 )
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
486
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
487 @pyqtSlot()
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
488 def serverVersions(self):
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
489 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
490 Public slot to request the eric-ide version of the server.
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
491 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
492 if self.__connection:
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
493 self.sendJson(
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
494 category=EricRequestCategory.Server,
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
495 request="Versions",
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
496 params={},
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
497 callback=self.__handleServerVersionReply,
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
498 )
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
499
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
500 #######################################################################
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
501 ## Callback methods
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
502 #######################################################################
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
503
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
504 def __handleServerVersionReply(self, reply, params):
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
505 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
506 Private method to handle the reply of a 'Version' request.
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
507
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
508 @param reply name of the eric-ide server reply
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
509 @type str
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
510 @param params dictionary containing the reply data
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
511 @type dict
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
512 @exception ValueError raised in case of an unsupported reply
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
513 """
10561
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
514 if reply != "Versions":
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
515 raise ValueError(f"unsupported reply received ({reply})")
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
516
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
517 else:
10597
fbe93720ee9f Corrected a few formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
518 hostname = params["hostname"]
10949
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
519 versionInfo = [
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
520 "<h2>",
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
521 self.tr("{0}Version Numbers").format(
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
522 self.tr("{0} - ").format(hostname) if hostname else ""
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
523 ),
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
524 "</h2><table>",
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
525 ]
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
526
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
527 # eric7 server version
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
528 versionInfo.extend(
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
529 [
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
530 "<tr><td></td><td></td></tr>",
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
531 f"<tr><td><b>eric7_server</b></td>"
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
532 f"<td>{params['version']} </td></tr>",
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
533 "<tr><td></td><td></td></tr>",
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
534 ]
10597
fbe93720ee9f Corrected a few formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
535 )
fbe93720ee9f Corrected a few formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
536
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
537 # Python version
10949
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
538 versionInfo.append(
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
539 f"<tr><td><b>Python</b></td>"
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
540 f"<td>{params['python']}, {params['py_bitsize']}</td></tr>"
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
541 )
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
542
10949
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
543 versionInfo.append("</table>")
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
544
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
545 EricMessageBox.about(
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
546 None,
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
547 self.tr("eric-ide Server Versions"),
10949
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
548 "".join(versionInfo),
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
549 )
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
550
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
551 #######################################################################
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
552 ## Reply handler methods
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
553 #######################################################################
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
554
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
555 def __handleServerError(self, reply, params):
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
556 """
10561
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
557 Private method handling server error replies.
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
558
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
559 @param reply name of the error reply
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
560 @type str
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
561 @param params dictionary containing the specific reply data
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
562 @type dict
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
563 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
564 if reply == "ClientChecksumException":
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
565 self.__ui.appendToStderr(
10597
fbe93720ee9f Corrected a few formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
566 self.tr(
fbe93720ee9f Corrected a few formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
567 "eric-ide Server Checksum Error\nError: {0}\nData:\n{1}\n"
fbe93720ee9f Corrected a few formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
568 ).format(params["ExceptionValue"], params["ProtocolData"])
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
569 )
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
570
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
571 elif reply == "ClientException":
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
572 self.__ui.appendToStderr(
10597
fbe93720ee9f Corrected a few formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
573 self.tr("eric-ide Server Data Error\nError: {0}\nData:\n{1}\n").format(
fbe93720ee9f Corrected a few formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
574 params["ExceptionValue"], params["ProtocolData"]
fbe93720ee9f Corrected a few formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
575 )
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
576 )
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
577
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
578 elif reply == "UnsupportedServiceCategory":
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
579 self.__ui.appendToStderr(
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
580 self.tr(
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
581 "eric-ide Server Unsupported Category\n"
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
582 "Error: The server received the unsupported request category '{0}'."
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
583 ).format(params["Category"])
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
584 )
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
585
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
586 #######################################################################
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
587 ## User interface related methods
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
588 #######################################################################
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
589
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
590 def initActions(self):
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
591 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
592 Public slot to initialize the eric-ide server actions.
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
593 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
594 self.actions = []
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
595
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
596 self.connectServerAct = EricAction(
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
597 self.tr("Connect"),
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
598 EricPixmapCache.getIcon("linkConnect"),
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
599 self.tr("Connect..."),
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
600 QKeySequence(self.tr("Meta+Shift+C")),
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
601 0,
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
602 self,
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
603 "remote_server_connect",
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
604 )
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
605 self.connectServerAct.setStatusTip(
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
606 self.tr("Show a dialog to connect to an 'eric-ide' server")
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
607 )
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
608 self.connectServerAct.setWhatsThis(
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
609 self.tr(
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
610 """<b>Connect...</b>"""
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
611 """<p>This opens a dialog to enter the connection parameters to"""
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
612 """ connect to a remote 'eric-ide' server.</p>"""
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
613 )
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
614 )
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
615 self.connectServerAct.triggered.connect(self.__connectToServer)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
616 self.actions.append(self.connectServerAct)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
617
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
618 self.disconnectServerAct = EricAction(
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
619 self.tr("Disconnect"),
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
620 EricPixmapCache.getIcon("linkDisconnect"),
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
621 self.tr("Disconnect"),
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
622 QKeySequence(self.tr("Meta+Shift+D")),
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
623 0,
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
624 self,
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
625 "remote_server_disconnect",
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
626 )
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
627 self.disconnectServerAct.setStatusTip(
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
628 self.tr("Disconnect from the currently connected 'eric-ide' server")
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
629 )
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
630 self.disconnectServerAct.setWhatsThis(
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
631 self.tr(
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
632 """<b>Disconnect</b>"""
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
633 """<p>This disconnects from the currently connected 'eric-ide'"""
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
634 """ server.</p>"""
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
635 )
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
636 )
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
637 self.disconnectServerAct.triggered.connect(self.disconnectFromServer)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
638 self.actions.append(self.disconnectServerAct)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
639
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
640 self.stopServerAct = EricAction(
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
641 self.tr("Stop Server"),
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
642 EricPixmapCache.getIcon("stopScript"),
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
643 self.tr("Stop Server"),
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
644 QKeySequence(self.tr("Meta+Shift+S")),
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
645 0,
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
646 self,
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
647 "remote_server_shutdown",
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
648 )
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
649 self.stopServerAct.setStatusTip(
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
650 self.tr("Stop the currently connected 'eric-ide' server")
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
651 )
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
652 self.stopServerAct.setWhatsThis(
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
653 self.tr(
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
654 """<b>Stop Server</b>"""
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
655 """<p>This stops the currently connected 'eric-ide server.</p>"""
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
656 )
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
657 )
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
658 self.stopServerAct.triggered.connect(self.__shutdownServer)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
659 self.actions.append(self.stopServerAct)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
660
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
661 self.serverVersionsAct = EricAction(
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
662 self.tr("Show Server Versions"),
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
663 EricPixmapCache.getIcon("helpAbout"),
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
664 self.tr("Show Server Versions"),
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
665 0,
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
666 0,
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
667 self,
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
668 "remote_server_versions",
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
669 )
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
670 self.serverVersionsAct.setStatusTip(
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
671 self.tr("Show the eric-ide server versions")
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
672 )
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
673 self.serverVersionsAct.setWhatsThis(
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
674 self.tr(
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
675 """<b>Show Server Versions</b>"""
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
676 """<p>This opens a dialog to show the eric-ide server versions.</p>"""
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
677 )
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
678 )
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
679 self.serverVersionsAct.triggered.connect(self.serverVersions)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
680 self.actions.append(self.serverVersionsAct)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
681
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
682 self.disconnectServerAct.setEnabled(False)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
683 self.stopServerAct.setEnabled(False)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
684 self.serverVersionsAct.setEnabled(False)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
685
11033
6b197c3389f7 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
686 def initMenus(self):
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
687 """
11033
6b197c3389f7 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
688 Public slot to initialize the eric-ide server menus.
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
689
11033
6b197c3389f7 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
690 @return reference to the main eric-ide server menu
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
691 @rtype QMenu
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
692 """
10561
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
693 self.__serverProfilesMenu = QMenu(self.tr("Connect to"))
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
694 self.__serverProfilesMenu.aboutToShow.connect(self.__showServerProfilesMenu)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
695 self.__serverProfilesMenu.triggered.connect(self.__serverProfileTriggered)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
696
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
697 menu = QMenu(self.tr("eric-ide Server"), self.__ui)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
698 menu.setTearOffEnabled(True)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
699 menu.aboutToShow.connect(self.__showEricServerMenu)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
700 menu.addAction(self.connectServerAct)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
701 menu.addMenu(self.__serverProfilesMenu)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
702 menu.addSeparator()
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
703 menu.addAction(self.disconnectServerAct)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
704 menu.addSeparator()
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
705 menu.addAction(self.stopServerAct)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
706 menu.addSeparator()
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
707 menu.addAction(self.serverVersionsAct)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
708
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
709 self.__menus = {
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
710 "Main": menu,
10775
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
711 "ServerProfiles": self.__serverProfilesMenu,
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
712 }
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
713
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
714 return menu
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
715
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
716 def initToolbar(self, toolbarManager):
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
717 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
718 Public slot to initialize the eric-ide server toolbar.
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
719
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
720 @param toolbarManager reference to a toolbar manager object
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
721 @type EricToolBarManager
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
722 @return the toolbar generated
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
723 @rtype QToolBar
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
724 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
725 self.__connectButton = QToolButton()
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
726 self.__connectButton.setIcon(self.connectServerAct.icon())
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
727 self.__connectButton.setToolTip(self.connectServerAct.toolTip())
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
728 self.__connectButton.setWhatsThis(self.connectServerAct.whatsThis())
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
729 self.__connectButton.setPopupMode(
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
730 QToolButton.ToolButtonPopupMode.MenuButtonPopup
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
731 )
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
732 self.__connectButton.setMenu(self.__serverProfilesMenu)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
733 self.connectServerAct.enabledChanged.connect(self.__connectButton.setEnabled)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
734 self.__connectButton.clicked.connect(self.connectServerAct.triggered)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
735
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
736 tb = QToolBar(self.tr("eric-ide Server"), self.__ui)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
737 tb.setObjectName("EricServerToolbar")
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
738 tb.setToolTip(self.tr("eric-ide Server"))
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
739
11004
5f8d929657b3 Fixed an issue initializing the eric-ide server toolbar.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10958
diff changeset
740 self.__connectButtonAct = tb.addWidget(self.__connectButton)
5f8d929657b3 Fixed an issue initializing the eric-ide server toolbar.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10958
diff changeset
741 self.__connectButtonAct.setText(self.connectServerAct.iconText())
5f8d929657b3 Fixed an issue initializing the eric-ide server toolbar.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10958
diff changeset
742 self.__connectButtonAct.setIcon(self.connectServerAct.icon())
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
743 tb.addAction(self.disconnectServerAct)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
744 tb.addSeparator()
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
745 tb.addAction(self.stopServerAct)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
746 tb.addSeparator()
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
747 tb.addAction(self.serverVersionsAct)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
748
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
749 toolbarManager.addToolBar(tb, tb.windowTitle())
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
750
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
751 return tb
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
752
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
753 @pyqtSlot()
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
754 def __showEricServerMenu(self):
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
755 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
756 Private slot to display the server menu.
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
757 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
758 connected = self.isServerConnected()
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
759 self.connectServerAct.setEnabled(not connected)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
760 self.disconnectServerAct.setEnabled(connected)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
761 self.stopServerAct.setEnabled(connected)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
762 self.serverVersionsAct.setEnabled(connected)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
763
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
764 self.showMenu.emit("Main", self.__menus["Main"])
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
765
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
766 @pyqtSlot()
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
767 def __showServerProfilesMenu(self):
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
768 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
769 Private slot to prepare the eric server profiles menu.
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
770 """
11033
6b197c3389f7 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
771 serverProfiles = Preferences.getEricServer("ConnectionProfiles")
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
772
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
773 self.__serverProfilesMenu.clear()
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
774
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
775 if not self.isServerConnected():
11033
6b197c3389f7 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
776 for serverProfile in sorted(serverProfiles):
6b197c3389f7 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
777 act = self.__serverProfilesMenu.addAction(serverProfile)
6b197c3389f7 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
778 data = serverProfiles[serverProfile]
6b197c3389f7 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
779 if len(data) == 3:
6b197c3389f7 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
780 # profile generated before eric-ide 24.12
6b197c3389f7 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
781 data.append("")
6b197c3389f7 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
782 act.setData(data)
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
783 self.__serverProfilesMenu.addSeparator()
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
784
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
785 self.__serverProfilesMenu.addAction(
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
786 self.tr("Manage Server Connections"), self.__manageServerProfiles
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
787 )
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
788
10775
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
789 self.showMenu.emit("ServerProfiles", self.__menus["ServerProfiles"])
fd8b7692c03d Refactored the EricServerInterface class for better maintenance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10774
diff changeset
790
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
791 @pyqtSlot(bool)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
792 def __connectionStateChanged(self, connected):
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
793 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
794 Private slot to handle the connection state change.
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
795
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
796 @param connected flag indicating the connection state
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
797 @type bool
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
798 """
10568
399d81a784a4 Implemented a guard against showing the connected/disconnected info twice in succession.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10567
diff changeset
799 if connected != self.__connected: # prevent executing it twice in succession
399d81a784a4 Implemented a guard against showing the connected/disconnected info twice in succession.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10567
diff changeset
800 self.__connected = connected
399d81a784a4 Implemented a guard against showing the connected/disconnected info twice in succession.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10567
diff changeset
801
399d81a784a4 Implemented a guard against showing the connected/disconnected info twice in succession.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10567
diff changeset
802 self.connectServerAct.setEnabled(not connected)
399d81a784a4 Implemented a guard against showing the connected/disconnected info twice in succession.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10567
diff changeset
803 self.disconnectServerAct.setEnabled(connected)
399d81a784a4 Implemented a guard against showing the connected/disconnected info twice in succession.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10567
diff changeset
804 self.stopServerAct.setEnabled(connected)
399d81a784a4 Implemented a guard against showing the connected/disconnected info twice in succession.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10567
diff changeset
805 self.serverVersionsAct.setEnabled(connected)
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
806
10568
399d81a784a4 Implemented a guard against showing the connected/disconnected info twice in succession.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10567
diff changeset
807 if connected:
399d81a784a4 Implemented a guard against showing the connected/disconnected info twice in succession.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10567
diff changeset
808 peerName = self.__connection.peerName()
399d81a784a4 Implemented a guard against showing the connected/disconnected info twice in succession.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10567
diff changeset
809 EricMessageBox.information(
399d81a784a4 Implemented a guard against showing the connected/disconnected info twice in succession.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10567
diff changeset
810 None,
399d81a784a4 Implemented a guard against showing the connected/disconnected info twice in succession.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10567
diff changeset
811 self.tr("Connect to eric-ide Server"),
399d81a784a4 Implemented a guard against showing the connected/disconnected info twice in succession.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10567
diff changeset
812 self.tr(
399d81a784a4 Implemented a guard against showing the connected/disconnected info twice in succession.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10567
diff changeset
813 "<p>The eric-ide server at <b>{0}:{1}</b> was connected"
399d81a784a4 Implemented a guard against showing the connected/disconnected info twice in succession.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10567
diff changeset
814 " successfully.</p>"
399d81a784a4 Implemented a guard against showing the connected/disconnected info twice in succession.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10567
diff changeset
815 ).format(
399d81a784a4 Implemented a guard against showing the connected/disconnected info twice in succession.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10567
diff changeset
816 f"[{peerName}]" if ":" in peerName else peerName,
399d81a784a4 Implemented a guard against showing the connected/disconnected info twice in succession.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10567
diff changeset
817 self.__connection.peerPort(),
399d81a784a4 Implemented a guard against showing the connected/disconnected info twice in succession.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10567
diff changeset
818 ),
399d81a784a4 Implemented a guard against showing the connected/disconnected info twice in succession.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10567
diff changeset
819 )
399d81a784a4 Implemented a guard against showing the connected/disconnected info twice in succession.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10567
diff changeset
820 else:
399d81a784a4 Implemented a guard against showing the connected/disconnected info twice in succession.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10567
diff changeset
821 EricMessageBox.information(
399d81a784a4 Implemented a guard against showing the connected/disconnected info twice in succession.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10567
diff changeset
822 None,
10794
cd93fbb75019 Corrected some typos in user strings discovered by Jaime and released the relevant translation files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10776
diff changeset
823 self.tr("Disconnect from eric-ide Server"),
10568
399d81a784a4 Implemented a guard against showing the connected/disconnected info twice in succession.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10567
diff changeset
824 self.tr("""The eric-ide server was disconnected."""),
399d81a784a4 Implemented a guard against showing the connected/disconnected info twice in succession.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10567
diff changeset
825 )
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
826
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
827 @pyqtSlot()
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
828 def __connectToServer(self):
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
829 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
830 Private slot to connect to a remote eric-ide server.
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
831 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
832 from .EricServerConnectionDialog import EricServerConnectionDialog
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
833
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
834 dlg = EricServerConnectionDialog(parent=self.__ui)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
835 if dlg.exec() == QDialog.DialogCode.Accepted:
11033
6b197c3389f7 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
836 hostname, port, timeout, clientId = dlg.getData()
6b197c3389f7 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
837 self.connectToServer(
6b197c3389f7 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
838 hostname, port=port, timeout=timeout, clientId=clientId
6b197c3389f7 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
839 )
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
840
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
841 @pyqtSlot()
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
842 def __shutdownServer(self):
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
843 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
844 Private slot to shut down the currently connected eric-ide server.
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
845 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
846 ok = EricMessageBox.yesNo(
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
847 None,
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
848 self.tr("Stop Server"),
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
849 self.tr(
10771
69dfb1339451 Improved the server shutdown warning to show the host name of the currently connected eric-ide server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10768
diff changeset
850 "<p>Do you really want to stop the currently connected eric-ide server"
69dfb1339451 Improved the server shutdown warning to show the host name of the currently connected eric-ide server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10768
diff changeset
851 " <b>{0}</b>? No further connections will be possible without"
69dfb1339451 Improved the server shutdown warning to show the host name of the currently connected eric-ide server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10768
diff changeset
852 " restarting the server.</p>"
69dfb1339451 Improved the server shutdown warning to show the host name of the currently connected eric-ide server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10768
diff changeset
853 ).format(self.getHost()),
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
854 )
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
855 if ok:
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
856 self.shutdownServer()
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
857
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
858 @pyqtSlot(QAction)
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
859 def __serverProfileTriggered(self, act):
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
860 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
861 Private slot to handle the selection of a remote server connection.
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
862
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
863 @param act reference to the triggered profile action
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
864 @type QAction
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
865 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
866 data = act.data()
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
867 if data is not None:
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
868 # handle the connection
11033
6b197c3389f7 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
869 hostname, port, timeout, clientId = data
6b197c3389f7 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
870 self.connectToServer(
6b197c3389f7 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
871 hostname, port=port, timeout=timeout, clientId=clientId
6b197c3389f7 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
872 )
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
873
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
874 @pyqtSlot()
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
875 def __manageServerProfiles(self):
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
876 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
877 Private slot to show a dialog to manage the eric-ide server connection
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
878 profiles.
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
879 """
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
880 from .EricServerProfilesDialog import EricServerProfilesDialog
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
881
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
882 dlg = EricServerProfilesDialog(
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11004
diff changeset
883 Preferences.getEricServer("ConnectionProfiles"), parent=self.__ui
10531
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
884 )
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
885 if dlg.exec() == QDialog.DialogCode.Accepted:
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
886 profiles = dlg.getConnectionProfiles()
3308e8349e4c Started implementing an eric-ide server for remote development (e.g. on a different host or in a Docker container).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
887 Preferences.setEricServer("ConnectionProfiles", profiles)

eric ide

mercurial