Network/IRC/IrcWidget.py

changeset 6587
a04952159050
parent 6514
f11a703e4664
child 6645
ad476851d7e0
equal deleted inserted replaced
6586:99b05f86c45e 6587:a04952159050
180 if network: 180 if network:
181 self.__server = network.getServer() 181 self.__server = network.getServer()
182 self.__identityName = network.getIdentityName() 182 self.__identityName = network.getIdentityName()
183 identity = self.__ircNetworkManager.getIdentity( 183 identity = self.__ircNetworkManager.getIdentity(
184 self.__identityName) 184 self.__identityName)
185 self.__userName = identity.getIdent() 185 if identity:
186 self.__quitMessage = identity.getQuitMessage() 186 self.__userName = identity.getIdent()
187 if self.__server: 187 self.__quitMessage = identity.getQuitMessage()
188 useSSL = self.__server.useSSL() 188 if self.__server:
189 if useSSL and not SSL_AVAILABLE: 189 useSSL = self.__server.useSSL()
190 E5MessageBox.critical( 190 if useSSL and not SSL_AVAILABLE:
191 self, 191 E5MessageBox.critical(
192 self.tr("SSL Connection"), 192 self,
193 self.tr( 193 self.tr("SSL Connection"),
194 """An encrypted connection to the IRC""" 194 self.tr(
195 """ network was requested but SSL is not""" 195 """An encrypted connection to the IRC"""
196 """ available. Please change the server""" 196 """ network was requested but SSL is not"""
197 """ configuration.""")) 197 """ available. Please change the server"""
198 return 198 """ configuration."""))
199 199 return
200 if useSSL: 200
201 # create SSL socket 201 if useSSL:
202 self.__socket = QSslSocket(self) 202 # create SSL socket
203 self.__socket.encrypted.connect(self.__hostConnected) 203 self.__socket = QSslSocket(self)
204 self.__socket.sslErrors.connect(self.__sslErrors) 204 self.__socket.encrypted.connect(
205 else: 205 self.__hostConnected)
206 # create TCP socket 206 self.__socket.sslErrors.connect(
207 self.__socket = QTcpSocket(self) 207 self.__sslErrors)
208 self.__socket.connected.connect(self.__hostConnected) 208 else:
209 self.__socket.hostFound.connect(self.__hostFound) 209 # create TCP socket
210 self.__socket.disconnected.connect(self.__hostDisconnected) 210 self.__socket = QTcpSocket(self)
211 self.__socket.readyRead.connect(self.__readyRead) 211 self.__socket.connected.connect(
212 self.__socket.error.connect(self.__tcpError) 212 self.__hostConnected)
213 213 self.__socket.hostFound.connect(
214 self.__connectionState = IrcWidget.ServerConnecting 214 self.__hostFound)
215 if useSSL: 215 self.__socket.disconnected.connect(
216 self.networkWidget.addServerMessage( 216 self.__hostDisconnected)
217 self.tr("Info"), 217 self.__socket.readyRead.connect(
218 self.tr("Looking for server {0} (port {1})" 218 self.__readyRead)
219 " using an SSL encrypted connection" 219 self.__socket.error.connect(
220 "...").format(self.__server.getName(), 220 self.__tcpError)
221 self.__server.getPort())) 221
222 self.__socket.connectToHostEncrypted( 222 self.__connectionState = IrcWidget.ServerConnecting
223 self.__server.getName(), self.__server.getPort()) 223 if useSSL:
224 else: 224 self.networkWidget.addServerMessage(
225 self.networkWidget.addServerMessage( 225 self.tr("Info"),
226 self.tr("Info"), 226 self.tr("Looking for server {0} (port {1})"
227 self.tr( 227 " using an SSL encrypted connection"
228 "Looking for server {0} (port {1})...").format( 228 "...").format(self.__server.getName(),
229 self.__server.getPort()))
230 self.__socket.connectToHostEncrypted(
229 self.__server.getName(), 231 self.__server.getName(),
230 self.__server.getPort())) 232 self.__server.getPort()
231 self.__socket.connectToHost(self.__server.getName(), 233 )
232 self.__server.getPort()) 234 else:
235 self.networkWidget.addServerMessage(
236 self.tr("Info"),
237 self.tr(
238 "Looking for server {0} (port {1})...")
239 .format(
240 self.__server.getName(),
241 self.__server.getPort()))
242 self.__socket.connectToHost(
243 self.__server.getName(),
244 self.__server.getPort())
233 else: 245 else:
234 if silent: 246 if silent:
235 ok = True 247 ok = True
236 else: 248 else:
237 ok = E5MessageBox.yesNo( 249 ok = E5MessageBox.yesNo(
304 from .IrcChannelWidget import IrcChannelWidget 316 from .IrcChannelWidget import IrcChannelWidget
305 channel = IrcChannelWidget(self) 317 channel = IrcChannelWidget(self)
306 channel.setName(name) 318 channel.setName(name)
307 channel.setUserName(self.__nickName) 319 channel.setUserName(self.__nickName)
308 identity = self.__ircNetworkManager.getIdentity(self.__identityName) 320 identity = self.__ircNetworkManager.getIdentity(self.__identityName)
309 channel.setPartMessage(identity.getPartMessage()) 321 if identity:
322 channel.setPartMessage(identity.getPartMessage())
310 channel.setUserPrivilegePrefix(self.__userPrefix) 323 channel.setUserPrivilegePrefix(self.__userPrefix)
311 channel.initAutoWho() 324 channel.initAutoWho()
312 325
313 channel.sendData.connect(self.__send) 326 channel.sendData.connect(self.__send)
314 channel.sendCtcpRequest.connect(self.__sendCtcpRequest) 327 channel.sendCtcpRequest.connect(self.__sendCtcpRequest)
368 from .IrcChannelWidget import IrcChannelWidget 381 from .IrcChannelWidget import IrcChannelWidget
369 channel = IrcChannelWidget(self) 382 channel = IrcChannelWidget(self)
370 channel.setName(self.__nickName) 383 channel.setName(self.__nickName)
371 channel.setUserName(self.__nickName) 384 channel.setUserName(self.__nickName)
372 identity = self.__ircNetworkManager.getIdentity(self.__identityName) 385 identity = self.__ircNetworkManager.getIdentity(self.__identityName)
373 channel.setPartMessage(identity.getPartMessage()) 386 if identity:
387 channel.setPartMessage(identity.getPartMessage())
374 channel.setUserPrivilegePrefix(self.__userPrefix) 388 channel.setUserPrivilegePrefix(self.__userPrefix)
375 channel.setPrivate(True, name) 389 channel.setPrivate(True, name)
376 channel.addUsers([name, self.__nickName]) 390 channel.addUsers([name, self.__nickName])
377 391
378 channel.sendData.connect(self.__send) 392 channel.sendData.connect(self.__send)
523 537
524 self.__registering = True 538 self.__registering = True
525 serverPassword = self.__server.getPassword() 539 serverPassword = self.__server.getPassword()
526 if serverPassword: 540 if serverPassword:
527 self.__send("PASS " + serverPassword) 541 self.__send("PASS " + serverPassword)
542
543 identity = self.__ircNetworkManager.getIdentity(
544 self.__identityName)
528 nick = self.networkWidget.getNickname() 545 nick = self.networkWidget.getNickname()
529 if not nick: 546 if not nick and identity:
530 self.__nickIndex = 0 547 self.__nickIndex = 0
531 try: 548 try:
532 nick = self.__ircNetworkManager.getIdentity( 549 nick = identity.getNickNames()[self.__nickIndex]
533 self.__identityName).getNickNames()[self.__nickIndex]
534 except IndexError: 550 except IndexError:
535 nick = "" 551 nick = ""
536 if not nick: 552 if not nick:
537 nick = self.__userName 553 nick = self.__userName
538 self.__nickName = nick 554 self.__nickName = nick
539 self.networkWidget.setNickName(nick) 555 self.networkWidget.setNickName(nick)
540 realName = self.__ircNetworkManager.getIdentity( 556 if identity:
541 self.__identityName).getRealName() 557 realName = identity.getRealName()
542 if not realName: 558 if not realName:
543 realName = "eric IDE chat" 559 realName = "eric IDE chat"
544 self.__send("NICK " + nick) 560 self.__send("NICK " + nick)
545 self.__send("USER " + self.__userName + " 0 * :" + realName) 561 self.__send("USER " + self.__userName + " 0 * :" + realName)
546 562
547 def __hostDisconnected(self): 563 def __hostDisconnected(self):
548 """ 564 """
549 Private slot to indicate the host was disconnected. 565 Private slot to indicate the host was disconnected.
550 """ 566 """
832 def __registerWithServices(self): 848 def __registerWithServices(self):
833 """ 849 """
834 Private method to register to services. 850 Private method to register to services.
835 """ 851 """
836 identity = self.__ircNetworkManager.getIdentity(self.__identityName) 852 identity = self.__ircNetworkManager.getIdentity(self.__identityName)
837 service = identity.getServiceName() 853 if identity:
838 password = identity.getPassword() 854 service = identity.getServiceName()
839 if service and password: 855 password = identity.getPassword()
840 self.__send("PRIVMSG " + service + " :identify " + password) 856 if service and password:
857 self.__send("PRIVMSG " + service + " :identify " + password)
841 858
842 def __autoJoinChannels(self): 859 def __autoJoinChannels(self):
843 """ 860 """
844 Private slot to join channels automatically once a server got 861 Private slot to join channels automatically once a server got
845 connected. 862 connected.
1023 """ 1040 """
1024 Private method to handle a 443 server error at login. 1041 Private method to handle a 443 server error at login.
1025 """ 1042 """
1026 self.__nickIndex += 1 1043 self.__nickIndex += 1
1027 try: 1044 try:
1028 nick = self.__ircNetworkManager.getIdentity(self.__identityName)\ 1045 identity = self.__ircNetworkManager.getIdentity(
1029 .getNickNames()[self.__nickIndex] 1046 self.__identityName)
1030 self.__nickName = nick 1047 if identity:
1048 nick = identity.getNickNames()[self.__nickIndex]
1049 self.__nickName = nick
1050 else:
1051 self.__connectNetwork("", False, True)
1052 self.__nickName = ""
1053 self.__nickIndex = -1
1054 return
1031 except IndexError: 1055 except IndexError:
1032 self.networkWidget.addServerMessage( 1056 self.networkWidget.addServerMessage(
1033 self.tr("Critical"), 1057 self.tr("Critical"),
1034 self.tr( 1058 self.tr(
1035 "No nickname acceptable to the server configured" 1059 "No nickname acceptable to the server configured"
1091 @param isAway flag indicating the current away state (boolean) 1115 @param isAway flag indicating the current away state (boolean)
1092 """ 1116 """
1093 if isAway and self.__identityName: 1117 if isAway and self.__identityName:
1094 identity = self.__ircNetworkManager.getIdentity( 1118 identity = self.__ircNetworkManager.getIdentity(
1095 self.__identityName) 1119 self.__identityName)
1096 if identity.rememberAwayPosition(): 1120 if identity and identity.rememberAwayPosition():
1097 for channel in self.__channelList: 1121 for channel in self.__channelList:
1098 channel.setMarkerLine() 1122 channel.setMarkerLine()

eric ide

mercurial