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() |