Package Camelot :: Package camelot :: Package view :: Package controls :: Module exception
[frames] | no frames]

Source Code for Module Camelot.camelot.view.controls.exception

 1  #  ============================================================================
 
 2  #
 
 3  #  Copyright (C) 2007-2008 Conceptive Engineering bvba. All rights reserved.
 
 4  #  www.conceptive.be / project-camelot@conceptive.be
 
 5  #
 
 6  #  This file is part of the Camelot Library.
 
 7  #
 
 8  #  This file may be used under the terms of the GNU General Public
 
 9  #  License version 2.0 as published by the Free Software Foundation
 
10  #  and appearing in the file LICENSE.GPL included in the packaging of
 
11  #  this file.  Please review the following information to ensure GNU
 
12  #  General Public Licensing requirements will be met:
 
13  #  http://www.trolltech.com/products/qt/opensource.html
 
14  #
 
15  #  If you are unsure which license is appropriate for your use, please
 
16  #  review the following information:
 
17  #  http://www.trolltech.com/products/qt/licensing.html or contact
 
18  #  project-camelot@conceptive.be.
 
19  #
 
20  #  This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
 
21  #  WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 
22  #
 
23  #  For use of this library in commercial applications, please contact
 
24  #  project-camelot@conceptive.be
 
25  #
 
26  #  ============================================================================
 
27  
 
28  """Functions and widget to represent exceptions to the user""" 
29  
 
30  from camelot.core.utils import ugettext as _ 
31  
 
32 -def register_exception(logger, text, exception):
33 """Log an exception 34 :exception_info: exception information in a user readable format, to be used when 35 displaying an exception message box""" 36 logger.error( text, exc_info = exception ) 37 import traceback, cStringIO 38 sio = cStringIO.StringIO() 39 traceback.print_exc(file=sio) 40 traceback_print = sio.getvalue() 41 sio.close() 42 return (exception, traceback_print)
43
44 -def model_thread_exception_message_box(exception_info, title=None, text=None):
45 """Display an exception that occurred in the model thread in a message box, 46 use this function as the exception argument in the model thread's post function 47 to represent the exception to the user 48 49 :param exception_info: a tuple containing the exception that was thrown and the 50 model thread in which the exception was thrown 51 """ 52 from PyQt4 import QtGui 53 title = title or _('Exception') 54 text = text or _('An unexpected event occurred') 55 exc, traceback = exception_info 56 msgBox = QtGui.QMessageBox(QtGui.QMessageBox.Warning, 57 unicode(title), unicode(text)) 58 # chop the size of the text to prevent error dialogs larger than the screen 59 msgBox.setInformativeText(unicode(exc)[:1000]) 60 msgBox.setDetailedText(traceback) 61 msgBox.exec_()
62