17 |
17 |
18 class IrcIdentity(QObject): |
18 class IrcIdentity(QObject): |
19 """ |
19 """ |
20 Class implementing the IRC identity object. |
20 Class implementing the IRC identity object. |
21 """ |
21 """ |
|
22 DefaultIdentityName = "0default" |
|
23 |
22 def __init__(self, name, parent=None): |
24 def __init__(self, name, parent=None): |
23 """ |
25 """ |
24 Constructor |
26 Constructor |
25 |
27 |
26 @param name name of the identity (string) |
28 @param name name of the identity (string) |
456 not self.__servers or \ |
458 not self.__servers or \ |
457 not self.__networks: |
459 not self.__networks: |
458 # data structures got corrupted; load defaults |
460 # data structures got corrupted; load defaults |
459 self.__loadDefaults() |
461 self.__loadDefaults() |
460 |
462 |
|
463 if IrcIdentity.DefaultIdentityName not in self.__identities: |
|
464 self.__loadDefaults(identityOnly=True) |
|
465 |
461 self.__loaded = True |
466 self.__loaded = True |
462 |
467 |
463 def __loadDefaults(self): |
468 def __loadDefaults(self, identityOnly=False): |
464 """ |
469 """ |
465 Private method to load default values. |
470 Private method to load default values. |
466 """ |
471 |
467 self.__networks = {} |
472 @param identityOnly flag indicating to just load the default |
468 self.__identities = {} |
473 identity (boolean) |
469 self.__servers = {} |
474 """ |
|
475 if not identityOnly: |
|
476 self.__networks = {} |
|
477 self.__identities = {} |
|
478 self.__servers = {} |
470 |
479 |
471 # identity |
480 # identity |
472 userName = Utilities.getUserName() |
481 userName = Utilities.getUserName() |
473 identity = IrcIdentity(userName, self) |
482 identity = IrcIdentity(IrcIdentity.DefaultIdentityName, self) |
474 identity.setNickNames([userName, userName + "_", userName + "__"]) |
483 identity.setNickNames([userName, userName + "_", userName + "__"]) |
475 self.__identities[userName] = identity |
484 self.__identities[IrcIdentity.DefaultIdentityName] = identity |
476 |
485 |
477 # server |
486 if not identityOnly: |
478 serverName = "chat.freenode.net" |
487 # server |
479 server = IrcServer(serverName, self) |
488 serverName = "chat.freenode.net" |
480 server.setPort(8001) |
489 server = IrcServer(serverName, self) |
481 self.__servers[serverName] = server |
490 server.setPort(8001) |
482 |
491 self.__servers[serverName] = server |
483 # network |
492 |
484 networkName = "Freenode" |
493 # network |
485 network = IrcNetwork(networkName, self) |
494 networkName = "Freenode" |
486 network.setIdentityName(userName) |
495 network = IrcNetwork(networkName, self) |
487 network.setServerName(serverName) |
496 network.setIdentityName(IrcIdentity.DefaultIdentityName) |
488 network.setChannels(["#eric-ide"]) |
497 network.setServerName(serverName) |
489 self.__networks[networkName] = network |
498 network.setChannels(["#eric-ide"]) |
|
499 self.__networks[networkName] = network |
490 |
500 |
491 self.dataChanged.emit() |
501 self.dataChanged.emit() |
492 |
502 |
493 def getIdentity(self, name, create=False): |
503 def getIdentity(self, name, create=False): |
494 """ |
504 """ |
515 |
525 |
516 return id |
526 return id |
517 else: |
527 else: |
518 return None |
528 return None |
519 |
529 |
|
530 def getIdentityNames(self): |
|
531 """ |
|
532 Public method to get the names of all identities. |
|
533 |
|
534 @return names of all identities (list of string) |
|
535 """ |
|
536 return list(self.__identities.keys()) |
|
537 |
|
538 def addIdentity(self, identity): |
|
539 """ |
|
540 Public method to add a new identity. |
|
541 |
|
542 @param identity reference to the identity to add (IrcIdentity) |
|
543 """ |
|
544 name = identity.getName() |
|
545 self.__identities[name] = identity |
|
546 self.dataChanged.emit() |
|
547 |
|
548 def deleteIdentity(self, name): |
|
549 """ |
|
550 Public method to delete the given identity. |
|
551 |
|
552 @param name name of the identity to delete (string) |
|
553 """ |
|
554 if name in self.__identities and name != IrcIdentity.DefaultIdentityName: |
|
555 del self.__identities[name] |
|
556 self.dataChanged.emit() |
|
557 |
|
558 def renameIdentity(self, oldName, newName): |
|
559 """ |
|
560 Public method to rename an identity. |
|
561 |
|
562 @param oldName old name of the identity (string) |
|
563 @param newName new name of the identity (string) |
|
564 """ |
|
565 if oldName in self.__identities: |
|
566 self.__identities[newName] = self.__identities[oldName] |
|
567 del self.__identities[oldName] |
|
568 |
|
569 for network in self.__networks: |
|
570 if network.getIdentityName() == oldName: |
|
571 network.setIdentityName(newName) |
|
572 |
|
573 self.dataChanged.emit() |
|
574 |
520 def identityChanged(self): |
575 def identityChanged(self): |
521 """ |
576 """ |
522 Public method to indicate a change of an identity object. |
577 Public method to indicate a change of an identity object. |
523 """ |
578 """ |
524 self.dataChanged.emit() |
579 self.dataChanged.emit() |