Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar/activity/activityfactory.py
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <mpg@redhat.com>2007-02-22 00:23:58 (GMT)
committer Marco Pesenti Gritti <mpg@redhat.com>2007-02-22 00:23:58 (GMT)
commit1b5ac988d786199a2ec2732775e8acd67833458d (patch)
tree001f29c17ad9a7e874751520eb05f39e4e6da033 /sugar/activity/activityfactory.py
parent0b6b6cd6acfedd3bfc326623ad0ccff21c5c4d5e (diff)
Put exec back, I forgot it was used by the camera.
Helper method to create an activity with an uri.
Diffstat (limited to 'sugar/activity/activityfactory.py')
-rw-r--r--sugar/activity/activityfactory.py63
1 files changed, 31 insertions, 32 deletions
diff --git a/sugar/activity/activityfactory.py b/sugar/activity/activityfactory.py
index 90b49f7..bcf70b2 100644
--- a/sugar/activity/activityfactory.py
+++ b/sugar/activity/activityfactory.py
@@ -30,6 +30,28 @@ _ACTIVITY_SERVICE_NAME = "org.laptop.Activity"
_ACTIVITY_SERVICE_PATH = "/org/laptop/Activity"
_ACTIVITY_INTERFACE = "org.laptop.Activity"
+def _find_activity_id():
+ pservice = PresenceService.get_instance()
+
+ # create a new unique activity ID
+ i = 0
+ act_id = None
+ while i < 10:
+ act_id = util.unique_id()
+ i += 1
+
+ # check through network activities
+ found = False
+ activities = pservice.get_activities()
+ for act in activities:
+ if act_id == act.get_id():
+ found = True
+ break
+ if found:
+ raise RuntimeError("Cannot generate unique activity id.")
+
+ return act_id
+
class ActivityCreationHandler(gobject.GObject):
__gsignals__ = {
@@ -42,15 +64,7 @@ class ActivityCreationHandler(gobject.GObject):
gobject.GObject.__init__(self)
self._service_name = service_name
-
- if activity_handle:
- self._activity_handle = activity_handle
- else:
- activity_id = self._find_unique_activity_id()
- if activity_id:
- self._activity_handle = ActivityHandle(activity_id)
- else:
- raise RuntimeError("Cannot generate activity id.")
+ self._activity_handle = activity_handle
registry = bundleregistry.get_registry()
bundle = registry.get_bundle(service_name)
@@ -66,29 +80,6 @@ class ActivityCreationHandler(gobject.GObject):
def get_activity_id(self):
return self._activity_handle.activity_id
- def _find_unique_activity_id(self):
- pservice = PresenceService.get_instance()
-
- # create a new unique activity ID
- i = 0
- act_id = None
- while i < 10:
- act_id = util.unique_id()
- i += 1
-
- # check through network activities
- found = False
- activities = pservice.get_activities()
- for act in activities:
- if act_id == act.get_id():
- found = True
- break
- if found:
- act_id = None
- continue
-
- return act_id
-
def _reply_handler(self, xid):
logging.debug("Activity created %s (%s)." %
(self._activity_handle.activity_id, self._service_name))
@@ -100,4 +91,12 @@ class ActivityCreationHandler(gobject.GObject):
def create(service_name, activity_handle=None):
"""Create a new activity from its name."""
+ if not activity_handle:
+ activity_handle = ActivityHandle(_find_activity_id())
return ActivityCreationHandler(service_name, activity_handle)
+
+def create_with_uri(service_name, uri):
+ """Create a new activity and pass the uri as handle."""
+ activity_handle = ActivityHandle(_find_activity_id())
+ activity_handle.uri = uri
+ return ActivityCreationHandler(service_name, handle)