summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorent Le Coz <louiz@louiz.org>2011-11-12 03:42:07 +0100
committerFlorent Le Coz <louiz@louiz.org>2011-11-12 03:42:07 +0100
commit744af2459d7d3a3c7a7e9d1f3861d4d494a837ba (patch)
tree8e53ce2207498070f83ea325065b687051e434ed
parent6b9d166e1cfe6c71a1f55d86e144a17fc3e73581 (diff)
downloadpoezio-744af2459d7d3a3c7a7e9d1f3861d4d494a837ba.tar.gz
poezio-744af2459d7d3a3c7a7e9d1f3861d4d494a837ba.tar.bz2
poezio-744af2459d7d3a3c7a7e9d1f3861d4d494a837ba.tar.xz
poezio-744af2459d7d3a3c7a7e9d1f3861d4d494a837ba.zip
Add three new events to modify a message JUST before we send it. It is NOT safe, and the doc says that pretty clearly. It is used to encrypt messages just before sending them (this way we can remove ALL potential in-clear bodies).
-rw-r--r--doc/en/plugins.txt39
-rw-r--r--src/events.py3
-rw-r--r--src/tabs.py3
3 files changed, 45 insertions, 0 deletions
diff --git a/doc/en/plugins.txt b/doc/en/plugins.txt
index b97e46d6..87f09cb7 100644
--- a/doc/en/plugins.txt
+++ b/doc/en/plugins.txt
@@ -154,6 +154,17 @@ The handlers for this event are called whenever you say something in a MUC
* _message_: Message to be sent.
* _tab_: Tab in which the message will be sent.
+*muc_say_after*:: +message+, +tab+ +
+The handlers for this event are called whenever you say something in a MUC
+ (through the /say command or by direct input). The difference with muc_say is
+ just that *muc_say_after* hook is called AFTER the xhtm-im body has been
+ generated. So you *MUST* not insert any color attribute in the body using this
+ hook. The hook is less safe that *muc_say* and most of the time you should not
+ use it at all. The parameters given to the handlers are:
+
+* _message_: Message to be sent.
+* _tab_: Tab in which the message will be sent.
+
*private_say*:: +message+, +tab+ +
The handlers for this event are called whenever you say something in a private
conversaton in a MUC (through the /say command or by direct input). The
@@ -162,6 +173,20 @@ The handlers for this event are called whenever you say something in a private
* _message_: Message to be sent.
* _tab_: Tab in which the message will be sent.
+*private_say_after*:: +message+, +tab+ +
+The handlers for this event are called whenever you say something in a MUC
+ (through the /say command or by direct input). The difference with private_say
+ is just that *private_say_after* hook is called AFTER the xhtm-im body has
+ been generated and the message has been displayed on the conversation, this
+ means that if you modify the body, the message that will be sent will not be
+ the same that the one displayed in the text buffer. So you *MUST* not insert
+ any color attribute in the body using this hook. The hook is less safe that
+ *private_say* and most of the time you should not use it at all. The
+ parameters given to the handlers are:
+
+* _message_: Message to be sent.
+* _tab_: Tab in which the message will be sent.
+
*conversation_say*:: +message+, +tab+ +
The handlers for this event are called whenever you say something in direct
conversation (through the /say command or by direct input). The parameters
@@ -170,6 +195,20 @@ The handlers for this event are called whenever you say something in direct
* _message_: Message to be sent.
* _tab_: Tab in which the message will be sent.
+*conversation_say_after*:: +message+, +tab+ +
+The handlers for this event are called whenever you say something in a MUC
+ (through the /say command or by direct input). The difference with
+ *conversation_say* is just that *conversation_say_after* hook is called AFTER
+ the xhtm-im body has been generated and the message has been displayed on the
+ conversation, this means that if you modify the body, the message that will be
+ sent will not be the same that the one displayed in the text buffer. So you
+ *MUST* not insert any color attribute in the body using this hook. The hook is
+ less safe that *conversation_say* and most of the time you should not use it at
+ all. The parameters given to the handlers are:
+
+* _message_: Message to be sent.
+* _tab_: Tab in which the message will be sent.
+
*muc_msg*:: +message+, +tab+ +
The handlers for this event are called whenever you receive a message in a MUC.
The parameters given to the handler are:
diff --git a/src/events.py b/src/events.py
index 3a8e4d08..e94acb80 100644
--- a/src/events.py
+++ b/src/events.py
@@ -22,8 +22,11 @@ class EventHandler(object):
self.events = {
'highlight': [],
'muc_say': [],
+ 'muc_say_after': [],
'conversation_say': [],
+ 'conversation_say_after': [],
'private_say': [],
+ 'private_say_after': [],
'conversation_msg': [],
'private_msg': [],
'muc_msg': [],
diff --git a/src/tabs.py b/src/tabs.py
index 02678e7e..d7f1323b 100644
--- a/src/tabs.py
+++ b/src/tabs.py
@@ -771,6 +771,7 @@ class MucTab(ChatTab):
if config.get('send_chat_states', 'true') == 'true' and self.remote_wants_chatstates is not False:
msg['chat_state'] = needed
self.cancel_paused_delay()
+ self.core.events.trigger('muc_say_after', msg, self)
msg.send()
self.chat_state = needed
@@ -1268,6 +1269,7 @@ class PrivateTab(ChatTab):
if config.get('send_chat_states', 'true') == 'true' and self.remote_wants_chatstates is not False:
needed = 'inactive' if self.core.status.show in ('xa', 'away') else 'active'
msg['chat_state'] = needed
+ self.core.events.trigger('private_say_after', msg, self)
msg.send()
self.cancel_paused_delay()
self.text_win.refresh()
@@ -1958,6 +1960,7 @@ class ConversationTab(ChatTab):
if config.get('send_chat_states', 'true') == 'true' and self.remote_wants_chatstates is not False:
needed = 'inactive' if self.core.status.show in ('xa', 'away') else 'active'
msg['chat_state'] = needed
+ self.core.events.trigger('conversation_say_after', msg, self)
msg.send()
logger.log_message(JID(self.get_name()).bare, self.core.own_nick, line)
self.cancel_paused_delay()