Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/shell.py
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2006-06-23 02:42:29 (GMT)
committer Dan Williams <dcbw@redhat.com>2006-06-23 02:42:29 (GMT)
commitf2ef2a68477819f8337eb2c421127f2c719596d1 (patch)
tree3ed3152c73b2481c40a41cd4a6af4727740cd859 /shell/shell.py
parentbe992586b1e0d849a732b44eed7047dd8be62501 (diff)
Make activities emit an ActivityShared dbus signal; and have the shell & presence window detect that and disable the 'share' button
Diffstat (limited to 'shell/shell.py')
-rwxr-xr-xshell/shell.py38
1 files changed, 37 insertions, 1 deletions
diff --git a/shell/shell.py b/shell/shell.py
index 87db70f..895d3c1 100755
--- a/shell/shell.py
+++ b/shell/shell.py
@@ -19,11 +19,25 @@ from StartPage import StartPage
from WindowManager import WindowManager
from PresenceWindow import PresenceWindow
-class ActivityHost(dbus.service.Object):
+class ActivityHostSignalHelper(gobject.GObject):
+ __gsignals__ = {
+ 'shared': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([]))
+ }
+
+ def __init__(self, parent):
+ gobject.GObject.__init__(self)
+ self._parent = parent
+
+ def emit_shared(self):
+ self.emit('shared')
+class ActivityHost(dbus.service.Object):
def __init__(self, activity_container, activity_name, default_type, activity_id = None):
self.activity_name = activity_name
self.ellipsize_tab = False
+ self._shared = False
+
+ self._signal_helper = ActivityHostSignalHelper(self)
self.activity_container = activity_container
@@ -113,6 +127,18 @@ class ActivityHost(dbus.service.Object):
#print "window_id = %d"%window_id
return window_id
+ def connect(self, signal, func):
+ self._signal_helper.connect(signal, func)
+
+ def get_shared(self):
+ """Return True if this activity is shared, False if
+ it has not been shared yet."""
+ return self._shared
+
+ def _shared_signal(self):
+ self._shared = True
+ self._signal_helper.emit_shared()
+
@dbus.service.method("com.redhat.Sugar.Shell.ActivityHost", \
in_signature="ss", \
out_signature="")
@@ -123,6 +149,11 @@ class ActivityHost(dbus.service.Object):
self.peer_service = dbus.Interface(self.activity_container.bus.get_object( \
self.__peer_service_name, self.__peer_object_name), \
"com.redhat.Sugar.Activity")
+ self.activity_container.bus.add_signal_receiver(self._shared_signal,
+ signal_name="ActivityShared",
+ dbus_interface="com.redhat.Sugar.Activity",
+ named_service=self.__peer_service_name,
+ path=self.__peer_object_name)
@dbus.service.method("com.redhat.Sugar.Shell.ActivityHost", \
in_signature="b", \
@@ -213,6 +244,11 @@ class ActivityHost(dbus.service.Object):
get_id() function."""
return self.activity_id
+ def default_type(self):
+ """Interface-type function to match activity.Activity's
+ default_type() function."""
+ return self._default_type
+
def get_object_path(self):
return self.dbus_object_name