home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_1306 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  4.8 KB  |  106 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. __license__ = 'GPL v3'
  5. __copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
  6. import StringIO
  7. import traceback
  8. import sys
  9. from PyQt4.Qt import QMainWindow, QString, Qt, QFont, QCoreApplication, SIGNAL, QAction, QMenu, QMenuBar, QIcon, pyqtSignal
  10. from calibre.gui2.dialogs.conversion_error import ConversionErrorDialog
  11. from calibre.utils.config import OptionParser
  12. from calibre.gui2 import error_dialog
  13. from calibre import prints
  14.  
  15. def option_parser(usage = 'Usage: %prog [options]\n\nLaunch the Graphical User Interface\n'):
  16.     parser = OptionParser(usage)
  17.     parser.add_option('--redirect-console-output', default = False, action = 'store_true', dest = 'redirect', help = _('Redirect console output to a dialog window (both stdout and stderr). Useful on windows where GUI apps do not have a output streams.'))
  18.     return parser
  19.  
  20.  
  21. class DebugWindow(ConversionErrorDialog):
  22.     
  23.     def __init__(self, parent):
  24.         ConversionErrorDialog.__init__(self, parent, 'Console output', '')
  25.         self.setModal(Qt.NonModal)
  26.         font = QFont()
  27.         font.setStyleHint(QFont.TypeWriter)
  28.         self.text.setFont(font)
  29.  
  30.     
  31.     def write(self, msg):
  32.         self.text.setPlainText(self.text.toPlainText() + QString(msg))
  33.  
  34.     
  35.     def flush(self):
  36.         pass
  37.  
  38.  
  39.  
  40. class MainWindow(QMainWindow):
  41.     ___menu_bar = None
  42.     ___menu = None
  43.     __actions = []
  44.     keyboard_interrupt = pyqtSignal()
  45.     
  46.     def create_application_menubar(cls):
  47.         mb = QMenuBar(None)
  48.         menu = QMenu()
  49.         for action in cls.get_menubar_actions():
  50.             menu.addAction(action)
  51.             cls._MainWindow__actions.append(action)
  52.             yield action
  53.         
  54.         mb.addMenu(menu)
  55.         cls._MainWindow___menu_bar = mb
  56.         cls._MainWindow___menu = menu
  57.  
  58.     create_application_menubar = classmethod(create_application_menubar)
  59.     
  60.     def get_menubar_actions(cls):
  61.         preferences_action = QAction(QIcon(I('config.svg')), _('&Preferences'), None)
  62.         quit_action = QAction(QIcon(I('window-close.svg')), _('&Quit'), None)
  63.         preferences_action.setMenuRole(QAction.PreferencesRole)
  64.         quit_action.setMenuRole(QAction.QuitRole)
  65.         return (preferences_action, quit_action)
  66.  
  67.     get_menubar_actions = classmethod(get_menubar_actions)
  68.     
  69.     def __init__(self, opts, parent = None):
  70.         QMainWindow.__init__(self, parent)
  71.         app = QCoreApplication.instance()
  72.         if app is not None:
  73.             self.connect(app, SIGNAL('unixSignal(int)'), self.unix_signal)
  74.         
  75.         if getattr(opts, 'redirect', False):
  76.             self._MainWindow__console_redirect = DebugWindow(self)
  77.             sys.stdout = sys.stderr = self._MainWindow__console_redirect
  78.             self._MainWindow__console_redirect.show()
  79.         
  80.  
  81.     
  82.     def unix_signal(self, signal):
  83.         print 'Received signal:', repr(signal)
  84.  
  85.     
  86.     def unhandled_exception(self, type, value, tb):
  87.         if type == KeyboardInterrupt:
  88.             self.keyboard_interrupt.emit()
  89.             return None
  90.         
  91.         try:
  92.             sio = StringIO.StringIO()
  93.             traceback.print_exception(type, value, tb, file = sio)
  94.             fe = sio.getvalue()
  95.             prints(fe, file = sys.stderr)
  96.             msg = '<b>%s</b>:' % type.__name__ + unicode(str(value), 'utf8', 'replace')
  97.             error_dialog(self, _('ERROR: Unhandled exception'), msg, det_msg = fe, show = True)
  98.         except BaseException:
  99.             type == KeyboardInterrupt
  100.             type == KeyboardInterrupt
  101.         except:
  102.             type == KeyboardInterrupt
  103.  
  104.  
  105.  
  106.