def __on_window_event(self, win, ev): if not ev.type == gtk.gdk.KEY_PRESS: return keyval = gtk.gdk.keyval_name(ev.keyval) if keyval == "KP_Enter": keyval = "Return" if keyval == "Escape": self.on_delete_event(None, None) if keyval == "Return": if ev.state & gtk.gdk.SHIFT_MASK: return self.__on_send() return 1 if self.__composing_id: char_count = self.__txtMessage.get_buffer().get_char_count() if (char_count == 0 and self.__sent_composing): ## They deleted stop the event m = Message(self.__jid, "", Message.Type.mtChat) x = m.addX("jabber:x:event") x.addElement("id", self.__composing_id) self.__app.session.send(m) self.__sent_composing = 0 elif (char_count > 0 and not self.__sent_composing): m = Message(self.__jid, "", Message.Type.mtChat) x = m.addX("jabber:x:event") x.addElement("composing") x.addElement("id", self.__composing_id) self.__app.session.send(m) self.__sent_composing = 1
def __on_event_node(self, node): m = Message(node) x = m.findX("jabber:x:event") delivered = x.findElement("delivered") composing = x.findElement("composing") id = x.findElement("id") if composing and id: self.__txtChatview.composing(m.sender) elif not composing and id: self.__txtChatview.cancel_composing(m.sender) elif composing and not id: if self.__composing_id: msg = Message(e.getAttrib("from"), "", Message.Type.mtChat) ix = msg.addX("jabber:x:event") ix.addElement("composing") ix.addElement("id", self.__composing_id) self.__app.session.send(msg) self.__composing_id = m.getID() elif delivered: self.__app.session.send(m.delivered())