Network/IRC/IrcNetworkManager.py

changeset 2239
a47b50e80a20
parent 2238
9977d3081ab6
child 2240
11445430c553
equal deleted inserted replaced
2238:9977d3081ab6 2239:a47b50e80a20
4 # 4 #
5 5
6 """ 6 """
7 Module implementing the IRC data structures and their manager. 7 Module implementing the IRC data structures and their manager.
8 """ 8 """
9
10 import copy
9 11
10 from PyQt4.QtCore import pyqtSignal, QObject, QCoreApplication 12 from PyQt4.QtCore import pyqtSignal, QObject, QCoreApplication
11 13
12 import Utilities 14 import Utilities
13 from Utilities.AutoSaver import AutoSaver 15 from Utilities.AutoSaver import AutoSaver
33 self.__name = name 35 self.__name = name
34 self.__realName = "" 36 self.__realName = ""
35 self.__nickNames = [] 37 self.__nickNames = []
36 self.__serviceName = "" 38 self.__serviceName = ""
37 self.__password = "" 39 self.__password = ""
40 self.__ident = Utilities.getUserName()
38 41
39 def save(self, settings): 42 def save(self, settings):
40 """ 43 """
41 Public method to save the identity data. 44 Public method to save the identity data.
42 45
43 @param settings reference to the settings object (QSettings) 46 @param settings reference to the settings object (QSettings)
44 """ 47 """
45 # no need to save the name because that is the group key 48 # no need to save the name because that is the group key
49 settings.setValue("Ident", self.__ident)
46 settings.setValue("RealName", self.__realName) 50 settings.setValue("RealName", self.__realName)
47 settings.setValue("NickNames", self.__nickNames) 51 settings.setValue("NickNames", self.__nickNames)
48 settings.setValue("ServiceName", self.__serviceName) 52 settings.setValue("ServiceName", self.__serviceName)
49 settings.setValue("Password", self.__password) 53 settings.setValue("Password", self.__password)
50 54
52 """ 56 """
53 Public method to load the identity data. 57 Public method to load the identity data.
54 58
55 @param settings reference to the settings object (QSettings) 59 @param settings reference to the settings object (QSettings)
56 """ 60 """
61 self.__ident = settings.value("Ident", Utilities.getUserName())
57 self.__realName = settings.value("RealName", "") 62 self.__realName = settings.value("RealName", "")
58 self.__nickNames = Preferences.toList(settings.value("NickNames", [])) 63 self.__nickNames = Preferences.toList(settings.value("NickNames", []))
59 self.__serviceName = settings.value("ServiceName", "") 64 self.__serviceName = settings.value("ServiceName", "")
60 self.__password = settings.value("Password", "") 65 self.__password = settings.value("Password", "")
61 66
67 def setName(self, name):
68 """
69 Public method to set the identity name.
70
71 @param identity name (string)
72 """
73 self.__name = name
74
62 def getName(self): 75 def getName(self):
63 """ 76 """
64 Public method to get the identity name. 77 Public method to get the identity name.
65 78
66 @return identity name (string) 79 @return identity name (string)
67 """ 80 """
68 return self.__name 81 return self.__name
69 82
83 def setIdent(self, name):
84 """
85 Public method to set the real identity name.
86
87 @param name real identity name (string)
88 """
89 self.__ident = name
90
70 def getIdent(self): 91 def getIdent(self):
71 """ 92 """
72 Public method to get the real identity name. 93 Public method to get the real identity name.
73 94
74 Note: This methdo takes care of converting the default
75 identity name to the user's user name.
76
77 @return real identity name (string) 95 @return real identity name (string)
78 """ 96 """
79 if self.__name == IrcIdentity.DefaultIdentityName: 97 return self.__ident
80 return Utilities.getUserName()
81 else:
82 return self.__name
83 98
84 def setRealName(self, name): 99 def setRealName(self, name):
85 """ 100 """
86 Public method to set the real name of the identity. 101 Public method to set the real name of the identity.
87 102
151 Class method to create the default identity. 166 Class method to create the default identity.
152 167
153 @return default identity (IrcIdentity) 168 @return default identity (IrcIdentity)
154 """ 169 """
155 userName = Utilities.getUserName() 170 userName = Utilities.getUserName()
171 realName = Utilities.getRealName()
172 if not realName:
173 realName = "eric IDE chat"
156 identity = IrcIdentity(IrcIdentity.DefaultIdentityName) 174 identity = IrcIdentity(IrcIdentity.DefaultIdentityName)
157 identity.setNickNames([userName, userName + "_", userName + "__"]) 175 identity.setNickNames([userName, userName + "_", userName + "__"])
158 identity.setRealName(userName) 176 identity.setRealName(realName)
177 identity.setIdent(userName)
159 return identity 178 return identity
160 179
161 180
162 class IrcServer(object): 181 class IrcServer(object):
163 """ 182 """
477 """ 496 """
478 Public method to get the channels. 497 Public method to get the channels.
479 498
480 @return list of channels for the network (list of IrcChannel) 499 @return list of channels for the network (list of IrcChannel)
481 """ 500 """
482 return list(self.__channels.values()) 501 return list(copy.deepcopy(self.__channels).values())
483 502
484 def getChannelNames(self): 503 def getChannelNames(self):
485 """ 504 """
486 Public method to get the list of channels. 505 Public method to get the list of channels.
487 506
618 637
619 # save IRC data 638 # save IRC data
620 self.__settings.beginGroup("IRC") 639 self.__settings.beginGroup("IRC")
621 640
622 # identities 641 # identities
642 self.__settings.remove("Identities")
623 self.__settings.beginGroup("Identities") 643 self.__settings.beginGroup("Identities")
624 for key in self.__identities: 644 for key in self.__identities:
625 self.__settings.beginGroup(key) 645 self.__settings.beginGroup(key)
626 self.__identities[key].save(self.__settings) 646 self.__identities[key].save(self.__settings)
627 self.__settings.endGroup() 647 self.__settings.endGroup()
628 self.__settings.endGroup() 648 self.__settings.endGroup()
629 649
630 # networks 650 # networks
651 self.__settings.remove("Networks")
631 self.__settings.beginGroup("Networks") 652 self.__settings.beginGroup("Networks")
632 for key in self.__networks: 653 for key in self.__networks:
633 self.__settings.beginGroup(key) 654 self.__settings.beginGroup(key)
634 self.__networks[key].save(self.__settings) 655 self.__networks[key].save(self.__settings)
635 self.__settings.endGroup() 656 self.__settings.endGroup()
727 748
728 return id 749 return id
729 else: 750 else:
730 return None 751 return None
731 752
753 def getIdentities(self):
754 """
755 Public method to get a copy of all identities.
756
757 @return dictionary of all identities (dict of IrcIdentity)
758 """
759 return copy.deepcopy(self.__identities)
760
761 def setIdentities(self, identities):
762 """
763 Public method to set the identities.
764
765 @param identities dictionary of all identities (dict of IrcIdentity)
766 """
767 self.__identities = copy.deepcopy(identities)
768 self.identityChanged()
769
770 # Check all networks, if the identity they use is still available.
771 # If it isn't, change them to use the default identity.
772 for network in self.__networks.values():
773 if network.getIdentityName() not in self.__identities:
774 network.setIdentityName(IrcIdentity.DefaultIdentityName)
775
732 def getIdentityNames(self): 776 def getIdentityNames(self):
733 """ 777 """
734 Public method to get the names of all identities. 778 Public method to get the names of all identities.
735 779
736 @return names of all identities (list of string) 780 @return names of all identities (list of string)
824 name = network.getName() 868 name = network.getName()
825 if name not in self.__networks: 869 if name not in self.__networks:
826 self.__networks[name] = network 870 self.__networks[name] = network
827 self.networkChanged() 871 self.networkChanged()
828 872
829 # TODO: check, if this method is needed
830 ## def createNetwork(self, name, identity, server, channels=None):
831 ## """
832 ## Public method to create a new network object.
833 ##
834 ## @param name name of the network (string)
835 ## @param identity reference to an identity object to associate with
836 ## this network (IrcIdentity)
837 ## @param server reference to a server object to associate with this
838 ## network (IrcServer)
839 ## @param channels list of channels for the network (list of IrcChannel)
840 ## @return reference to the created network object (IrcNetwork)
841 ## """
842 ## if not self.__loaded:
843 ## self.__load()
844 ##
845 ## if name in self.__networks:
846 ## return None
847 ##
848 ## network = IrcNetwork(name)
849 ## network.setIdentityName(identity.getName())
850 #### network.setServerName(server.getServer())
851 #### network.setChannels(channels[:])
852 #### network.setAutoJoinChannels(autoJoinChannels)
853 ## self.__networks[name] = network
854 ##
855 ## self.networkChanged()
856 ##
857 ## return network
858 ##
859 def deleteNetwork(self, name): 873 def deleteNetwork(self, name):
860 """ 874 """
861 Public method to delete the given network. 875 Public method to delete the given network.
862 876
863 @param name name of the network to delete (string) 877 @param name name of the network to delete (string)

eric ide

mercurial