191 # or even call _PythonThreadProc itself. |
191 # or even call _PythonThreadProc itself. |
192 if os.path.exists(hmifile): |
192 if os.path.exists(hmifile): |
193 execfile(hmifile, self.python_threads_vars) |
193 execfile(hmifile, self.python_threads_vars) |
194 execfile(pyfile, self.python_threads_vars) |
194 execfile(pyfile, self.python_threads_vars) |
195 try: |
195 try: |
196 wx = self.python_threads_vars['wx'] |
196 if self.python_threads_vars.has_key('wx'): |
197 # try to instanciate the first frame found. |
197 wx = self.python_threads_vars['wx'] |
198 for name, obj in self.python_threads_vars.iteritems(): |
198 # try to instanciate the first frame found. |
199 # obj is a class |
199 for name, obj in self.python_threads_vars.iteritems(): |
200 if type(obj)==type(type) and issubclass(obj,wx.Frame): |
200 # obj is a class |
201 def create_frame(): |
201 if type(obj)==type(type) and issubclass(obj,wx.Frame): |
202 self.hmi_frame = obj(None) |
202 def create_frame(): |
203 self.python_threads_vars[name] = self.hmi_frame |
203 self.hmi_frame = obj(None) |
204 # keep track of class... never know |
204 self.python_threads_vars[name] = self.hmi_frame |
205 self.python_threads_vars['Class_'+name] = obj |
205 # keep track of class... never know |
206 self.hmi_frame.Bind(wx.EVT_CLOSE, OnCloseFrame) |
206 self.python_threads_vars['Class_'+name] = obj |
207 self.hmi_frame.Show() |
207 self.hmi_frame.Bind(wx.EVT_CLOSE, OnCloseFrame) |
208 |
208 self.hmi_frame.Show() |
209 def OnCloseFrame(evt): |
209 |
210 self.hmi_frame.Destroy() |
210 def OnCloseFrame(evt): |
211 self.hmi_frame = None |
211 self.hmi_frame.Destroy() |
212 wx.MessageBox("Please stop PLC to close") |
212 self.hmi_frame = None |
213 #wx.CallAfter(self.StopPLC) |
213 wx.MessageBox("Please stop PLC to close") |
214 create_frame() |
214 #wx.CallAfter(self.StopPLC) |
215 #evt.Skip() |
215 create_frame() |
216 create_frame() |
216 #evt.Skip() |
217 break |
217 create_frame() |
|
218 break |
218 except: |
219 except: |
219 PLCprint(traceback.format_exc()) |
220 PLCprint(traceback.format_exc()) |
220 except: |
221 except: |
221 PLCprint(traceback.format_exc()) |
222 PLCprint(traceback.format_exc()) |
222 |
223 |