Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Abente <mabente@paraguayeduca.org>2010-07-07 15:32:30 (GMT)
committer Anish Mangal <anish@sugarlabs.org>2011-08-26 05:55:55 (GMT)
commit3d1a864988c306e99f9e44bb6bf60856f0792ea7 (patch)
tree3b6936d5137c62d0b897a659833889445cb6bcc1
parent47c34028bc22e0a79975284e5b94dc0b2a818da3 (diff)
Protected activities list
Does not allow sugar to display erase option for activities that are included in the activities.protected list. This feature was requested by many teachers from different diployments, in example Paraguay. Signed-off-by: Anish Mangal <anish@sugarlabs.org>
-rw-r--r--data/Makefile.am1
-rw-r--r--data/activities.protected14
-rw-r--r--src/jarabe/desktop/activitieslist.py17
-rw-r--r--src/jarabe/model/bundleregistry.py19
4 files changed, 41 insertions, 10 deletions
diff --git a/data/Makefile.am b/data/Makefile.am
index 6a62d23..e34930b 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -11,6 +11,7 @@ sugar-100.gtkrc: gtkrc.em
sugardir = $(pkgdatadir)/data
sugar_DATA = \
activities.defaults \
+ activities.protected \
kbdconfig \
mime.defaults \
GPLv2 \
diff --git a/data/activities.protected b/data/activities.protected
new file mode 100644
index 0000000..e3907ba
--- /dev/null
+++ b/data/activities.protected
@@ -0,0 +1,14 @@
+# Protected activities list
+
+org.laptop.WebActivity
+org.laptop.Calculate
+org.laptop.Chat
+org.vpri.EtoysActivity
+org.laptop.ImageViewerActivity
+org.laptop.sugar.Jukebox
+org.laptop.Log
+org.laptop.Pippy
+org.laptop.sugar.ReadActivity
+org.laptop.Terminal
+org.laptop.TurtleArtActivity
+org.laptop.AbiWordActivity
diff --git a/src/jarabe/desktop/activitieslist.py b/src/jarabe/desktop/activitieslist.py
index f09e85f..13ff299 100644
--- a/src/jarabe/desktop/activitieslist.py
+++ b/src/jarabe/desktop/activitieslist.py
@@ -405,14 +405,15 @@ class ActivityListPalette(ActivityPalette):
self.menu.append(self._favorite_item)
self._favorite_item.show()
- if activity_info.is_user_activity():
- menu_item = MenuItem(_('Erase'), 'list-remove')
- menu_item.connect('activate', self.__erase_activate_cb)
- self.menu.append(menu_item)
- menu_item.show()
-
- if not os.access(activity_info.get_path(), os.W_OK):
- menu_item.props.sensitive = False
+ if activity_info.is_user_activity() and \
+ not registry.protects_activity(self._bundle_id):
+ menu_item = MenuItem(_('Erase'), 'list-remove')
+ menu_item.connect('activate', self.__erase_activate_cb)
+ self.menu.append(menu_item)
+ menu_item.show()
+
+ if not os.access(activity_info.get_path(), os.W_OK):
+ menu_item.props.sensitive = False
registry = bundleregistry.get_registry()
self._activity_changed_sid = registry.connect('bundle_changed',
diff --git a/src/jarabe/model/bundleregistry.py b/src/jarabe/model/bundleregistry.py
index b96de86..090dddc 100644
--- a/src/jarabe/model/bundleregistry.py
+++ b/src/jarabe/model/bundleregistry.py
@@ -65,11 +65,13 @@ class BundleRegistry(gobject.GObject):
self._last_defaults_mtime = -1
self._favorite_bundles = {}
+ self._protected_activities = []
try:
self._load_favorites()
- except Exception:
- logging.exception('Error while loading favorite_activities.')
+ self._load_protected()
+ except Exception, e:
+ logging.exception('Error while loading activities defaults: %s' % str(e))
self._merge_default_favorites()
@@ -126,6 +128,19 @@ class BundleRegistry(gobject.GObject):
self._last_defaults_mtime = float(favorites_data['defaults-mtime'])
self._favorite_bundles = favorite_bundles
+ def _load_protected(self):
+ f = open(os.path.join(config.data_path, 'activities.protected'), 'r')
+
+ for line in f.readlines():
+ line = line.strip()
+ if line and not line.startswith('#'):
+ self._protected_activities.append(line)
+
+ f.close()
+
+ def protects_activity(self, bundle_id):
+ return (bundle_id in self._protected_activities)
+
def _merge_default_favorites(self):
default_activities = []
defaults_path = os.path.join(config.data_path, 'activities.defaults')