--- 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()