# HG changeset patch # User Andrey Skvortsov # Date 1477664502 -10800 # Node ID dac6002ff58e4e1f05cc045005a1d24c2280d750 # Parent 01d2c8a8a928a3cd374c847ff1d4057aeed3809d fix issue with non-updated button 'generated IECCode' after Build and Clean diff -r 01d2c8a8a928 -r dac6002ff58e ProjectController.py --- a/ProjectController.py Thu Oct 27 17:07:44 2016 +0300 +++ b/ProjectController.py Fri Oct 28 17:21:42 2016 +0300 @@ -381,15 +381,7 @@ #Load and init all the children self.LoadChildren() self.RefreshConfNodesBlockLists() - - if os.path.exists(self._getBuildPath()): - self.EnableMethod("_Clean", True) - - if os.path.isfile(self._getIECcodepath()): - self.ShowMethod("_showIECcode", True) - - self.UpdateMethodsFromPLCStatus() - + self.UpdateButtons() return None def RecursiveConfNodeInfos(self, confnode): @@ -971,15 +963,13 @@ # Eventually create build dir if not os.path.exists(buildpath): os.mkdir(buildpath) - # There is something to clean - self.EnableMethod("_Clean", True) self.logger.flush() self.logger.write(_("Start build in %s\n") % buildpath) # Generate SoftPLC IEC code IECGenRes = self._Generate_SoftPLC() - self.ShowMethod("_showIECcode", True) + self.UpdateButtons() # If IEC code gen fail, bail out. if not IECGenRes: @@ -1221,18 +1211,28 @@ shutil.rmtree(os.path.join(self._getBuildPath())) else: self.logger.write_error(_("Build directory already clean\n")) - self.ShowMethod("_showIECcode", False) - self.EnableMethod("_Clean", False) # kill the builder self._builder = None self.CompareLocalAndRemotePLC() - + self.UpdateButtons() + + def _UpdateButtons(self): + self.EnableMethod("_Clean", os.path.exists(self._getBuildPath())) + self.ShowMethod("_showIECcode", os.path.isfile(self._getIECcodepath())) + if not self.UpdateMethodsFromPLCStatus(): + self.AppFrame.RefreshStatusToolBar() + + def UpdateButtons(self): + wx.CallAfter(self._UpdateButtons) + + def UpdatePLCLog(self, log_count): if log_count: if self.AppFrame is not None: self.AppFrame.LogViewer.SetLogCounters(log_count) def UpdateMethodsFromPLCStatus(self): + updated = False status = None if self._connector is not None: PLCstatus = self._connector.GetPLCstatus() @@ -1260,6 +1260,7 @@ self.ShowMethod(*args) self.previous_plcstate = status if self.AppFrame is not None: + updated = True self.AppFrame.RefreshStatusToolBar() if status == "Disconnected": self.AppFrame.ConnectionStatusBar.SetStatusText(_(status), 1) @@ -1268,6 +1269,7 @@ self.AppFrame.ConnectionStatusBar.SetStatusText( _("Connected to URI: %s") % self.BeremizRoot.getURI_location().strip(), 1) self.AppFrame.ConnectionStatusBar.SetStatusText(_(status), 2) + return updated def PullPLCStatusProc(self, event): self.UpdateMethodsFromPLCStatus()