src/eric7/Network/IRC/IrcWidget.py

branch
eric7
changeset 10481
9aea3575bd16
parent 10475
ee41fab001f2
child 10517
aecd5a8c958c
equal deleted inserted replaced
10480:a19abaeeaf0f 10481:9aea3575bd16
5 5
6 """ 6 """
7 Module implementing the IRC window. 7 Module implementing the IRC window.
8 """ 8 """
9 9
10 import enum
10 import logging 11 import logging
11 import re 12 import re
12 13
13 from PyQt6.QtCore import QByteArray, QDateTime, Qt, QTimer, pyqtSignal, pyqtSlot 14 from PyQt6.QtCore import QByteArray, QDateTime, Qt, QTimer, pyqtSignal, pyqtSlot
14 from PyQt6.QtNetwork import QAbstractSocket, QTcpSocket 15 from PyQt6.QtNetwork import QAbstractSocket, QTcpSocket
34 35
35 from .IrcNetworkManager import IrcNetworkManager 36 from .IrcNetworkManager import IrcNetworkManager
36 from .Ui_IrcWidget import Ui_IrcWidget 37 from .Ui_IrcWidget import Ui_IrcWidget
37 38
38 39
40 class IrcConnectionState(enum.Enum):
41 """
42 Class defining the connection states.
43 """
44
45 Disconnected = 1
46 Connected = 2
47 Connecting = 3
48
49
39 class IrcWidget(QWidget, Ui_IrcWidget): 50 class IrcWidget(QWidget, Ui_IrcWidget):
40 """ 51 """
41 Class implementing the IRC window. 52 Class implementing the IRC window.
42 53
43 @signal autoConnected() emitted after an automatic connection was initiated 54 @signal autoConnected() emitted after an automatic connection was initiated
44 """ 55 """
45 56
46 autoConnected = pyqtSignal() 57 autoConnected = pyqtSignal()
47
48 # TODO: change this to an enum
49 ServerDisconnected = 1
50 ServerConnected = 2
51 ServerConnecting = 3
52 58
53 def __init__(self, parent=None): 59 def __init__(self, parent=None):
54 """ 60 """
55 Constructor 61 Constructor
56 62
85 self.__nickIndex = -1 91 self.__nickIndex = -1
86 self.__nickName = "" 92 self.__nickName = ""
87 self.__server = None 93 self.__server = None
88 self.__registering = False 94 self.__registering = False
89 95
90 self.__connectionState = IrcWidget.ServerDisconnected 96 self.__connectionState = IrcConnectionState.Disconnected
91 self.__sslErrorLock = False 97 self.__sslErrorLock = False
92 98
93 self.__buffer = "" 99 self.__buffer = ""
94 self.__userPrefix = {} 100 self.__userPrefix = {}
95 101
214 self.__socket.hostFound.connect(self.__hostFound) 220 self.__socket.hostFound.connect(self.__hostFound)
215 self.__socket.disconnected.connect(self.__hostDisconnected) 221 self.__socket.disconnected.connect(self.__hostDisconnected)
216 self.__socket.readyRead.connect(self.__readyRead) 222 self.__socket.readyRead.connect(self.__readyRead)
217 self.__socket.errorOccurred.connect(self.__tcpError) 223 self.__socket.errorOccurred.connect(self.__tcpError)
218 224
219 self.__connectionState = IrcWidget.ServerConnecting 225 self.__connectionState = IrcConnectionState.Connecting
220 if useSSL: 226 if useSSL:
221 self.networkWidget.addServerMessage( 227 self.networkWidget.addServerMessage(
222 self.tr("Info"), 228 self.tr("Info"),
223 self.tr( 229 self.tr(
224 "Looking for server {0} (port {1})" 230 "Looking for server {0} (port {1})"
585 591
586 if self.__socket: 592 if self.__socket:
587 self.__socket.deleteLater() 593 self.__socket.deleteLater()
588 self.__socket = None 594 self.__socket = None
589 595
590 self.__connectionState = IrcWidget.ServerDisconnected 596 self.__connectionState = IrcConnectionState.Disconnected
591 self.__sslErrorLock = False 597 self.__sslErrorLock = False
592 598
593 def __readyRead(self): 599 def __readyRead(self):
594 """ 600 """
595 Private slot to read data from the socket. 601 Private slot to read data from the socket.
848 854
849 self.networkWidget.addServerMessage(msgType, message) 855 self.networkWidget.addServerMessage(msgType, message)
850 856
851 if code == 1: 857 if code == 1:
852 # register with services after the welcome message 858 # register with services after the welcome message
853 self.__connectionState = IrcWidget.ServerConnected 859 self.__connectionState = IrcConnectionState.Connected
854 self.__registerWithServices() 860 self.__registerWithServices()
855 self.networkWidget.setRegistered(True) 861 self.networkWidget.setRegistered(True)
856 QTimer.singleShot(1000, self.__autoJoinChannels) 862 QTimer.singleShot(1000, self.__autoJoinChannels)
857 elif code == 5: 863 elif code == 5:
858 # extract the user privilege prefixes 864 # extract the user privilege prefixes
905 self.tr( 911 self.tr(
906 """Connection to server {0} (port {1}) lost while""" 912 """Connection to server {0} (port {1}) lost while"""
907 """ waiting for user response to an SSL error.""" 913 """ waiting for user response to an SSL error."""
908 ).format(self.__server.getName(), self.__server.getPort()), 914 ).format(self.__server.getName(), self.__server.getPort()),
909 ) 915 )
910 self.__connectionState = IrcWidget.ServerDisconnected 916 self.__connectionState = IrcConnectionState.Disconnected
911 elif error == QAbstractSocket.SocketError.HostNotFoundError: 917 elif error == QAbstractSocket.SocketError.HostNotFoundError:
912 self.networkWidget.addErrorMessage( 918 self.networkWidget.addErrorMessage(
913 self.tr("Socket Error"), 919 self.tr("Socket Error"),
914 self.tr( 920 self.tr(
915 "The host was not found. Please check the host name" 921 "The host was not found. Please check the host name"
974 """The SSL certificate for the server {0} (port {1})""" 980 """The SSL certificate for the server {0} (port {1})"""
975 """ failed the authenticity check. SSL errors""" 981 """ failed the authenticity check. SSL errors"""
976 """ were accepted by you.""" 982 """ were accepted by you."""
977 ).format(self.__server.getName(), self.__server.getPort()), 983 ).format(self.__server.getName(), self.__server.getPort()),
978 ) 984 )
979 if self.__connectionState == IrcWidget.ServerConnecting: 985 if self.__connectionState == IrcConnectionState.Connecting:
980 self.__socket.ignoreSslErrors() 986 self.__socket.ignoreSslErrors()
981 987
982 def __setUserPrivilegePrefix(self, prefix1, prefix2): 988 def __setUserPrivilegePrefix(self, prefix1, prefix2):
983 """ 989 """
984 Private method to set the user privilege prefix. 990 Private method to set the user privilege prefix.

eric ide

mercurial