message sending bug fixes + sortilege update
- sortilege now use default profile. /!\ sortilege is really buggy currently, need some attention
This commit is contained in:
parent
ca242c7aee
commit
9fd444d937
8 changed files with 31 additions and 27 deletions
|
|
@ -30,18 +30,18 @@ class QuickChat():
|
|||
self.to_jid = to_jid
|
||||
self.host = host
|
||||
|
||||
def historyPrint(self, size=20, keep_last=False):
|
||||
def historyPrint(self, size=20, keep_last=False, profile='@NONE@'):
|
||||
"""Print the initial history"""
|
||||
debug ("now we print history")
|
||||
history=self.host.bridge.getHistory(self.host.whoami.short, self.to_jid, 20)
|
||||
history=self.host.bridge.getHistory(self.host.profiles[profile]['whoami'].short, self.to_jid, 20)
|
||||
stamps=history.keys()
|
||||
stamps.sort()
|
||||
for stamp in stamps:
|
||||
self.printMessage(JID(history[stamp][0]), history[stamp][1], stamp)
|
||||
self.printMessage(JID(history[stamp][0]), history[stamp][1], profile, stamp)
|
||||
if keep_last: ##FIXME hack for sortilege
|
||||
self.last_history = stamps[-1] if stamps else None
|
||||
|
||||
def printMessage(self, from_jid, msg, timestamp):
|
||||
def printMessage(self, from_jid, msg, profile, timestamp):
|
||||
"""Print message in chat window. Must be implemented by child class"""
|
||||
raise NotImplementedError
|
||||
|
||||
|
|
|
|||
|
|
@ -67,8 +67,8 @@ class DBusBridgeFrontend(BridgeFrontend):
|
|||
def getWaitingSub(self, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.getWaitingSub(profile_key)
|
||||
|
||||
def sendMessage(self, to, message, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.sendMessage(to, message, profile_key)
|
||||
def sendMessage(self, to, message, type='chat', profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.sendMessage(to, message, type, profile_key)
|
||||
|
||||
def setPresence(self, to="", show="", priority=0, statuses={}, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.setPresence(to, show, priority, statuses, profile_key)
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ class Chat(Window, QuickChat):
|
|||
Window.__init__(self, self.__parent, self.__parent.getmaxyx()[0]-2, self.__parent.getmaxyx()[1]-30, 0,30, code=host.code)
|
||||
|
||||
#history
|
||||
self.historyPrint(50, True)
|
||||
self.historyPrint(50, True, profile=self.host.profile)
|
||||
|
||||
self.hide()
|
||||
|
||||
|
|
@ -68,7 +68,7 @@ class Chat(Window, QuickChat):
|
|||
if self.host.chatParams["timestamp"]:
|
||||
header = header + '[%s] ' % strftime("%H:%M", localtime(float(line[0])))
|
||||
if self.host.chatParams['short_nick']:
|
||||
header = header + ('> ' if line[1]==self.host.whoami.short else '** ')
|
||||
header = header + ('> ' if line[1]==self.host.profiles[self.host.profile]['whoami'] else '** ')
|
||||
else:
|
||||
header = header + '<%s> ' % line[1]
|
||||
return header
|
||||
|
|
@ -85,7 +85,7 @@ class Chat(Window, QuickChat):
|
|||
header=self.__getHeader(self.content[idx])
|
||||
msg=self.content[idx][2]
|
||||
part=0 #part of the text
|
||||
if JID(self.content[idx][1]).short==self.host.whoami.short:
|
||||
if JID(self.content[idx][1]).short==self.host.profiles[self.host.profile]['whoami'].short:
|
||||
att_header=curses.color_pair(1)
|
||||
else:
|
||||
att_header=curses.color_pair(2)
|
||||
|
|
@ -137,7 +137,7 @@ class Chat(Window, QuickChat):
|
|||
self.__scollIdx = self.__scollIdx - 1
|
||||
self.update()
|
||||
|
||||
def printMessage(self, jid, msg, timestamp=""):
|
||||
def printMessage(self, jid, msg, profile, timestamp=""):
|
||||
if timestamp=="":
|
||||
current_time=time()
|
||||
timestamp=str(current_time)
|
||||
|
|
|
|||
|
|
@ -222,6 +222,7 @@ class SortilegeApp(QuickApp):
|
|||
self.chat_wins=ChatList(self)
|
||||
|
||||
QuickApp.__init__(self) #XXX: yes it's an unusual place for the constructor of a parent class, but the init order is important
|
||||
self.plug_profile()
|
||||
|
||||
signal (SIGWINCH, self.onResize) #we manage SIGWINCH ourselves, because the loop is not called otherwise
|
||||
|
||||
|
|
@ -271,8 +272,8 @@ class SortilegeApp(QuickApp):
|
|||
|
||||
|
||||
def onTextEntered(self, text):
|
||||
jid=JID(self.whoami)
|
||||
self.bridge.sendMessage(self.currentChat, text)
|
||||
jid=JID(self.profiles[self.profile]['whoami'])
|
||||
self.bridge.sendMessage(self.currentChat, text, profile_key=self.profile)
|
||||
|
||||
def showDialog(self, message, title, type="info"):
|
||||
if type==question:
|
||||
|
|
@ -280,8 +281,8 @@ class SortilegeApp(QuickApp):
|
|||
pass
|
||||
|
||||
|
||||
def presenceUpdate(self, jabber_id, show, priority, statuses):
|
||||
QuickApp.presenceUpdate(self, jabber_id, show, priority, statuses)
|
||||
def presenceUpdate(self, jabber_id, show, priority, statuses, profile):
|
||||
QuickApp.presenceUpdate(self, jabber_id, show, priority, statuses, profile)
|
||||
self.editBar.replace_cur()
|
||||
curses.doupdate()
|
||||
|
||||
|
|
@ -293,8 +294,8 @@ class SortilegeApp(QuickApp):
|
|||
#FIXME
|
||||
info ("FIXME: actionResult not implemented")
|
||||
|
||||
def newMessage(self, from_jid, msg, type, to_jid):
|
||||
QuickApp.newMessage(self, from_jid, msg, type, to_jid)
|
||||
def newMessage(self, from_jid, msg, type, to_jid, profile):
|
||||
QuickApp.newMessage(self, from_jid, msg, type, to_jid, profile)
|
||||
sender=JID(from_jid)
|
||||
addr=JID(to_jid)
|
||||
win = addr if sender.short == self.whoami.short else sender #FIXME: duplicate code with QuickApp
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ class Chat(wx.Frame, QuickChat):
|
|||
self.font["points"] = self.chatWindow.GetFont().GetPointSize()
|
||||
self.font["family"] = self.chatWindow.GetFont().GetFamily()
|
||||
|
||||
self.historyPrint()
|
||||
self.historyPrint(profile=self.host.profile)
|
||||
|
||||
#misc
|
||||
self.textBox.SetFocus()
|
||||
|
|
@ -87,7 +87,7 @@ class Chat(wx.Frame, QuickChat):
|
|||
|
||||
def onEnterPressed(self, event):
|
||||
"""Behaviour when enter pressed in send line."""
|
||||
self.host.bridge.sendMessage(self.to_jid, event.GetString())
|
||||
self.host.bridge.sendMessage(self.to_jid, event.GetString(), profile_key=self.host.profile)
|
||||
self.textBox.Clear()
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -290,8 +290,8 @@ class MainWindow(wx.Frame, QuickApp):
|
|||
wx.EVT_MENU(self, idFIND_GATEWAYS, self.onFindGateways)
|
||||
|
||||
|
||||
def newMessage(self, from_jid, msg, type, to_jid):
|
||||
QuickApp.newMessage(self, from_jid, msg, type, to_jid)
|
||||
def newMessage(self, from_jid, msg, type, to_jid, profile):
|
||||
QuickApp.newMessage(self, from_jid, msg, type, to_jid, profile)
|
||||
|
||||
def showAlert(self, message):
|
||||
# TODO: place this in a separate class
|
||||
|
|
|
|||
6
sat.tac
6
sat.tac
|
|
@ -125,7 +125,8 @@ class SatMessageProtocol(xmppim.MessageProtocol):
|
|||
debug (u"got_message from: %s", message["from"])
|
||||
for e in message.elements():
|
||||
if e.name == "body":
|
||||
self.host.bridge.newMessage(message["from"], e.children[0], self.parent.profile)
|
||||
type = message['type'] if message.hasAttribute('type') else 'chat' #FIXME: check specs
|
||||
self.host.bridge.newMessage(message["from"], e.children[0], type, profile=self.parent.profile)
|
||||
self.host.memory.addToHistory(self.parent.jid, jid.JID(message["from"]), self.parent.jid, "chat", e.children[0])
|
||||
break
|
||||
|
||||
|
|
@ -573,6 +574,7 @@ class SAT(service.Service):
|
|||
## jabber methods ##
|
||||
|
||||
def sendMessage(self,to,msg,type='chat', profile_key='@DEFAULT@'):
|
||||
print "sendtype=", type #gof
|
||||
#FIXME: check validity of recipient
|
||||
profile = self.memory.getProfileName(profile_key)
|
||||
assert(profile)
|
||||
|
|
@ -585,7 +587,7 @@ class SAT(service.Service):
|
|||
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'], profile=profile) #We send back the message, so all clients are aware of it
|
||||
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@'):
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ class DbusObject(dbus.service.Object):
|
|||
|
||||
@dbus.service.signal(const_INT_PREFIX+const_COMM_SUFFIX,
|
||||
signature='sssss')
|
||||
def newMessage(self, from_jid, msg, type='chat', to='', profile='@NONE@'):
|
||||
def newMessage(self, from_jid, msg, type, to, profile):
|
||||
debug("new message signal (from:%s msg:%s type:%s to:%s) sended", from_jid, msg, type, to)
|
||||
|
||||
@dbus.service.signal(const_INT_PREFIX+const_COMM_SUFFIX,
|
||||
|
|
@ -165,10 +165,11 @@ class DbusObject(dbus.service.Object):
|
|||
return self.cb["getWaitingSub"](profile_key)
|
||||
|
||||
@dbus.service.method(const_INT_PREFIX+const_COMM_SUFFIX,
|
||||
in_signature='sss', out_signature='')
|
||||
def sendMessage(self, to, message, profile_key='@DEFAULT@'):
|
||||
in_signature='ssss', out_signature='')
|
||||
def sendMessage(self, to, message, type='chat', profile_key='@DEFAULT@'):
|
||||
debug("sendMessage...")
|
||||
self.cb["sendMessage"](to, message, profile_key)
|
||||
print "sendtype=", type #gof
|
||||
self.cb["sendMessage"](to, message, type, profile_key)
|
||||
|
||||
@dbus.service.method(const_INT_PREFIX+const_COMM_SUFFIX,
|
||||
in_signature='ssia{ss}s', out_signature='')
|
||||
|
|
@ -293,7 +294,7 @@ class DBusBridge(Bridge):
|
|||
def newContact(self, contact, attributes, groups, profile):
|
||||
self.dbus_bridge.newContact(contact, attributes, groups, profile)
|
||||
|
||||
def newMessage(self,from_jid, msg, type, to, profile):
|
||||
def newMessage(self, from_jid, msg, type='chat', to='', profile='@NONE@'):
|
||||
debug("sending message...")
|
||||
self.dbus_bridge.newMessage(from_jid, msg, type, to, profile)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue