Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <mpgritti@gmail.com>2008-10-08 15:01:53 (GMT)
committer Marco Pesenti Gritti <mpgritti@gmail.com>2008-10-08 15:01:53 (GMT)
commit38b44f415280a1a8567d6c71b15a1c34be7c3c8b (patch)
treed1fab5aa3b5110d480909d7dd4c3648ca4c09bb8 /src
parentb8f3be093b6d55ff73545b532becedf85238773c (diff)
parente19f53a2b74c42b4962b8ff0d0b1813d27ae3a25 (diff)
Merge branch 'master' of git+ssh://dev.laptop.org/git/sugar
Diffstat (limited to 'src')
-rw-r--r--src/jarabe/controlpanel/cmd.py15
-rw-r--r--src/jarabe/controlpanel/gui.py46
-rw-r--r--src/jarabe/frame/devicestray.py13
3 files changed, 48 insertions, 26 deletions
diff --git a/src/jarabe/controlpanel/cmd.py b/src/jarabe/controlpanel/cmd.py
index a1eb044..12de1e2 100644
--- a/src/jarabe/controlpanel/cmd.py
+++ b/src/jarabe/controlpanel/cmd.py
@@ -18,6 +18,8 @@ import sys
import getopt
import os
from gettext import gettext as _
+import traceback
+import logging
from jarabe import config
@@ -58,10 +60,15 @@ def load_modules():
for item in folder:
if os.path.isdir(os.path.join(path, item)) and \
- os.path.exists(os.path.join(path, item, 'model.py')):
- module = __import__('.'.join(('cpsection', item, 'model')),
- globals(), locals(), ['model'])
- modules.append(module)
+ os.path.exists(os.path.join(path, item, 'model.py')):
+ try:
+ module = __import__('.'.join(('cpsection', item, 'model')),
+ globals(), locals(), ['model'])
+ except Exception:
+ logging.error('Exception while loading extension:\n' + \
+ ''.join(traceback.format_exception(*sys.exc_info())))
+ else:
+ modules.append(module)
return modules
diff --git a/src/jarabe/controlpanel/gui.py b/src/jarabe/controlpanel/gui.py
index f4e3081..8b63b78 100644
--- a/src/jarabe/controlpanel/gui.py
+++ b/src/jarabe/controlpanel/gui.py
@@ -14,11 +14,14 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-import gtk
import os
-import gobject
import logging
from gettext import gettext as _
+import sys
+import traceback
+
+import gobject
+import gtk
from sugar.graphics.icon import Icon
from sugar.graphics import style
@@ -231,23 +234,28 @@ class ControlPanel(gtk.Window):
for item in folder:
if os.path.isdir(os.path.join(path, item)) and \
os.path.exists(os.path.join(path, item, '__init__.py')):
- mod = __import__('.'.join(('cpsection', item)),
- globals(), locals(), [item])
- view_class = getattr(mod, 'CLASS', None)
- if view_class is not None:
- options[item] = {}
- options[item]['alerts'] = []
- options[item]['view'] = view_class
- options[item]['icon'] = getattr(mod, 'ICON', item)
- options[item]['title'] = getattr(mod, 'TITLE', item)
- options[item]['color'] = getattr(mod, 'COLOR', None)
- keywords = getattr(mod, 'KEYWORDS', [])
- keywords.append(options[item]['title'].lower())
- if item not in keywords:
- keywords.append(item)
- else:
- _logger.error('There is no CLASS constant specified in ' \
- 'the view file \'%s\'.' % item)
+ try:
+ mod = __import__('.'.join(('cpsection', item)),
+ globals(), locals(), [item])
+ view_class = getattr(mod, 'CLASS', None)
+ if view_class is not None:
+ options[item] = {}
+ options[item]['alerts'] = []
+ options[item]['view'] = view_class
+ options[item]['icon'] = getattr(mod, 'ICON', item)
+ options[item]['title'] = getattr(mod, 'TITLE', item)
+ options[item]['color'] = getattr(mod, 'COLOR', None)
+ keywords = getattr(mod, 'KEYWORDS', [])
+ keywords.append(options[item]['title'].lower())
+ if item not in keywords:
+ keywords.append(item)
+ else:
+ _logger.error('There is no CLASS constant specifieds ' \
+ 'in the view file \'%s\'.' % item)
+ except Exception:
+ logging.error('Exception while loading extension:\n' + \
+ ''.join(traceback.format_exception(*sys.exc_info())))
+
return options
def __cancel_clicked_cb(self, widget):
diff --git a/src/jarabe/frame/devicestray.py b/src/jarabe/frame/devicestray.py
index ba2805d..8514efb 100644
--- a/src/jarabe/frame/devicestray.py
+++ b/src/jarabe/frame/devicestray.py
@@ -15,6 +15,9 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
import os
+import sys
+import traceback
+import logging
from sugar.graphics import tray
@@ -27,9 +30,13 @@ class DevicesTray(tray.HTray):
for f in os.listdir(os.path.join(config.ext_path, 'deviceicon')):
if f.endswith('.py') and not f.startswith('__'):
module_name = f[:-3]
- mod = __import__('deviceicon.' + module_name, globals(),
- locals(), [module_name])
- mod.setup(self)
+ try:
+ mod = __import__('deviceicon.' + module_name, globals(),
+ locals(), [module_name])
+ mod.setup(self)
+ except Exception:
+ logging.error('Exception while loading extension:\n' + \
+ ''.join(traceback.format_exception(*sys.exc_info())))
def add_device(self, view):
index = 0