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