equal
deleted
inserted
replaced
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() |