diff options
author | louiz@4325f9fc-e183-4c21-96ce-0ab188b42d13 <louiz@4325f9fc-e183-4c21-96ce-0ab188b42d13> | 2010-09-14 02:11:07 +0000 |
---|---|---|
committer | louiz@4325f9fc-e183-4c21-96ce-0ab188b42d13 <louiz@4325f9fc-e183-4c21-96ce-0ab188b42d13> | 2010-09-14 02:11:07 +0000 |
commit | 33f197b4ab8f65e33c30b789fb34157b70f1105d (patch) | |
tree | 161def6a9dc7f943c2677bbe68b86c631b2f10bc /src/room.py | |
parent | 29e5250904bacbabb49388fee0811aa4cdcb6708 (diff) | |
download | poezio-33f197b4ab8f65e33c30b789fb34157b70f1105d.tar.gz poezio-33f197b4ab8f65e33c30b789fb34157b70f1105d.tar.bz2 poezio-33f197b4ab8f65e33c30b789fb34157b70f1105d.tar.xz poezio-33f197b4ab8f65e33c30b789fb34157b70f1105d.zip |
complete refactoring of the ui. Everything is now very modulable. Little info win added at the bottom. Roster is ready to be implemented.
Diffstat (limited to 'src/room.py')
-rw-r--r-- | src/room.py | 74 |
1 files changed, 24 insertions, 50 deletions
diff --git a/src/room.py b/src/room.py index 8e5ce87b..cb6fbe43 100644 --- a/src/room.py +++ b/src/room.py @@ -14,6 +14,7 @@ # You should have received a copy of the GNU General Public License # along with Poezio. If not, see <http://www.gnu.org/licenses/>. +from text_buffer import TextBuffer from datetime import datetime from random import randrange from config import config @@ -23,36 +24,23 @@ from message import Message import common import theme -class Room(object): +class Room(TextBuffer): """ """ - number = 0 - def __init__(self, name, nick, window, jid=None): - self.jid = jid # used for a private chat. None if it's a MUC + def __init__(self, name, nick): + TextBuffer.__init__(self) self.name = name self.own_nick = nick self.color_state = theme.COLOR_TAB_NORMAL # color used in RoomInfo - self.nb = Room.number # number used in RoomInfo - Room.number += 1 self.joined = False # false until self presence is received self.users = [] # User objects - self.messages = [] # Message objects self.topic = '' - self.window = window - self.pos = 0 # offset - - def scroll_up(self, dist=14): - # The pos can grow a lot over the top of the number of - # available lines, it will be fixed on the next refresh of the - # screen anyway - self.pos += dist - - def scroll_down(self, dist=14): - self.pos -= dist - if self.pos <= 0: - self.pos = 0 def disconnect(self): + """ + Set the state of the room as not joined, so + we can know if we can join it, send messages to it, etc + """ self.joined = False def log_message(self, txt, time, nickname): @@ -89,6 +77,19 @@ class Room(object): break return color + def get_user_by_name(self, nick): + for user in self.users: + if user.nick == nick: + return user + return None + + def set_color_state(self, color): + """ + Set the color that will be used to display the room's + number in the RoomInfo window + """ + self.color_state = color + def add_message(self, txt, time=None, nickname=None, colorized=False): """ Note that user can be None even if nickname is not None. It happens @@ -103,10 +104,10 @@ class Room(object): if not time and nickname and\ nickname != self.own_nick and\ self.color_state != theme.COLOR_TAB_CURRENT: - if not self.jid and self.color_state != theme.COLOR_TAB_HIGHLIGHT: + if self.color_state != theme.COLOR_TAB_HIGHLIGHT: self.set_color_state(theme.COLOR_TAB_NEW_MESSAGE) - elif self.jid: - self.set_color_state(theme.COLOR_TAB_PRIVATE) + # elif self.jid: + # self.set_color_state(theme.COLOR_TAB_PRIVATE) if not nickname: color = theme.COLOR_INFORMATION_TEXT else: @@ -117,30 +118,3 @@ class Room(object): if self.pos: # avoid scrolling of one line when one line is received self.pos += 1 self.messages.append(Message(txt, time, nickname, user, color, colorized)) - - 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: - return user - return None - - def set_color_state(self, color): - """ - Set the color that will be used to display the room's - number in the RoomInfo window - """ - self.color_state = color |