runtime/PLCObject.py
changeset 319 bdd82ac65f5d
parent 302 d962b3d503b5
child 322 b8ae0580565c
equal deleted inserted replaced
318:b24790c748ae 319:bdd82ac65f5d
   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