plugger.py
changeset 466 11263fd24566
parent 465 67d32a91d70b
child 468 d750151bd6ae
equal deleted inserted replaced
465:67d32a91d70b 466:11263fd24566
   753 
   753 
   754         self.MandatoryParams = None
   754         self.MandatoryParams = None
   755         self.SetAppFrame(frame, logger)
   755         self.SetAppFrame(frame, logger)
   756         self._builder = None
   756         self._builder = None
   757         self._connector = None
   757         self._connector = None
   758         self.Deleting = False
       
   759         
   758         
   760         self.iec2c_path = os.path.join(base_folder, "matiec", "iec2c"+exe_ext)
   759         self.iec2c_path = os.path.join(base_folder, "matiec", "iec2c"+exe_ext)
   761         self.ieclib_path = os.path.join(base_folder, "matiec", "lib")
   760         self.ieclib_path = os.path.join(base_folder, "matiec", "lib")
   762         
   761         
   763         # Setup debug information
   762         # Setup debug information
   786         # copy PluginMethods so that it can be later customized
   785         # copy PluginMethods so that it can be later customized
   787         self.PluginMethods = [dic.copy() for dic in self.PluginMethods]
   786         self.PluginMethods = [dic.copy() for dic in self.PluginMethods]
   788         self.LoadSTLibrary()
   787         self.LoadSTLibrary()
   789 
   788 
   790     def __del__(self):
   789     def __del__(self):
   791         self.Deleting = True
   790         if self.DebugTimer:
       
   791             self.DebugTimer.cancel()
       
   792         self.KillDebugThread()
   792 
   793 
   793     def SetAppFrame(self, frame, logger):
   794     def SetAppFrame(self, frame, logger):
   794         self.AppFrame = frame
   795         self.AppFrame = frame
   795         self.logger = logger
   796         self.logger = logger
   796         self.StatusTimer = None
   797         self.StatusTimer = None
  1612 
  1613 
  1613     def ReArmDebugRegisterTimer(self):
  1614     def ReArmDebugRegisterTimer(self):
  1614         if self.DebugTimer is not None:
  1615         if self.DebugTimer is not None:
  1615             self.DebugTimer.cancel()
  1616             self.DebugTimer.cancel()
  1616 
  1617 
  1617         if not self.Deleting:
  1618         # Timer to prevent rapid-fire when registering many variables
  1618             # Timer to prevent rapid-fire when registering many variables
  1619         # use wx.CallAfter use keep using same thread. TODO : use wx.Timer instead
  1619             # use wx.CallAfter use keep using same thread. TODO : use wx.Timer instead
  1620         self.DebugTimer=Timer(0.5,wx.CallAfter,args = [self.RegisterDebugVarToConnector])
  1620             self.DebugTimer=Timer(0.5,wx.CallAfter,args = [self.RegisterDebugVarToConnector])
  1621         # Rearm anti-rapid-fire timer
  1621             # Rearm anti-rapid-fire timer
  1622         self.DebugTimer.start()
  1622             self.DebugTimer.start()
       
  1623 
  1623 
  1624     def GetDebugIECVariableType(self, IECPath):
  1624     def GetDebugIECVariableType(self, IECPath):
  1625         Idx, IEC_Type = self._IECPathToIdx.get(IECPath,(None,None))
  1625         Idx, IEC_Type = self._IECPathToIdx.get(IECPath,(None,None))
  1626         return IEC_Type
  1626         return IEC_Type
  1627         
  1627         
  1723                     self.debug_break = True
  1723                     self.debug_break = True
  1724             self.IECdebug_lock.release()
  1724             self.IECdebug_lock.release()
  1725 
  1725 
  1726     def KillDebugThread(self):
  1726     def KillDebugThread(self):
  1727         self.debug_break = True
  1727         self.debug_break = True
  1728         self.DebugThread.join(timeout=1)
  1728         if self.DebugThread is not None:
  1729         if self.DebugThread.isAlive():
  1729             self.DebugThread.join(timeout=1)
  1730             self.logger.write_warning(_("Debug Thread couldn't be killed"))
  1730             if self.DebugThread.isAlive() and self.logger:
       
  1731                 self.logger.write_warning(_("Debug Thread couldn't be killed"))
  1731         self.DebugThread = None
  1732         self.DebugThread = None
  1732 
  1733 
  1733     def _connect_debug(self): 
  1734     def _connect_debug(self): 
  1734         if self.AppFrame:
  1735         if self.AppFrame:
  1735             self.AppFrame.ResetGraphicViewers()
  1736             self.AppFrame.ResetGraphicViewers()