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-14 14:40:45 (GMT)
committer Marco Pesenti Gritti <marco@localhost.localdomain>2006-07-14 14:40:45 (GMT)
commitdb08c3795f5e02245477126e8eb19e0049303332 (patch)
tree20c3b420a8f3221ed8ec0b46e896269d3e28c978 /shell
parent5ff09a10f7fe85c78c911b0393d88a4b2095cb5d (diff)
Read service type from the .activity file
Diffstat (limited to 'shell')
-rw-r--r--shell/ActivitiesModel.py8
-rw-r--r--shell/ActivityRegistry.py18
-rw-r--r--shell/HomeWindow.py7
-rwxr-xr-xshell/sugar-activity5
4 files changed, 32 insertions, 6 deletions
diff --git a/shell/ActivitiesModel.py b/shell/ActivitiesModel.py
index 514076c..6ed2eb4 100644
--- a/shell/ActivitiesModel.py
+++ b/shell/ActivitiesModel.py
@@ -1,5 +1,7 @@
import gobject
+from sugar.presence.PresenceService import PresenceService
+
class ActivityInfo:
def __init__(self, service):
self._service = service
@@ -15,10 +17,12 @@ class ActivitiesModel(gobject.GObject):
__gsignals__ = {
'activity-added': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
([gobject.TYPE_PYOBJECT])),
+ 'activity-removed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
+ ([gobject.TYPE_PYOBJECT]))
}
def __init__(self):
- gobject.GObject(self)
+ gobject.GObject.__init__(self)
self._activities = []
@@ -33,7 +37,7 @@ class ActivitiesModel(gobject.GObject):
self.emit('activity-added', activity_info)
def __iter__(self):
- return activities.__iter__()
+ return self._activities.__iter__()
def _on_new_service_adv_cb(self, pservice, activity_id, short_stype):
if activity_id:
diff --git a/shell/ActivityRegistry.py b/shell/ActivityRegistry.py
index 957d436..6d296bb 100644
--- a/shell/ActivityRegistry.py
+++ b/shell/ActivityRegistry.py
@@ -29,6 +29,14 @@ class ActivityModule:
def get_directory(self):
"""Get the path to activity directory."""
return self._directory
+
+ def get_default_type(self):
+ """Get the the type of the default activity service."""
+ return self._default_type
+
+ def set_default_type(self, default_type):
+ """Set the the type of the default activity service."""
+ self._default_type = default_type
class ActivityRegistry:
"""Service that tracks the available activities"""
@@ -65,12 +73,20 @@ class ActivityRegistry:
logging.error('%s miss the required name option' % (path))
return False
+ if cp.has_option('Activity', 'default_type'):
+ default_type = cp.get('Activity', 'default_type')
+ else:
+ default_type = None
+
if cp.has_option('Activity', 'exec'):
activity_exec = cp.get('Activity', 'exec')
elif cp.has_option('Activity', 'python_module'):
python_module = cp.get('Activity', 'python_module')
+ python_module = cp.get('Activity', 'python_module')
activity_exec = '%s %s %s' % (env.get_activity_runner(),
activity_id, python_module)
+ if default_type:
+ activity_exec += ' ' + default_type
env.add_to_python_path(directory)
else:
logging.error('%s must specifiy exec or python_module' % (path))
@@ -79,6 +95,8 @@ class ActivityRegistry:
module = ActivityModule(name, activity_id, activity_exec, directory)
self._activities.append(module)
+ module.set_default_type(default_type)
+
return True
def list_activities(self):
diff --git a/shell/HomeWindow.py b/shell/HomeWindow.py
index 10cd1d7..a88e18f 100644
--- a/shell/HomeWindow.py
+++ b/shell/HomeWindow.py
@@ -4,6 +4,7 @@ import gtk
import wnck
from sugar.activity import Activity
+from ActivitiesModel import ActivitiesModel
class NewActivityButton(gtk.MenuToolButton):
def __init__(self, home):
@@ -45,13 +46,13 @@ class ActivitiesGrid(gtk.VBox):
for activity in model:
self._add(activity)
- screen.connect('activity-added', self.__activity_added_cb)
- screen.connect('activity-removed', self.__activity_removed_cb)
+ model.connect('activity-added', self.__activity_added_cb)
+ model.connect('activity-removed', self.__activity_removed_cb)
def __activity_added_cb(self, model, activity):
self._add(activity)
- def __activity_closed_cb(self, model, activity):
+ def __activity_removed_cb(self, model, activity):
self._remove(window)
def _remove(self, activity):
diff --git a/shell/sugar-activity b/shell/sugar-activity
index bc6e38a..b572c12 100755
--- a/shell/sugar-activity
+++ b/shell/sugar-activity
@@ -13,4 +13,7 @@ theme.setup()
lw = LogWriter(sys.argv[1])
lw.start()
-Activity.register_factory(sys.argv[1], sys.argv[2])
+if len(sys.argv) == 4:
+ Activity.register_factory(sys.argv[1], sys.argv[2], sys.argv[3])
+else:
+ Activity.register_factory(sys.argv[1], sys.argv[2])