--- 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: