352 temp_root.setTargetType(target) |
352 temp_root.setTargetType(target) |
353 target_name = self.GetDefaultTargetName() |
353 target_name = self.GetDefaultTargetName() |
354 target.setcontent(self.Parser.CreateElement(target_name, "TargetType")) |
354 target.setcontent(self.Parser.CreateElement(target_name, "TargetType")) |
355 return target |
355 return target |
356 |
356 |
357 def GetParamsAttributes(self, path = None): |
357 def GetParamsAttributes(self, path=None): |
358 params = ConfigTreeNode.GetParamsAttributes(self, path) |
358 params = ConfigTreeNode.GetParamsAttributes(self, path) |
359 if params[0]["name"] == "BeremizRoot": |
359 if params[0]["name"] == "BeremizRoot": |
360 for child in params[0]["children"]: |
360 for child in params[0]["children"]: |
361 if child["name"] == "TargetType" and child["value"] == '': |
361 if child["name"] == "TargetType" and child["value"] == '': |
362 child.update(self.GetTarget().getElementInfos("TargetType")) |
362 child.update(self.GetTarget().getElementInfos("TargetType")) |
458 # Load PLCOpen file |
458 # Load PLCOpen file |
459 error = self.OpenXMLFile(plc_file) |
459 error = self.OpenXMLFile(plc_file) |
460 if error is not None: |
460 if error is not None: |
461 if self.Project is not None: |
461 if self.Project is not None: |
462 (fname_err, lnum, src) = (("PLC",) + error) |
462 (fname_err, lnum, src) = (("PLC",) + error) |
463 self.logger.write_warning(XSDSchemaErrorMessage.format(a1 = fname_err, a2 = lnum, a3 = src)) |
463 self.logger.write_warning(XSDSchemaErrorMessage.format(a1=fname_err, a2=lnum, a3=src)) |
464 else: |
464 else: |
465 return error, False |
465 return error, False |
466 if len(self.GetProjectConfigNames()) == 0: |
466 if len(self.GetProjectConfigNames()) == 0: |
467 self.AddProjectDefaultConfiguration() |
467 self.AddProjectDefaultConfiguration() |
468 # Change XSD into class members |
468 # Change XSD into class members |
1204 self._IECCodeView.SetKeywords(IEC_KEYWORDS) |
1204 self._IECCodeView.SetKeywords(IEC_KEYWORDS) |
1205 try: |
1205 try: |
1206 text = file(plc_file).read() |
1206 text = file(plc_file).read() |
1207 except: |
1207 except: |
1208 text = '(* No IEC code have been generated at that time ! *)' |
1208 text = '(* No IEC code have been generated at that time ! *)' |
1209 self._IECCodeView.SetText(text = text) |
1209 self._IECCodeView.SetText(text=text) |
1210 self._IECCodeView.Editor.SetReadOnly(True) |
1210 self._IECCodeView.Editor.SetReadOnly(True) |
1211 self._IECCodeView.SetIcon(GetBitmap("ST")) |
1211 self._IECCodeView.SetIcon(GetBitmap("ST")) |
1212 setattr(self._IECCodeView, "_OnClose", self.OnCloseEditor) |
1212 setattr(self._IECCodeView, "_OnClose", self.OnCloseEditor) |
1213 |
1213 |
1214 if self._IECCodeView is not None: |
1214 if self._IECCodeView is not None: |
1371 "Broken": _("Broken"), |
1371 "Broken": _("Broken"), |
1372 "Disconnected": _("Disconnected") |
1372 "Disconnected": _("Disconnected") |
1373 } |
1373 } |
1374 return msgs.get(status, status) |
1374 return msgs.get(status, status) |
1375 |
1375 |
1376 def ShowPLCProgress(self, status = "", progress = 0): |
1376 def ShowPLCProgress(self, status="", progress=0): |
1377 self.AppFrame.ProgressStatusBar.Show() |
1377 self.AppFrame.ProgressStatusBar.Show() |
1378 self.AppFrame.ConnectionStatusBar.SetStatusText(self.GetTextStatus(status), 1) |
1378 self.AppFrame.ConnectionStatusBar.SetStatusText(self.GetTextStatus(status), 1) |
1379 self.AppFrame.ProgressStatusBar.SetValue(progress) |
1379 self.AppFrame.ProgressStatusBar.SetValue(progress) |
1380 |
1380 |
1381 def HidePLCProgress(self): |
1381 def HidePLCProgress(self): |
1444 # If an output location var is forced it's leads to segmentation fault in runtime |
1444 # If an output location var is forced it's leads to segmentation fault in runtime |
1445 # Links between PLC located variables and real variables are not ready |
1445 # Links between PLC located variables and real variables are not ready |
1446 if self.IsPLCStarted(): |
1446 if self.IsPLCStarted(): |
1447 # Timer to prevent rapid-fire when registering many variables |
1447 # Timer to prevent rapid-fire when registering many variables |
1448 # use wx.CallAfter use keep using same thread. TODO : use wx.Timer instead |
1448 # use wx.CallAfter use keep using same thread. TODO : use wx.Timer instead |
1449 self.DebugTimer = Timer(0.5, wx.CallAfter, args = [self.RegisterDebugVarToConnector]) |
1449 self.DebugTimer = Timer(0.5, wx.CallAfter, args=[self.RegisterDebugVarToConnector]) |
1450 # Rearm anti-rapid-fire timer |
1450 # Rearm anti-rapid-fire timer |
1451 self.DebugTimer.start() |
1451 self.DebugTimer.start() |
1452 |
1452 |
1453 def GetDebugIECVariableType(self, IECPath): |
1453 def GetDebugIECVariableType(self, IECPath): |
1454 Idx, IEC_Type = self._IECPathToIdx.get(IECPath, (None, None)) |
1454 Idx, IEC_Type = self._IECPathToIdx.get(IECPath, (None, None)) |