Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar/chat
diff options
context:
space:
mode:
authorMarco 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)
commit59f25b07418e5f1143d9ddf94b5497ca9436f8d9 (patch)
tree701fe4b08c2945cc0b62ecce3f85ad74b4cf9df5 /sugar/chat
parentc234b7b4a396ce523692d5516c3cc4fb159d9d0c (diff)
Get one-to-one chat to actually work...
Diffstat (limited to 'sugar/chat')
-rw-r--r--sugar/chat/BuddyChat.py15
-rw-r--r--sugar/chat/Chat.py14
-rw-r--r--sugar/chat/GroupChat.py10
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)