summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/tabs.py40
1 files changed, 24 insertions, 16 deletions
diff --git a/src/tabs.py b/src/tabs.py
index cae188ae..02d3c90d 100644
--- a/src/tabs.py
+++ b/src/tabs.py
@@ -715,14 +715,16 @@ class MucTab(ChatTab):
needed = 'inactive' if self.core.status.show in ('xa', 'away') else 'active'
msg = self.core.xmpp.make_message(self.get_name())
msg['type'] = 'groupchat'
- if line.find('\x19') == -1:
- msg['body'] = line
- else:
- msg['body'] = xhtml.clean_text(line)
- msg['xhtml_im'] = xhtml.poezio_colors_to_html(line)
+ msg['body'] = line
+ # trigger the event BEFORE looking for colors.
+ # This lets a plugin insert \x19xxx} colors, that will
+ # be converted in xhtml.
+ self.core.events.trigger('muc_say', msg)
+ if msg['body'].find('\x19') != -1:
+ msg['xhtml_im'] = xhtml.poezio_colors_to_html(msg['body'])
+ msg['body'] = xhtml.clean_text(msg['body'])
if config.get('send_chat_states', 'true') == 'true' and self.remote_wants_chatstates is not False:
msg['chat_state'] = needed
- self.core.events.trigger('muc_say', msg)
self.cancel_paused_delay()
msg.send()
self.chat_state = needed
@@ -1208,11 +1210,14 @@ class PrivateTab(ChatTab):
return
msg = self.core.xmpp.make_message(self.get_name())
msg['type'] = 'chat'
- if line.find('\x19') == -1:
- msg['body'] = line
- else:
- msg['body'] = xhtml.clean_text(line)
- msg['xhtml_im'] = xhtml.poezio_colors_to_html(line)
+ msg['body'] = line
+ # trigger the event BEFORE looking for colors.
+ # This lets a plugin insert \x19xxx} colors, that will
+ # be converted in xhtml.
+ self.core.events.trigger('private_say', msg)
+ if msg['body'].find('\x19') != -1:
+ msg['body'] = xhtml.clean_text(msg['body'])
+ msg['xhtml_im'] = xhtml.poezio_colors_to_html(msg['body'])
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
@@ -1872,11 +1877,14 @@ class ConversationTab(ChatTab):
def command_say(self, line):
msg = self.core.xmpp.make_message(self.get_name())
msg['type'] = 'chat'
- if line.find('\x19') == -1:
- msg['body'] = line
- else:
- msg['body'] = xhtml.clean_text(line)
- msg['xhtml_im'] = xhtml.poezio_colors_to_html(line)
+ msg['body'] = line
+ # trigger the event BEFORE looking for colors.
+ # This lets a plugin insert \x19xxx} colors, that will
+ # be converted in xhtml.
+ self.core.events.trigger('conversation_say', msg)
+ if msg['body'].find('\x19') != -1:
+ msg['body'] = xhtml.clean_text(msg['body'])
+ msg['xhtml_im'] = xhtml.poezio_colors_to_html(msg['body'])
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