65 |
65 |
66 @return identity name (string) |
66 @return identity name (string) |
67 """ |
67 """ |
68 return self.__name |
68 return self.__name |
69 |
69 |
|
70 def getIdent(self): |
|
71 """ |
|
72 Public method to get the real identity name. |
|
73 |
|
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) |
|
78 """ |
|
79 if self.__name == IrcIdentity.DefaultIdentityName: |
|
80 return Utilities.getUserName() |
|
81 else: |
|
82 return self.__name |
|
83 |
70 def setRealName(self, name): |
84 def setRealName(self, name): |
71 """ |
85 """ |
72 Public method to set the real name of the identity. |
86 Public method to set the real name of the identity. |
73 |
87 |
74 @param name real name (string) |
88 @param name real name (string) |
128 Public method to get the password. |
142 Public method to get the password. |
129 |
143 |
130 @return password (string) |
144 @return password (string) |
131 """ |
145 """ |
132 return pwConvert(self.__password, encode=False) |
146 return pwConvert(self.__password, encode=False) |
|
147 |
|
148 @classmethod |
|
149 def createDefaultIdentity(cls): |
|
150 """ |
|
151 Class method to create the default identity. |
|
152 |
|
153 @return default identity (IrcIdentity) |
|
154 """ |
|
155 userName = Utilities.getUserName() |
|
156 identity = IrcIdentity(IrcIdentity.DefaultIdentityName) |
|
157 identity.setNickNames([userName, userName + "_", userName + "__"]) |
|
158 identity.setRealName(userName) |
|
159 return identity |
133 |
160 |
134 |
161 |
135 class IrcServer(object): |
162 class IrcServer(object): |
136 """ |
163 """ |
137 Class implementing the IRC identity object. |
164 Class implementing the IRC identity object. |
170 """ |
197 """ |
171 self.__port = int(settings.value("Port", IrcServer.DefaultPort)) |
198 self.__port = int(settings.value("Port", IrcServer.DefaultPort)) |
172 self.__ssl = Preferences.toBool(settings.value("SSL", False)) |
199 self.__ssl = Preferences.toBool(settings.value("SSL", False)) |
173 self.__password = settings.value("Password", "") |
200 self.__password = settings.value("Password", "") |
174 |
201 |
175 def getServer(self): |
202 def getName(self): |
176 """ |
203 """ |
177 Public method to get the server name. |
204 Public method to get the server name. |
178 |
205 |
179 @return server name (string) |
206 @return server name (string) |
180 """ |
207 """ |
319 """ |
346 """ |
320 super().__init__() |
347 super().__init__() |
321 |
348 |
322 self.__name = name |
349 self.__name = name |
323 self.__identity = "" |
350 self.__identity = "" |
324 self.__server = "" |
351 self.__servers = {} |
325 self.__channels = {} |
352 self.__channels = {} |
326 |
353 |
327 def save(self, settings): |
354 def save(self, settings): |
328 """ |
355 """ |
329 Public method to save the network data. |
356 Public method to save the network data. |
330 |
357 |
331 @param settings reference to the settings object (QSettings) |
358 @param settings reference to the settings object (QSettings) |
332 """ |
359 """ |
333 # no need to save the network name because that is the group key |
360 # no need to save the network name because that is the group key |
334 settings.setValue("Identity", self.__identity) |
361 settings.setValue("Identity", self.__identity) |
335 settings.setValue("Server", self.__server) |
362 |
|
363 settings.beginGroup("Servers") |
|
364 for key in self.__servers: |
|
365 settings.beginGroup(key) |
|
366 self.__servers[key].save(settings) |
|
367 settings.endGroup() |
|
368 settings.endGroup() |
|
369 |
336 settings.beginGroup("Channels") |
370 settings.beginGroup("Channels") |
337 for key in self.__channels: |
371 for key in self.__channels: |
338 settings.beginGroup(key) |
372 settings.beginGroup(key) |
339 self.__channels[key].save(settings) |
373 self.__channels[key].save(settings) |
340 settings.endGroup() |
374 settings.endGroup() |
345 Public method to load the network data. |
379 Public method to load the network data. |
346 |
380 |
347 @param settings reference to the settings object (QSettings) |
381 @param settings reference to the settings object (QSettings) |
348 """ |
382 """ |
349 self.__identity = settings.value("Identity", "") |
383 self.__identity = settings.value("Identity", "") |
350 self.__server = settings.value("Server", "") |
384 |
|
385 settings.beginGroup("Servers") |
|
386 for key in settings.childKeys(): |
|
387 self.__servers[key] = IrcServer(key) |
|
388 settings.beginGroup(key) |
|
389 self.__servers[key].load(settings) |
|
390 settings.endGroup() |
|
391 settings.endGroup() |
|
392 |
351 settings.beginGroup("Channels") |
393 settings.beginGroup("Channels") |
352 for key in self.__channels: |
394 for key in self.__channels: |
353 self.__channels[key] = IrcChannel(key) |
395 self.__channels[key] = IrcChannel(key) |
354 settings.beginGroup(key) |
396 settings.beginGroup(key) |
355 self.__channels[key].load(settings) |
397 self.__channels[key].load(settings) |
378 |
420 |
379 @return identity name (string) |
421 @return identity name (string) |
380 """ |
422 """ |
381 return self.__identity |
423 return self.__identity |
382 |
424 |
383 def setServerName(self, name): |
425 def setServers(self, servers): |
384 """ |
426 """ |
385 Public method to set the server name. |
427 Public method to set the list of servers. |
386 |
428 |
387 @param name server name (string) |
429 @param servers list of servers for the network (list of IrcServer) |
388 """ |
430 """ |
389 self.__server = name |
431 self.__servers = {} |
390 |
432 for server in servers: |
391 def getServerName(self): |
433 self.__servers[server.getName()] = server |
392 """ |
434 |
393 Public method to get the server name. |
435 def getServers(self): |
394 |
436 """ |
395 @return server name (string) |
437 Public method to get the servers. |
396 """ |
438 |
397 return self.__server |
439 @return list of servers for the network (list of IrcServer) |
|
440 """ |
|
441 return list(self.__servers.values()) |
|
442 |
|
443 def getServerNames(self): |
|
444 """ |
|
445 Public method to get a list of all known server names. |
|
446 |
|
447 @return list of server names (list of string) |
|
448 """ |
|
449 return list(sorted(self.__servers.keys())) |
|
450 |
|
451 def getServer(self, name): |
|
452 """ |
|
453 Public method to get a server object. |
|
454 |
|
455 @param name name of the server to get (string) |
|
456 @return reference to the server (IrcServer) |
|
457 """ |
|
458 if name in self.__servers: |
|
459 return self.__servers[name] |
|
460 else: |
|
461 return None |
|
462 |
|
463 def setServer(self, server): |
|
464 """ |
|
465 Public method to set a server. |
|
466 |
|
467 @param server server object to set (IrcServer) |
|
468 """ |
|
469 serverName = server.getName() |
|
470 if serverName in self.__servers: |
|
471 self.__servers[serverName] = server |
|
472 |
|
473 def addServer(self, server): |
|
474 """ |
|
475 Public method to add a server. |
|
476 |
|
477 @param server server object to add (IrcServer) |
|
478 """ |
|
479 serverName = server.getName() |
|
480 if serverName not in self.__servers: |
|
481 self.__servers[serverName] = server |
398 |
482 |
399 def setChannels(self, channels): |
483 def setChannels(self, channels): |
400 """ |
484 """ |
401 Public method to set the list of channels. |
485 Public method to set the list of channels. |
402 |
486 |
451 @param channel channel object to add (IrcChannel) |
535 @param channel channel object to add (IrcChannel) |
452 """ |
536 """ |
453 channelName = channel.getName() |
537 channelName = channel.getName() |
454 if channelName not in self.__channels: |
538 if channelName not in self.__channels: |
455 self.__channels[channelName] = channel |
539 self.__channels[channelName] = channel |
|
540 |
|
541 def deleteChannel(self, channelName): |
|
542 """ |
|
543 Public method to delete the given channel. |
|
544 |
|
545 @param channelName name of the channel to be deleted (string) |
|
546 """ |
|
547 if channelName in self.__channels: |
|
548 del self.__channels[channelName] |
|
549 |
|
550 @classmethod |
|
551 def createDefaultNetwork(cls): |
|
552 """ |
|
553 Class method to create the default network. |
|
554 |
|
555 @return default network object (IrcNetwork) |
|
556 """ |
|
557 # network |
|
558 networkName = "Freenode" |
|
559 network = IrcNetwork(networkName) |
|
560 network.setIdentityName(IrcIdentity.DefaultIdentityName) |
|
561 |
|
562 # server |
|
563 serverName = "chat.freenode.net" |
|
564 server = IrcServer(serverName) |
|
565 server.setPort(8001) |
|
566 network.addServer(server) |
|
567 |
|
568 # channel |
|
569 channel = IrcChannel("#eric-ide") |
|
570 channel.setAutoJoin(False) |
|
571 network.addChannel(channel) |
|
572 |
|
573 return network |
456 |
574 |
457 |
575 |
458 class IrcNetworkManager(QObject): |
576 class IrcNetworkManager(QObject): |
459 """ |
577 """ |
460 Class implementing the IRC identity object. |
578 Class implementing the IRC identity object. |
503 # identities |
620 # identities |
504 self.__settings.beginGroup("Identities") |
621 self.__settings.beginGroup("Identities") |
505 for key in self.__identities: |
622 for key in self.__identities: |
506 self.__settings.beginGroup(key) |
623 self.__settings.beginGroup(key) |
507 self.__identities[key].save(self.__settings) |
624 self.__identities[key].save(self.__settings) |
508 self.__settings.endGroup() |
|
509 self.__settings.endGroup() |
|
510 |
|
511 # servers |
|
512 self.__settings.beginGroup("Servers") |
|
513 for key in self.__servers: |
|
514 self.__settings.beginGroup(key) |
|
515 self.__servers[key].save(self.__settings) |
|
516 self.__settings.endGroup() |
625 self.__settings.endGroup() |
517 self.__settings.endGroup() |
626 self.__settings.endGroup() |
518 |
627 |
519 # networks |
628 # networks |
520 self.__settings.beginGroup("Networks") |
629 self.__settings.beginGroup("Networks") |
543 self.__settings.beginGroup(key) |
652 self.__settings.beginGroup(key) |
544 self.__identities[key].load(self.__settings) |
653 self.__identities[key].load(self.__settings) |
545 self.__settings.endGroup() |
654 self.__settings.endGroup() |
546 self.__settings.endGroup() |
655 self.__settings.endGroup() |
547 |
656 |
548 # servers |
|
549 self.__settings.beginGroup("Servers") |
|
550 for key in self.__settings.childKeys(): |
|
551 self.__servers[key] = IrcServer(key) |
|
552 self.__settings.beginGroup(key) |
|
553 self.__servers[key].load(self.__settings) |
|
554 self.__settings.endGroup() |
|
555 self.__settings.endGroup() |
|
556 |
|
557 # networks |
657 # networks |
558 self.__settings.beginGroup("Networks") |
658 self.__settings.beginGroup("Networks") |
559 for key in self.__settings.childKeys(): |
659 for key in self.__settings.childKeys(): |
560 self.__networks[key] = IrcNetwork(key) |
660 self.__networks[key] = IrcNetwork(key) |
561 self.__settings.beginGroup(key) |
661 self.__settings.beginGroup(key) |
587 self.__networks = {} |
687 self.__networks = {} |
588 self.__identities = {} |
688 self.__identities = {} |
589 self.__servers = {} |
689 self.__servers = {} |
590 |
690 |
591 # identity |
691 # identity |
592 userName = Utilities.getUserName() |
692 identity = IrcIdentity.createDefaultIdentity() |
593 identity = IrcIdentity(IrcIdentity.DefaultIdentityName) |
693 self.__identities[identity.getName()] = identity |
594 identity.setNickNames([userName, userName + "_", userName + "__"]) |
|
595 self.__identities[IrcIdentity.DefaultIdentityName] = identity |
|
596 |
694 |
597 if not identityOnly: |
695 if not identityOnly: |
598 # server |
696 network = IrcNetwork.createDefaultNetwork() |
599 serverName = "chat.freenode.net" |
697 self.__networks[network.getName()] = network |
600 server = IrcServer(serverName) |
|
601 server.setPort(8001) |
|
602 self.__servers[serverName] = server |
|
603 |
|
604 # network |
|
605 networkName = "Freenode" |
|
606 network = IrcNetwork(networkName) |
|
607 network.setIdentityName(IrcIdentity.DefaultIdentityName) |
|
608 network.setServerName(serverName) |
|
609 channel = IrcChannel("#eric-ide") |
|
610 channel.setAutoJoin(False) |
|
611 network.addChannel(channel) |
|
612 self.__networks[networkName] = network |
|
613 |
698 |
614 self.dataChanged.emit() |
699 self.dataChanged.emit() |
|
700 |
|
701 ################################################################## |
|
702 ## Identity related methods below |
|
703 ################################################################## |
615 |
704 |
616 def getIdentity(self, name, create=False): |
705 def getIdentity(self, name, create=False): |
617 """ |
706 """ |
618 Public method to get an identity object. |
707 Public method to get an identity object. |
619 |
708 |
689 """ |
778 """ |
690 Public method to indicate a change of an identity object. |
779 Public method to indicate a change of an identity object. |
691 """ |
780 """ |
692 self.dataChanged.emit() |
781 self.dataChanged.emit() |
693 |
782 |
694 # TODO: move server to network because it belongs there |
783 ################################################################## |
695 def getServer(self, name, create=False): |
784 ## Network related methods below |
696 """ |
785 ################################################################## |
697 Public method to get a server object. |
|
698 |
|
699 @param name name of the server to get (string) |
|
700 @param create flag indicating to create a new object, |
|
701 if none exists (boolean) |
|
702 @return reference to the server (IrcServer) |
|
703 """ |
|
704 if not name: |
|
705 return None |
|
706 |
|
707 if not self.__loaded: |
|
708 self.__load() |
|
709 |
|
710 if name in self.__servers: |
|
711 return self.__servers[name] |
|
712 elif create: |
|
713 server = IrcServer(name) |
|
714 self.__servers[name] = server |
|
715 |
|
716 self.dataChanged.emit() |
|
717 |
|
718 return server |
|
719 else: |
|
720 return None |
|
721 |
|
722 def serverChanged(self): |
|
723 """ |
|
724 Public method to indicate a change of a server object. |
|
725 """ |
|
726 self.dataChanged.emit() |
|
727 |
|
728 def getServerNames(self): |
|
729 """ |
|
730 Public method to get a list of all known server names. |
|
731 |
|
732 @return list of server names (list of string) |
|
733 """ |
|
734 if not self.__loaded: |
|
735 self.__load() |
|
736 |
|
737 return list(sorted(self.__servers.keys())) |
|
738 |
786 |
739 def getNetwork(self, name): |
787 def getNetwork(self, name): |
740 """ |
788 """ |
741 Public method to get a network object. |
789 Public method to get a network object. |
742 |
790 |
749 if name in self.__networks: |
797 if name in self.__networks: |
750 return self.__networks[name] |
798 return self.__networks[name] |
751 else: |
799 else: |
752 return None |
800 return None |
753 |
801 |
|
802 def setNetwork(self, network): |
|
803 """ |
|
804 Public method to set a network. |
|
805 |
|
806 @param network network object to set (IrcNetwork) |
|
807 """ |
|
808 name = network.getName() |
|
809 if name in self.__networks: |
|
810 self.__networks[name] = network |
|
811 self.networkChanged() |
|
812 |
754 # TODO: check, if this method is needed |
813 # TODO: check, if this method is needed |
755 def createNetwork(self, name, identity, server, channels=None): |
814 ## def createNetwork(self, name, identity, server, channels=None): |
756 """ |
815 ## """ |
757 Public method to create a new network object. |
816 ## Public method to create a new network object. |
758 |
817 ## |
759 @param name name of the network (string) |
818 ## @param name name of the network (string) |
760 @param identity reference to an identity object to associate with |
819 ## @param identity reference to an identity object to associate with |
761 this network (IrcIdentity) |
820 ## this network (IrcIdentity) |
762 @param server reference to a server object to associate with this |
821 ## @param server reference to a server object to associate with this |
763 network (IrcServer) |
822 ## network (IrcServer) |
764 @param channels list of channels for the network (list of IrcChannel) |
823 ## @param channels list of channels for the network (list of IrcChannel) |
765 @return reference to the created network object (IrcNetwork) |
824 ## @return reference to the created network object (IrcNetwork) |
766 """ |
825 ## """ |
767 if not self.__loaded: |
826 ## if not self.__loaded: |
768 self.__load() |
827 ## self.__load() |
769 |
828 ## |
770 if name in self.__networks: |
829 ## if name in self.__networks: |
771 return None |
830 ## return None |
772 |
831 ## |
773 network = IrcNetwork(name) |
832 ## network = IrcNetwork(name) |
774 network.setIdentityName(identity.getName()) |
833 ## network.setIdentityName(identity.getName()) |
775 network.setServerName(server.getServer()) |
834 #### network.setServerName(server.getServer()) |
776 # TODO: change this |
835 #### network.setChannels(channels[:]) |
777 network.setChannels(channels[:]) |
836 #### network.setAutoJoinChannels(autoJoinChannels) |
778 ## network.setAutoJoinChannels(autoJoinChannels) |
837 ## self.__networks[name] = network |
779 self.__networks[name] = network |
838 ## |
780 |
839 ## self.networkChanged() |
781 self.networkChanged() |
840 ## |
782 |
841 ## return network |
783 return network |
842 ## |
784 |
|
785 def deleteNetwork(self, name): |
843 def deleteNetwork(self, name): |
786 """ |
844 """ |
787 Public method to delete the given network. |
845 Public method to delete the given network. |
788 |
846 |
789 @param name name of the network to delete (string) |
847 @param name name of the network to delete (string) |