diff -r c093ec48f2fd -r c9ec111ad275 wxPopen.py --- a/wxPopen.py Fri Oct 16 10:50:16 2009 +0200 +++ b/wxPopen.py Mon Oct 19 16:03:46 2009 +0200 @@ -64,8 +64,8 @@ except: err = self.retval self.finished = True - wx.CallAfter(self.endcallback, self.Proc.pid, err) - + self.endcallback(self.Proc.pid, err) + class ProcessLogger: def __init__(self, logger, Command, finish_callback=None, no_stdout=False, no_stderr=False, no_gui=True): self.logger = logger @@ -121,13 +121,19 @@ self.outdata += v self.outlen += 1 if not self.no_stdout: - wx.CallAfter(self.logger.write,v) - + if wx.GetApp() is None: + self.logger.write(v) + else: + wx.CallAfter(self.logger.write,v) + def errors(self,v): self.errdata += v self.errlen += 1 if not self.no_stderr: - wx.CallAfter(self.logger.write_warning,v) + if wx.GetApp() is None: + self.logger.write_warning(v) + else: + wx.CallAfter(self.logger.write_warning,v) def log_the_end(self,ecode,pid): self.logger.write(self.Command_str + "\n") @@ -137,7 +143,10 @@ self.finished = True self.exitcode = ecode if self.exitcode != 0: - wx.CallAfter(self.log_the_end,ecode,pid) + if wx.GetApp() is None: + self.log_the_end(ecode,pid) + else: + wx.CallAfter(self.log_the_end,ecode,pid) if self.finish_callback is not None: self.finish_callback(self,ecode,pid) @@ -174,7 +183,9 @@ count += 1 if keyword and self.outdata.find(keyword)!=-1: break - wx.Yield() + app = wx.GetApp() + if app is not None: + app.Yield() time.sleep(0.01) if not self.outt.finished and kill_it: