From 95d9b7fe8e7cbde413ef5f937cc1dda2b7fa8813 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Wed, 09 Aug 2006 13:53:10 +0000 Subject: More work on the chat. Fix terminal api --- (limited to 'shell') diff --git a/shell/ChatListener.py b/shell/ChatController.py index 6c0f6de..65bd8c6 100644 --- a/shell/ChatListener.py +++ b/shell/ChatController.py @@ -4,16 +4,17 @@ from sugar.activity import ActivityFactory from sugar.presence.PresenceService import PresenceService from sugar.p2p.Stream import Stream -class ChatListener: - def __init__(self): - self._chats = {} - +class ChatController: + def __init__(self, shell): + self._shell = shell + + def listen(self): self._pservice = PresenceService() - self._pservice.register_service_type(BuddyChat.SERVICE_TYPE) - def start(self): + self._pservice.register_service_type(BuddyChat.SERVICE_TYPE) self._service = self._pservice.register_service(env.get_nick_name(), BuddyChat.SERVICE_TYPE) + self._buddy_stream = Stream.new_from_service(self._service) self._buddy_stream.set_data_listener(self._recv_message) @@ -21,9 +22,7 @@ class ChatListener: [nick, msg] = Chat.deserialize_message(message) buddy = self._pservice.get_buddy_by_name(nick) if buddy: + activity = self._shell.start_activity('com.redhat.Sugar.ChatActivity') service = buddy.get_service_of_type(BuddyChat.SERVICE_TYPE) - self.open_chat(service) - #chat.recv_message(message) - - def open_chat(self, service): - ActivityFactory.create("com.redhat.Sugar.ChatActivity") + activity.execute('start', service.object_path()) + activity.execute('message', message) diff --git a/shell/PresenceView.py b/shell/PresenceView.py index 0539735..4ecb799 100644 --- a/shell/PresenceView.py +++ b/shell/PresenceView.py @@ -110,14 +110,8 @@ class PresenceView(gtk.VBox): buddy = view.get_model().get_value(aniter, self._MODEL_COL_BUDDY) if buddy: chat_service = buddy.get_service_of_type(BuddyChat.SERVICE_TYPE) - print chat_service - if chat_service: - bus = dbus.SessionBus() - proxy_obj = bus.get_object('com.redhat.Sugar.Chat', '/com/redhat/Sugar/Chat') - chat_shell = dbus.Interface(proxy_obj, 'com.redhat.Sugar.ChatShell') - chat_shell.open_chat(chat_service.object_path()) - else: - print 'Could not find buddy chat' + activity = self._shell.start_activity('com.redhat.Sugar.ChatActivity') + #activity.execute('start', [chat_service.object_path()]) def __buddy_icon_changed_cb(self, buddy): it = self._get_iter_for_buddy(buddy) diff --git a/shell/Shell.py b/shell/Shell.py index 55b8902..a239809 100755 --- a/shell/Shell.py +++ b/shell/Shell.py @@ -15,7 +15,7 @@ from ConsoleWindow import ConsoleWindow from Owner import ShellOwner from sugar.presence.PresenceService import PresenceService from ActivityHost import ActivityHost -from ChatListener import ChatListener +from ChatController import ChatController from sugar.activity import ActivityFactory class ShellDbusService(dbus.service.Object): @@ -62,8 +62,8 @@ class Shell: self._owner = ShellOwner() self._owner.announce() - chat_listener = ChatListener() - chat_listener.start() + chat_controller = ChatController(self) + chat_controller.listen() self._home_window = HomeWindow(self) self._home_window.show() @@ -81,6 +81,12 @@ class Shell: xid = window.get_xid() self._hosts[xid] = None + def get_activity(self, activity_id): + for host in self._hosts: + if host.get_id() == activity_id: + return host + return None + def get_current_activity(self): window = self._screen.get_active_window() if window: @@ -135,7 +141,10 @@ class Shell: activity = ActivityFactory.create(activity_name) info = self._registry.get_activity_from_id(activity_name) if info: - activity.set_default_type(info.get_default_type()) + default_type = info.get_default_type() + if default_type != None: + activity.set_default_type(default_type) + activity.execute('test', []) return activity else: logging.error('No such activity in the directory') -- cgit v0.9.1