--- a/runtime/plc_Win32_main.c Mon Dec 10 15:53:55 2007 +0100
+++ b/runtime/plc_Win32_main.c Mon Dec 10 17:05:36 2007 +0100
@@ -46,6 +46,11 @@
printf("WaitForSingleObject failed (%d)\n", GetLastError());
--- a/wxPopen.py Mon Dec 10 15:53:55 2007 +0100
+++ b/wxPopen.py Mon Dec 10 17:05:36 2007 +0100
@@ -1,160 +1,160 @@
-#This file is part of Beremiz, a Integrated Development Environment for
-#programming IEC 61131-3 automates supporting plcopen standard and CanFestival.
-#Copyright (C) 2007: Edouard TISSERANT and Laurent BESSARD
-#See COPYING file for copyrights details.
-#This library is free software; you can redistribute it and/or
-#modify it under the terms of the GNU General Public
-#License as published by the Free Software Foundation; either
-#version 2.1 of the License, or (at your option) any later version.
-#This library is distributed in the hope that it will be useful,
-#but WITHOUT ANY WARRANTY; without even the implied warranty of
-#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-#General Public License for more details.
-#You should have received a copy of the GNU General Public
-#License along with this library; if not, write to the Free Software
-#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-# based on wxPopen.py from boa-constructor
-from StringIO import StringIO
- if wx.VERSION < (2, 6, 0):
- def Bind(self, event, function, id = None):
- event(self, id, function)
- def __init__(self, input, handler=None):
- handler.Bind(wx.EVT_MENU, self.OnIdle)
- handler.Bind(wx.EVT_END_PROCESS, self.OnProcessEnded, id=-1)
- input.reverse() # so we can pop
- self.inputStream = None
- self.errorStream = None
- self.outputStream = None
- self.finishedFunc = None
- def execute(self, cmd):
- self.process = wx.Process(self.handler)
- self.process.Redirect()
- self.pid = wx.Execute(cmd, wx.EXEC_NOHIDE, self.process)
- self.inputStream = self.process.GetOutputStream()
- self.errorStream = self.process.GetErrorStream()
- self.outputStream = self.process.GetInputStream()
- def setCallbacks(self, output, errors, finished):
- self.outputFunc = output
- self.errorsFunc = errors
- self.finishedFunc = finished
- if self.process is not None:
- self.process.CloseOutput()
- if self.process is not None:
- self.process.CloseOutput()
- if wx.Process_Kill(self.pid, wx.SIGTERM) != wx.KILL_OK:
- wx.Process_Kill(self.pid, wx.SIGKILL)
- def updateStream(self, stream, data):
- if stream and stream.CanRead():
- def updateInpStream(self, stream, input):
- def updateErrStream(self, stream, data):
- return self.updateStream(stream, data)
- def updateOutStream(self, stream, data):
- return self.updateStream(stream, data)
- def OnIdle(self, event=None):
- if self.process is not None:
- self.updateInpStream(self.inputStream, self.input)
- e = self.updateErrStream(self.errorStream, self.errors)
- if e is not None and self.errorsFunc is not None:
- wx.CallAfter(self.errorsFunc, e)
- o = self.updateOutStream(self.outputStream, self.output)
- if o is not None and self.outputFunc is not None:
- wx.CallAfter(self.outputFunc, o)
- def OnProcessEnded(self, event):
- pid,exitcode = event.GetPid(), event.GetExitCode()
- #self.handler.Disconnect(-1, wx.EVT_IDLE)
- wx.CallAfter(self.finishedFunc, pid, exitcode)
-class ProcessRunner(wx.EvtHandler, ProcessRunnerMix):
- def __init__(self, input):
- wx.EvtHandler.__init__(self)
- ProcessRunnerMix.__init__(self, input)
-def wxPopen3(cmd, input, output, errors, finish, handler=None):
- p = ProcessRunnerMix(input, handler)
- p.setCallbacks(output, errors, finish)
+#This file is part of Beremiz, a Integrated Development Environment for +#programming IEC 61131-3 automates supporting plcopen standard and CanFestival. +#Copyright (C) 2007: Edouard TISSERANT and Laurent BESSARD +#See COPYING file for copyrights details. +#This library is free software; you can redistribute it and/or +#modify it under the terms of the GNU General Public +#License as published by the Free Software Foundation; either +#version 2.1 of the License, or (at your option) any later version. +#This library is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +#General Public License for more details. +#You should have received a copy of the GNU General Public +#License along with this library; if not, write to the Free Software +#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# based on wxPopen.py from boa-constructor +from StringIO import StringIO + if wx.VERSION < (2, 6, 0): + def Bind(self, event, function, id = None): + event(self, id, function) + def __init__(self, input, handler=None): + handler.Bind(wx.EVT_MENU, self.OnIdle) + handler.Bind(wx.EVT_END_PROCESS, self.OnProcessEnded, id=-1) + input.reverse() # so we can pop + self.inputStream = None + self.errorStream = None + self.outputStream = None + self.finishedFunc = None + def execute(self, cmd): + self.process = wx.Process(self.handler) + self.process.Redirect() + self.pid = wx.Execute(cmd, wx.EXEC_ASYNC, self.process) + self.inputStream = self.process.GetOutputStream() + self.errorStream = self.process.GetErrorStream() + self.outputStream = self.process.GetInputStream() + def setCallbacks(self, output, errors, finished): + self.outputFunc = output + self.errorsFunc = errors + self.finishedFunc = finished + if self.process is not None: + self.process.CloseOutput() + if self.process is not None: + self.process.CloseOutput() + if wx.Process_Kill(self.pid, wx.SIGTERM) != wx.KILL_OK: + wx.Process_Kill(self.pid, wx.SIGKILL) + def updateStream(self, stream, data): + if stream and stream.CanRead(): + def updateInpStream(self, stream, input): + def updateErrStream(self, stream, data): + return self.updateStream(stream, data) + def updateOutStream(self, stream, data): + return self.updateStream(stream, data) + def OnIdle(self, event=None): + if self.process is not None: + self.updateInpStream(self.inputStream, self.input) + e = self.updateErrStream(self.errorStream, self.errors) + if e is not None and self.errorsFunc is not None: + wx.CallAfter(self.errorsFunc, e) + o = self.updateOutStream(self.outputStream, self.output) + if o is not None and self.outputFunc is not None: + wx.CallAfter(self.outputFunc, o) + def OnProcessEnded(self, event): + pid,exitcode = event.GetPid(), event.GetExitCode() + #self.handler.Disconnect(-1, wx.EVT_IDLE) + wx.CallAfter(self.finishedFunc, pid, exitcode) +class ProcessRunner(wx.EvtHandler, ProcessRunnerMix): + def __init__(self, input): + wx.EvtHandler.__init__(self) + ProcessRunnerMix.__init__(self, input) +def wxPopen3(cmd, input, output, errors, finish, handler=None): + p = ProcessRunnerMix(input, handler) + p.setCallbacks(output, errors, finish) \ No newline at end of file