Network/IRC/IrcWidget.py

changeset 6587
a04952159050
parent 6514
f11a703e4664
child 6645
ad476851d7e0
--- a/Network/IRC/IrcWidget.py	Sat Nov 10 10:42:43 2018 +0100
+++ b/Network/IRC/IrcWidget.py	Sat Nov 10 11:06:56 2018 +0100
@@ -182,54 +182,66 @@
                 self.__identityName = network.getIdentityName()
                 identity = self.__ircNetworkManager.getIdentity(
                     self.__identityName)
-                self.__userName = identity.getIdent()
-                self.__quitMessage = identity.getQuitMessage()
-                if self.__server:
-                    useSSL = self.__server.useSSL()
-                    if useSSL and not SSL_AVAILABLE:
-                        E5MessageBox.critical(
-                            self,
-                            self.tr("SSL Connection"),
-                            self.tr(
-                                """An encrypted connection to the IRC"""
-                                """ network was requested but SSL is not"""
-                                """ available. Please change the server"""
-                                """ configuration."""))
-                        return
-                    
-                    if useSSL:
-                        # create SSL socket
-                        self.__socket = QSslSocket(self)
-                        self.__socket.encrypted.connect(self.__hostConnected)
-                        self.__socket.sslErrors.connect(self.__sslErrors)
-                    else:
-                        # create TCP socket
-                        self.__socket = QTcpSocket(self)
-                        self.__socket.connected.connect(self.__hostConnected)
-                    self.__socket.hostFound.connect(self.__hostFound)
-                    self.__socket.disconnected.connect(self.__hostDisconnected)
-                    self.__socket.readyRead.connect(self.__readyRead)
-                    self.__socket.error.connect(self.__tcpError)
-                    
-                    self.__connectionState = IrcWidget.ServerConnecting
-                    if useSSL:
-                        self.networkWidget.addServerMessage(
-                            self.tr("Info"),
-                            self.tr("Looking for server {0} (port {1})"
-                                    " using an SSL encrypted connection"
-                                    "...").format(self.__server.getName(),
-                                                  self.__server.getPort()))
-                        self.__socket.connectToHostEncrypted(
-                            self.__server.getName(), self.__server.getPort())
-                    else:
-                        self.networkWidget.addServerMessage(
-                            self.tr("Info"),
-                            self.tr(
-                                "Looking for server {0} (port {1})...").format(
+                if identity:
+                    self.__userName = identity.getIdent()
+                    self.__quitMessage = identity.getQuitMessage()
+                    if self.__server:
+                        useSSL = self.__server.useSSL()
+                        if useSSL and not SSL_AVAILABLE:
+                            E5MessageBox.critical(
+                                self,
+                                self.tr("SSL Connection"),
+                                self.tr(
+                                    """An encrypted connection to the IRC"""
+                                    """ network was requested but SSL is not"""
+                                    """ available. Please change the server"""
+                                    """ configuration."""))
+                            return
+                        
+                        if useSSL:
+                            # create SSL socket
+                            self.__socket = QSslSocket(self)
+                            self.__socket.encrypted.connect(
+                                self.__hostConnected)
+                            self.__socket.sslErrors.connect(
+                                self.__sslErrors)
+                        else:
+                            # create TCP socket
+                            self.__socket = QTcpSocket(self)
+                            self.__socket.connected.connect(
+                                self.__hostConnected)
+                        self.__socket.hostFound.connect(
+                            self.__hostFound)
+                        self.__socket.disconnected.connect(
+                            self.__hostDisconnected)
+                        self.__socket.readyRead.connect(
+                            self.__readyRead)
+                        self.__socket.error.connect(
+                            self.__tcpError)
+                        
+                        self.__connectionState = IrcWidget.ServerConnecting
+                        if useSSL:
+                            self.networkWidget.addServerMessage(
+                                self.tr("Info"),
+                                self.tr("Looking for server {0} (port {1})"
+                                        " using an SSL encrypted connection"
+                                        "...").format(self.__server.getName(),
+                                                      self.__server.getPort()))
+                            self.__socket.connectToHostEncrypted(
                                 self.__server.getName(),
-                                self.__server.getPort()))
-                        self.__socket.connectToHost(self.__server.getName(),
-                                                    self.__server.getPort())
+                                self.__server.getPort()
+                            )
+                        else:
+                            self.networkWidget.addServerMessage(
+                                self.tr("Info"),
+                                self.tr(
+                                    "Looking for server {0} (port {1})...")
+                                .format(
+                                    self.__server.getName(),
+                                    self.__server.getPort()))
+                            self.__socket.connectToHost(
+                                self.__server.getName(),
+                                self.__server.getPort())
         else:
             if silent:
                 ok = True
