diff options
-rw-r--r-- | src/core.py | 1 | ||||
-rw-r--r-- | src/tabs.py | 1 | ||||
-rw-r--r-- | src/windows.py | 13 | ||||
-rw-r--r-- | src/xhtml.py | 6 |
4 files changed, 17 insertions, 4 deletions
diff --git a/src/core.py b/src/core.py index 83ab0683..2ddf143d 100644 --- a/src/core.py +++ b/src/core.py @@ -665,6 +665,7 @@ class Core(object): curses.curs_set(1) curses.noecho() curses.nonl() + curses.raw() theme.init_colors() stdscr.keypad(True) curses.ungetch(" ") # H4X: without this, the screen is diff --git a/src/tabs.py b/src/tabs.py index e3bea971..b7624c2b 100644 --- a/src/tabs.py +++ b/src/tabs.py @@ -557,7 +557,6 @@ class MucTab(ChatTab): msg = self.core.xmpp.make_message(self.get_name()) msg['type'] = 'groupchat' msg['body'] = line - msg['xhtml_im'] = "<body><p>coucou</p></body>" if config.get('send_chat_states', 'true') == 'true' and self.remote_wants_chatstates is not False: msg['chat_state'] = 'active' msg.send() diff --git a/src/windows.py b/src/windows.py index cecd9b0d..7051bf2d 100644 --- a/src/windows.py +++ b/src/windows.py @@ -50,6 +50,8 @@ import wcwidth import singleton import collections +from keyboard import read_char + Line = collections.namedtuple('Line', 'text text_offset nickname_color time nickname') g_lock = Lock() @@ -1065,8 +1067,10 @@ class MessageInput(Input): """ The input featuring history and that is being used in Conversation, Muc and Private tabs + Also letting the user enter colors or other text markups """ history = list() # The history is common to all MessageInput + text_attributes = set(('b', 'o', 'u')) def __init__(self): Input.__init__(self) @@ -1076,6 +1080,7 @@ class MessageInput(Input): self.key_func["M-A"] = self.key_up self.key_func["KEY_DOWN"] = self.key_down self.key_func["M-B"] = self.key_down + self.key_func['^C'] = self.enter_attrib def key_up(self): """ @@ -1092,6 +1097,14 @@ class MessageInput(Input): self.text = MessageInput.history[self.histo_pos] self.key_end() + def enter_attrib(self): + """ + Read one more char (c) and add \x19c to the string + """ + attr_char = read_char(self.core.stdscr) + if attr_char in self.text_attributes or attr_char.isdigit(): + self.do_command('\x19%s' % attr_char) + def key_down(self): """ Get the next line in the history diff --git a/src/xhtml.py b/src/xhtml.py index bfdc1ef6..be09442b 100644 --- a/src/xhtml.py +++ b/src/xhtml.py @@ -64,7 +64,7 @@ def poezio_colors_to_html(string): # a list of all opened elements, e.g. ['strong', 'span'] # So that we know what we need to close opened_elements = [] - res = "<body xmlns='http://www.w3.org/1999/html'>" + res = "<body xmlns='http://www.w3.org/1999/html'><p>" next_attr_char = string.find('\x19') while next_attr_char != -1: attr_char = string[next_attr_char+1].lower() @@ -90,8 +90,8 @@ def poezio_colors_to_html(string): res += string for elem in opened_elements[::-1]: res += '</%s>' % (elem,) - res += "</body>" - return res + res += "</p></body>" + return res.replace('\n', '<br />') def shell_colors_to_poezio_colors(string): """ |