home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / lib / python2.4 / site-packages / deskbar / gtkexcepthook.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2006-08-31  |  3.0 KB  |  80 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.4)
  3.  
  4. import sys
  5. import gtk
  6. import pango
  7. from gettext import gettext as _
  8. from cStringIO import *
  9. import traceback
  10. import tempfile
  11. import os
  12.  
  13. def fallback_gtk_exception(type, value, tb):
  14.     dialog = gtk.MessageDialog(parent = None, flags = 0, type = gtk.MESSAGE_WARNING, buttons = gtk.BUTTONS_CLOSE, message_format = _('A programming error has been detected'))
  15.     dialog.format_secondary_text(_("It probably isn't fatal, but should be reported to the developers nonetheless. The program may behave erratically from now on."))
  16.     dialog.set_title(_('Bug Detected'))
  17.     dialog.set_default_response(gtk.RESPONSE_CLOSE)
  18.     textview = gtk.TextView()
  19.     textview.show()
  20.     textview.set_editable(False)
  21.     textview.modify_font(pango.FontDescription('Monospace'))
  22.     sw = gtk.ScrolledWindow()
  23.     sw.show()
  24.     sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
  25.     sw.add(textview)
  26.     frame = gtk.Frame()
  27.     frame.set_shadow_type(gtk.SHADOW_IN)
  28.     frame.add(sw)
  29.     frame.set_border_width(6)
  30.     textbuffer = textview.get_buffer()
  31.     trace = StringIO()
  32.     traceback.print_exception(type, value, tb, None, trace)
  33.     textbuffer.set_text(trace.getvalue())
  34.     textview.set_size_request(gtk.gdk.screen_width() / 2, gtk.gdk.screen_height() / 3)
  35.     frame.show()
  36.     expander = gtk.Expander('Details')
  37.     expander.add(frame)
  38.     expander.show()
  39.     dialog.vbox.add(expander)
  40.     dialog.set_position(gtk.WIN_POS_CENTER)
  41.     dialog.set_gravity(gtk.gdk.GRAVITY_CENTER)
  42.     dialog.run()
  43.     dialog.destroy()
  44.  
  45.  
  46. def bug_buddy_exception(type, value, tb):
  47.     msg = ''.join(traceback.format_exception(type, value, tb))
  48.     (fd, name) = tempfile.mkstemp()
  49.     
  50.     try:
  51.         os.write(fd, msg)
  52.         os.system('bug-buddy --include="%s" --appname="%s"' % (name, 'deskbar-applet'))
  53.     finally:
  54.         os.unlink(name)
  55.  
  56.  
  57. _exception_in_progress = 0
  58.  
  59. def _info(type, value, tb):
  60.     global _exception_in_progress, _exception_in_progress
  61.     if _exception_in_progress:
  62.         _excepthook_save(type, value, tb)
  63.         return None
  64.     
  65.     _exception_in_progress = 1
  66.     bug_buddy_exception(type, value, tb)
  67.     fallback_gtk_exception(type, value, tb)
  68.     _exception_in_progress = 0
  69.  
  70. if not sys.stderr.isatty():
  71.     print 'Using GTK exception handler'
  72.     _excepthook_save = sys.excepthook
  73.     sys.excepthook = _info
  74.  
  75. if __name__ == '__main__':
  76.     _excepthook_save = sys.excepthook
  77.     sys.excepthook = _info
  78.     raise Exception
  79.  
  80.