Changeset 11093:d1c2af85ace2 in orange


Ignore:
Timestamp:
02/11/13 16:15:06 (15 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Capture stderr in the output window.

(references #1276)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeCanvas/orngOutput.py

    r9671 r11093  
    2323    @wraps(func) 
    2424    def safe_wrapper(self, *args, **kwargs): 
    25         if not hasattr(self, "_thread_safe_thread"):  
     25        if not hasattr(self, "_thread_safe_thread"): 
    2626            self._thread_safe_thread = self.thread() 
    2727        if QThread.currentThread() is not self._thread_safe_thread: 
    28             print >> sys.stderr, "Calling", func, "with", args, kwargs, "from the wrong thread.", "Queuing the call!" 
    2928            QMetaObject.invokeMethod(self, "queuedInvoke", Qt.QueuedConnection, Q_ARG("PyQt_PyObject", partial(safe_wrapper, self, *args, **kwargs))) 
    3029        else: 
    3130            return func(self, *args, **kwargs) 
    32              
     31 
    3332    return safe_wrapper 
    3433 
     
    5049        self.defaultExceptionHandler = sys.excepthook 
    5150        self.defaultSysOutHandler = sys.stdout 
     51        self.defaultSysErrHandler = sys.stderr 
    5252 
    5353        self.logFile = open(os.path.join(canvasDlg.canvasSettingsDir, "outputLog.html"), "w") # create the log file 
     
    9999        if __DISABLE_OUTPUT__: 
    100100            return 
    101         if catch: sys.excepthook = self.exceptionHandler 
    102         else:     sys.excepthook = self.defaultExceptionHandler 
     101        if catch: 
     102            sys.excepthook = self.exceptionHandler 
     103        else: 
     104            sys.excepthook = self.defaultExceptionHandler 
    103105 
    104106    def catchOutput(self, catch): 
    105107        if __DISABLE_OUTPUT__: 
    106             return  
    107         if catch:    sys.stdout = self 
    108         else:         sys.stdout = self.defaultSysOutHandler 
     108            return 
     109        if catch: 
     110            sys.stdout = self 
     111            sys.stderr = self 
     112        else: 
     113            sys.stdout = self.defaultSysOutHandler 
     114            sys.stderr = self.defaultSysErrHandler 
    109115 
    110116    def clear(self): 
Note: See TracChangeset for help on using the changeset viewer.