diff options
author | Marco 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) |
commit | 38b44f415280a1a8567d6c71b15a1c34be7c3c8b (patch) | |
tree | d1fab5aa3b5110d480909d7dd4c3648ca4c09bb8 /src | |
parent | b8f3be093b6d55ff73545b532becedf85238773c (diff) | |
parent | e19f53a2b74c42b4962b8ff0d0b1813d27ae3a25 (diff) |
Merge branch 'master' of git+ssh://dev.laptop.org/git/sugar
Diffstat (limited to 'src')
-rw-r--r-- | src/jarabe/controlpanel/cmd.py | 15 | ||||
-rw-r--r-- | src/jarabe/controlpanel/gui.py | 46 | ||||
-rw-r--r-- | src/jarabe/frame/devicestray.py | 13 |
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 |