Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@localhost.localdomain>2006-07-26 10:57:54 (GMT)
committer Marco Pesenti Gritti <marco@localhost.localdomain>2006-07-26 10:57:54 (GMT)
commit0947581a113af6eaa3660ae37b2720c4806ab0e8 (patch)
tree5006567bbf0de11ad274a0ff44ca18b244433196 /shell
parent57cc6a303c6c062c7af5544fc9469f80d92a808f (diff)
A bunch of fixes...
Diffstat (limited to 'shell')
-rw-r--r--shell/ActivitiesModel.py14
-rw-r--r--shell/ActivityHost.py9
-rw-r--r--shell/PeopleWindow.py9
-rw-r--r--shell/PresenceView.py4
-rwxr-xr-xshell/Shell.py25
5 files changed, 35 insertions, 26 deletions
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):