Cleanup the Activity API, code needs more love.

master
Marco Pesenti Gritti 17 years ago
parent 0d7bdeb20a
commit 0b6b6cd6ac

@ -103,9 +103,6 @@ class Shell(gobject.GObject):
def get_popup_context(self):
return self._popup_context
def _join_success_cb(self, handler, activity, activity_ps):
activity.join(activity_ps.object_path())
def _join_error_cb(self, handler, err, home_model):
home_mode.notify_activity_launch_failed(handler.get_activity_id())
@ -132,13 +129,9 @@ class Shell(gobject.GObject):
handle.pservice_id = activity_id
handler = activityfactory.create(act_type, handle)
handler.connect('success', self._join_success_cb, activity_ps)
handler.connect('error', self._join_error_cb, home_model)
def _start_success_cb(self, handler, activity):
activity.start(handler.get_activity_id())
def _start_error_cb(self, handler, err, home_model, activity_id, activity_type):
def _start_error_cb(self, handler, err, home_model):
home_model.notify_activity_launch_failed(handler.get_activity_id())
def start_activity(self, activity_type):
@ -150,7 +143,6 @@ class Shell(gobject.GObject):
home_model.notify_activity_launch(handler.get_activity_id(),
activity_type)
handler.connect('success', self._start_success_cb)
handler.connect('error', self._start_error_cb, home_model)
# Zoom to Home for launch feedback

@ -26,16 +26,19 @@ from sugar import env
class Activity(gtk.Window):
"""Base Activity class that all other Activities derive from."""
def __init__(self, activity_handle):
def __init__(self, handle):
gtk.Window.__init__(self)
self.connect('destroy', self._destroy_cb)
self._shared = False
self._activity_id = None
self._service = None
self._activity_id = handle.activity_id
self._pservice = PresenceService.get_instance()
service = handle.get_presence_service()
if service:
self._join(service)
self.realize()
group = gtk.Window()
@ -44,14 +47,6 @@ class Activity(gtk.Window):
self._bus = ActivityService(self)
def start(self, activity_id):
"""Start the activity."""
if self._activity_id != None:
logging.warning('The activity has been already started.')
return
self._activity_id = activity_id
self.present()
def get_type(self):
@ -70,13 +65,8 @@ class Activity(gtk.Window):
"""Get the unique activity identifier."""
return self._activity_id
def join(self, activity_ps):
"""Join an activity shared on the network."""
if self._activity_id != None:
logging.warning('The activity has been already started.')
return
self._activity_id = activity_ps.get_id()
def _join(self, service):
self._service = service
self._shared = True
# Publish the default service, it's a copy of
@ -103,10 +93,6 @@ class Activity(gtk.Window):
self._service = self._pservice.share_activity(self, default_type)
self._shared = True
def execute(self, command, args):
"""Execute the given command with args"""
return False
def _destroy_cb(self, window):
if self._bus:
del self._bus

@ -36,14 +36,13 @@ class ActivityCreationHandler(gobject.GObject):
'error': (gobject.SIGNAL_RUN_FIRST,
gobject.TYPE_NONE,
([gobject.TYPE_PYOBJECT])),
'success': (gobject.SIGNAL_RUN_FIRST,
gobject.TYPE_NONE,
([gobject.TYPE_PYOBJECT]))
}
def __init__(self, service_name, activity_handle):
gobject.GObject.__init__(self)
self._service_name = service_name
if activity_handle:
self._activity_handle = activity_handle
else:
@ -91,14 +90,12 @@ class ActivityCreationHandler(gobject.GObject):
return act_id
def _reply_handler(self, xid):
bus = dbus.SessionBus()
proxy_obj = bus.get_object(_ACTIVITY_SERVICE_NAME + '%d' % xid,
_ACTIVITY_SERVICE_PATH + "/%s" % xid)
activity = dbus.Interface(proxy_obj, _ACTIVITY_INTERFACE)
self.emit('success', activity)
logging.debug("Activity created %s (%s)." %
(self._activity_handle.activity_id, self._service_name))
def _error_handler(self, err):
logging.debug("Couldn't create activity: %s" % err)
logging.debug("Couldn't create activity %s (%s): %s" %
(self._activity_handle.activity_id, self._service_name, err))
self.emit('error', err)
def create(service_name, activity_handle=None):

@ -40,18 +40,6 @@ class ActivityService(dbus.service.Object):
dbus.service.Object.__init__(self, bus_name, object_path)
self._activity = activity
self._pservice = PresenceService.get_instance()
@dbus.service.method(_ACTIVITY_INTERFACE)
def start(self, activity_id):
"""Start the activity in unshared mode."""
self._activity.start(activity_id)
@dbus.service.method(_ACTIVITY_INTERFACE)
def join(self, activity_ps_path):
"""Join the activity specified by its presence service path."""
activity_ps = self._pservice.get(activity_ps_path)
return self._activity.join(activity_ps)
@dbus.service.method(_ACTIVITY_INTERFACE)
def share(self):
@ -72,8 +60,3 @@ class ActivityService(dbus.service.Object):
def get_shared(self):
"""Returns True if the activity is shared on the mesh."""
return self._activity.get_shared()
@dbus.service.method(_ACTIVITY_INTERFACE,
in_signature="sas", out_signature="b")
def execute(self, command, args):
return self._activity.execute(command, args)

Loading…
Cancel
Save