plugger.py
changeset 677 607731b33026
parent 676 04cd443cd18d
child 683 57aa9da845d5
equal deleted inserted replaced
676:04cd443cd18d 677:607731b33026
  1257         # if target already 
  1257         # if target already 
  1258         if self._builder is None or not isinstance(self._builder,targetclass):
  1258         if self._builder is None or not isinstance(self._builder,targetclass):
  1259             # Get classname instance
  1259             # Get classname instance
  1260             self._builder = targetclass(self)
  1260             self._builder = targetclass(self)
  1261         return self._builder
  1261         return self._builder
       
  1262 
       
  1263     def ResetBuildMD5(self):
       
  1264         builder=self.GetBuilder()
       
  1265         if builder is not None:
       
  1266             builder.ResetBinaryCodeMD5()
       
  1267         self.EnableMethod("_Transfer", False)
  1262 
  1268 
  1263     def GetLastBuildMD5(self):
  1269     def GetLastBuildMD5(self):
  1264         builder=self.GetBuilder()
  1270         builder=self.GetBuilder()
  1265         if builder is not None:
  1271         if builder is not None:
  1266             return builder.GetBinaryCodeMD5()
  1272             return builder.GetBinaryCodeMD5()
  1465         self.ShowMethod("_showIECcode", True)
  1471         self.ShowMethod("_showIECcode", True)
  1466 
  1472 
  1467         # If IEC code gen fail, bail out.
  1473         # If IEC code gen fail, bail out.
  1468         if not IECGenRes:
  1474         if not IECGenRes:
  1469             self.logger.write_error(_("IEC-61131-3 code generation failed !\n"))
  1475             self.logger.write_error(_("IEC-61131-3 code generation failed !\n"))
  1470             self.EnableMethod("_Transfer", False)
  1476             self.ResetBuildMD5()
  1471             return False
  1477             return False
  1472 
  1478 
  1473         # Reset variable and program list that are parsed from
  1479         # Reset variable and program list that are parsed from
  1474         # CSV file generated by IEC2C compiler.
  1480         # CSV file generated by IEC2C compiler.
  1475         self.ResetIECProgramsAndVariables()
  1481         self.ResetIECProgramsAndVariables()
  1481                 buildpath, 
  1487                 buildpath, 
  1482                 self.PLCGeneratedLocatedVars)
  1488                 self.PLCGeneratedLocatedVars)
  1483         except Exception, exc:
  1489         except Exception, exc:
  1484             self.logger.write_error(_("Plugins code generation failed !\n"))
  1490             self.logger.write_error(_("Plugins code generation failed !\n"))
  1485             self.logger.write_error(traceback.format_exc())
  1491             self.logger.write_error(traceback.format_exc())
  1486             self.EnableMethod("_Transfer", False)
  1492             self.ResetBuildMD5()
  1487             return False
  1493             return False
  1488 
  1494 
  1489         # Get temporary directory path
  1495         # Get temporary directory path
  1490         extrafilespath = self._getExtraFilesPath()
  1496         extrafilespath = self._getExtraFilesPath()
  1491         # Remove old directory
  1497         # Remove old directory
  1517                 # Insert this file as first file to be compiled at root plugin
  1523                 # Insert this file as first file to be compiled at root plugin
  1518                 self.LocationCFilesAndCFLAGS[0][1].insert(0,(code_path, self.plcCFLAGS))
  1524                 self.LocationCFilesAndCFLAGS[0][1].insert(0,(code_path, self.plcCFLAGS))
  1519             except Exception, exc:
  1525             except Exception, exc:
  1520                 self.logger.write_error(name+_(" generation failed !\n"))
  1526                 self.logger.write_error(name+_(" generation failed !\n"))
  1521                 self.logger.write_error(traceback.format_exc())
  1527                 self.logger.write_error(traceback.format_exc())
  1522                 self.EnableMethod("_Transfer", False)
  1528                 self.ResetBuildMD5()
  1523                 return False
  1529                 return False
  1524 
  1530 
  1525         self.logger.write(_("C code generated successfully.\n"))
  1531         self.logger.write(_("C code generated successfully.\n"))
  1526 
  1532 
  1527         # Get current or fresh builder
  1533         # Get current or fresh builder
  1528         builder = self.GetBuilder()
  1534         builder = self.GetBuilder()
  1529         if builder is None:
  1535         if builder is None:
  1530             self.logger.write_error(_("Fatal : cannot get builder.\n"))
  1536             self.logger.write_error(_("Fatal : cannot get builder.\n"))
  1531             self.EnableMethod("_Transfer", False)
  1537             self.ResetBuildMD5()
  1532             return False
  1538             return False
  1533 
  1539 
  1534         # Build
  1540         # Build
  1535         try:
  1541         try:
  1536             if not builder.build() :
  1542             if not builder.build() :
  1537                 self.logger.write_error(_("C Build failed.\n"))
  1543                 self.logger.write_error(_("C Build failed.\n"))
  1538                 return False
  1544                 return False
  1539         except Exception, exc:
  1545         except Exception, exc:
  1540             self.logger.write_error(_("C Build crashed !\n"))
  1546             self.logger.write_error(_("C Build crashed !\n"))
  1541             self.logger.write_error(traceback.format_exc())
  1547             self.logger.write_error(traceback.format_exc())
  1542             self.EnableMethod("_Transfer", False)
  1548             self.ResetBuildMD5()
  1543             return False
  1549             return False
  1544 
  1550 
  1545         self.logger.write(_("Successfully built.\n"))
  1551         self.logger.write(_("Successfully built.\n"))
  1546         # Update GUI status about need for transfer
  1552         # Update GUI status about need for transfer
  1547         self.CompareLocalAndRemotePLC()
  1553         self.CompareLocalAndRemotePLC()