Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(207)

Unified Diff: third_party/twisted_8_1/twisted/words/im/gtkchat.py

Issue 12261012: Remove third_party/twisted_8_1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/twisted_8_1/twisted/words/im/gtkchat.py
diff --git a/third_party/twisted_8_1/twisted/words/im/gtkchat.py b/third_party/twisted_8_1/twisted/words/im/gtkchat.py
deleted file mode 100644
index 9c1a426884b170c6db271851facc5b00dc0be8bc..0000000000000000000000000000000000000000
--- a/third_party/twisted_8_1/twisted/words/im/gtkchat.py
+++ /dev/null
@@ -1,413 +0,0 @@
-# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
-# See LICENSE for details.
-
-
-import string
-import time
-
-import gtk
-
-from twisted.words.im.gtkcommon import GLADE_FILE, autoConnectMethods, InputOutputWindow, openGlade
-
-class ContactsList:
- def __init__(self, chatui, xml):
- self.xml = xml# openGlade(GLADE_FILE, root="ContactsWidget")
- # self.widget = self.xml.get_widget("ContactsWidget")
- self.people = []
- self.onlinePeople = []
- self.countOnline = 0
- autoConnectMethods(self)
- self.selectedPerson = None
- self.xml.get_widget("OnlineCount").set_text("Online: 0")
- self.chat = chatui
-
- # Construct Menu for Account Selection
- self.optionMenu = self.xml.get_widget("AccountsListPopup")
- self.accountMenuItems = []
- self.currentAccount = None
-
-
- def registerAccountClient(self, account):
- print 'registering account client', self, account
- self.accountMenuItems.append(account)
- self._updateAccountMenu()
- self.chat._accountmanager.refreshAccounts()
-
- def _updateAccountMenu(self):
- # This seems to be necessary -- I don't understand gtk's handling of
- # GtkOptionMenus
- print 'updating account menu', self.accountMenuItems
- self.accountMenu = gtk.GtkMenu()
- for account in self.accountMenuItems:
- i = gtk.GtkMenuItem(account.accountName)
- i.connect('activate', self.on_AccountsListPopup_activate, account)
- self.accountMenu.append(i)
- if self.accountMenuItems:
- print "setting default account to", self.accountMenuItems[0]
- self.currentAccount = self.accountMenuItems[0]
- self.accountMenu.show_all()
- self.optionMenu.set_menu(self.accountMenu)
-
- def on_AccountsListPopup_activate(self, w, account):
- print 'setting current account', account
- self.currentAccount = account
-
- def on_AddContactButton_clicked(self, b):
- self.currentAccount.addContact(
- self.xml.get_widget("ContactNameEntry").get_text())
-
- def unregisterAccountClient(self,account):
- print 'unregistering account client', self, account
- self.accountMenuItems.remove(account)
- self._updateAccountMenu()
-
- def setContactStatus(self, person):
- if person not in self.people:
- self.people.append(person)
- self.refreshContactsLists()
-
- def on_OnlineContactsTree_select_row(self, w, row, column, event):
- self.selectedPerson = self.onlinePeople[row]
- entry = self.xml.get_widget("ContactNameEntry")
- entry.set_text(self.selectedPerson.name)
- self.currentAccount = self.selectedPerson.account.client
- idx = self.accountMenuItems.index(self.currentAccount)
- self.accountMenu.set_active(idx)
- self.optionMenu.remove_menu()
- self.optionMenu.set_menu(self.accountMenu)
-
- def on_PlainSendIM_clicked(self, b):
- self.chat.getConversation(
- self.currentAccount.getPerson(
- self.xml.get_widget("ContactNameEntry").get_text()))
-## if self.selectedPerson:
-## c = self.chat.getConversation(self.selectedPerson)
-
- def on_PlainJoinChat_clicked(self, b):
- ## GroupJoinWindow(self.chat)
- name = self.xml.get_widget("ContactNameEntry").get_text()
- self.currentAccount.joinGroup(name)
-
- def refreshContactsLists(self):
- # HIDEOUSLY inefficient
- online = self.xml.get_widget("OnlineContactsTree")
- offline = self.xml.get_widget("OfflineContactsList")
- online.freeze()
- offline.freeze()
- online.clear()
- offline.clear()
- self.countOnline = 0
- self.onlinePeople = []
- self.people.sort(lambda x, y: cmp(x.name, y.name))
- for person in self.people:
- if person.isOnline():
- self.onlinePeople.append(person)
- online.append([person.name, str(person.getStatus()),
- person.getIdleTime(),
- person.account.accountName])
- self.countOnline = self.countOnline + 1
- offline.append([person.name, person.account.accountName,
- 'Aliasing Not Implemented', 'Groups Not Implemented'])
- self.xml.get_widget("OnlineCount").set_text("Online: %d" % self.countOnline)
- online.thaw()
- offline.thaw()
-
-
-
-def colorhash(name):
- h = hash(name)
- l = [0x5555ff,
- 0x55aa55,
- 0x55aaff,
- 0xff5555,
- 0xff55ff,
- 0xffaa55]
- index = l[h % len(l)]
- return '%06.x' % (abs(hash(name)) & index)
-
-
-def _msgDisplay(output, name, text, color, isEmote):
- text = string.replace(text, '\n', '\n\t')
- ins = output.insert
- ins(None, color, None, "[ %s ] " % time.strftime("%H:%M:%S"))
- if isEmote:
- ins(None, color, None, "* %s " % name)
- ins(None, None, None, "%s\n" % text)
- else:
- ins(None, color, None, "<%s> " % name)
- ins(None, None, None, "%s\n" % text)
-
-
-class Conversation(InputOutputWindow):
- """GUI representation of a conversation.
- """
- def __init__(self, person):
- InputOutputWindow.__init__(self,
- "ConversationWidget",
- "ConversationMessageEntry",
- "ConversationOutput")
- self.person = person
- alloc_color = self.output.get_colormap().alloc
- self.personColor = alloc_color("#%s" % colorhash(person.name))
- self.myColor = alloc_color("#0000ff")
- print "allocated my color %s and person color %s" % (
- self.myColor, self.personColor)
-
- def getTitle(self):
- return "Conversation - %s (%s)" % (self.person.name,
- self.person.account.accountName)
-
- # Chat Interface Implementation
-
- def sendText(self, text):
- metadata = None
- if text[:4] == "/me ":
- text = text[4:]
- metadata = {"style": "emote"}
- self.person.sendMessage(text, metadata).addCallback(self._cbTextSent, text, metadata)
-
- def showMessage(self, text, metadata=None):
- _msgDisplay(self.output, self.person.name, text, self.personColor,
- (metadata and metadata.get("style", None) == "emote"))
-
- # Internal
-
- def _cbTextSent(self, result, text, metadata=None):
- _msgDisplay(self.output, self.person.account.client.name,
- text, self.myColor,
- (metadata and metadata.get("style", None) == "emote"))
-
-class GroupConversation(InputOutputWindow):
- def __init__(self, group):
- InputOutputWindow.__init__(self,
- "GroupChatBox",
- "GroupInput",
- "GroupOutput")
- self.group = group
- self.members = []
- self.membersHidden = 0
- self._colorcache = {}
- alloc_color = self.output.get_colormap().alloc
- self.myColor = alloc_color("#0000ff")
- # TODO: we shouldn't be getting group conversations randomly without
- # names, but irc autojoin appears broken.
- self.xml.get_widget("NickLabel").set_text(
- getattr(self.group.account.client,"name","(no name)"))
- participantList = self.xml.get_widget("ParticipantList")
- groupBox = self.xml.get_widget("GroupActionsBox")
- for method in group.getGroupCommands():
- b = gtk.GtkButton(method.__name__)
- b.connect("clicked", self._doGroupAction, method)
- groupBox.add(b)
- self.setTopic("No Topic Yet", "No Topic Author Yet")
-
- # GTK Event Handlers
-
- def on_HideButton_clicked(self, b):
- self.membersHidden = not self.membersHidden
- self.xml.get_widget("GroupHPaned").set_position(self.membersHidden and -1 or 20000)
-
- def on_LeaveButton_clicked(self, b):
- self.win.destroy()
- self.group.leave()
-
- def on_AddContactButton_clicked(self, b):
- lw = self.xml.get_widget("ParticipantList")
-
- if lw.selection:
- self.group.client.addContact(self.members[lw.selection[0]])
-
- def on_TopicEntry_focus_out_event(self, w, e):
- self.xml.get_widget("TopicEntry").set_text(self._topic)
-
- def on_TopicEntry_activate(self, e):
- print "ACTIVATING TOPIC!!"
- self.group.setTopic(e.get_text())
- # self.xml.get_widget("TopicEntry").set_editable(0)
- self.xml.get_widget("GroupInput").grab_focus()
-
- def on_ParticipantList_unselect_row(self, w, row, column, event):
- print 'row unselected'
- personBox = self.xml.get_widget("PersonActionsBox")
- for child in personBox.children():
- personBox.remove(child)
-
- def on_ParticipantList_select_row(self, w, row, column, event):
- self.selectedPerson = self.group.account.client.getPerson(self.members[row])
- print 'selected', self.selectedPerson
- personBox = self.xml.get_widget("PersonActionsBox")
- personFrame = self.xml.get_widget("PersonFrame")
- # clear out old buttons
- for child in personBox.children():
- personBox.remove(child)
- personFrame.set_label("Person: %s" % self.selectedPerson.name)
- for method in self.selectedPerson.getPersonCommands():
- b = gtk.GtkButton(method.__name__)
- b.connect("clicked", self._doPersonAction, method)
- personBox.add(b)
- b.show()
- for method in self.group.getTargetCommands(self.selectedPerson):
- b = gtk.GtkButton(method.__name__)
- b.connect("clicked", self._doTargetAction, method,
- self.selectedPerson)
- personBox.add(b)
- b.show()
-
- def _doGroupAction(self, evt, method):
- method()
-
- def _doPersonAction(self, evt, method):
- method()
-
- def _doTargetAction(self, evt, method, person):
- method(person)
-
- def hidden(self, w):
- InputOutputWindow.hidden(self, w)
- self.group.leave()
-
- def getTitle(self):
- return "Group Conversation - " + self.group.name
-
- # Chat Interface Implementation
- def sendText(self, text):
- metadata = None
- if text[:4] == "/me ":
- text = text[4:]
- metadata = {"style": "emote"}
- self.group.sendGroupMessage(text, metadata).addCallback(self._cbTextSent, text, metadata=metadata)
-
- def showGroupMessage(self, sender, text, metadata=None):
- _msgDisplay(self.output, sender, text, self._cacheColorHash(sender),
- (metadata and metadata.get("style", None) == "emote"))
-
-
- def setGroupMembers(self, members):
- self.members = members
- self.refreshMemberList()
-
- def setTopic(self, topic, author):
- self._topic = topic
- self._topicAuthor = author
- self.xml.get_widget("TopicEntry").set_text(topic)
- self.xml.get_widget("AuthorLabel").set_text(author)
-
- def memberJoined(self, member):
- self.members.append(member)
- self.output.insert_defaults("> %s joined <\n" % member)
- self.refreshMemberList()
-
- def memberChangedNick(self, member, newnick):
- self.members.remove(member)
- self.members.append(newnick)
- self.output.insert_defaults("> %s becomes %s <\n" % (member, newnick))
- self.refreshMemberList()
-
- def memberLeft(self, member):
- self.members.remove(member)
- self.output.insert_defaults("> %s left <\n" % member)
- self.refreshMemberList()
-
-
-
- # Tab Completion
-
- def tabComplete(self, word):
- """InputOutputWindow calls me when tab is pressed."""
- if not word:
- return []
- potentialMatches = []
- for nick in self.members:
- if string.lower(nick[:len(word)]) == string.lower(word):
- potentialMatches.append(nick + ": ") #colon is a nick-specific thing
- return potentialMatches
-
- # Internal
-
- def _cbTextSent(self, result, text, metadata=None):
- _msgDisplay(self.output, self.group.account.client.name,
- text, self.myColor,
- (metadata and metadata.get("style", None) == "emote"))
-
- def refreshMemberList(self):
- pl = self.xml.get_widget("ParticipantList")
- pl.freeze()
- pl.clear()
- self.members.sort(lambda x,y: cmp(string.lower(x), string.lower(y)))
- for member in self.members:
- pl.append([member])
- pl.thaw()
-
- def _cacheColorHash(self, name):
- if self._colorcache.has_key(name):
- return self._colorcache[name]
- else:
- alloc_color = self.output.get_colormap().alloc
- c = alloc_color('#%s' % colorhash(name))
- self._colorcache[name] = c
- return c
-
-
-
-
-class GtkChatClientUI:
- def __init__(self,xml):
- self.conversations = {} # cache of all direct windows
- self.groupConversations = {} # cache of all group windows
- self.personCache = {} # keys are (name, account)
- self.groupCache = {} # cache of all groups
- self.theContactsList = ContactsList(self,xml)
- self.onlineAccounts = [] # list of message sources currently online
-
- def registerAccountClient(self,account):
- print 'registering account client'
- self.onlineAccounts.append(account)
- self.getContactsList().registerAccountClient(account)
-
- def unregisterAccountClient(self,account):
- print 'unregistering account client'
- self.onlineAccounts.remove(account)
- self.getContactsList().unregisterAccountClient(account)
-
- def contactsListClose(self, w, evt):
- return gtk.TRUE
-
- def getContactsList(self):
- return self.theContactsList
-
- def getConversation(self, person):
- conv = self.conversations.get(person)
- if not conv:
- conv = Conversation(person)
- self.conversations[person] = conv
- conv.show()
- return conv
-
- def getGroupConversation(self, group, stayHidden=0):
- conv = self.groupConversations.get(group)
- if not conv:
- conv = GroupConversation(group)
- self.groupConversations[group] = conv
- if not stayHidden:
- conv.show()
- else:
- conv.hide()
- return conv
-
- # ??? Why doesn't this inherit the basechat.ChatUI implementation?
-
- def getPerson(self, name, client):
- account = client.account
- p = self.personCache.get((name, account))
- if not p:
- p = account.getPerson(name)
- self.personCache[name, account] = p
- return p
-
- def getGroup(self, name, client):
- account = client.account
- g = self.groupCache.get((name, account))
- if g is None:
- g = account.getGroup(name)
- self.groupCache[name, account] = g
- return g
« no previous file with comments | « third_party/twisted_8_1/twisted/words/im/gtkaccount.py ('k') | third_party/twisted_8_1/twisted/words/im/gtkcommon.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698