diff -r f1db3ce8f40a -r 83cc1a306560 wxPopen.py --- a/wxPopen.py Sat Aug 30 22:14:06 2008 +0200 +++ b/wxPopen.py Mon Sep 01 14:40:51 2008 +0200 @@ -59,7 +59,7 @@ outchunk = self.fd.readline() if self.endcallback: try: - err = self.Proc.wait() + err = self.Proc.wait() except: err = self.retval self.finished = True @@ -77,7 +77,7 @@ self.Command.extend(word.split()) else: self.Command.append(word) - + self.finish_callback = finish_callback self.no_stdout = no_stdout self.no_stderr = no_stderr @@ -107,16 +107,14 @@ self.Proc, self.Proc.stdout, self.output, - self.finish) - + self.finish) self.outt.start() self.errt = outputThread( self.Proc, self.Proc.stderr, self.errors) -# - self.errt.start() + self.errt.start() def output(self,v): self.outdata += v @@ -130,12 +128,15 @@ if not self.no_stderr: wx.CallAfter(self.logger.write_warning,v) + def log_the_end(self,ecode,pid): + self.logger.write(self.Command_str + "\n") + self.logger.write_warning("exited with status %s (pid %s)\n"%(str(ecode),str(pid))) + def finish(self, pid,ecode): self.finished = True self.exitcode = ecode if self.exitcode != 0: - self.logger.write(self.Command_str + "\n") - self.logger.write_warning("exited with status %s (pid %s)\n"%(str(ecode),str(pid))) + wx.CallAfter(self.log_the_end,ecode,pid) if self.finish_callback is not None: self.finish_callback(self,ecode,pid) @@ -152,6 +153,8 @@ os.kill(self.Proc.pid, signal) except: pass + self.outt.join() + self.errt.join() def spin(self, timeout=None, out_limit=None, err_limit=None, keyword = None, kill_it = True): count = 0