From e3974e8524283e8cc3d4c4df6a51648b8117f5b6 Mon Sep 17 00:00:00 2001 From: "louiz@4325f9fc-e183-4c21-96ce-0ab188b42d13" Date: Thu, 10 Jun 2010 09:05:47 +0000 Subject: The room info bar and highlights work again. --- CHANGELOG | 2 ++ src/room.py | 32 ++++++++++++++++---------------- src/window.py | 8 ++++++-- 3 files changed, 24 insertions(+), 18 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 94e0bd8f..19624ffb 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -16,6 +16,8 @@ http://codingteam.net/project/poezio/roadmap - Various new commands (topic, kick, set, win) - Password-protected MUCs are handled - The dates of room history are handled +- The way the text is displayed on the screen has been rewritten, this fixes + the blink and the slowness-over-ssh problems. - Various Bugfixes * Poezio 0.5.1 - 2 Feb 2010 diff --git a/src/room.py b/src/room.py index c9bd1c24..8dfd63d9 100644 --- a/src/room.py +++ b/src/room.py @@ -61,26 +61,26 @@ class Room(object): time = time if time is not None else datetime.now() from common import debug # debug("add_message: %s, %s, %s, %s" % (str(txt), str(time), str(nickname), str(user))) - self.messages.append(Message(txt, time, nickname, user)) + + color = None + if nickname is not None: + self.set_color_state(12) + if nickname != self.own_nick and self.joined and nickname is not None: # do the highlight thing + if self.own_nick in txt: + self.set_color_state(13) + color = 3 + else: + highlight_words = config.get('highlight_on', '').split(':') + for word in highlight_words: + if word.lower() in txt.lower() and word != '': + self.set_color_state(13) + color = 3 + break + self.messages.append(Message(txt, time, nickname, user, color)) # def add_message(nick, msg, date=None) # TODO: limit the message kept in memory (configurable) - # if not date: - # date = datetime.now() - # color = None - # self.set_color_state(12) - # if nick != self.own_nick and self.joined: # do the highlight thing - # if self.own_nick in msg: - # self.set_color_state(13) - # color = 3 - # else: - # highlight_words = config.get('highlight_on', '').split(':') - # for word in highlight_words: - # if word.lower() in msg.lower() and word != '': - # self.set_color_state(13) - # color = 3 - # break # if not msg: # logger.info('msg is None..., %s' % (nick)) # return diff --git a/src/window.py b/src/window.py index ab5c8492..bc41f74d 100644 --- a/src/window.py +++ b/src/window.py @@ -196,7 +196,7 @@ class TextWin(Win): else: x = 11 self.win.attron(curses.color_pair(8)) - y += self.write_text(y, x, message.txt) + y += self.write_text(y, x, message.txt, message.color) if message.nickname is None: self.win.attroff(curses.color_pair(8)) # self.win.addnstr(y, x, message.txt, 40) @@ -204,12 +204,14 @@ class TextWin(Win): y += 1 self.win.refresh() - def write_text(self, y, x, txt): + def write_text(self, y, x, txt, color): """ return the number of line written, -1 """ txt = txt.encode('utf-8') l = 0 + if color: + self.win.attron(curses.color_pair(color)) while txt != '': debug(txt) if txt[:self.width-x].find('\n') != -1: @@ -220,6 +222,8 @@ class TextWin(Win): self.win.addnstr(y+l, x, txt, limit) txt = txt[limit+1:] l += 1 + if color: + self.win.attroff(curses.color_pair(color)) return l-1 def write_nickname(self, y, nickname, user): -- cgit v1.2.3