diff options
author | Marco Pesenti Gritti <marco@localhost.localdomain> | 2006-06-22 22:07:54 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <marco@localhost.localdomain> | 2006-06-22 22:07:54 (GMT) |
commit | 59f25b07418e5f1143d9ddf94b5497ca9436f8d9 (patch) | |
tree | 701fe4b08c2945cc0b62ecce3f85ad74b4cf9df5 /sugar/chat | |
parent | c234b7b4a396ce523692d5516c3cc4fb159d9d0c (diff) |
Get one-to-one chat to actually work...
Diffstat (limited to 'sugar/chat')
-rw-r--r-- | sugar/chat/BuddyChat.py | 15 | ||||
-rw-r--r-- | sugar/chat/Chat.py | 14 | ||||
-rw-r--r-- | sugar/chat/GroupChat.py | 10 |
3 files changed, 19 insertions, 20 deletions
diff --git a/sugar/chat/BuddyChat.py b/sugar/chat/BuddyChat.py index 6d4633e..35b440d 100644 --- a/sugar/chat/BuddyChat.py +++ b/sugar/chat/BuddyChat.py @@ -1,15 +1,14 @@ -from sugar.activity.Activity import Activity +from sugar.chat.Chat import Chat +from sugar.p2p.Stream import Stream -class BuddyChat(Activity): +class BuddyChat(Chat): SERVICE_TYPE = "_olpc_buddy_chat._tcp" def __init__(self, service): Chat.__init__(self) - self._stream = Stream.new_from_service(service) - self._stream.set_data_listener(self._recv_message) - self._stream_writer = self._group_stream.new_writer() + self._stream = Stream.new_from_service(service, False) + self._stream_writer = self._stream.new_writer(service) - def recv_message(self, address, msg): - print msg -# Chat.recv_message(self, self._buddy, msg) + def _recv_message_cb(self, address, msg): + self.recv_message(msg) diff --git a/sugar/chat/Chat.py b/sugar/chat/Chat.py index ec51f2f..325fa7f 100644 --- a/sugar/chat/Chat.py +++ b/sugar/chat/Chat.py @@ -28,6 +28,9 @@ class Chat(gtk.VBox): def __init__(self): gtk.VBox.__init__(self, False, 6) + self._pservice = PresenceService.get_instance() + self._pservice.start() + self._stream_writer = None self.set_border_width(12) @@ -193,13 +196,16 @@ class Chat(gtk.VBox): return msg[desc_start:svg_last + len(tag_svg_end)] return None - def recv_message(self, buddy, msg): + def recv_message(self, message): """Insert a remote chat message into the chat buffer.""" + [nick, msg] = Chat.deserialize_message(message) + buddy = self._pservice.get_buddy_by_nick_name(nick) if not buddy: + logging.error('The buddy %s is not present.' % (nick)) return # FIXME a better way to compare buddies? - owner = PresenceService.get_instance().get_owner() + owner = self._pservice.get_owner() if buddy.get_nick_name() == owner.get_nick_name(): return @@ -236,5 +242,7 @@ class Chat(gtk.VBox): owner = PresenceService.get_instance().get_owner() return owner.get_nick_name() + '||' + message - def deserialize_message(self, message): + def deserialize_message(message): return message.split('||', 1) + + deserialize_message = staticmethod(deserialize_message) diff --git a/sugar/chat/GroupChat.py b/sugar/chat/GroupChat.py index a269552..a2a3352 100644 --- a/sugar/chat/GroupChat.py +++ b/sugar/chat/GroupChat.py @@ -8,8 +8,6 @@ import sugar.env class GroupChat(Chat): def __init__(self): Chat.__init__(self) - self._pservice = PresenceService.get_instance() - self._pservice.start() self._group_stream = None def _setup_stream(self, service): @@ -18,10 +16,4 @@ class GroupChat(Chat): self._stream_writer = self._group_stream.new_writer() def _group_recv_message(self, address, msg): - pservice = PresenceService.get_instance() - [nick, msg] = self.deserialize_message(msg) - buddy = pservice.get_buddy_by_nick_name(nick) - if buddy: - self.recv_message(buddy, msg) - else: - logging.error('The buddy %s is not present.' % (nick)) + self.recv_message(msg) |