parent
7d861ee885
commit
0315b05f51
3 changed files with 14 additions and 32 deletions
|
@ -546,7 +546,7 @@ class Core(object):
|
|||
if not body:
|
||||
return
|
||||
tab.add_message(body, time=None, nickname=nick_from,
|
||||
forced_user=self.get_tab_by_name(room_from, tabs.MucTab).get_user_by_name(nick_from))
|
||||
forced_user=self.get_tab_by_name(room_from, tabs.MucTab).get_user_by_name(nick_from))
|
||||
conversation = self.get_tab_by_name(jid.full, tabs.PrivateTab)
|
||||
if conversation and conversation.remote_wants_chatstates is None:
|
||||
if message['chat_state']:
|
||||
|
|
|
@ -1213,7 +1213,7 @@ class PrivateTab(ChatTab):
|
|||
needed = 'inactive' if self.core.status.show in ('xa', 'away') else 'active'
|
||||
msg['chat_state'] = needed
|
||||
msg.send()
|
||||
self.core.add_message_to_text_buffer(self._text_buffer, line, None, self.core.own_nick or self.own_nick)
|
||||
self.core.add_message_to_text_buffer(self._text_buffer, xhtml.convert_simple_to_full_colors(line), None, self.core.own_nick or self.own_nick)
|
||||
self.cancel_paused_delay()
|
||||
self.text_win.refresh()
|
||||
self.input.refresh()
|
||||
|
@ -1575,7 +1575,6 @@ class RosterInfoTab(Tab):
|
|||
self.command_add(jid.lstrip('\n'))
|
||||
self.core.information('Contacts imported from %s' % filepath, 'Info')
|
||||
|
||||
|
||||
def command_export(self, arg):
|
||||
"""
|
||||
Export the contacts
|
||||
|
@ -1877,7 +1876,7 @@ class ConversationTab(ChatTab):
|
|||
needed = 'inactive' if self.core.status.show in ('xa', 'away') else 'active'
|
||||
msg['chat_state'] = needed
|
||||
msg.send()
|
||||
self.core.add_message_to_text_buffer(self._text_buffer, line, None, self.core.own_nick)
|
||||
self.core.add_message_to_text_buffer(self._text_buffer, xhtml.convert_simple_to_full_colors(line), None, self.core.own_nick)
|
||||
logger.log_message(JID(self.get_name()).bare, self.core.own_nick, line)
|
||||
self.cancel_paused_delay()
|
||||
self.text_win.refresh()
|
||||
|
|
39
src/xhtml.py
39
src/xhtml.py
|
@ -178,6 +178,8 @@ whitespace_re = re.compile(r'\s+')
|
|||
|
||||
xhtml_attr_re = re.compile(r'\x19\d{0,3}\}|\x19[buaio]')
|
||||
|
||||
xhtml_simple_attr_re = re.compile(r'\x19\d')
|
||||
|
||||
def get_body_from_message_stanza(message):
|
||||
"""
|
||||
Returns a string with xhtml markups converted to
|
||||
|
@ -342,6 +344,15 @@ def clean_text_simple(string):
|
|||
pos = string.find('\x19')
|
||||
return string
|
||||
|
||||
def convert_simple_to_full_colors(text):
|
||||
"""
|
||||
takes a \x19n formatted string and returns
|
||||
a \x19n} formatted one.
|
||||
"""
|
||||
def add_curly_bracket(match):
|
||||
return match.group(0) + '}'
|
||||
return re.sub(xhtml_simple_attr_re, add_curly_bracket, text)
|
||||
|
||||
number_to_color_names = {
|
||||
1: 'red',
|
||||
2: 'green',
|
||||
|
@ -394,31 +405,3 @@ def poezio_colors_to_html(string):
|
|||
res += '</%s>' % (elem,)
|
||||
res += "</p></body>"
|
||||
return res.replace('\n', '<br />')
|
||||
|
||||
def poezio_colors_to_xhtml(string):
|
||||
"""
|
||||
Generate a valid xhtml string from
|
||||
the poezio colors in the given string
|
||||
"""
|
||||
res = "<body xmlns='http://www.w3.org/1999/xhtml'>"
|
||||
next_attr_char = string.find('\x19')
|
||||
open_elements = []
|
||||
while next_attr_char != -1:
|
||||
attr_char = string[next_attr_char+1].lower()
|
||||
if next_attr_char != 0:
|
||||
res += string[:next_attr_char]
|
||||
string = string[next_attr_char+2:]
|
||||
if attr_char == 'o':
|
||||
# close all opened elements
|
||||
for elem in open_elements:
|
||||
res += '</%s>'
|
||||
open_elements = []
|
||||
elif attr_char == 'b':
|
||||
if 'strong' not in open_elements:
|
||||
res += '<strong>'
|
||||
open_elements.append('strong')
|
||||
elif attr_char in digits:
|
||||
self._win.attron(common.curses_color_pair(int(attr_char)))
|
||||
next_attr_char = string.find('\x19')
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue