55 |
55 |
56 from .IrcNetworkManager import IrcNetworkManager |
56 from .IrcNetworkManager import IrcNetworkManager |
57 self.__ircNetworkManager = IrcNetworkManager(self) |
57 self.__ircNetworkManager = IrcNetworkManager(self) |
58 |
58 |
59 self.__leaveButton = QToolButton(self) |
59 self.__leaveButton = QToolButton(self) |
60 self.__leaveButton.setIcon(UI.PixmapCache.getIcon("ircCloseChannel.png")) |
60 self.__leaveButton.setIcon( |
61 self.__leaveButton.setToolTip(self.trUtf8("Press to leave the current channel")) |
61 UI.PixmapCache.getIcon("ircCloseChannel.png")) |
|
62 self.__leaveButton.setToolTip( |
|
63 self.trUtf8("Press to leave the current channel")) |
62 self.__leaveButton.clicked[()].connect(self.__leaveChannel) |
64 self.__leaveButton.clicked[()].connect(self.__leaveChannel) |
63 self.__leaveButton.setEnabled(False) |
65 self.__leaveButton.setEnabled(False) |
64 self.channelsWidget.setCornerWidget(self.__leaveButton, Qt.BottomRightCorner) |
66 self.channelsWidget.setCornerWidget( |
|
67 self.__leaveButton, Qt.BottomRightCorner) |
65 self.channelsWidget.setTabsClosable(False) |
68 self.channelsWidget.setTabsClosable(False) |
66 if not isMacPlatform(): |
69 if not isMacPlatform(): |
67 self.channelsWidget.setTabPosition(QTabWidget.South) |
70 self.channelsWidget.setTabPosition(QTabWidget.South) |
68 |
71 |
69 height = self.height() |
72 height = self.height() |
91 else: |
94 else: |
92 self.__sslErrorHandler = None |
95 self.__sslErrorHandler = None |
93 |
96 |
94 self.__patterns = [ |
97 self.__patterns = [ |
95 # :foo_!n=foo@foohost.bar.net PRIVMSG bar_ :some long message |
98 # :foo_!n=foo@foohost.bar.net PRIVMSG bar_ :some long message |
96 (re.compile(r":([^!]+)!([^ ]+)\sPRIVMSG\s([^ ]+)\s:(.*)"), self.__query), |
99 (re.compile(r":([^!]+)!([^ ]+)\sPRIVMSG\s([^ ]+)\s:(.*)"), |
|
100 self.__query), |
97 # :foo.bar.net COMMAND some message |
101 # :foo.bar.net COMMAND some message |
98 (re.compile(r""":([^ ]+)\s+([A-Z]+)\s+(.+)"""), self.__handleNamedMessage), |
102 (re.compile(r""":([^ ]+)\s+([A-Z]+)\s+(.+)"""), |
|
103 self.__handleNamedMessage), |
99 # :foo.bar.net 123 * :info |
104 # :foo.bar.net 123 * :info |
100 (re.compile(r""":([^ ]+)\s+(\d{3})\s+(.+)"""), self.__handleNumericMessage), |
105 (re.compile(r""":([^ ]+)\s+(\d{3})\s+(.+)"""), |
|
106 self.__handleNumericMessage), |
101 # PING :ping message |
107 # PING :ping message |
102 (re.compile(r"""PING\s+:(.*)"""), self.__ping), |
108 (re.compile(r"""PING\s+:(.*)"""), self.__ping), |
103 ] |
109 ] |
104 self.__prefixRe = re.compile(r""".*\sPREFIX=\((.*)\)([^ ]+).*""") |
110 self.__prefixRe = re.compile(r""".*\sPREFIX=\((.*)\)([^ ]+).*""") |
105 self.__chanTypesRe = re.compile(r""".*\sCHANTYPES=([^ ]+).*""") |
111 self.__chanTypesRe = re.compile(r""".*\sCHANTYPES=([^ ]+).*""") |
129 """ |
135 """ |
130 if self.__server: |
136 if self.__server: |
131 if Preferences.getIrc("AskOnShutdown"): |
137 if Preferences.getIrc("AskOnShutdown"): |
132 ok = E5MessageBox.yesNo(self, |
138 ok = E5MessageBox.yesNo(self, |
133 self.trUtf8("Disconnect from Server"), |
139 self.trUtf8("Disconnect from Server"), |
134 self.trUtf8("""<p>Do you really want to disconnect from""" |
140 self.trUtf8( |
135 """ <b>{0}</b>?</p><p>All channels will be closed.""" |
141 """<p>Do you really want to disconnect from""" |
136 """</p>""").format(self.__server.getName())) |
142 """ <b>{0}</b>?</p><p>All channels will be closed.""" |
|
143 """</p>""").format(self.__server.getName())) |
137 else: |
144 else: |
138 ok = True |
145 ok = True |
139 if ok: |
146 if ok: |
140 self.__socket.blockSignals(True) |
147 self.__socket.blockSignals(True) |
141 |
148 |
168 if connect: |
175 if connect: |
169 network = self.__ircNetworkManager.getNetwork(name) |
176 network = self.__ircNetworkManager.getNetwork(name) |
170 if network: |
177 if network: |
171 self.__server = network.getServer() |
178 self.__server = network.getServer() |
172 self.__identityName = network.getIdentityName() |
179 self.__identityName = network.getIdentityName() |
173 identity = self.__ircNetworkManager.getIdentity(self.__identityName) |
180 identity = self.__ircNetworkManager.getIdentity( |
|
181 self.__identityName) |
174 self.__userName = identity.getIdent() |
182 self.__userName = identity.getIdent() |
175 self.__quitMessage = identity.getQuitMessage() |
183 self.__quitMessage = identity.getQuitMessage() |
176 if self.__server: |
184 if self.__server: |
177 useSSL = self.__server.useSSL() |
185 useSSL = self.__server.useSSL() |
178 if useSSL and not SSL_AVAILABLE: |
186 if useSSL and not SSL_AVAILABLE: |
179 E5MessageBox.critical(self, |
187 E5MessageBox.critical(self, |
180 self.trUtf8("SSL Connection"), |
188 self.trUtf8("SSL Connection"), |
181 self.trUtf8("""An encrypted connection to the IRC network""" |
189 self.trUtf8( |
182 """ was requested but SSL is not available.""" |
190 """An encrypted connection to the IRC""" |
183 """ Please change the server configuration.""")) |
191 """ network was requested but SSL is not""" |
|
192 """ available. Please change the server""" |
|
193 """ configuration.""")) |
184 return |
194 return |
185 |
195 |
186 if useSSL: |
196 if useSSL: |
187 # create SSL socket |
197 # create SSL socket |
188 self.__socket = QSslSocket(self) |
198 self.__socket = QSslSocket(self) |
197 self.__socket.readyRead.connect(self.__readyRead) |
207 self.__socket.readyRead.connect(self.__readyRead) |
198 self.__socket.error.connect(self.__tcpError) |
208 self.__socket.error.connect(self.__tcpError) |
199 |
209 |
200 self.__connectionState = IrcWidget.ServerConnecting |
210 self.__connectionState = IrcWidget.ServerConnecting |
201 if useSSL: |
211 if useSSL: |
202 self.networkWidget.addServerMessage(self.trUtf8("Info"), |
212 self.networkWidget.addServerMessage( |
203 self.trUtf8("Looking for server {0} (port {1}) using" |
213 self.trUtf8("Info"), |
204 " an SSL encrypted connection...").format( |
214 self.trUtf8("Looking for server {0} (port {1})" |
205 self.__server.getName(), self.__server.getPort())) |
215 " using an SSL encrypted connection" |
206 self.__socket.connectToHostEncrypted(self.__server.getName(), |
216 "...").format(self.__server.getName(), |
207 self.__server.getPort()) |
217 self.__server.getPort())) |
|
218 self.__socket.connectToHostEncrypted( |
|
219 self.__server.getName(), self.__server.getPort()) |
208 else: |
220 else: |
209 self.networkWidget.addServerMessage(self.trUtf8("Info"), |
221 self.networkWidget.addServerMessage( |
210 self.trUtf8("Looking for server {0} (port {1})...").format( |
222 self.trUtf8("Info"), |
211 self.__server.getName(), self.__server.getPort())) |
223 self.trUtf8( |
|
224 "Looking for server {0} (port {1})...").format( |
|
225 self.__server.getName(), |
|
226 self.__server.getPort())) |
212 self.__socket.connectToHost(self.__server.getName(), |
227 self.__socket.connectToHost(self.__server.getName(), |
213 self.__server.getPort()) |
228 self.__server.getPort()) |
214 else: |
229 else: |
215 if silent: |
230 if silent: |
216 ok = True |
231 ok = True |
311 |
326 |
312 self.__openPrivate(match.group(1)) |
327 self.__openPrivate(match.group(1)) |
313 # the above call sets the new channel as the current widget |
328 # the above call sets the new channel as the current widget |
314 channel = self.channelsWidget.currentWidget() |
329 channel = self.channelsWidget.currentWidget() |
315 channel.addMessage(match.group(1), match.group(4)) |
330 channel.addMessage(match.group(1), match.group(4)) |
316 channel.setPrivateInfo("{0} - {1}".format(match.group(1), match.group(2))) |
331 channel.setPrivateInfo( |
|
332 "{0} - {1}".format(match.group(1), match.group(2))) |
317 |
333 |
318 return True |
334 return True |
319 |
335 |
320 @pyqtSlot(str) |
336 @pyqtSlot(str) |
321 def __openPrivate(self, name): |
337 def __openPrivate(self, name): |
371 |
387 |
372 @param name name of the closed channel (string) |
388 @param name name of the closed channel (string) |
373 """ |
389 """ |
374 for channel in self.__channelList: |
390 for channel in self.__channelList: |
375 if channel.name() == name: |
391 if channel.name() == name: |
376 self.channelsWidget.removeTab(self.channelsWidget.indexOf(channel)) |
392 self.channelsWidget.removeTab( |
|
393 self.channelsWidget.indexOf(channel)) |
377 self.__channelList.remove(channel) |
394 self.__channelList.remove(channel) |
378 channel.deleteLater() |
395 channel.deleteLater() |
379 |
396 |
380 if self.channelsWidget.count() == 0: |
397 if self.channelsWidget.count() == 0: |
381 self.channelsWidget.addTab(self.__emptyLabel, "") |
398 self.channelsWidget.addTab(self.__emptyLabel, "") |
419 self.networkWidget.addServerMessage(self.trUtf8("Info"), |
437 self.networkWidget.addServerMessage(self.trUtf8("Info"), |
420 self.trUtf8("Server found,connecting...")) |
438 self.trUtf8("Server found,connecting...")) |
421 |
439 |
422 def __hostConnected(self): |
440 def __hostConnected(self): |
423 """ |
441 """ |
424 Private slot to log in to the server after the connection was established. |
442 Private slot to log in to the server after the connection was |
|
443 established. |
425 """ |
444 """ |
426 self.networkWidget.addServerMessage(self.trUtf8("Info"), |
445 self.networkWidget.addServerMessage(self.trUtf8("Info"), |
427 self.trUtf8("Connected,logging in...")) |
446 self.trUtf8("Connected,logging in...")) |
428 self.networkWidget.setConnected(True) |
447 self.networkWidget.setConnected(True) |
429 |
448 |
433 self.__send("PASS " + serverPassword) |
452 self.__send("PASS " + serverPassword) |
434 nick = self.networkWidget.getNickname() |
453 nick = self.networkWidget.getNickname() |
435 if not nick: |
454 if not nick: |
436 self.__nickIndex = 0 |
455 self.__nickIndex = 0 |
437 try: |
456 try: |
438 nick = self.__ircNetworkManager.getIdentity(self.__identityName)\ |
457 nick = self.__ircNetworkManager.getIdentity( |
439 .getNickNames()[self.__nickIndex] |
458 self.__identityName).getNickNames()[self.__nickIndex] |
440 except IndexError: |
459 except IndexError: |
441 nick = "" |
460 nick = "" |
442 if not nick: |
461 if not nick: |
443 nick = self.__userName |
462 nick = self.__userName |
444 self.__nickName = nick |
463 self.__nickName = nick |
445 self.networkWidget.setNickName(nick) |
464 self.networkWidget.setNickName(nick) |
446 realName = self.__ircNetworkManager.getIdentity(self.__identityName).getRealName() |
465 realName = self.__ircNetworkManager.getIdentity( |
|
466 self.__identityName).getRealName() |
447 if not realName: |
467 if not realName: |
448 realName = "eric IDE chat" |
468 realName = "eric IDE chat" |
449 self.__send("NICK " + nick) |
469 self.__send("NICK " + nick) |
450 self.__send("USER " + self.__userName + " 0 * :" + realName) |
470 self.__send("USER " + self.__userName + " 0 * :" + realName) |
451 |
471 |
498 break |
518 break |
499 else: |
519 else: |
500 # Oops, the message wasn't handled |
520 # Oops, the message wasn't handled |
501 self.networkWidget.addErrorMessage( |
521 self.networkWidget.addErrorMessage( |
502 self.trUtf8("Message Error"), |
522 self.trUtf8("Message Error"), |
503 self.trUtf8("Unknown message received from server:" |
523 self.trUtf8( |
504 "<br/>{0}").format(line)) |
524 "Unknown message received from server:" |
|
525 "<br/>{0}").format(line)) |
505 |
526 |
506 self.__updateUsersCount() |
527 self.__updateUsersCount() |
507 self.__buffer = "" |
528 self.__buffer = "" |
508 |
529 |
509 def __handleNamedMessage(self, match): |
530 def __handleNamedMessage(self, match): |
532 sourceNick = match.group(1) |
553 sourceNick = match.group(1) |
533 if not self.isChannelName(name): |
554 if not self.isChannelName(name): |
534 if name == self.__nickName: |
555 if name == self.__nickName: |
535 if sourceNick == self.__nickName: |
556 if sourceNick == self.__nickName: |
536 msg = self.trUtf8( |
557 msg = self.trUtf8( |
537 "You have set your personal modes to <b>[{0}]</b>.")\ |
558 "You have set your personal modes to" |
538 .format(modes) |
559 " <b>[{0}]</b>.").format(modes) |
539 else: |
560 else: |
540 msg = self.trUtf8( |
561 msg = self.trUtf8( |
541 "{0} has changed your personal modes to <b>[{1}]</b>.")\ |
562 "{0} has changed your personal modes to" |
542 .format(sourceNick, modes) |
563 " <b>[{1}]</b>.").format(sourceNick, modes) |
543 self.networkWidget.addServerMessage( |
564 self.networkWidget.addServerMessage( |
544 self.trUtf8("Mode"), msg, filterMsg=False) |
565 self.trUtf8("Mode"), msg, filterMsg=False) |
545 return True |
566 return True |
546 elif name == "PART": |
567 elif name == "PART": |
547 nick = match.group(1).split("!", 1)[0] |
568 nick = match.group(1).split("!", 1)[0] |
581 @param match reference to the match object |
602 @param match reference to the match object |
582 @return flag indicating, if the message was handled (boolean) |
603 @return flag indicating, if the message was handled (boolean) |
583 """ |
604 """ |
584 code = int(match.group(2)) |
605 code = int(match.group(2)) |
585 if code < 400: |
606 if code < 400: |
586 return self.__handleServerReply(code, match.group(1), match.group(3)) |
607 return self.__handleServerReply( |
|
608 code, match.group(1), match.group(3)) |
587 else: |
609 else: |
588 return self.__handleServerError(code, match.group(1), match.group(3)) |
610 return self.__handleServerError( |
|
611 code, match.group(1), match.group(3)) |
589 |
612 |
590 def __handleServerError(self, code, server, message): |
613 def __handleServerError(self, code, server, message): |
591 """ |
614 """ |
592 Private slot to handle a server error reply. |
615 Private slot to handle a server error reply. |
593 |
616 |
635 elif code == 376: |
658 elif code == 376: |
636 message = self.trUtf8("End of message of the day") |
659 message = self.trUtf8("End of message of the day") |
637 elif code == 4: |
660 elif code == 4: |
638 parts = message.strip().split() |
661 parts = message.strip().split() |
639 message = self.trUtf8("Server {0} (Version {1}), User-Modes: {2}," |
662 message = self.trUtf8("Server {0} (Version {1}), User-Modes: {2}," |
640 " Channel-Modes: {3}").format(parts[1], parts[2], parts[3], parts[4]) |
663 " Channel-Modes: {3}").format( |
|
664 parts[1], parts[2], parts[3], parts[4]) |
641 elif code == 265: |
665 elif code == 265: |
642 parts = message.strip().split() |
666 parts = message.strip().split() |
643 message = self.trUtf8("Current users on {0}: {1}, max. {2}").format( |
667 message = self.trUtf8( |
644 server, parts[1], parts[2]) |
668 "Current users on {0}: {1}, max. {2}").format( |
|
669 server, parts[1], parts[2]) |
645 elif code == 266: |
670 elif code == 266: |
646 parts = message.strip().split() |
671 parts = message.strip().split() |
647 message = self.trUtf8("Current users on the network: {0}, max. {1}").format( |
672 message = self.trUtf8( |
648 parts[1], parts[2]) |
673 "Current users on the network: {0}, max. {1}").format( |
|
674 parts[1], parts[2]) |
649 elif code == 305: |
675 elif code == 305: |
650 message = self.trUtf8("You are no longer marked as being away.") |
676 message = self.trUtf8("You are no longer marked as being away.") |
651 elif code == 306: |
677 elif code == 306: |
652 message = self.trUtf8("You have been marked as being away.") |
678 message = self.trUtf8("You have been marked as being away.") |
653 else: |
679 else: |
689 if service and password: |
715 if service and password: |
690 self.__send("PRIVMSG " + service + " :identify " + password) |
716 self.__send("PRIVMSG " + service + " :identify " + password) |
691 |
717 |
692 def __autoJoinChannels(self): |
718 def __autoJoinChannels(self): |
693 """ |
719 """ |
694 Private slot to join channels automatically once a server got connected. |
720 Private slot to join channels automatically once a server got |
|
721 connected. |
695 """ |
722 """ |
696 for channel in self.networkWidget.getNetworkChannels(): |
723 for channel in self.networkWidget.getNetworkChannels(): |
697 if channel.autoJoin(): |
724 if channel.autoJoin(): |
698 name = channel.getName() |
725 name = channel.getName() |
699 key = channel.getKey() |
726 key = channel.getKey() |
708 """ |
735 """ |
709 if error == QAbstractSocket.RemoteHostClosedError: |
736 if error == QAbstractSocket.RemoteHostClosedError: |
710 # ignore this one, it's a disconnect |
737 # ignore this one, it's a disconnect |
711 if self.__sslErrorLock: |
738 if self.__sslErrorLock: |
712 self.networkWidget.addErrorMessage(self.trUtf8("SSL Error"), |
739 self.networkWidget.addErrorMessage(self.trUtf8("SSL Error"), |
713 self.trUtf8("""Connection to server {0} (port {1}) lost while""" |
740 self.trUtf8( |
714 """ waiting for user response to an SSL error.""").format( |
741 """Connection to server {0} (port {1}) lost while""" |
715 self.__server.getName(), self.__server.getPort())) |
742 """ waiting for user response to an SSL error.""") |
|
743 .format(self.__server.getName(), self.__server.getPort())) |
716 self.__connectionState = IrcWidget.ServerDisconnected |
744 self.__connectionState = IrcWidget.ServerDisconnected |
717 elif error == QAbstractSocket.HostNotFoundError: |
745 elif error == QAbstractSocket.HostNotFoundError: |
718 self.networkWidget.addErrorMessage(self.trUtf8("Socket Error"), |
746 self.networkWidget.addErrorMessage(self.trUtf8("Socket Error"), |
719 self.trUtf8("The host was not found. Please check the host name" |
747 self.trUtf8( |
720 " and port settings.")) |
748 "The host was not found. Please check the host name" |
|
749 " and port settings.")) |
721 elif error == QAbstractSocket.ConnectionRefusedError: |
750 elif error == QAbstractSocket.ConnectionRefusedError: |
722 self.networkWidget.addErrorMessage(self.trUtf8("Socket Error"), |
751 self.networkWidget.addErrorMessage(self.trUtf8("Socket Error"), |
723 self.trUtf8("The connection was refused by the peer. Please check the" |
752 self.trUtf8( |
724 " host name and port settings.")) |
753 "The connection was refused by the peer. Please check the" |
|
754 " host name and port settings.")) |
725 elif error == QAbstractSocket.SslHandshakeFailedError: |
755 elif error == QAbstractSocket.SslHandshakeFailedError: |
726 self.networkWidget.addErrorMessage(self.trUtf8("Socket Error"), |
756 self.networkWidget.addErrorMessage(self.trUtf8("Socket Error"), |
727 self.trUtf8("The SSL handshake failed.")) |
757 self.trUtf8("The SSL handshake failed.")) |
728 else: |
758 else: |
729 if self.__socket: |
759 if self.__socket: |
730 self.networkWidget.addErrorMessage(self.trUtf8("Socket Error"), |
760 self.networkWidget.addErrorMessage(self.trUtf8("Socket Error"), |
731 self.trUtf8("The following network error occurred:<br/>{0}").format( |
761 self.trUtf8( |
732 self.__socket.errorString())) |
762 "The following network error occurred:<br/>{0}") |
|
763 .format(self.__socket.errorString())) |
733 else: |
764 else: |
734 self.networkWidget.addErrorMessage(self.trUtf8("Socket Error"), |
765 self.networkWidget.addErrorMessage(self.trUtf8("Socket Error"), |
735 self.trUtf8("A network error occurred.")) |
766 self.trUtf8("A network error occurred.")) |
736 |
767 |
737 def __sslErrors(self, errors): |
768 def __sslErrors(self, errors): |
742 """ |
773 """ |
743 ignored, defaultChanged = self.__sslErrorHandler.sslErrors( |
774 ignored, defaultChanged = self.__sslErrorHandler.sslErrors( |
744 errors, self.__server.getName(), self.__server.getPort()) |
775 errors, self.__server.getName(), self.__server.getPort()) |
745 if ignored == E5SslErrorHandler.NotIgnored: |
776 if ignored == E5SslErrorHandler.NotIgnored: |
746 self.networkWidget.addErrorMessage(self.trUtf8("SSL Error"), |
777 self.networkWidget.addErrorMessage(self.trUtf8("SSL Error"), |
747 self.trUtf8("""Could not connect to {0} (port {1}) using an SSL""" |
778 self.trUtf8( |
748 """ encrypted connection. Either the server does not""" |
779 """Could not connect to {0} (port {1}) using an SSL""" |
749 """ support SSL (did you use the correct port?) or""" |
780 """ encrypted connection. Either the server does not""" |
750 """ you rejected the certificate.""").format( |
781 """ support SSL (did you use the correct port?) or""" |
|
782 """ you rejected the certificate.""").format( |
751 self.__server.getName(), self.__server.getPort())) |
783 self.__server.getName(), self.__server.getPort())) |
752 self.__socket.close() |
784 self.__socket.close() |
753 else: |
785 else: |
754 if defaultChanged: |
786 if defaultChanged: |
755 self.__socket.setSslConfiguration( |
787 self.__socket.setSslConfiguration( |
756 QSslConfiguration.defaultConfiguration()) |
788 QSslConfiguration.defaultConfiguration()) |
757 if ignored == E5SslErrorHandler.UserIgnored: |
789 if ignored == E5SslErrorHandler.UserIgnored: |
758 self.networkWidget.addErrorMessage(self.trUtf8("SSL Error"), |
790 self.networkWidget.addErrorMessage(self.trUtf8("SSL Error"), |
759 self.trUtf8("""The SSL certificate for the server {0} (port {1})""" |
791 self.trUtf8( |
760 """ failed the authenticity check. SSL errors""" |
792 """The SSL certificate for the server {0} (port {1})""" |
761 """ were accepted by you.""").format( |
793 """ failed the authenticity check. SSL errors""" |
|
794 """ were accepted by you.""").format( |
762 self.__server.getName(), self.__server.getPort())) |
795 self.__server.getName(), self.__server.getPort())) |
763 if self.__connectionState == IrcWidget.ServerConnecting: |
796 if self.__connectionState == IrcWidget.ServerConnecting: |
764 self.__socket.ignoreSslErrors() |
797 self.__socket.ignoreSslErrors() |
765 |
798 |
766 def __setUserPrivilegePrefix(self, prefix1, prefix2): |
799 def __setUserPrivilegePrefix(self, prefix1, prefix2): |
817 self.__sendCtcpReply(match.group(1), "VERSION " + msg) |
850 self.__sendCtcpReply(match.group(1), "VERSION " + msg) |
818 elif ctcpRequest == "ping": |
851 elif ctcpRequest == "ping": |
819 self.networkWidget.addServerMessage(self.trUtf8("CTCP"), |
852 self.networkWidget.addServerMessage(self.trUtf8("CTCP"), |
820 self.trUtf8("Received CTCP-PING request from {0}," |
853 self.trUtf8("Received CTCP-PING request from {0}," |
821 " sending answer.").format(match.group(1))) |
854 " sending answer.").format(match.group(1))) |
822 self.__sendCtcpReply(match.group(1), "PING {0}".format(ctcpArg)) |
855 self.__sendCtcpReply( |
|
856 match.group(1), "PING {0}".format(ctcpArg)) |
823 elif ctcpRequest == "clientinfo": |
857 elif ctcpRequest == "clientinfo": |
824 self.networkWidget.addServerMessage(self.trUtf8("CTCP"), |
858 self.networkWidget.addServerMessage(self.trUtf8("CTCP"), |
825 self.trUtf8("Received CTCP-CLIENTINFO request from {0}," |
859 self.trUtf8("Received CTCP-CLIENTINFO request from {0}," |
826 " sending answer.").format(match.group(1))) |
860 " sending answer.").format(match.group(1))) |
827 self.__sendCtcpReply(match.group(1), |
861 self.__sendCtcpReply(match.group(1), |
828 "CLIENTINFO CLIENTINFO PING VERSION") |
862 "CLIENTINFO CLIENTINFO PING VERSION") |
829 else: |
863 else: |
830 self.networkWidget.addServerMessage(self.trUtf8("CTCP"), |
864 self.networkWidget.addServerMessage(self.trUtf8("CTCP"), |
831 self.trUtf8("Received unknown CTCP-{0} request from {1}.").format( |
865 self.trUtf8( |
|
866 "Received unknown CTCP-{0} request from {1}.").format( |
832 ctcpRequest, match.group(1))) |
867 ctcpRequest, match.group(1))) |
833 return True |
868 return True |
834 |
869 |
835 return False |
870 return False |
836 |
871 |
852 try: |
887 try: |
853 nick = self.__ircNetworkManager.getIdentity(self.__identityName)\ |
888 nick = self.__ircNetworkManager.getIdentity(self.__identityName)\ |
854 .getNickNames()[self.__nickIndex] |
889 .getNickNames()[self.__nickIndex] |
855 self.__nickName = nick |
890 self.__nickName = nick |
856 except IndexError: |
891 except IndexError: |
857 self.networkWidget.addServerMessage(self.trUtf8("Critical"), |
892 self.networkWidget.addServerMessage( |
858 self.trUtf8("No nickname acceptable to the server configured" |
893 self.trUtf8("Critical"), |
859 " for <b>{0}</b>. Disconnecting...").format(self.__userName), |
894 self.trUtf8( |
860 filterMsg=False) |
895 "No nickname acceptable to the server configured" |
|
896 " for <b>{0}</b>. Disconnecting...").format( |
|
897 self.__userName), |
|
898 filterMsg=False) |
861 self.__connectNetwork("", False, silent=True) |
899 self.__connectNetwork("", False, silent=True) |
862 self.__nickName = "" |
900 self.__nickName = "" |
863 self.__nickIndex = -1 |
901 self.__nickIndex = -1 |
864 return |
902 return |
865 |
903 |
910 Private slot handling the change of the away state. |
948 Private slot handling the change of the away state. |
911 |
949 |
912 @param isAway flag indicating the current away state (boolean) |
950 @param isAway flag indicating the current away state (boolean) |
913 """ |
951 """ |
914 if isAway and self.__identityName: |
952 if isAway and self.__identityName: |
915 identity = self.__ircNetworkManager.getIdentity(self.__identityName) |
953 identity = self.__ircNetworkManager.getIdentity( |
|
954 self.__identityName) |
916 if identity.rememberAwayPosition(): |
955 if identity.rememberAwayPosition(): |
917 for channel in self.__channelList: |
956 for channel in self.__channelList: |
918 channel.setMarkerLine() |
957 channel.setMarkerLine() |