From 0947581a113af6eaa3660ae37b2720c4806ab0e8 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Wed, 26 Jul 2006 10:57:54 +0000 Subject: A bunch of fixes... --- (limited to 'shell') diff --git a/shell/ActivitiesModel.py b/shell/ActivitiesModel.py index 99612f6..01d83ec 100644 --- a/shell/ActivitiesModel.py +++ b/shell/ActivitiesModel.py @@ -9,15 +9,14 @@ class ActivityInfo: self._service = service def get_id(self): - activity_id = self._service.get_activity_id() + activity_id = self._service.get_id() def get_type(self): - return self._service.get_type() + # FIXME + return "_web_olpc._udp" def get_title(self): - escaped_title = self._service.get_published_value('Title') - title = xml.sax.saxutils.unescape(escaped_title) - return title + return "FIXME Title" def get_service(self): return self._service @@ -47,7 +46,4 @@ class ActivitiesModel(gobject.GObject): return self._activities.__iter__() def _on_activity_announced_cb(self, pservice, activity): - # FIXME We should not hard code activity types here - services = activity.get_services_of_type("_web_olpc._udp") - if len(services) > 0: - self.add_activity(services[0]) + self.add_activity(activity) diff --git a/shell/ActivityHost.py b/shell/ActivityHost.py index 6f3b2d1..540d1e2 100644 --- a/shell/ActivityHost.py +++ b/shell/ActivityHost.py @@ -2,9 +2,11 @@ import gtk import dbus from sugar.activity import Activity +from PeopleWindow import PeopleWindow class ActivityHost: - def __init__(self, xid): + def __init__(self, shell, xid): + self._shell = shell self._xid = xid bus = dbus.SessionBus() @@ -16,11 +18,13 @@ class ActivityHost: self._id = self._activity.get_id() self._default_type = self._activity.get_default_type() self._window = gtk.gdk.window_foreign_new(xid) + self._people_window = PeopleWindow(shell, self) def get_id(self): return self._id def share(self): + self._people_window.share() self._activity.share() def get_shared(self): @@ -29,6 +33,9 @@ class ActivityHost: def get_default_type(self): return self._default_type + def show_people(self): + self.show_dialog(self._people_window) + def show_dialog(self, dialog): dialog.show() dialog.window.set_transient_for(self._window) diff --git a/shell/PeopleWindow.py b/shell/PeopleWindow.py index 78a31ad..60e76a7 100644 --- a/shell/PeopleWindow.py +++ b/shell/PeopleWindow.py @@ -18,9 +18,12 @@ class PeopleWindow(gtk.Window): hbox.pack_start(presence_view, False) presence_view.show() - chat = ActivityChat(activity) - hbox.pack_start(chat) - chat.show() + self._chat = ActivityChat(activity) + hbox.pack_start(self._chat) + self._chat.show() self.add(hbox) hbox.show() + + def share(self): + self._chat.share() diff --git a/shell/PresenceView.py b/shell/PresenceView.py index 436a244..c9c2002 100644 --- a/shell/PresenceView.py +++ b/shell/PresenceView.py @@ -133,9 +133,9 @@ class PresenceView(gtk.VBox): self._add_buddy(buddy) def _add_buddy(self, buddy): - #if buddy.is_owner(): + if buddy.is_owner(): # Do not show ourself in the buddy list - #return + return aniter = self._buddy_store.append(None) self._buddy_store.set(aniter, diff --git a/shell/Shell.py b/shell/Shell.py index 1cf1ba5..4176b72 100755 --- a/shell/Shell.py +++ b/shell/Shell.py @@ -12,7 +12,6 @@ from sugar.LogWriter import LogWriter from ActivityRegistry import ActivityRegistry from HomeWindow import HomeWindow from sugar import env -from PeopleWindow import PeopleWindow from ConsoleWindow import ConsoleWindow from Owner import ShellOwner from PresenceService import PresenceService @@ -66,29 +65,33 @@ class Shell: self._home_window = HomeWindow(self) self._home_window.show() - self._people_windows = {} + self._hosts = {} self._console_windows = {} def get_current_activity(self): window = self._screen.get_active_window() if window: + xid = None + if window.get_window_type() == wnck.WINDOW_NORMAL: - return ActivityHost(window.get_xid()) + xid = window.get_xid() elif window.get_window_type() == wnck.WINDOW_DIALOG: parent = window.get_transient() if not parent is None: - return ActivityHost(parent.get_xid()) + xid = parent.get_xid() + + if xid != None: + if self._hosts.has_key(xid): + return self._hosts[xid] + else: + self._hosts[xid] = ActivityHost(self, xid) + return self._hosts[xid] + return None def show_people(self): activity = self.get_current_activity() - if activity: - if not self._people_windows.has_key(activity.get_id()): - dialog = PeopleWindow(self, activity) - self._people_windows[activity.get_id()] = dialog - else: - dialog = self._people_windows[activity.get_id()] - activity.show_dialog(dialog) + activity.show_people() def get_console(self, module_id): if not self._console_windows.has_key(module_id): -- cgit v0.9.1