Network/IRC/IrcNetworkManager.py

changeset 2239
a47b50e80a20
parent 2238
9977d3081ab6
child 2240
11445430c553
diff -r 9977d3081ab6 -r a47b50e80a20 Network/IRC/IrcNetworkManager.py
--- a/Network/IRC/IrcNetworkManager.py	Sat Dec 01 11:48:52 2012 +0100
+++ b/Network/IRC/IrcNetworkManager.py	Sat Dec 01 19:51:46 2012 +0100
@@ -7,6 +7,8 @@
 Module implementing the IRC data structures and their manager.
 """
 
+import copy
+
 from PyQt4.QtCore import pyqtSignal, QObject, QCoreApplication
 
 import Utilities
@@ -35,6 +37,7 @@
         self.__nickNames = []
         self.__serviceName = ""
         self.__password = ""
+        self.__ident = Utilities.getUserName()
     
     def save(self, settings):
         """
@@ -43,6 +46,7 @@
         @param settings reference to the settings object (QSettings)
         """
         # no need to save the name because that is the group key
+        settings.setValue("Ident", self.__ident)
         settings.setValue("RealName", self.__realName)
         settings.setValue("NickNames", self.__nickNames)
         settings.setValue("ServiceName", self.__serviceName)
@@ -54,11 +58,20 @@
         
         @param settings reference to the settings object (QSettings)
         """
+        self.__ident = settings.value("Ident", Utilities.getUserName())
         self.__realName = settings.value("RealName", "")
         self.__nickNames = Preferences.toList(settings.value("NickNames", []))
         self.__serviceName = settings.value("ServiceName", "")
         self.__password = settings.value("Password", "")
     
+    def setName(self, name):
+        """
+        Public method to set the identity name.
+        
+        @param identity name (string)
+        """
+        self.__name = name
+    
     def getName(self):
         """
         Public method to get the identity name.
@@ -67,19 +80,21 @@
         """
         return self.__name
     
+    def setIdent(self, name):
+        """
+        Public method to set the real identity name.
+        
+        @param name real identity name (string)
+        """
+        self.__ident = name
+    
     def getIdent(self):
         """
         Public method to get the real identity name.
         
-        Note: This methdo takes care of converting the default
-        identity name to the user's user name.
-        
         @return real identity name (string)
         """
-        if self.__name == IrcIdentity.DefaultIdentityName:
-            return Utilities.getUserName()
-        else:
-            return self.__name
+        return self.__ident
     
     def setRealName(self, name):
         """
@@ -153,9 +168,13 @@
         @return default identity (IrcIdentity)
         """
         userName = Utilities.getUserName()
+        realName = Utilities.getRealName()
+        if not realName:
+            realName = "eric IDE chat"
         identity = IrcIdentity(IrcIdentity.DefaultIdentityName)
         identity.setNickNames([userName, userName + "_", userName + "__"])
-        identity.setRealName(userName)
+        identity.setRealName(realName)
+        identity.setIdent(userName)
         return identity
 
 
@@ -479,7 +498,7 @@
         
         @return list of channels for the network (list of IrcChannel)
         """
-        return list(self.__channels.values())
+        return list(copy.deepcopy(self.__channels).values())
     
     def getChannelNames(self):
         """
@@ -620,6 +639,7 @@
         self.__settings.beginGroup("IRC")
         
         # identities
+        self.__settings.remove("Identities")
         self.__settings.beginGroup("Identities")
         for key in self.__identities:
             self.__settings.beginGroup(key)
@@ -628,6 +648,7 @@
         self.__settings.endGroup()
         
         # networks
+        self.__settings.remove("Networks")
         self.__settings.beginGroup("Networks")
         for key in self.__networks:
             self.__settings.beginGroup(key)
@@ -729,6 +750,29 @@
         else:
             return None
     
+    def getIdentities(self):
+        """
+        Public method to get a copy of all identities.
+        
+        @return dictionary of all identities (dict of IrcIdentity)
+        """
+        return copy.deepcopy(self.__identities)
+    
+    def setIdentities(self, identities):
+        """
+        Public method to set the identities.
+        
+        @param identities dictionary of all identities (dict of IrcIdentity)
+        """
+        self.__identities = copy.deepcopy(identities)
+        self.identityChanged()
+        
+        # Check all networks, if the identity they use is still available.
+        # If it isn't, change them to use the default identity.
+        for network in self.__networks.values():
+            if network.getIdentityName() not in self.__identities:
+                network.setIdentityName(IrcIdentity.DefaultIdentityName)
+    
     def getIdentityNames(self):
         """
         Public method to get the names of all identities.
@@ -826,36 +870,6 @@
             self.__networks[name] = network
             self.networkChanged()
     
-    # TODO: check, if this method is needed
-##    def createNetwork(self, name, identity, server, channels=None):
-##        """
-##        Public method to create a new network object.
-##        
-##        @param name name of the network (string)
-##        @param identity reference to an identity object to associate with
-##            this network (IrcIdentity)
-##        @param server reference to a server object to associate with this
-##            network (IrcServer)
-##        @param channels list of channels for the network (list of IrcChannel)
-##        @return reference to the created network object (IrcNetwork)
-##        """
-##        if not self.__loaded:
-##            self.__load()
-##        
-##        if name in self.__networks:
-##            return None
-##        
-##        network = IrcNetwork(name)
-##        network.setIdentityName(identity.getName())
-####        network.setServerName(server.getServer())
-####        network.setChannels(channels[:])
-####        network.setAutoJoinChannels(autoJoinChannels)
-##        self.__networks[name] = network
-##        
-##        self.networkChanged()
-##        
-##        return network
-##    
     def deleteNetwork(self, name):
         """
         Public method to delete the given network.

eric ide

mercurial