diff options
Diffstat (limited to 'lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/words/im/basechat.py')
-rwxr-xr-x | lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/words/im/basechat.py | 512 |
1 files changed, 0 insertions, 512 deletions
diff --git a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/words/im/basechat.py b/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/words/im/basechat.py deleted file mode 100755 index 076275f4..00000000 --- a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/words/im/basechat.py +++ /dev/null @@ -1,512 +0,0 @@ -# -*- test-case-name: twisted.words.test.test_basechat -*- -# Copyright (c) Twisted Matrix Laboratories. -# See LICENSE for details. - -""" -Base classes for Instance Messenger clients. -""" - -from twisted.words.im.locals import OFFLINE, ONLINE, AWAY - - -class ContactsList: - """ - A GUI object that displays a contacts list. - - @ivar chatui: The GUI chat client associated with this contacts list. - @type chatui: L{ChatUI} - - @ivar contacts: The contacts. - @type contacts: C{dict} mapping C{str} to a L{IPerson<interfaces.IPerson>} - provider - - @ivar onlineContacts: The contacts who are currently online (have a status - that is not C{OFFLINE}). - @type onlineContacts: C{dict} mapping C{str} to a - L{IPerson<interfaces.IPerson>} provider - - @ivar clients: The signed-on clients. - @type clients: C{list} of L{IClient<interfaces.IClient>} providers - """ - def __init__(self, chatui): - """ - @param chatui: The GUI chat client associated with this contacts list. - @type chatui: L{ChatUI} - """ - self.chatui = chatui - self.contacts = {} - self.onlineContacts = {} - self.clients = [] - - - def setContactStatus(self, person): - """ - Inform the user that a person's status has changed. - - @param person: The person whose status has changed. - @type person: L{IPerson<interfaces.IPerson>} provider - """ - if not self.contacts.has_key(person.name): - self.contacts[person.name] = person - if not self.onlineContacts.has_key(person.name) and \ - (person.status == ONLINE or person.status == AWAY): - self.onlineContacts[person.name] = person - if self.onlineContacts.has_key(person.name) and \ - person.status == OFFLINE: - del self.onlineContacts[person.name] - - - def registerAccountClient(self, client): - """ - Notify the user that an account client has been signed on to. - - @param client: The client being added to your list of account clients. - @type client: L{IClient<interfaces.IClient>} provider - """ - if not client in self.clients: - self.clients.append(client) - - - def unregisterAccountClient(self, client): - """ - Notify the user that an account client has been signed off or - disconnected from. - - @param client: The client being removed from the list of account - clients. - @type client: L{IClient<interfaces.IClient>} provider - """ - if client in self.clients: - self.clients.remove(client) - - - def contactChangedNick(self, person, newnick): - """ - Update your contact information to reflect a change to a contact's - nickname. - - @param person: The person in your contacts list whose nickname is - changing. - @type person: L{IPerson<interfaces.IPerson>} provider - - @param newnick: The new nickname for this person. - @type newnick: C{str} - """ - oldname = person.name - if oldname in self.contacts: - del self.contacts[oldname] - person.name = newnick - self.contacts[newnick] = person - if self.onlineContacts.has_key(oldname): - del self.onlineContacts[oldname] - self.onlineContacts[newnick] = person - - - -class Conversation: - """ - A GUI window of a conversation with a specific person. - - @ivar person: The person who you're having this conversation with. - @type person: L{IPerson<interfaces.IPerson>} provider - - @ivar chatui: The GUI chat client associated with this conversation. - @type chatui: L{ChatUI} - """ - def __init__(self, person, chatui): - """ - @param person: The person who you're having this conversation with. - @type person: L{IPerson<interfaces.IPerson>} provider - - @param chatui: The GUI chat client associated with this conversation. - @type chatui: L{ChatUI} - """ - self.chatui = chatui - self.person = person - - - def show(self): - """ - Display the ConversationWindow. - """ - raise NotImplementedError("Subclasses must implement this method") - - - def hide(self): - """ - Hide the ConversationWindow. - """ - raise NotImplementedError("Subclasses must implement this method") - - - def sendText(self, text): - """ - Send text to the person with whom the user is conversing. - - @param text: The text to be sent. - @type text: C{str} - """ - self.person.sendMessage(text, None) - - - def showMessage(self, text, metadata=None): - """ - Display a message sent from the person with whom the user is conversing. - - @param text: The sent message. - @type text: C{str} - - @param metadata: Metadata associated with this message. - @type metadata: C{dict} - """ - raise NotImplementedError("Subclasses must implement this method") - - - def contactChangedNick(self, person, newnick): - """ - Change a person's name. - - @param person: The person whose nickname is changing. - @type person: L{IPerson<interfaces.IPerson>} provider - - @param newnick: The new nickname for this person. - @type newnick: C{str} - """ - self.person.name = newnick - - - -class GroupConversation: - """ - A GUI window of a conversation with a group of people. - - @ivar chatui: The GUI chat client associated with this conversation. - @type chatui: L{ChatUI} - - @ivar group: The group of people that are having this conversation. - @type group: L{IGroup<interfaces.IGroup>} provider - - @ivar members: The names of the people in this conversation. - @type members: C{list} of C{str} - """ - def __init__(self, group, chatui): - """ - @param chatui: The GUI chat client associated with this conversation. - @type chatui: L{ChatUI} - - @param group: The group of people that are having this conversation. - @type group: L{IGroup<interfaces.IGroup>} provider - """ - self.chatui = chatui - self.group = group - self.members = [] - - - def show(self): - """ - Display the GroupConversationWindow. - """ - raise NotImplementedError("Subclasses must implement this method") - - - def hide(self): - """ - Hide the GroupConversationWindow. - """ - raise NotImplementedError("Subclasses must implement this method") - - - def sendText(self, text): - """ - Send text to the group. - - @param: The text to be sent. - @type text: C{str} - """ - self.group.sendGroupMessage(text, None) - - - def showGroupMessage(self, sender, text, metadata=None): - """ - Display to the user a message sent to this group from the given sender. - - @param sender: The person sending the message. - @type sender: C{str} - - @param text: The sent message. - @type text: C{str} - - @param metadata: Metadata associated with this message. - @type metadata: C{dict} - """ - raise NotImplementedError("Subclasses must implement this method") - - - def setGroupMembers(self, members): - """ - Set the list of members in the group. - - @param members: The names of the people that will be in this group. - @type members: C{list} of C{str} - """ - self.members = members - - - def setTopic(self, topic, author): - """ - Change the topic for the group conversation window and display this - change to the user. - - @param topic: This group's topic. - @type topic: C{str} - - @param author: The person changing the topic. - @type author: C{str} - """ - raise NotImplementedError("Subclasses must implement this method") - - - def memberJoined(self, member): - """ - Add the given member to the list of members in the group conversation - and displays this to the user. - - @param member: The person joining the group conversation. - @type member: C{str} - """ - if not member in self.members: - self.members.append(member) - - - def memberChangedNick(self, oldnick, newnick): - """ - Change the nickname for a member of the group conversation and displays - this change to the user. - - @param oldnick: The old nickname. - @type oldnick: C{str} - - @param newnick: The new nickname. - @type newnick: C{str} - """ - if oldnick in self.members: - self.members.remove(oldnick) - self.members.append(newnick) - - - def memberLeft(self, member): - """ - Delete the given member from the list of members in the group - conversation and displays the change to the user. - - @param member: The person leaving the group conversation. - @type member: C{str} - """ - if member in self.members: - self.members.remove(member) - - - -class ChatUI: - """ - A GUI chat client. - - @type conversations: C{dict} of L{Conversation} - @ivar conversations: A cache of all the direct windows. - - @type groupConversations: C{dict} of L{GroupConversation} - @ivar groupConversations: A cache of all the group windows. - - @type persons: C{dict} with keys that are a C{tuple} of (C{str}, - L{IAccount<interfaces.IAccount>} provider) and values that are - L{IPerson<interfaces.IPerson>} provider - @ivar persons: A cache of all the users associated with this client. - - @type groups: C{dict} with keys that are a C{tuple} of (C{str}, - L{IAccount<interfaces.IAccount>} provider) and values that are - L{IGroup<interfaces.IGroup>} provider - @ivar groups: A cache of all the groups associated with this client. - - @type onlineClients: C{list} of L{IClient<interfaces.IClient>} providers - @ivar onlineClients: A list of message sources currently online. - - @type contactsList: L{ContactsList} - @ivar contactsList: A contacts list. - """ - def __init__(self): - self.conversations = {} - self.groupConversations = {} - self.persons = {} - self.groups = {} - self.onlineClients = [] - self.contactsList = ContactsList(self) - - - def registerAccountClient(self, client): - """ - Notify the user that an account has been signed on to. - - @type client: L{IClient<interfaces.IClient>} provider - @param client: The client account for the person who has just signed on. - - @rtype client: L{IClient<interfaces.IClient>} provider - @return: The client, so that it may be used in a callback chain. - """ - self.onlineClients.append(client) - self.contactsList.registerAccountClient(client) - return client - - - def unregisterAccountClient(self, client): - """ - Notify the user that an account has been signed off or disconnected. - - @type client: L{IClient<interfaces.IClient>} provider - @param client: The client account for the person who has just signed - off. - """ - self.onlineClients.remove(client) - self.contactsList.unregisterAccountClient(client) - - - def getContactsList(self): - """ - Get the contacts list associated with this chat window. - - @rtype: L{ContactsList} - @return: The contacts list associated with this chat window. - """ - return self.contactsList - - - def getConversation(self, person, Class=Conversation, stayHidden=False): - """ - For the given person object, return the conversation window or create - and return a new conversation window if one does not exist. - - @type person: L{IPerson<interfaces.IPerson>} provider - @param person: The person whose conversation window we want to get. - - @type Class: L{IConversation<interfaces.IConversation>} implementor - @param: The kind of conversation window we want. If the conversation - window for this person didn't already exist, create one of this type. - - @type stayHidden: C{bool} - @param stayHidden: Whether or not the conversation window should stay - hidden. - - @rtype: L{IConversation<interfaces.IConversation>} provider - @return: The conversation window. - """ - conv = self.conversations.get(person) - if not conv: - conv = Class(person, self) - self.conversations[person] = conv - if stayHidden: - conv.hide() - else: - conv.show() - return conv - - - def getGroupConversation(self, group, Class=GroupConversation, - stayHidden=False): - """ - For the given group object, return the group conversation window or - create and return a new group conversation window if it doesn't exist. - - @type group: L{IGroup<interfaces.IGroup>} provider - @param group: The group whose conversation window we want to get. - - @type Class: L{IConversation<interfaces.IConversation>} implementor - @param: The kind of conversation window we want. If the conversation - window for this person didn't already exist, create one of this type. - - @type stayHidden: C{bool} - @param stayHidden: Whether or not the conversation window should stay - hidden. - - @rtype: L{IGroupConversation<interfaces.IGroupConversation>} provider - @return: The group conversation window. - """ - conv = self.groupConversations.get(group) - if not conv: - conv = Class(group, self) - self.groupConversations[group] = conv - if stayHidden: - conv.hide() - else: - conv.show() - return conv - - - def getPerson(self, name, client): - """ - For the given name and account client, return an instance of a - L{IGroup<interfaces.IPerson>} provider or create and return a new - instance of a L{IGroup<interfaces.IPerson>} provider. - - @type name: C{str} - @param name: The name of the person of interest. - - @type client: L{IClient<interfaces.IClient>} provider - @param client: The client account of interest. - - @rtype: L{IPerson<interfaces.IPerson>} provider - @return: The person with that C{name}. - """ - account = client.account - p = self.persons.get((name, account)) - if not p: - p = account.getPerson(name) - self.persons[name, account] = p - return p - - - def getGroup(self, name, client): - """ - For the given name and account client, return an instance of a - L{IGroup<interfaces.IGroup>} provider or create and return a new instance - of a L{IGroup<interfaces.IGroup>} provider. - - @type name: C{str} - @param name: The name of the group of interest. - - @type client: L{IClient<interfaces.IClient>} provider - @param client: The client account of interest. - - @rtype: L{IGroup<interfaces.IGroup>} provider - @return: The group with that C{name}. - """ - # I accept 'client' instead of 'account' in my signature for - # backwards compatibility. (Groups changed to be Account-oriented - # in CVS revision 1.8.) - account = client.account - g = self.groups.get((name, account)) - if not g: - g = account.getGroup(name) - self.groups[name, account] = g - return g - - - def contactChangedNick(self, person, newnick): - """ - For the given C{person}, change the C{person}'s C{name} to C{newnick} - and tell the contact list and any conversation windows with that - C{person} to change as well. - - @type person: L{IPerson<interfaces.IPerson>} provider - @param person: The person whose nickname will get changed. - - @type newnick: C{str} - @param newnick: The new C{name} C{person} will take. - """ - oldnick = person.name - if (oldnick, person.account) in self.persons: - conv = self.conversations.get(person) - if conv: - conv.contactChangedNick(person, newnick) - self.contactsList.contactChangedNick(person, newnick) - del self.persons[oldnick, person.account] - person.name = newnick - self.persons[person.name, person.account] = person |