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

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. __docformat__ = 'restructuredtext en'
  5. from fd_redirector import FDRedirector, STDOUT, STDERR
  6. from IPython.kernel.core.file_like import FileLike
  7. from IPython.kernel.core.output_trap import OutputTrap
  8.  
  9. class RedirectorOutputTrap(OutputTrap):
  10.     
  11.     def __init__(self, out_callback, err_callback):
  12.         self.out_callback = out_callback
  13.         self.err_callback = err_callback
  14.         self.out_redirector = FDRedirector(STDOUT)
  15.         self.err_redirector = FDRedirector(STDERR)
  16.         OutputTrap.__init__(self, out = FileLike(self.on_out_write), err = FileLike(self.on_err_write))
  17.  
  18.     
  19.     def set(self):
  20.         self.out_redirector.start()
  21.         self.err_redirector.start()
  22.         OutputTrap.set(self)
  23.  
  24.     
  25.     def unset(self):
  26.         OutputTrap.unset(self)
  27.         self.on_err_write('')
  28.         self.err_redirector.stop()
  29.         self.on_out_write('')
  30.         self.out_redirector.stop()
  31.  
  32.     
  33.     def on_out_write(self, string):
  34.         
  35.         try:
  36.             self.out_callback(self.out_redirector.getvalue() + string)
  37.         except:
  38.             self.unset()
  39.             raise 
  40.  
  41.  
  42.     
  43.     def on_err_write(self, string):
  44.         
  45.         try:
  46.             self.err_callback(self.err_redirector.getvalue() + string)
  47.         except:
  48.             self.unset()
  49.             raise 
  50.  
  51.  
  52.  
  53.