diff options
author | Dan Williams <dcbw@redhat.com> | 2006-06-23 02:42:29 (GMT) |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2006-06-23 02:42:29 (GMT) |
commit | f2ef2a68477819f8337eb2c421127f2c719596d1 (patch) | |
tree | 3ed3152c73b2481c40a41cd4a6af4727740cd859 /shell/shell.py | |
parent | be992586b1e0d849a732b44eed7047dd8be62501 (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-x | shell/shell.py | 38 |
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 |