The room info bar and highlights work again.

This commit is contained in:
louiz@4325f9fc-e183-4c21-96ce-0ab188b42d13 2010-06-10 09:05:47 +00:00
parent fa4fbeb23c
commit e3974e8524
3 changed files with 24 additions and 18 deletions

View file

@ -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

View file

@ -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

View file

@ -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):