411 setattr(cls, "setVars", setVars) |
411 setattr(cls, "setVars", setVars) |
412 |
412 |
413 def addPouVar(self, type, name): |
413 def addPouVar(self, type, name): |
414 content = self.interface.getContent() |
414 content = self.interface.getContent() |
415 if len(content) == 0 or content[-1]["name"] != "localVars": |
415 if len(content) == 0 or content[-1]["name"] != "localVars": |
416 self.interface.appendContent("localVars", PLCOpenClasses["varList"]()) |
416 content.append({"name" : "localVars", "value" : PLCOpenClasses["varList"]()}) |
|
417 else: |
|
418 varlist = content[-1]["value"] |
|
419 variables = varlist.getVariable() |
|
420 if varlist.getConstant() or varlist.getRetain() or len(variables) > 0 and variables[0].getAddress(): |
|
421 content.append({"name" : "localVars", "value" : PLCOpenClasses["varList"]()}) |
417 var = PLCOpenClasses["varListPlain_variable"]() |
422 var = PLCOpenClasses["varListPlain_variable"]() |
418 var.setName(name) |
423 var.setName(name) |
419 var_type = PLCOpenClasses["dataType"]() |
424 var_type = PLCOpenClasses["dataType"]() |
420 derived_type = PLCOpenClasses["derived"]() |
425 derived_type = PLCOpenClasses["derived"]() |
421 derived_type.setName(type) |
426 derived_type.setName(type) |
436 break |
441 break |
437 if len(varlist["value"].getVariable()) == 0: |
442 if len(varlist["value"].getVariable()) == 0: |
438 content.remove(varlist) |
443 content.remove(varlist) |
439 break |
444 break |
440 setattr(cls, "removePouVar", removePouVar) |
445 setattr(cls, "removePouVar", removePouVar) |
441 |
446 |
|
447 def hasBlock(self, name): |
|
448 if self.getBodyType() in ["FBD", "LD", "SFC"]: |
|
449 for instance in self.getInstances(): |
|
450 if isinstance(instance, PLCOpenClasses["block"]) and instance.getInstanceName() == name: |
|
451 return True |
|
452 for transition in self.transitions.getTransition(): |
|
453 result = transition.hasBlock(name) |
|
454 if result: |
|
455 return result |
|
456 for action in self.actions.getAction(): |
|
457 result = action.hasBlock(name) |
|
458 if result: |
|
459 return result |
|
460 return False |
|
461 setattr(cls, "hasBlock", hasBlock) |
|
462 |
442 def addTransition(self, name, type): |
463 def addTransition(self, name, type): |
443 if not self.transitions: |
464 if not self.transitions: |
444 self.addTransitions() |
465 self.addTransitions() |
445 self.transitions.setTransition([]) |
466 self.transitions.setTransition([]) |
446 transition = PLCOpenClasses["transitions_transition"]() |
467 transition = PLCOpenClasses["transitions_transition"]() |
538 |
559 |
539 def updateElementName(self, old_name, new_name): |
560 def updateElementName(self, old_name, new_name): |
540 self.body.updateElementName(old_name, new_name) |
561 self.body.updateElementName(old_name, new_name) |
541 setattr(cls, "updateElementName", updateElementName) |
562 setattr(cls, "updateElementName", updateElementName) |
542 |
563 |
|
564 def hasBlock(self, name): |
|
565 if self.getBodyType() in ["FBD", "LD", "SFC"]: |
|
566 for instance in self.getInstances(): |
|
567 if isinstance(instance, PLCOpenClasses["block"]) and instance.getInstanceName() == name: |
|
568 return True |
|
569 return False |
|
570 setattr(cls, "hasBlock", hasBlock) |
|
571 |
543 cls = PLCOpenClasses.get("actions_action", None) |
572 cls = PLCOpenClasses.get("actions_action", None) |
544 if cls: |
573 if cls: |
545 setattr(cls, "setBodyType", setBodyType) |
574 setattr(cls, "setBodyType", setBodyType) |
546 setattr(cls, "getBodyType", getBodyType) |
575 setattr(cls, "getBodyType", getBodyType) |
547 setattr(cls, "addInstance", addInstance) |
576 setattr(cls, "addInstance", addInstance) |
554 setattr(cls, "getText", getText) |
583 setattr(cls, "getText", getText) |
555 |
584 |
556 def updateElementName(self, old_name, new_name): |
585 def updateElementName(self, old_name, new_name): |
557 self.body.updateElementName(old_name, new_name) |
586 self.body.updateElementName(old_name, new_name) |
558 setattr(cls, "updateElementName", updateElementName) |
587 setattr(cls, "updateElementName", updateElementName) |
|
588 |
|
589 def hasBlock(self, name): |
|
590 if self.getBodyType() in ["FBD", "LD", "SFC"]: |
|
591 for instance in self.getInstances(): |
|
592 if isinstance(instance, PLCOpenClasses["block"]) and instance.getInstanceName() == name: |
|
593 return True |
|
594 return False |
|
595 setattr(cls, "hasBlock", hasBlock) |
559 |
596 |
560 cls = PLCOpenClasses.get("body", None) |
597 cls = PLCOpenClasses.get("body", None) |
561 if cls: |
598 if cls: |
562 def appendContentInstance(self, name, instance): |
599 def appendContentInstance(self, name, instance): |
563 if self.content["name"] in ["LD","FBD","SFC"]: |
600 if self.content["name"] in ["LD","FBD","SFC"]: |