Index: third_party/twisted_8_1/twisted/words/im/basechat.py |
diff --git a/third_party/twisted_8_1/twisted/words/im/basechat.py b/third_party/twisted_8_1/twisted/words/im/basechat.py |
deleted file mode 100644 |
index 4555bef2245cb9e1af59ec4c3284ef5df98017d6..0000000000000000000000000000000000000000 |
--- a/third_party/twisted_8_1/twisted/words/im/basechat.py |
+++ /dev/null |
@@ -1,316 +0,0 @@ |
-# Copyright (c) 2001-2004 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""" |
- def __init__(self, chatui): |
- """ |
- @param chatui: ??? |
- @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. |
- |
- @type person: L{Person<interfaces.IPerson>} |
- """ |
- 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. |
- |
- @type client: L{Client<interfaces.IClient>} |
- """ |
- 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. |
- |
- @type client: L{Client<interfaces.IClient>} |
- """ |
- if client in self.clients: |
- self.clients.remove(client) |
- |
- def contactChangedNick(self, person, newnick): |
- oldname = person.name |
- if self.contacts.has_key(oldname): |
- 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""" |
- def __init__(self, person, chatui): |
- """ |
- @type person: L{Person<interfaces.IPerson>} |
- @type chatui: L{ChatUI} |
- """ |
- self.chatui = chatui |
- self.person = person |
- |
- def show(self): |
- """Displays the ConversationWindow""" |
- raise NotImplementedError("Subclasses must implement this method") |
- |
- def hide(self): |
- """Hides the ConversationWindow""" |
- raise NotImplementedError("Subclasses must implement this method") |
- |
- def sendText(self, text): |
- """Sends text to the person with whom the user is conversing. |
- |
- @returntype: L{Deferred<twisted.internet.defer.Deferred>} |
- """ |
- self.person.sendMessage(text, None) |
- |
- def showMessage(self, text, metadata=None): |
- """Display a message sent from the person with whom she is conversing |
- |
- @type text: string |
- @type metadata: dict |
- """ |
- raise NotImplementedError("Subclasses must implement this method") |
- |
- def contactChangedNick(self, person, newnick): |
- """Change a person's name. |
- |
- @type person: L{Person<interfaces.IPerson>} |
- @type newnick: string |
- """ |
- self.person.name = newnick |
- |
- |
-class GroupConversation: |
- """A conversation with a group of people.""" |
- def __init__(self, group, chatui): |
- """ |
- @type group: L{Group<interfaces.IGroup>} |
- @param chatui: ??? |
- @type chatui: L{ChatUI} |
- """ |
- self.chatui = chatui |
- self.group = group |
- self.members = [] |
- |
- def show(self): |
- """Displays the GroupConversationWindow.""" |
- raise NotImplementedError("Subclasses must implement this method") |
- |
- def hide(self): |
- """Hides the GroupConversationWindow.""" |
- raise NotImplementedError("Subclasses must implement this method") |
- |
- def sendText(self, text): |
- """Sends text to the group. |
- |
- @type text: string |
- @returntype: L{Deferred<twisted.internet.defer.Deferred>} |
- """ |
- self.group.sendGroupMessage(text, None) |
- |
- def showGroupMessage(self, sender, text, metadata=None): |
- """Displays to the user a message sent to this group from the given sender |
- @type sender: string (XXX: Not Person?) |
- @type text: string |
- @type metadata: dict |
- """ |
- raise NotImplementedError("Subclasses must implement this method") |
- |
- def setGroupMembers(self, members): |
- """Sets the list of members in the group and displays it to the user |
- """ |
- self.members = members |
- |
- def setTopic(self, topic, author): |
- """Displays the topic (from the server) for the group conversation window |
- |
- @type topic: string |
- @type author: string (XXX: Not Person?) |
- """ |
- raise NotImplementedError("Subclasses must implement this method") |
- |
- def memberJoined(self, member): |
- """Adds the given member to the list of members in the group conversation |
- and displays this to the user |
- |
- @type member: string (XXX: Not Person?) |
- """ |
- if not member in self.members: |
- self.members.append(member) |
- |
- def memberChangedNick(self, oldnick, newnick): |
- """Changes the oldnick in the list of members to newnick and displays this |
- change to the user |
- |
- @type oldnick: string |
- @type newnick: string |
- """ |
- if oldnick in self.members: |
- self.members.remove(oldnick) |
- self.members.append(newnick) |
- #self.chatui.contactChangedNick(oldnick, newnick) |
- |
- def memberLeft(self, member): |
- """Deletes the given member from the list of members in the group |
- conversation and displays the change to the user |
- |
- @type member: string |
- """ |
- if member in self.members: |
- self.members.remove(member) |
- |
- |
-class ChatUI: |
- """A GUI chat client""" |
- def __init__(self): |
- self.conversations = {} # cache of all direct windows |
- self.groupConversations = {} # cache of all group windows |
- self.persons = {} # keys are (name, client) |
- self.groups = {} # cache of all groups |
- self.onlineClients = [] # list of message sources currently online |
- self.contactsList = ContactsList(self) |
- |
- def registerAccountClient(self, client): |
- """Notifies user that an account has been signed on to. |
- |
- @type client: L{Client<interfaces.IClient>} |
- @returns: client, so that I may be used in a callback chain |
- """ |
- print "signing onto", client.accountName |
- self.onlineClients.append(client) |
- self.contactsList.registerAccountClient(client) |
- return client |
- |
- def unregisterAccountClient(self, client): |
- """Notifies user that an account has been signed off or disconnected |
- |
- @type client: L{Client<interfaces.IClient>} |
- """ |
- print "signing off from", client.accountName |
- self.onlineClients.remove(client) |
- self.contactsList.unregisterAccountClient(client) |
- |
- def getContactsList(self): |
- """ |
- @returntype: L{ContactsList} |
- """ |
- return self.contactsList |
- |
- def getConversation(self, person, Class=Conversation, stayHidden=0): |
- """For the given person object, returns the conversation window |
- or creates and returns a new conversation window if one does not exist. |
- |
- @type person: L{Person<interfaces.IPerson>} |
- @type Class: L{Conversation<interfaces.IConversation>} class |
- @type stayHidden: boolean |
- |
- @returntype: L{Conversation<interfaces.IConversation>} |
- """ |
- 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=0): |
- """For the given group object, returns the group conversation window or |
- creates and returns a new group conversation window if it doesn't exist |
- |
- @type group: L{Group<interfaces.IGroup>} |
- @type Class: L{Conversation<interfaces.IConversation>} class |
- @type stayHidden: boolean |
- |
- @returntype: L{GroupConversation<interfaces.IGroupConversation>} |
- """ |
- 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, returns the instance of the |
- AbstractPerson subclass, or creates and returns a new AbstractPerson |
- subclass of the type Class |
- |
- @type name: string |
- @type client: L{Client<interfaces.IClient>} |
- |
- @returntype: L{Person<interfaces.IPerson>} |
- """ |
- 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, returns the instance of the |
- AbstractGroup subclass, or creates and returns a new AbstractGroup |
- subclass of the type Class |
- |
- @type name: string |
- @type client: L{Client<interfaces.IClient>} |
- |
- @returntype: L{Group<interfaces.IGroup>} |
- """ |
- # 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, oldnick, newnick): |
- """For the given person, changes the person's name to newnick, and |
- tells the contact list and any conversation windows with that person |
- to change as well. |
- |
- @type oldnick: string |
- @type newnick: string |
- """ |
- if self.persons.has_key((person.name, person.account)): |
- conv = self.conversations.get(person) |
- if conv: |
- conv.contactChangedNick(person, newnick) |
- |
- self.contactsList.contactChangedNick(person, newnick) |
- |
- del self.persons[person.name, person.account] |
- person.name = newnick |
- self.persons[person.name, person.account] = person |