Print a line separator to indicate the new messages. fixed #1487

This commit is contained in:
louiz@4325f9fc-e183-4c21-96ce-0ab188b42d13 2010-08-09 00:23:59 +00:00
parent 835527e2d1
commit 6b4b32ffc5
3 changed files with 33 additions and 4 deletions

View file

@ -181,8 +181,6 @@ class Gui(object):
returns the room that has this name
"""
for room in self.rooms:
from common import debug
debug('-- %s ? %s\n' % (room.name, name,))
if room.name.decode('utf-8') == name:
return room
return None
@ -318,6 +316,7 @@ class Gui(object):
rotate the rooms list to the right
"""
self.current_room().set_color_state(common.ROOM_STATE_NONE)
self.current_room().remove_line_separator()
self.rooms.append(self.rooms.pop(0))
self.current_room().set_color_state(common.ROOM_STATE_CURRENT)
self.refresh_window()
@ -327,6 +326,7 @@ class Gui(object):
rotate the rooms list to the right
"""
self.current_room().set_color_state(common.ROOM_STATE_NONE)
self.current_room().remove_line_separator()
self.rooms.insert(0, self.rooms.pop())
self.current_room().set_color_state(common.ROOM_STATE_CURRENT)
self.refresh_window()
@ -438,8 +438,6 @@ class Gui(object):
if (self.ignores.has_key(room_from)) and (nick_from in self.ignores[room_from]):
return
room = self.get_room_by_name(room_from)
from common import debug
debug('%s\n' % room_from)
if not room:
self.information(_("message received for a non-existing room: %s") % (room_from))
return
@ -594,6 +592,8 @@ class Gui(object):
Add the message to the room and refresh the associated component
of the interface
"""
if room != self.current_room():
room.add_line_separator()
room.add_message(txt, time, nickname)
if room == self.current_room():
self.window.text_win.refresh(room)
@ -678,6 +678,7 @@ class Gui(object):
if self.current_room().nb == nb:
return
self.current_room().set_color_state(common.ROOM_STATE_NONE)
self.current_room().remove_line_separator()
start = self.current_room()
self.rooms.append(self.rooms.pop(0))
while self.current_room().nb != nb:

View file

@ -117,6 +117,20 @@ class Room(object):
time = time if time is not None else datetime.now()
self.messages.append(Message(txt, time, nickname, user, color))
def remove_line_separator(self):
"""
Remove the line separator
"""
if None in self.messages:
self.messages.remove(None)
def add_line_separator(self):
"""
add a line separator at the end of messages list
"""
if None not in self.messages:
self.messages.append(None)
def get_user_by_name(self, nick):
for user in self.users:
if user.nick == nick.encode('utf-8'):

View file

@ -218,6 +218,9 @@ class TextWin(Win):
"""
lines = []
for message in messages:
if message == None: # line separator
lines.append(None)
continue
txt = message.txt
if not txt:
continue
@ -285,6 +288,10 @@ class TextWin(Win):
y = 0
for line in lines:
self.win.move(y, 0)
if line == None:
self.write_line_separator()
y += 1
continue
if line.time is not None:
self.write_time(line.time)
if line.nickname is not None:
@ -293,6 +300,13 @@ class TextWin(Win):
y += 1
self.win.refresh()
def write_line_separator(self):
"""
"""
self.win.attron(curses.color_pair(7))
self.win.addstr(' -'*(self.width/2))
self.win.attroff(curses.color_pair(7))
def write_text(self, y, x, txt, color):
"""
write the text of a line.