@@ -306,7 +318,8 @@
         channel.setName(name)
         channel.setUserName(self.__nickName)
         identity = self.__ircNetworkManager.getIdentity(self.__identityName)
-        channel.setPartMessage(identity.getPartMessage())
+        if identity:
+            channel.setPartMessage(identity.getPartMessage())
         channel.setUserPrivilegePrefix(self.__userPrefix)
         channel.initAutoWho()
         
@@ -370,7 +383,8 @@
         channel.setName(self.__nickName)
         channel.setUserName(self.__nickName)
         identity = self.__ircNetworkManager.getIdentity(self.__identityName)
-        channel.setPartMessage(identity.getPartMessage())
+        if identity:
+            channel.setPartMessage(identity.getPartMessage())
         channel.setUserPrivilegePrefix(self.__userPrefix)
         channel.setPrivate(True, name)
         channel.addUsers([name, self.__nickName])
@@ -525,24 +539,26 @@
         serverPassword = self.__server.getPassword()
         if serverPassword:
             self.__send("PASS " + serverPassword)
+        
+        identity = self.__ircNetworkManager.getIdentity(
+            self.__identityName)
         nick = self.networkWidget.getNickname()
-        if not nick:
+        if not nick and identity:
             self.__nickIndex = 0
             try:
-                nick = self.__ircNetworkManager.getIdentity(
-                    self.__identityName).getNickNames()[self.__nickIndex]
+                nick = identity.getNickNames()[self.__nickIndex]
             except IndexError:
                 nick = ""
         if not nick:
             nick = self.__userName
         self.__nickName = nick
         self.networkWidget.setNickName(nick)
-        realName = self.__ircNetworkManager.getIdentity(
-            self.__identityName).getRealName()
-        if not realName:
-            realName = "eric IDE chat"
-        self.__send("NICK " + nick)
-        self.__send("USER " + self.__userName + " 0 * :" + realName)
+        if identity:
+            realName = identity.getRealName()
+            if not realName:
+                realName = "eric IDE chat"
+            self.__send("NICK " + nick)
+            self.__send("USER " + self.__userName + " 0 * :" + realName)
     
     def __hostDisconnected(self):
         """
@@ -834,10 +850,11 @@
         Private method to register to services.
         """
         identity = self.__ircNetworkManager.getIdentity(self.__identityName)
-        service = identity.getServiceName()
-        password = identity.getPassword()
-        if service and password:
-            self.__send("PRIVMSG " + service + " :identify " + password)
+        if identity:
+            service = identity.getServiceName()
+            password = identity.getPassword()
+            if service and password:
+                self.__send("PRIVMSG " + service + " :identify " + password)
     
     def __autoJoinChannels(self):
         """
@@ -1025,9 +1042,16 @@
         """
         self.__nickIndex += 1
         try:
-            nick = self.__ircNetworkManager.getIdentity(self.__identityName)\
-                .getNickNames()[self.__nickIndex]
-            self.__nickName = nick
+            identity = self.__ircNetworkManager.getIdentity(
+                self.__identityName)
+            if identity:
+                nick = identity.getNickNames()[self.__nickIndex]
+                self.__nickName = nick
+            else:
+                self.__connectNetwork("", False, True)
+                self.__nickName = ""
+                self.__nickIndex = -1
+                return
         except IndexError:
             self.networkWidget.addServerMessage(
                 self.tr("Critical"),
@@ -1093,6 +1117,6 @@
         if isAway and self.__identityName:
             identity = self.__ircNetworkManager.getIdentity(
                 self.__identityName)
-            if identity.rememberAwayPosition():
+            if identity and identity.rememberAwayPosition():
                 for channel in self.__channelList:
                     channel.setMarkerLine()

eric ide

mercurial