# HG changeset patch # User Goffi # Date 1270025803 -39600 # Node ID db0a0f000e377ffd218c118efdb1ca51e4855175 # Parent ace2af8abc5a44ebf1d136a0c75ee6da58127100 Chat presentation enhancement - core: message signal is not sent anymore for groupchat type, cause MUC chat server do it for us - wix: user nick can now be specified to chat windows, usefull for colorization - memory: full jid are now sent - wix: message from user are now in black for group chat diff -r ace2af8abc5a -r db0a0f000e37 frontends/quick_frontend/quick_app.py --- a/frontends/quick_frontend/quick_app.py Wed Mar 31 17:16:27 2010 +1100 +++ b/frontends/quick_frontend/quick_app.py Wed Mar 31 19:56:43 2010 +1100 @@ -213,6 +213,7 @@ return debug (_("Room [%(room_name)s] joined by %(profile)s, users presents:%(users)s") % {'room_name':room_id+'@'+room_service, 'profile': profile, 'users':room_nicks}) room_jid=room_id+'@'+room_service + self.chat_wins[room_jid].setUserNick(user_nick) self.chat_wins[room_jid].setType("group") self.chat_wins[room_jid].setPresents([user_nick]+room_nicks) diff -r ace2af8abc5a -r db0a0f000e37 frontends/quick_frontend/quick_chat.py --- a/frontends/quick_frontend/quick_chat.py Wed Mar 31 17:16:27 2010 +1100 +++ b/frontends/quick_frontend/quick_chat.py Wed Mar 31 19:56:43 2010 +1100 @@ -30,6 +30,7 @@ self.target = target self.host = host self.type = type + self.nick = None def setType(self, type): """Set the type of the chat @@ -37,6 +38,10 @@ """ self.type = type + def setUserNick(self, nick): + """Set the nick of the user, usefull for e.g. change the color of the user""" + self.nick = nick + def historyPrint(self, size=20, keep_last=False, profile='@NONE@'): """Print the initial history""" debug (_("now we print history")) diff -r ace2af8abc5a -r db0a0f000e37 frontends/wix/chat.py --- a/frontends/wix/chat.py Wed Mar 31 17:16:27 2010 +1100 +++ b/frontends/wix/chat.py Wed Mar 31 19:56:43 2010 +1100 @@ -52,7 +52,6 @@ self.conv_panel.SetSizer(self.conv_panel.sizer) self.splitter.Initialize(self.conv_panel) self.SetMenuBar(wx.MenuBar()) - self.setType(self.type) #events self.Bind(wx.EVT_CLOSE, self.onClose, self) @@ -63,8 +62,8 @@ self.font["points"] = self.chatWindow.GetFont().GetPointSize() self.font["family"] = self.chatWindow.GetFont().GetFamily() - self.historyPrint(profile=self.host.profile) - + self.setType(self.type) + #misc self.textBox.SetFocus() self.Hide() #We hide because of the show toggle @@ -86,17 +85,19 @@ self.__createPresents() self.subjectBox.Show() self.__eraseMenus() - + self.historyPrint(profile=self.host.profile) elif type is 'one2one' and self.splitter.IsSplit(): self.splitter.Unsplit(self.present_panel) del self.present_panel self.GetMenuBar().Show() self.subjectBox.Hide() self.__createMenus_O2O() + self.nick = None else: self.subjectBox.Hide() self.__createMenus_O2O() - + self.historyPrint(profile=self.host.profile) + def setPresents(self, nicks): """Set the users presents in the contact list for a group chat @param nicks: list of nicknames @@ -176,8 +177,9 @@ def printMessage(self, from_jid, msg, profile, timestamp=""): """Print the message with differents colors depending on where it comes from.""" jid=JID(from_jid) + print "printMessage, jid=",jid,"type=",self.type nick = jid.resource if self.type == "group" else (self.host.CM.getAttr(jid,'nick') or self.host.CM.getAttr(jid,'name') or jid) - mymess = (jid.short == self.host.profiles[profile]['whoami'].short) #mymess = True if message comes from local user + mymess = (jid.resource == self.nick) if self.type == "group" else (jid.short == self.host.profiles[profile]['whoami'].short) #mymess = True if message comes from local user _font = wx.Font(self.font["points"], self.font["family"], wx.NORMAL, wx.BOLD) self.chatWindow.SetDefaultStyle(wx.TextAttr( "BLACK" if mymess else "BLUE", font=_font)) self.chatWindow.AppendText("[%s] " % nick) diff -r ace2af8abc5a -r db0a0f000e37 sat.tac --- a/sat.tac Wed Mar 31 17:16:27 2010 +1100 +++ b/sat.tac Wed Mar 31 19:56:43 2010 +1100 @@ -593,7 +593,8 @@ message.addElement("body", "jabber:client", msg) self.profiles[profile].xmlstream.send(message) self.memory.addToHistory(current_jid, current_jid, jid.JID(to), message["type"], unicode(msg)) - self.bridge.newMessage(message['from'], unicode(msg), to=message['to'], type=type, profile=profile) #We send back the message, so all clients are aware of it + if type!="groupchat": + self.bridge.newMessage(message['from'], unicode(msg), to=message['to'], type=type, profile=profile) #We send back the message, so all clients are aware of it def setPresence(self, to="", show="", priority = 0, statuses={}, profile_key='@DEFAULT@'): diff -r ace2af8abc5a -r db0a0f000e37 tools/memory.py --- a/tools/memory.py Wed Mar 31 17:16:27 2010 +1100 +++ b/tools/memory.py Wed Mar 31 19:56:43 2010 +1100 @@ -489,7 +489,7 @@ if not self.history[me_short].has_key(key): self.history[me_short][key]={} - self.history[me_short][key][int(time.time())] = (from_short, message) + self.history[me_short][key][int(time.time())] = (from_jid.full(), message) def getHistory(self, from_jid, to_jid, size): ret={}