Network/IRC/IrcNetworkManager.py

changeset 2235
266800cbe7cc
parent 2234
1e33501a0d33
child 2236
e30d5f978919
equal deleted inserted replaced
2234:1e33501a0d33 2235:266800cbe7cc
13 from Utilities.AutoSaver import AutoSaver 13 from Utilities.AutoSaver import AutoSaver
14 from Utilities.crypto import pwConvert 14 from Utilities.crypto import pwConvert
15 import Preferences 15 import Preferences
16 16
17 17
18 class IrcIdentity(QObject): 18 class IrcIdentity(object):
19 """ 19 """
20 Class implementing the IRC identity object. 20 Class implementing the IRC identity object.
21 """ 21 """
22 DefaultIdentityName = "0default" 22 DefaultIdentityName = "0default"
23 DefaultIdentityDisplay = QCoreApplication.translate("IrcIdentity", "Default Identity") 23 DefaultIdentityDisplay = QCoreApplication.translate("IrcIdentity", "Default Identity")
24 24
25 def __init__(self, name, parent=None): 25 def __init__(self, name):
26 """ 26 """
27 Constructor 27 Constructor
28 28
29 @param name name of the identity (string) 29 @param name name of the identity (string)
30 @param parent reference to the parent object (QObject) 30 """
31 """ 31 super().__init__()
32 super().__init__(parent)
33 32
34 self.__name = name 33 self.__name = name
35 self.__realName = "" 34 self.__realName = ""
36 self.__nickNames = [] 35 self.__nickNames = []
37 self.__serviceName = "" 36 self.__serviceName = ""
131 @return password (string) 130 @return password (string)
132 """ 131 """
133 return pwConvert(self.__password, encode=False) 132 return pwConvert(self.__password, encode=False)
134 133
135 134
136 class IrcServer(QObject): 135 class IrcServer(object):
137 """ 136 """
138 Class implementing the IRC identity object. 137 Class implementing the IRC identity object.
139 """ 138 """
140 DefaultPort = 6667 139 DefaultPort = 6667
141 140
142 def __init__(self, name, parent=None): 141 def __init__(self, name):
143 """ 142 """
144 Constructor 143 Constructor
145 144
146 @param name name of the server (string) 145 @param name name of the server (string)
147 @param parent reference to the parent object (QObject) 146 """
148 """ 147 super().__init__()
149 super().__init__(parent)
150 148
151 self.__server = name 149 self.__server = name
152 self.__port = IrcServer.DefaultPort 150 self.__port = IrcServer.DefaultPort
153 self.__ssl = False 151 self.__ssl = False
154 self.__password = "" 152 self.__password = ""
229 @return password (string) 227 @return password (string)
230 """ 228 """
231 return pwConvert(self.__password, encode=False) 229 return pwConvert(self.__password, encode=False)
232 230
233 231
234 class IrcChannel(QObject): 232 class IrcChannel(object):
235 """ 233 """
236 Class implementing the IRC channel object. 234 Class implementing the IRC channel object.
237 """ 235 """
238 def __init__(self, name, parent=None): 236 def __init__(self, name):
239 """ 237 """
240 Constructor 238 Constructor
241 239
242 @param name name of the network (string) 240 @param name name of the network (string)
243 @param parent reference to the parent object (QObject) 241 """
244 """ 242 super().__init__()
245 super().__init__(parent)
246 243
247 self.__name = name 244 self.__name = name
248 self.__key = "" 245 self.__key = ""
249 self.__autoJoin = False 246 self.__autoJoin = False
250 247
308 joined automatically (boolean) 305 joined automatically (boolean)
309 """ 306 """
310 self.__autoJoin = enable 307 self.__autoJoin = enable
311 308
312 309
313 class IrcNetwork(QObject): 310 class IrcNetwork(object):
314 """ 311 """
315 Class implementing the IRC network object. 312 Class implementing the IRC network object.
316 """ 313 """
317 def __init__(self, name, parent=None): 314 def __init__(self, name):
318 """ 315 """
319 Constructor 316 Constructor
320 317
321 @param name name of the network (string) 318 @param name name of the network (string)
322 @param parent reference to the parent object (QObject) 319 """
323 """ 320 super().__init__()
324 super().__init__(parent)
325 321
326 self.__name = name 322 self.__name = name
327 self.__identity = "" 323 self.__identity = ""
328 self.__server = "" 324 self.__server = ""
329 self.__channels = {} 325 self.__channels = {}
352 """ 348 """
353 self.__identity = settings.value("Identity", "") 349 self.__identity = settings.value("Identity", "")
354 self.__server = settings.value("Server", "") 350 self.__server = settings.value("Server", "")
355 settings.beginGroup("Channels") 351 settings.beginGroup("Channels")
356 for key in self.__channels: 352 for key in self.__channels:
357 self.__channels[key] = IrcChannel(key, self) 353 self.__channels[key] = IrcChannel(key)
358 settings.beginGroup(key) 354 settings.beginGroup(key)
359 self.__channels[key].load(settings) 355 self.__channels[key].load(settings)
360 settings.endGroup() 356 settings.endGroup()
361 settings.endGroup() 357 settings.endGroup()
362 358
444 440
445 @param channel channel object to set (IrcChannel) 441 @param channel channel object to set (IrcChannel)
446 """ 442 """
447 channelName = channel.getName() 443 channelName = channel.getName()
448 if channelName in self.__channels: 444 if channelName in self.__channels:
449 channel.setParent(self)
450 self.__channels[channelName] = channel 445 self.__channels[channelName] = channel
451 446
452 def addChannel(self, channel): 447 def addChannel(self, channel):
453 """ 448 """
454 Public method to add a channel. 449 Public method to add a channel.
455 450
456 @param channel channel object to add (IrcChannel) 451 @param channel channel object to add (IrcChannel)
457 """ 452 """
458 channelName = channel.getName() 453 channelName = channel.getName()
459 if channelName not in self.__channels: 454 if channelName not in self.__channels:
460 channel.setParent(self)
461 self.__channels[channelName] = channel 455 self.__channels[channelName] = channel
462 456
463 457
464 class IrcNetworkManager(QObject): 458 class IrcNetworkManager(QObject):
465 """ 459 """
543 self.__settings.beginGroup("IRC") 537 self.__settings.beginGroup("IRC")
544 538
545 # identities 539 # identities
546 self.__settings.beginGroup("Identities") 540 self.__settings.beginGroup("Identities")
547 for key in self.__settings.childKeys(): 541 for key in self.__settings.childKeys():
548 self.__identities[key] = IrcIdentity(key, self) 542 self.__identities[key] = IrcIdentity(key)
549 self.__settings.beginGroup(key) 543 self.__settings.beginGroup(key)
550 self.__identities[key].load(self.__settings) 544 self.__identities[key].load(self.__settings)
551 self.__settings.endGroup() 545 self.__settings.endGroup()
552 self.__settings.endGroup() 546 self.__settings.endGroup()
553 547
554 # servers 548 # servers
555 self.__settings.beginGroup("Servers") 549 self.__settings.beginGroup("Servers")
556 for key in self.__settings.childKeys(): 550 for key in self.__settings.childKeys():
557 self.__servers[key] = IrcServer(key, self) 551 self.__servers[key] = IrcServer(key)
558 self.__settings.beginGroup(key) 552 self.__settings.beginGroup(key)
559 self.__servers[key].load(self.__settings) 553 self.__servers[key].load(self.__settings)
560 self.__settings.endGroup() 554 self.__settings.endGroup()
561 self.__settings.endGroup() 555 self.__settings.endGroup()
562 556
563 # networks 557 # networks
564 self.__settings.beginGroup("Networks") 558 self.__settings.beginGroup("Networks")
565 for key in self.__settings.childKeys(): 559 for key in self.__settings.childKeys():
566 self.__networks[key] = IrcNetwork(key, self) 560 self.__networks[key] = IrcNetwork(key)
567 self.__settings.beginGroup(key) 561 self.__settings.beginGroup(key)
568 self.__networks[key].load(self.__settings) 562 self.__networks[key].load(self.__settings)
569 self.__settings.endGroup() 563 self.__settings.endGroup()
570 self.__settings.endGroup() 564 self.__settings.endGroup()
571 565
594 self.__identities = {} 588 self.__identities = {}
595 self.__servers = {} 589 self.__servers = {}
596 590
597 # identity 591 # identity
598 userName = Utilities.getUserName() 592 userName = Utilities.getUserName()
599 identity = IrcIdentity(IrcIdentity.DefaultIdentityName, self) 593 identity = IrcIdentity(IrcIdentity.DefaultIdentityName)
600 identity.setNickNames([userName, userName + "_", userName + "__"]) 594 identity.setNickNames([userName, userName + "_", userName + "__"])
601 self.__identities[IrcIdentity.DefaultIdentityName] = identity 595 self.__identities[IrcIdentity.DefaultIdentityName] = identity
602 596
603 if not identityOnly: 597 if not identityOnly:
604 # server 598 # server
605 serverName = "chat.freenode.net" 599 serverName = "chat.freenode.net"
606 server = IrcServer(serverName, self) 600 server = IrcServer(serverName)
607 server.setPort(8001) 601 server.setPort(8001)
608 self.__servers[serverName] = server 602 self.__servers[serverName] = server
609 603
610 # network 604 # network
611 networkName = "Freenode" 605 networkName = "Freenode"
612 network = IrcNetwork(networkName, self) 606 network = IrcNetwork(networkName)
613 network.setIdentityName(IrcIdentity.DefaultIdentityName) 607 network.setIdentityName(IrcIdentity.DefaultIdentityName)
614 network.setServerName(serverName) 608 network.setServerName(serverName)
615 channel = IrcChannel("#eric-ide", network) 609 channel = IrcChannel("#eric-ide")
616 channel.setAutoJoin(False) 610 channel.setAutoJoin(False)
617 network.addChannel(channel) 611 network.addChannel(channel)
618 self.__networks[networkName] = network 612 self.__networks[networkName] = network
619 613
620 self.dataChanged.emit() 614 self.dataChanged.emit()
635 self.__load() 629 self.__load()
636 630
637 if name in self.__identities: 631 if name in self.__identities:
638 return self.__identities[name] 632 return self.__identities[name]
639 elif create: 633 elif create:
640 id = IrcIdentity(name, self) 634 id = IrcIdentity(name)
641 self.__identities[name] = id 635 self.__identities[name] = id
642 636
643 self.dataChanged.emit() 637 self.dataChanged.emit()
644 638
645 return id 639 return id
695 """ 689 """
696 Public method to indicate a change of an identity object. 690 Public method to indicate a change of an identity object.
697 """ 691 """
698 self.dataChanged.emit() 692 self.dataChanged.emit()
699 693
694 # TODO: move server to network because it belongs there
700 def getServer(self, name, create=False): 695 def getServer(self, name, create=False):
701 """ 696 """
702 Public method to get a server object. 697 Public method to get a server object.
703 698
704 @param name name of the server to get (string) 699 @param name name of the server to get (string)
713 self.__load() 708 self.__load()
714 709
715 if name in self.__servers: 710 if name in self.__servers:
716 return self.__servers[name] 711 return self.__servers[name]
717 elif create: 712 elif create:
718 server = IrcServer(name, self) 713 server = IrcServer(name)
719 self.__servers[name] = server 714 self.__servers[name] = server
720 715
721 self.dataChanged.emit() 716 self.dataChanged.emit()
722 717
723 return server 718 return server
754 if name in self.__networks: 749 if name in self.__networks:
755 return self.__networks[name] 750 return self.__networks[name]
756 else: 751 else:
757 return None 752 return None
758 753
754 # TODO: check, if this method is needed
759 def createNetwork(self, name, identity, server, channels=None): 755 def createNetwork(self, name, identity, server, channels=None):
760 """ 756 """
761 Public method to create a new network object. 757 Public method to create a new network object.
762 758
763 @param name name of the network (string) 759 @param name name of the network (string)

eric ide

mercurial