377 self.type = new_name |
350 self.type = new_name |
378 setattr(cls, "updateElementName", updateElementName) |
351 setattr(cls, "updateElementName", updateElementName) |
379 |
352 |
380 cls = PLCOpenClasses.get("project_types", None) |
353 cls = PLCOpenClasses.get("project_types", None) |
381 if cls: |
354 if cls: |
382 def getDataTypeElements(self): |
355 def getdataTypeElements(self): |
383 return self.dataTypes.getDataType() |
356 return self.dataTypes.getdataType() |
384 setattr(cls, "getDataTypeElements", getDataTypeElements) |
357 setattr(cls, "getdataTypeElements", getdataTypeElements) |
385 |
358 |
386 def getDataTypeElement(self, name): |
359 def getdataTypeElement(self, name): |
387 elements = self.dataTypes.getDataType() |
360 elements = self.dataTypes.getdataType() |
388 for element in elements: |
361 for element in elements: |
389 if element.getName() == name: |
362 if element.getname() == name: |
390 return element |
363 return element |
391 return None |
364 return None |
392 setattr(cls, "getDataTypeElement", getDataTypeElement) |
365 setattr(cls, "getdataTypeElement", getdataTypeElement) |
393 |
366 |
394 def appendDataTypeElement(self, name): |
367 def appenddataTypeElement(self, name): |
395 for element in self.dataTypes.getDataType(): |
368 for element in self.dataTypes.getdataType(): |
396 if element.getName() == name: |
369 if element.getname() == name: |
397 raise ValueError, "\"%s\" Data Type already exists !!!"%name |
370 raise ValueError, "\"%s\" Data Type already exists !!!"%name |
398 new_datatype = PLCOpenClasses["dataTypes_dataType"]() |
371 new_datatype = PLCOpenClasses["dataTypes_dataType"]() |
399 new_datatype.setName(name) |
372 new_datatype.setname(name) |
400 new_datatype.baseType.setContent("BOOL", None) |
373 new_datatype.baseType.setcontent({"name" : "BOOL", "value" : None}) |
401 self.dataTypes.appendDataType(new_datatype) |
374 self.dataTypes.appenddataType(new_datatype) |
402 setattr(cls, "appendDataTypeElement", appendDataTypeElement) |
375 setattr(cls, "appenddataTypeElement", appenddataTypeElement) |
403 |
376 |
404 def insertDataTypeElement(self, index, datatype): |
377 def insertdataTypeElement(self, index, dataType): |
405 self.dataTypes.insertDataType(index, datatype) |
378 self.dataTypes.insertdataType(index, dataType) |
406 setattr(cls, "insertDataTypeElement", insertDataTypeElement) |
379 setattr(cls, "insertdataTypeElement", insertdataTypeElement) |
407 |
380 |
408 def removeDataTypeElement(self, name): |
381 def removedataTypeElement(self, name): |
409 found = False |
382 found = False |
410 for idx, element in enumerate(self.dataTypes.getDataType()): |
383 for idx, element in enumerate(self.dataTypes.getdataType()): |
411 if element.getName() == name: |
384 if element.getname() == name: |
412 self.dataTypes.removeDataType(idx) |
385 self.dataTypes.removedataType(idx) |
413 found = True |
386 found = True |
414 break |
387 break |
415 if not found: |
388 if not found: |
416 raise ValueError, "\"%s\" Data Type doesn't exist !!!"%name |
389 raise ValueError, "\"%s\" Data Type doesn't exist !!!"%name |
417 setattr(cls, "removeDataTypeElement", removeDataTypeElement) |
390 setattr(cls, "removedataTypeElement", removedataTypeElement) |
418 |
391 |
419 def getPouElements(self): |
392 def getpouElements(self): |
420 return self.pous.getPou() |
393 return self.pous.getpou() |
421 setattr(cls, "getPouElements", getPouElements) |
394 setattr(cls, "getpouElements", getpouElements) |
422 |
395 |
423 def getPouElement(self, name): |
396 def getpouElement(self, name): |
424 elements = self.pous.getPou() |
397 elements = self.pous.getpou() |
425 for element in elements: |
398 for element in elements: |
426 if element.getName() == name: |
399 if element.getname() == name: |
427 return element |
400 return element |
428 return None |
401 return None |
429 setattr(cls, "getPouElement", getPouElement) |
402 setattr(cls, "getpouElement", getpouElement) |
430 |
403 |
431 def appendPouElement(self, name, pou_type, body_type): |
404 def appendpouElement(self, name, pou_type, body_type): |
432 for element in self.pous.getPou(): |
405 for element in self.pous.getpou(): |
433 if element.getName() == name: |
406 if element.getname() == name: |
434 raise ValueError, "\"%s\" POU already exists !!!"%name |
407 raise ValueError, "\"%s\" POU already exists !!!"%name |
435 new_pou = PLCOpenClasses["pous_pou"]() |
408 new_pou = PLCOpenClasses["pous_pou"]() |
436 new_pou.setName(name) |
409 new_pou.setname(name) |
437 new_pou.pouType.setValue(pou_type) |
410 new_pou.setpouType(pou_type) |
438 new_pou.setBody(PLCOpenClasses["body"]()) |
411 new_pou.setbody(PLCOpenClasses["body"]()) |
439 new_pou.setBodyType(body_type) |
412 new_pou.setbodyType(body_type) |
440 self.pous.appendPou(new_pou) |
413 self.pous.appendpou(new_pou) |
441 setattr(cls, "appendPouElement", appendPouElement) |
414 setattr(cls, "appendpouElement", appendpouElement) |
442 |
415 |
443 def insertPouElement(self, index, pou): |
416 def insertpouElement(self, index, pou): |
444 self.pous.insertPou(index, pou) |
417 self.pous.insertpou(index, pou) |
445 setattr(cls, "insertPouElement", insertPouElement) |
418 setattr(cls, "insertpouElement", insertpouElement) |
446 |
419 |
447 def removePouElement(self, name): |
420 def removepouElement(self, name): |
448 found = False |
421 found = False |
449 for idx, element in enumerate(self.pous.getPou()): |
422 for idx, element in enumerate(self.pous.getpou()): |
450 if element.getName() == name: |
423 if element.getname() == name: |
451 self.pous.removePou(idx) |
424 self.pous.removepou(idx) |
452 found = True |
425 found = True |
453 break |
426 break |
454 if not found: |
427 if not found: |
455 raise ValueError, "\"%s\" POU doesn't exist !!!"%name |
428 raise ValueError, "\"%s\" POU doesn't exist !!!"%name |
456 setattr(cls, "removePouElement", removePouElement) |
429 setattr(cls, "removepouElement", removepouElement) |
457 |
430 |
458 def setBodyType(self, type): |
431 def setbodyType(self, type): |
459 if type == "IL": |
432 if type == "IL": |
460 self.body.setContent("IL", PLCOpenClasses["formattedText"]()) |
433 self.body.setcontent({"name" : "IL", "value" : PLCOpenClasses["formattedText"]()}) |
461 elif type == "ST": |
434 elif type == "ST": |
462 self.body.setContent("ST", PLCOpenClasses["formattedText"]()) |
435 self.body.setcontent({"name" : "ST", "value" : PLCOpenClasses["formattedText"]()}) |
463 elif type == "LD": |
436 elif type == "LD": |
464 self.body.setContent("LD", PLCOpenClasses["body_LD"]()) |
437 self.body.setcontent({"name" : "LD", "value" : PLCOpenClasses["body_LD"]()}) |
465 elif type == "FBD": |
438 elif type == "FBD": |
466 self.body.setContent("FBD", PLCOpenClasses["body_FBD"]()) |
439 self.body.setcontent({"name" : "FBD", "value" : PLCOpenClasses["body_FBD"]()}) |
467 elif type == "SFC": |
440 elif type == "SFC": |
468 self.body.setContent("SFC", PLCOpenClasses["body_SFC"]()) |
441 self.body.setcontent({"name" : "SFC", "value" : PLCOpenClasses["body_SFC"]()}) |
469 else: |
442 else: |
470 raise ValueError, "%s isn't a valid body type!"%type |
443 raise ValueError, "%s isn't a valid body type!"%type |
471 |
444 |
472 def getBodyType(self): |
445 def getbodyType(self): |
473 return self.body.getContent()["name"] |
446 return self.body.getcontent()["name"] |
474 |
447 |
475 def resetExecutionOrder(self): |
448 def resetexecutionOrder(self): |
476 self.body.resetExecutionOrder() |
449 self.body.resetexecutionOrder() |
477 |
450 |
478 def compileExecutionOrder(self): |
451 def compileexecutionOrder(self): |
479 self.body.compileExecutionOrder() |
452 self.body.compileexecutionOrder() |
480 |
453 |
481 def setElementExecutionOrder(self, instance, new_executionOrder): |
454 def setelementExecutionOrder(self, instance, new_executionOrder): |
482 self.body.setElementExecutionOrder(instance, new_executionOrder) |
455 self.body.setelementExecutionOrder(instance, new_executionOrder) |
483 |
456 |
484 def addInstance(self, name, instance): |
457 def addinstance(self, name, instance): |
485 self.body.appendContentInstance(name, instance) |
458 self.body.appendcontentInstance(name, instance) |
486 |
459 |
487 def getInstances(self): |
460 def getinstances(self): |
488 return self.body.getContentInstances() |
461 return self.body.getcontentInstances() |
489 |
462 |
490 def getInstance(self, id): |
463 def getinstance(self, id): |
491 return self.body.getContentInstance(id) |
464 return self.body.getcontentInstance(id) |
492 |
465 |
493 def getRandomInstance(self, exclude): |
466 def getrandomInstance(self, exclude): |
494 return self.body.getContentRandomInstance(exclude) |
467 return self.body.getcontentRandomInstance(exclude) |
495 |
468 |
496 def getInstanceByName(self, name): |
469 def getinstanceByName(self, name): |
497 return self.body.getContentInstanceByName(name) |
470 return self.body.getcontentInstanceByName(name) |
498 |
471 |
499 def removeInstance(self, id): |
472 def removeinstance(self, id): |
500 self.body.removeContentInstance(id) |
473 self.body.removecontentInstance(id) |
501 |
474 |
502 def setText(self, text): |
475 def settext(self, text): |
503 self.body.setText(text) |
476 self.body.settext(text) |
504 |
477 |
505 def getText(self): |
478 def gettext(self): |
506 return self.body.getText() |
479 return self.body.gettext() |
507 setattr(cls, "getText", getText) |
480 setattr(cls, "gettext", gettext) |
508 |
481 |
509 cls = PLCOpenClasses.get("pous_pou", None) |
482 cls = PLCOpenClasses.get("pous_pou", None) |
510 if cls: |
483 if cls: |
511 setattr(cls, "setBodyType", setBodyType) |
484 setattr(cls, "setbodyType", setbodyType) |
512 setattr(cls, "getBodyType", getBodyType) |
485 setattr(cls, "getbodyType", getbodyType) |
513 setattr(cls, "resetExecutionOrder", resetExecutionOrder) |
486 setattr(cls, "resetexecutionOrder", resetexecutionOrder) |
514 setattr(cls, "compileExecutionOrder", compileExecutionOrder) |
487 setattr(cls, "compileexecutionOrder", compileexecutionOrder) |
515 setattr(cls, "setElementExecutionOrder", setElementExecutionOrder) |
488 setattr(cls, "setelementExecutionOrder", setelementExecutionOrder) |
516 setattr(cls, "addInstance", addInstance) |
489 setattr(cls, "addinstance", addinstance) |
517 setattr(cls, "getInstances", getInstances) |
490 setattr(cls, "getinstances", getinstances) |
518 setattr(cls, "getInstance", getInstance) |
491 setattr(cls, "getinstance", getinstance) |
519 setattr(cls, "getRandomInstance", getRandomInstance) |
492 setattr(cls, "getrandomInstance", getrandomInstance) |
520 setattr(cls, "getInstanceByName", getInstanceByName) |
493 setattr(cls, "getinstanceByName", getinstanceByName) |
521 setattr(cls, "removeInstance", removeInstance) |
494 setattr(cls, "removeinstance", removeinstance) |
522 setattr(cls, "setText", setText) |
495 setattr(cls, "settext", settext) |
523 setattr(cls, "getText", getText) |
496 setattr(cls, "gettext", gettext) |
524 |
497 |
525 def getVars(self): |
498 def getvars(self): |
526 vars = [] |
499 vars = [] |
527 reverse_types = {} |
500 reverse_types = {} |
528 for name, value in VarTypes.items(): |
501 for name, value in VarTypes.items(): |
529 reverse_types[value] = name |
502 reverse_types[value] = name |
530 for varlist in self.interface.getContent(): |
503 for varlist in self.interface.getcontent(): |
531 vars.append((reverse_types[varlist["name"]], varlist["value"])) |
504 vars.append((reverse_types[varlist["name"]], varlist["value"])) |
532 return vars |
505 return vars |
533 setattr(cls, "getVars", getVars) |
506 setattr(cls, "getvars", getvars) |
534 |
507 |
535 def setVars(self, vars): |
508 def setvars(self, vars): |
536 self.interface.setContent([]) |
509 self.interface.setcontent([]) |
537 for vartype, varlist in vars: |
510 for vartype, varlist in vars: |
538 self.interface.appendContent(VarTypes[vartype], varlist) |
511 self.interface.appendcontent({"name" : VarTypes[vartype], "value" : varlist}) |
539 setattr(cls, "setVars", setVars) |
512 setattr(cls, "setvars", setvars) |
540 |
513 |
541 def addPouVar(self, type, name): |
514 def addpouVar(self, type, name): |
542 content = self.interface.getContent() |
515 content = self.interface.getcontent() |
543 if len(content) == 0 or content[-1]["name"] != "localVars": |
516 if len(content) == 0 or content[-1]["name"] != "localVars": |
544 content.append({"name" : "localVars", "value" : PLCOpenClasses["varList"]()}) |
517 content.append({"name" : "localVars", "value" : PLCOpenClasses["interface_localVars"]()}) |
545 else: |
518 else: |
546 varlist = content[-1]["value"] |
519 varlist = content[-1]["value"] |
547 variables = varlist.getVariable() |
520 variables = varlist.getvariable() |
548 if varlist.getConstant() or varlist.getRetain() or len(variables) > 0 and variables[0].getAddress(): |
521 if varlist.getconstant() or varlist.getretain() or len(variables) > 0 and variables[0].getaddress(): |
549 content.append({"name" : "localVars", "value" : PLCOpenClasses["varList"]()}) |
522 content.append({"name" : "localVars", "value" : PLCOpenClasses["interface_localVars"]()}) |
550 var = PLCOpenClasses["varListPlain_variable"]() |
523 var = PLCOpenClasses["varListPlain_variable"]() |
551 var.setName(name) |
524 var.setname(name) |
552 var_type = PLCOpenClasses["dataType"]() |
525 var_type = PLCOpenClasses["dataType"]() |
553 derived_type = PLCOpenClasses["derived"]() |
526 derived_type = PLCOpenClasses["derivedTypes_derived"]() |
554 derived_type.setName(type) |
527 derived_type.setname(type) |
555 var_type.setContent("derived", derived_type) |
528 var_type.setcontent({"name" : "derived", "value" : derived_type}) |
556 var.setType(var_type) |
529 var.settype(var_type) |
557 content[-1]["value"].appendVariable(var) |
530 content[-1]["value"].appendvariable(var) |
558 setattr(cls, "addPouVar", addPouVar) |
531 setattr(cls, "addpouVar", addpouVar) |
559 |
532 |
560 def changePouVar(self, old_type, old_name, new_type, new_name): |
533 def changepouVar(self, old_type, old_name, new_type, new_name): |
561 content = self.interface.getContent() |
534 content = self.interface.getcontent() |
562 for varlist in content: |
535 for varlist in content: |
563 variables = varlist["value"].getVariable() |
536 variables = varlist["value"].getvariable() |
564 for var in variables: |
537 for var in variables: |
565 if var.getName() == old_name: |
538 if var.getname() == old_name: |
566 vartype_content = var.getType().getContent() |
539 vartype_content = var.gettype().getcontent() |
567 if vartype_content["name"] == "derived" and vartype_content["value"].getName() == old_type: |
540 if vartype_content["name"] == "derived" and vartype_content["value"].getname() == old_type: |
568 var.setName(new_name) |
541 var.setname(new_name) |
569 vartype_content["value"].setName(new_type) |
542 vartype_content["value"].setname(new_type) |
570 return |
543 return |
571 setattr(cls, "changePouVar", changePouVar) |
544 setattr(cls, "changepouVar", changepouVar) |
572 |
545 |
573 def removePouVar(self, type, name): |
546 def removepouVar(self, type, name): |
574 content = self.interface.getContent() |
547 content = self.interface.getcontent() |
575 for varlist in content: |
548 for varlist in content: |
576 variables = varlist["value"].getVariable() |
549 variables = varlist["value"].getvariable() |
577 for var in variables: |
550 for var in variables: |
578 if var.getName() == name: |
551 if var.getname() == name: |
579 vartype_content = var.getType().getContent() |
552 vartype_content = var.gettype().getcontent() |
580 if vartype_content["name"] == "derived" and vartype_content["value"].getName() == type: |
553 if vartype_content["name"] == "derived" and vartype_content["value"].getname() == type: |
581 variables.remove(var) |
554 variables.remove(var) |
582 break |
555 break |
583 if len(varlist["value"].getVariable()) == 0: |
556 if len(varlist["value"].getvariable()) == 0: |
584 content.remove(varlist) |
557 content.remove(varlist) |
585 break |
558 break |
586 setattr(cls, "removePouVar", removePouVar) |
559 setattr(cls, "removepouVar", removepouVar) |
587 |
560 |
588 def hasBlock(self, name): |
561 def hasblock(self, name): |
589 if self.getBodyType() in ["FBD", "LD", "SFC"]: |
562 if self.getbodyType() in ["FBD", "LD", "SFC"]: |
590 for instance in self.getInstances(): |
563 for instance in self.getinstances(): |
591 if isinstance(instance, PLCOpenClasses["block"]) and instance.getInstanceName() == name: |
564 if isinstance(instance, PLCOpenClasses["fbdObjects_block"]) and instance.getinstanceName() == name: |
592 return True |
565 return True |
593 if self.transitions: |
566 if self.transitions: |
594 for transition in self.transitions.getTransition(): |
567 for transition in self.transitions.gettransition(): |
595 result = transition.hasBlock(name) |
568 result = transition.hasblock(name) |
596 if result: |
569 if result: |
597 return result |
570 return result |
598 if self.actions: |
571 if self.actions: |
599 for action in self.actions.getAction(): |
572 for action in self.actions.getaction(): |
600 result = action.hasBlock(name) |
573 result = action.hasblock(name) |
601 if result: |
574 if result: |
602 return result |
575 return result |
603 return False |
576 return False |
604 setattr(cls, "hasBlock", hasBlock) |
577 setattr(cls, "hasblock", hasblock) |
605 |
578 |
606 def addTransition(self, name, type): |
579 def addtransition(self, name, type): |
607 if not self.transitions: |
580 if not self.transitions: |
608 self.addTransitions() |
581 self.addtransitions() |
609 self.transitions.setTransition([]) |
582 self.transitions.settransition([]) |
610 transition = PLCOpenClasses["transitions_transition"]() |
583 transition = PLCOpenClasses["transitions_transition"]() |
611 transition.setName(name) |
584 transition.setname(name) |
612 transition.setBodyType(type) |
585 transition.setbodyType(type) |
613 self.transitions.appendTransition(transition) |
586 self.transitions.appendtransition(transition) |
614 setattr(cls, "addTransition", addTransition) |
587 setattr(cls, "addtransition", addtransition) |
615 |
588 |
616 def getTransition(self, name): |
589 def gettransition(self, name): |
617 if self.transitions: |
590 if self.transitions: |
618 for transition in self.transitions.getTransition(): |
591 for transition in self.transitions.gettransition(): |
619 if transition.getName() == name: |
592 if transition.getname() == name: |
620 return transition |
593 return transition |
621 return None |
594 return None |
622 setattr(cls, "getTransition", getTransition) |
595 setattr(cls, "gettransition", gettransition) |
623 |
596 |
624 def getTransitionList(self): |
597 def gettransitionList(self): |
625 if self.transitions: |
598 if self.transitions: |
626 return self.transitions.getTransition() |
599 return self.transitions.gettransition() |
627 return [] |
600 return [] |
628 setattr(cls, "getTransitionList", getTransitionList) |
601 setattr(cls, "gettransitionList", gettransitionList) |
629 |
602 |
630 def removeTransition(self, name): |
603 def removetransition(self, name): |
631 if self.transitions: |
604 if self.transitions: |
632 transitions = self.transitions.getTransition() |
605 transitions = self.transitions.gettransition() |
633 i = 0 |
606 i = 0 |
634 removed = False |
607 removed = False |
635 while i < len(transitions) and not removed: |
608 while i < len(transitions) and not removed: |
636 if transitions[i].getName() == name: |
609 if transitions[i].getname() == name: |
637 transitions.pop(i) |
610 transitions.pop(i) |
638 removed = True |
611 removed = True |
639 i += 1 |
612 i += 1 |
640 if not removed: |
613 if not removed: |
641 raise ValueError, "Transition with name %s doesn't exists!"%name |
614 raise ValueError, "Transition with name %s doesn't exists!"%name |
642 setattr(cls, "removeTransition", removeTransition) |
615 setattr(cls, "removetransition", removetransition) |
643 |
616 |
644 def addAction(self, name, type): |
617 def addaction(self, name, type): |
645 if not self.actions: |
618 if not self.actions: |
646 self.addActions() |
619 self.addactions() |
647 self.actions.setAction([]) |
620 self.actions.setaction([]) |
648 action = PLCOpenClasses["actions_action"]() |
621 action = PLCOpenClasses["actions_action"]() |
649 action.setName(name) |
622 action.setname(name) |
650 action.setBodyType(type) |
623 action.setbodyType(type) |
651 self.actions.appendAction(action) |
624 self.actions.appendaction(action) |
652 setattr(cls, "addAction", addAction) |
625 setattr(cls, "addaction", addaction) |
653 |
626 |
654 def getAction(self, name): |
627 def getaction(self, name): |
655 if self.actions: |
628 if self.actions: |
656 for action in self.actions.getAction(): |
629 for action in self.actions.getaction(): |
657 if action.getName() == name: |
630 if action.getname() == name: |
658 return action |
631 return action |
659 return None |
632 return None |
660 setattr(cls, "getAction", getAction) |
633 setattr(cls, "getaction", getaction) |
661 |
634 |
662 def getActionList(self): |
635 def getactionList(self): |
663 if self.actions: |
636 if self.actions: |
664 return self.actions.getAction() |
637 return self.actions.getaction() |
665 return [] |
638 return [] |
666 setattr(cls, "getActionList", getActionList) |
639 setattr(cls, "getactionList", getactionList) |
667 |
640 |
668 def removeAction(self, name): |
641 def removeaction(self, name): |
669 if self.actions: |
642 if self.actions: |
670 actions = self.actions.getAction() |
643 actions = self.actions.getaction() |
671 i = 0 |
644 i = 0 |
672 removed = False |
645 removed = False |
673 while i < len(actions) and not removed: |
646 while i < len(actions) and not removed: |
674 if actions[i].getName() == name: |
647 if actions[i].getname() == name: |
675 actions.pop(i) |
648 actions.pop(i) |
676 removed = True |
649 removed = True |
677 i += 1 |
650 i += 1 |
678 if not removed: |
651 if not removed: |
679 raise ValueError, "Action with name %s doesn't exists!"%name |
652 raise ValueError, "Action with name %s doesn't exists!"%name |
680 setattr(cls, "removeAction", removeAction) |
653 setattr(cls, "removeaction", removeaction) |
681 |
654 |
682 def updateElementName(self, old_name, new_name): |
655 def updateElementName(self, old_name, new_name): |
683 self.body.updateElementName(old_name, new_name) |
656 self.body.updateElementName(old_name, new_name) |
684 for action in self.getActionList(): |
657 for action in self.getactionList(): |
685 action.updateElementName(old_name, new_name) |
658 action.updateElementName(old_name, new_name) |
686 for transition in self.getTransitionList(): |
659 for transition in self.gettransitionList(): |
687 transition.updateElementName(old_name, new_name) |
660 transition.updateElementName(old_name, new_name) |
688 setattr(cls, "updateElementName", updateElementName) |
661 setattr(cls, "updateElementName", updateElementName) |
689 |
662 |
690 cls = PLCOpenClasses.get("transitions_transition", None) |
663 cls = PLCOpenClasses.get("transitions_transition", None) |
691 if cls: |
664 if cls: |
692 setattr(cls, "setBodyType", setBodyType) |
665 setattr(cls, "setbodyType", setbodyType) |
693 setattr(cls, "getBodyType", getBodyType) |
666 setattr(cls, "getbodyType", getbodyType) |
694 setattr(cls, "resetExecutionOrder", resetExecutionOrder) |
667 setattr(cls, "resetexecutionOrder", resetexecutionOrder) |
695 setattr(cls, "compileExecutionOrder", compileExecutionOrder) |
668 setattr(cls, "compileexecutionOrder", compileexecutionOrder) |
696 setattr(cls, "setElementExecutionOrder", setElementExecutionOrder) |
669 setattr(cls, "setelementExecutionOrder", setelementExecutionOrder) |
697 setattr(cls, "addInstance", addInstance) |
670 setattr(cls, "addinstance", addinstance) |
698 setattr(cls, "getInstances", getInstances) |
671 setattr(cls, "getinstances", getinstances) |
699 setattr(cls, "getInstance", getInstance) |
672 setattr(cls, "getinstance", getinstance) |
700 setattr(cls, "getRandomInstance", getRandomInstance) |
673 setattr(cls, "getrandomInstance", getrandomInstance) |
701 setattr(cls, "getInstanceByName", getInstanceByName) |
674 setattr(cls, "getinstanceByName", getinstanceByName) |
702 setattr(cls, "removeInstance", removeInstance) |
675 setattr(cls, "removeinstance", removeinstance) |
703 setattr(cls, "setText", setText) |
676 setattr(cls, "settext", settext) |
704 setattr(cls, "getText", getText) |
677 setattr(cls, "gettext", gettext) |
705 |
678 |
706 def updateElementName(self, old_name, new_name): |
679 def updateElementName(self, old_name, new_name): |
707 self.body.updateElementName(old_name, new_name) |
680 self.body.updateElementName(old_name, new_name) |
708 setattr(cls, "updateElementName", updateElementName) |
681 setattr(cls, "updateElementName", updateElementName) |
709 |
682 |
710 def hasBlock(self, name): |
683 def hasblock(self, name): |
711 if self.getBodyType() in ["FBD", "LD", "SFC"]: |
684 if self.getbodyType() in ["FBD", "LD", "SFC"]: |
712 for instance in self.getInstances(): |
685 for instance in self.getinstances(): |
713 if isinstance(instance, PLCOpenClasses["block"]) and instance.getInstanceName() == name: |
686 if isinstance(instance, PLCOpenClasses["fbdObjects_block"]) and instance.getinstanceName() == name: |
714 return True |
687 return True |
715 return False |
688 return False |
716 setattr(cls, "hasBlock", hasBlock) |
689 setattr(cls, "hasblock", hasblock) |
717 |
690 |
718 cls = PLCOpenClasses.get("actions_action", None) |
691 cls = PLCOpenClasses.get("actions_action", None) |
719 if cls: |
692 if cls: |
720 setattr(cls, "setBodyType", setBodyType) |
693 setattr(cls, "setbodyType", setbodyType) |
721 setattr(cls, "getBodyType", getBodyType) |
694 setattr(cls, "getbodyType", getbodyType) |
722 setattr(cls, "resetExecutionOrder", resetExecutionOrder) |
695 setattr(cls, "resetexecutionOrder", resetexecutionOrder) |
723 setattr(cls, "compileExecutionOrder", compileExecutionOrder) |
696 setattr(cls, "compileexecutionOrder", compileexecutionOrder) |
724 setattr(cls, "setElementExecutionOrder", setElementExecutionOrder) |
697 setattr(cls, "setelementExecutionOrder", setelementExecutionOrder) |
725 setattr(cls, "addInstance", addInstance) |
698 setattr(cls, "addinstance", addinstance) |
726 setattr(cls, "getInstances", getInstances) |
699 setattr(cls, "getinstances", getinstances) |
727 setattr(cls, "getInstance", getInstance) |
700 setattr(cls, "getinstance", getinstance) |
728 setattr(cls, "getRandomInstance", getRandomInstance) |
701 setattr(cls, "getrandomInstance", getrandomInstance) |
729 setattr(cls, "getInstanceByName", getInstanceByName) |
702 setattr(cls, "getinstanceByName", getinstanceByName) |
730 setattr(cls, "removeInstance", removeInstance) |
703 setattr(cls, "removeinstance", removeinstance) |
731 setattr(cls, "setText", setText) |
704 setattr(cls, "settext", settext) |
732 setattr(cls, "getText", getText) |
705 setattr(cls, "gettext", gettext) |
733 |
706 |
734 def updateElementName(self, old_name, new_name): |
707 def updateElementName(self, old_name, new_name): |
735 self.body.updateElementName(old_name, new_name) |
708 self.body.updateElementName(old_name, new_name) |
736 setattr(cls, "updateElementName", updateElementName) |
709 setattr(cls, "updateElementName", updateElementName) |
737 |
710 |
738 def hasBlock(self, name): |
711 def hasblock(self, name): |
739 if self.getBodyType() in ["FBD", "LD", "SFC"]: |
712 if self.getbodyType() in ["FBD", "LD", "SFC"]: |
740 for instance in self.getInstances(): |
713 for instance in self.getinstances(): |
741 if isinstance(instance, PLCOpenClasses["block"]) and instance.getInstanceName() == name: |
714 if isinstance(instance, PLCOpenClasses["fbdObjects_block"]) and instance.getinstanceName() == name: |
742 return True |
715 return True |
743 return False |
716 return False |
744 setattr(cls, "hasBlock", hasBlock) |
717 setattr(cls, "hasblock", hasblock) |
745 |
718 |
746 cls = PLCOpenClasses.get("body", None) |
719 cls = PLCOpenClasses.get("body", None) |
747 if cls: |
720 if cls: |
748 cls.currentExecutionOrderId = 0 |
721 cls.currentExecutionOrderId = 0 |
749 |
722 |
750 def resetCurrentExecutionOrderId(self): |
723 def resetcurrentExecutionOrderId(self): |
751 self.currentExecutionOrderId = 0 |
724 self.currentExecutionOrderId = 0 |
752 setattr(cls, "resetCurrentExecutionOrderId", resetCurrentExecutionOrderId) |
725 setattr(cls, "resetcurrentExecutionOrderId", resetcurrentExecutionOrderId) |
753 |
726 |
754 def getNewExecutionOrderId(self): |
727 def getnewExecutionOrderId(self): |
755 self.currentExecutionOrderId += 1 |
728 self.currentExecutionOrderId += 1 |
756 return self.currentExecutionOrderId |
729 return self.currentExecutionOrderId |
757 setattr(cls, "getNewExecutionOrderId", getNewExecutionOrderId) |
730 setattr(cls, "getnewExecutionOrderId", getnewExecutionOrderId) |
758 |
731 |
759 def resetExecutionOrder(self): |
732 def resetexecutionOrder(self): |
760 if self.content["name"] == "FBD": |
733 if self.content["name"] == "FBD": |
761 for element in self.content["value"].getContent(): |
734 for element in self.content["value"].getcontent(): |
762 if not isinstance(element["value"], (PLCOpenClasses.get("comment", None), PLCOpenClasses.get("connector", None), PLCOpenClasses.get("continuation", None))): |
735 if not isinstance(element["value"], (PLCOpenClasses.get("commonObjects_comment", None), |
763 element["value"].setExecutionOrderId(0) |
736 PLCOpenClasses.get("commonObjects_connector", None), |
|
737 PLCOpenClasses.get("commonObjects_continuation", None))): |
|
738 element["value"].setexecutionOrderId(0) |
764 else: |
739 else: |
765 raise TypeError, "Can only generate execution order on FBD networks!" |
740 raise TypeError, "Can only generate execution order on FBD networks!" |
766 setattr(cls, "resetExecutionOrder", resetExecutionOrder) |
741 setattr(cls, "resetexecutionOrder", resetexecutionOrder) |
767 |
742 |
768 def compileExecutionOrder(self): |
743 def compileexecutionOrder(self): |
769 if self.content["name"] == "FBD": |
744 if self.content["name"] == "FBD": |
770 self.resetExecutionOrder() |
745 self.resetexecutionOrder() |
771 self.resetCurrentExecutionOrderId() |
746 self.resetcurrentExecutionOrderId() |
772 for element in self.content["value"].getContent(): |
747 for element in self.content["value"].getcontent(): |
773 if isinstance(element["value"], PLCOpenClasses.get("outVariable", None)) and element["value"].getExecutionOrderId() == 0: |
748 if isinstance(element["value"], PLCOpenClasses.get("fbdObjects_outVariable", None)) and element["value"].getExecutionOrderId() == 0: |
774 connections = element["value"].connectionPointIn.getConnections() |
749 connections = element["value"].connectionPointIn.getconnections() |
775 if connections and len(connections) == 1: |
750 if connections and len(connections) == 1: |
776 self.compileElementExecutionOrder(connections[0]) |
751 self.compileelementExecutionOrder(connections[0]) |
777 element["value"].setExecutionOrderId(self.getNewExecutionOrderId()) |
752 element["value"].setexecutionOrderId(self.getnewExecutionOrderId()) |
778 else: |
753 else: |
779 raise TypeError, "Can only generate execution order on FBD networks!" |
754 raise TypeError, "Can only generate execution order on FBD networks!" |
780 setattr(cls, "compileExecutionOrder", compileExecutionOrder) |
755 setattr(cls, "compileexecutionOrder", compileexecutionOrder) |
781 |
756 |
782 def compileElementExecutionOrder(self, link): |
757 def compileelementExecutionOrder(self, link): |
783 if self.content["name"] == "FBD": |
758 if self.content["name"] == "FBD": |
784 localid = link.getRefLocalId() |
759 localid = link.getrefLocalId() |
785 instance = self.getContentInstance(localid) |
760 instance = self.getcontentInstance(localid) |
786 if isinstance(instance, PLCOpenClasses.get("block", None)) and instance.getExecutionOrderId() == 0: |
761 if isinstance(instance, PLCOpenClasses.get("fbdObjects_block", None)) and instance.getexecutionOrderId() == 0: |
787 for variable in instance.inputVariables.getVariable(): |
762 for variable in instance.inputVariables.getvariable(): |
788 connections = variable.connectionPointIn.getConnections() |
763 connections = variable.connectionPointIn.getconnections() |
789 if connections and len(connections) == 1: |
764 if connections and len(connections) == 1: |
790 self.compileElementExecutionOrder(connections[0]) |
765 self.compileelementExecutionOrder(connections[0]) |
791 instance.setExecutionOrderId(self.getNewExecutionOrderId()) |
766 instance.setexecutionOrderId(self.getnewExecutionOrderId()) |
792 elif isinstance(instance, PLCOpenClasses.get("continuation", None)) and instance.getExecutionOrderId() == 0: |
767 elif isinstance(instance, PLCOpenClasses.get("commonObjects_continuation", None)) and instance.getexecutionOrderId() == 0: |
793 name = instance.getName() |
768 name = instance.getname() |
794 for tmp_instance in self.getContentInstances(): |
769 for tmp_instance in self.getcontentInstances(): |
795 if isinstance(tmp_instance, PLCOpenClasses.get("connector", None)) and tmp_instance.getName() == name and tmp_instance.getExecutionOrderId() == 0: |
770 if isinstance(tmp_instance, PLCOpenClasses.get("commonObjects_connector", None)) and tmp_instance.getname() == name and tmp_instance.getexecutionOrderId() == 0: |
796 connections = tmp_instance.connectionPointIn.getConnections() |
771 connections = tmp_instance.connectionPointIn.getconnections() |
797 if connections and len(connections) == 1: |
772 if connections and len(connections) == 1: |
798 self.compileElementExecutionOrder(connections[0]) |
773 self.compileelementExecutionOrder(connections[0]) |
799 else: |
774 else: |
800 raise TypeError, "Can only generate execution order on FBD networks!" |
775 raise TypeError, "Can only generate execution order on FBD networks!" |
801 setattr(cls, "compileElementExecutionOrder", compileElementExecutionOrder) |
776 setattr(cls, "compileelementExecutionOrder", compileelementExecutionOrder) |
802 |
777 |
803 def setElementExecutionOrder(self, instance, new_executionOrder): |
778 def setelementExecutionOrder(self, instance, new_executionOrder): |
804 if self.content["name"] == "FBD": |
779 if self.content["name"] == "FBD": |
805 old_executionOrder = instance.getExecutionOrderId() |
780 old_executionOrder = instance.getexecutionOrderId() |
806 if old_executionOrder is not None and old_executionOrder != 0 and new_executionOrder != 0: |
781 if old_executionOrder is not None and old_executionOrder != 0 and new_executionOrder != 0: |
807 for element in self.content["value"].getContent(): |
782 for element in self.content["value"].getcontent(): |
808 if element["value"] != instance and not isinstance(element["value"], PLCOpenClasses.get("comment", None)): |
783 if element["value"] != instance and not isinstance(element["value"], PLCOpenClasses.get("commonObjects_comment", None)): |
809 element_executionOrder = element["value"].getExecutionOrderId() |
784 element_executionOrder = element["value"].getexecutionOrderId() |
810 if old_executionOrder <= element_executionOrder <= new_executionOrder: |
785 if old_executionOrder <= element_executionOrder <= new_executionOrder: |
811 element["value"].setExecutionOrderId(element_executionOrder - 1) |
786 element["value"].setexecutionOrderId(element_executionOrder - 1) |
812 if new_executionOrder <= element_executionOrder <= old_executionOrder: |
787 if new_executionOrder <= element_executionOrder <= old_executionOrder: |
813 element["value"].setExecutionOrderId(element_executionOrder + 1) |
788 element["value"].setexecutionOrderId(element_executionOrder + 1) |
814 instance.setExecutionOrderId(new_executionOrder) |
789 instance.setexecutionOrderId(new_executionOrder) |
815 else: |
790 else: |
816 raise TypeError, "Can only generate execution order on FBD networks!" |
791 raise TypeError, "Can only generate execution order on FBD networks!" |
817 setattr(cls, "setElementExecutionOrder", setElementExecutionOrder) |
792 setattr(cls, "setelementExecutionOrder", setelementExecutionOrder) |
818 |
793 |
819 def appendContentInstance(self, name, instance): |
794 def appendcontentInstance(self, name, instance): |
820 if self.content["name"] in ["LD","FBD","SFC"]: |
795 if self.content["name"] in ["LD","FBD","SFC"]: |
821 self.content["value"].appendContent(name, instance) |
796 self.content["value"].appendcontent({"name" : name, "value" : instance}) |
822 else: |
797 else: |
823 raise TypeError, "%s body don't have instances!"%self.content["name"] |
798 raise TypeError, "%s body don't have instances!"%self.content["name"] |
824 setattr(cls, "appendContentInstance", appendContentInstance) |
799 setattr(cls, "appendcontentInstance", appendcontentInstance) |
825 |
800 |
826 def getContentInstances(self): |
801 def getcontentInstances(self): |
827 if self.content["name"] in ["LD","FBD","SFC"]: |
802 if self.content["name"] in ["LD","FBD","SFC"]: |
828 instances = [] |
803 instances = [] |
829 for element in self.content["value"].getContent(): |
804 for element in self.content["value"].getcontent(): |
830 instances.append(element["value"]) |
805 instances.append(element["value"]) |
831 return instances |
806 return instances |
832 else: |
807 else: |
833 raise TypeError, "%s body don't have instances!"%self.content["name"] |
808 raise TypeError, "%s body don't have instances!"%self.content["name"] |
834 setattr(cls, "getContentInstances", getContentInstances) |
809 setattr(cls, "getcontentInstances", getcontentInstances) |
835 |
810 |
836 def getContentInstance(self, id): |
811 def getcontentInstance(self, id): |
837 if self.content["name"] in ["LD","FBD","SFC"]: |
812 if self.content["name"] in ["LD","FBD","SFC"]: |
838 for element in self.content["value"].getContent(): |
813 for element in self.content["value"].getcontent(): |
839 if element["value"].getLocalId() == id: |
814 if element["value"].getlocalId() == id: |
840 return element["value"] |
815 return element["value"] |
841 return None |
816 return None |
842 else: |
817 else: |
843 raise TypeError, "%s body don't have instances!"%self.content["name"] |
818 raise TypeError, "%s body don't have instances!"%self.content["name"] |
844 setattr(cls, "getContentInstance", getContentInstance) |
819 setattr(cls, "getcontentInstance", getcontentInstance) |
845 |
820 |
846 def getContentRandomInstance(self, exclude): |
821 def getcontentRandomInstance(self, exclude): |
847 if self.content["name"] in ["LD","FBD","SFC"]: |
822 if self.content["name"] in ["LD","FBD","SFC"]: |
848 for element in self.content["value"].getContent(): |
823 for element in self.content["value"].getcontent(): |
849 if element["value"].getLocalId() not in exclude: |
824 if element["value"].getlocalId() not in exclude: |
850 return element["value"] |
825 return element["value"] |
851 return None |
826 return None |
852 else: |
827 else: |
853 raise TypeError, "%s body don't have instances!"%self.content["name"] |
828 raise TypeError, "%s body don't have instances!"%self.content["name"] |
854 setattr(cls, "getContentRandomInstance", getContentRandomInstance) |
829 setattr(cls, "getcontentRandomInstance", getcontentRandomInstance) |
855 |
830 |
856 def getContentInstanceByName(self, name): |
831 def getcontentInstanceByName(self, name): |
857 if self.content["name"] in ["LD","FBD","SFC"]: |
832 if self.content["name"] in ["LD","FBD","SFC"]: |
858 for element in self.content["value"].getContent(): |
833 for element in self.content["value"].getcontent(): |
859 if element["value"].getLocalId() == name: |
834 if element["value"].getLocalId() == name: |
860 return element["value"] |
835 return element["value"] |
861 else: |
836 else: |
862 raise TypeError, "%s body don't have instances!"%self.content["name"] |
837 raise TypeError, "%s body don't have instances!"%self.content["name"] |
863 setattr(cls, "getContentInstanceByName", getContentInstanceByName) |
838 setattr(cls, "getcontentInstanceByName", getcontentInstanceByName) |
864 |
839 |
865 def removeContentInstance(self, id): |
840 def removecontentInstance(self, id): |
866 if self.content["name"] in ["LD","FBD","SFC"]: |
841 if self.content["name"] in ["LD","FBD","SFC"]: |
867 i = 0 |
842 i = 0 |
868 removed = False |
843 removed = False |
869 elements = self.content["value"].getContent() |
844 elements = self.content["value"].getcontent() |
870 while i < len(elements) and not removed: |
845 while i < len(elements) and not removed: |
871 if elements[i]["value"].getLocalId() == id: |
846 if elements[i]["value"].getlocalId() == id: |
872 self.content["value"].removeContent(i) |
847 self.content["value"].removecontent(i) |
873 removed = True |
848 removed = True |
874 i += 1 |
849 i += 1 |
875 if not removed: |
850 if not removed: |
876 raise ValueError, "Instance with id %d doesn't exists!"%id |
851 raise ValueError, "Instance with id %d doesn't exists!"%id |
877 else: |
852 else: |
878 raise TypeError, "%s body don't have instances!"%self.content["name"] |
853 raise TypeError, "%s body don't have instances!"%self.content["name"] |
879 setattr(cls, "removeContentInstance", removeContentInstance) |
854 setattr(cls, "removecontentInstance", removecontentInstance) |
880 |
855 |
881 def setText(self, text): |
856 def settext(self, text): |
882 if self.content["name"] in ["IL","ST"]: |
857 if self.content["name"] in ["IL","ST"]: |
883 self.content["value"].setText(text) |
858 self.content["value"].settext(text) |
884 else: |
859 else: |
885 raise TypeError, "%s body don't have text!"%self.content["name"] |
860 raise TypeError, "%s body don't have text!"%self.content["name"] |
886 setattr(cls, "setText", setText) |
861 setattr(cls, "settext", settext) |
887 |
862 |
888 def getText(self): |
863 def gettext(self): |
889 if self.content["name"] in ["IL","ST"]: |
864 if self.content["name"] in ["IL","ST"]: |
890 return self.content["value"].getText() |
865 return self.content["value"].gettext() |
891 else: |
866 else: |
892 raise TypeError, "%s body don't have text!"%self.content["name"] |
867 raise TypeError, "%s body don't have text!"%self.content["name"] |
893 setattr(cls, "getText", getText) |
868 setattr(cls, "gettext", gettext) |
894 |
869 |
895 def updateElementName(self, old_name, new_name): |
870 def updateElementName(self, old_name, new_name): |
896 if self.content["name"] in ["IL", "ST"]: |
871 if self.content["name"] in ["IL", "ST"]: |
897 self.content["value"].updateElementName(old_name, new_name) |
872 self.content["value"].updateElementName(old_name, new_name) |
898 else: |
873 else: |
899 for element in self.content["value"].getContent(): |
874 for element in self.content["value"].getcontent(): |
900 element["value"].updateElementName(old_name, new_name) |
875 element["value"].updateElementName(old_name, new_name) |
901 setattr(cls, "updateElementName", updateElementName) |
876 setattr(cls, "updateElementName", updateElementName) |
902 |
877 |
903 def getX(self): |
878 def getx(self): |
904 return self.position.getX() |
879 return self.position.getx() |
905 |
880 |
906 def getY(self): |
881 def gety(self): |
907 return self.position.getY() |
882 return self.position.gety() |
908 |
883 |
909 def setX(self, x): |
884 def setx(self, x): |
910 self.position.setX(x) |
885 self.position.setx(x) |
911 |
886 |
912 def setY(self, y): |
887 def sety(self, y): |
913 self.position.setY(y) |
888 self.position.sety(y) |
914 |
889 |
915 cls = PLCOpenClasses.get("comment", None) |
890 cls = PLCOpenClasses.get("commonObjects_comment", None) |
916 if cls: |
891 if cls: |
917 setattr(cls, "getX", getX) |
892 setattr(cls, "getx", getx) |
918 setattr(cls, "getY", getY) |
893 setattr(cls, "gety", gety) |
919 setattr(cls, "setX", setX) |
894 setattr(cls, "setx", setx) |
920 setattr(cls, "setY", setY) |
895 setattr(cls, "sety", sety) |
921 |
896 |
922 def setContentText(self, text): |
897 def setcontentText(self, text): |
923 self.content.setText(text) |
898 self.content.settext(text) |
924 setattr(cls, "setContentText", setContentText) |
899 setattr(cls, "setcontentText", setcontentText) |
925 |
900 |
926 def getContentText(self): |
901 def getcontentText(self): |
927 return self.content.getText() |
902 return self.content.gettext() |
928 setattr(cls, "getContentText", getContentText) |
903 setattr(cls, "getcontentText", getcontentText) |
929 |
904 |
930 def updateElementName(self, old_name, new_name): |
905 def updateElementName(self, old_name, new_name): |
931 self.content.updateElementName(old_name, new_name) |
906 self.content.updateElementName(old_name, new_name) |
932 setattr(cls, "updateElementName", updateElementName) |
907 setattr(cls, "updateElementName", updateElementName) |
933 |
908 |
934 cls = PLCOpenClasses.get("block", None) |
909 cls = PLCOpenClasses.get("fbdObjects_block", None) |
935 if cls: |
910 if cls: |
936 setattr(cls, "getX", getX) |
911 setattr(cls, "getx", getx) |
937 setattr(cls, "getY", getY) |
912 setattr(cls, "gety", gety) |
938 setattr(cls, "setX", setX) |
913 setattr(cls, "setx", setx) |
939 setattr(cls, "setY", setY) |
914 setattr(cls, "sety", sety) |
940 |
915 |
941 def updateElementName(self, old_name, new_name): |
916 def updateElementName(self, old_name, new_name): |
942 if self.typeName == old_name: |
917 if self.typeName == old_name: |
943 self.typeName = new_name |
918 self.typeName = new_name |
944 setattr(cls, "updateElementName", updateElementName) |
919 setattr(cls, "updateElementName", updateElementName) |
945 |
920 |
946 cls = PLCOpenClasses.get("inputVariables_variable", None) |
921 cls = PLCOpenClasses.get("ldObjects_leftPowerRail", None) |
947 if cls: |
922 if cls: |
948 def setConnectorEdge(self, edge): |
923 setattr(cls, "getx", getx) |
949 if not self.edge: |
924 setattr(cls, "gety", gety) |
950 self.edge = PLCOpenClasses["edgeModifierType"]() |
925 setattr(cls, "setx", setx) |
951 self.edge.setValue(edge) |
926 setattr(cls, "sety", sety) |
952 setattr(cls, "setConnectorEdge", setConnectorEdge) |
|
953 |
|
954 def getConnectorEdge(self): |
|
955 if self.edge: |
|
956 return self.edge.getValue() |
|
957 return None |
|
958 setattr(cls, "getConnectorEdge", getConnectorEdge) |
|
959 |
|
960 cls = PLCOpenClasses.get("outputVariables_variable", None) |
|
961 if cls: |
|
962 def setConnectorEdge(self, edge): |
|
963 if not self.edge: |
|
964 self.edge = PLCOpenClasses["edgeModifierType"]() |
|
965 self.edge.setValue(edge) |
|
966 setattr(cls, "setConnectorEdge", setConnectorEdge) |
|
967 |
|
968 def getConnectorEdge(self): |
|
969 if self.edge: |
|
970 return self.edge.getValue() |
|
971 return None |
|
972 setattr(cls, "getConnectorEdge", getConnectorEdge) |
|
973 |
|
974 cls = PLCOpenClasses.get("leftPowerRail", None) |
|
975 if cls: |
|
976 setattr(cls, "getX", getX) |
|
977 setattr(cls, "getY", getY) |
|
978 setattr(cls, "setX", setX) |
|
979 setattr(cls, "setY", setY) |
|
980 |
927 |
981 def updateElementName(self, old_name, new_name): |
928 def updateElementName(self, old_name, new_name): |
982 pass |
929 pass |
983 setattr(cls, "updateElementName", updateElementName) |
930 setattr(cls, "updateElementName", updateElementName) |
984 |
931 |
985 cls = PLCOpenClasses.get("rightPowerRail", None) |
932 cls = PLCOpenClasses.get("ldObjects_rightPowerRail", None) |
986 if cls: |
933 if cls: |
987 setattr(cls, "getX", getX) |
934 setattr(cls, "getx", getx) |
988 setattr(cls, "getY", getY) |
935 setattr(cls, "gety", gety) |
989 setattr(cls, "setX", setX) |
936 setattr(cls, "setx", setx) |
990 setattr(cls, "setY", setY) |
937 setattr(cls, "sety", sety) |
991 |
938 |
992 def updateElementName(self, old_name, new_name): |
939 def updateElementName(self, old_name, new_name): |
993 pass |
940 pass |
994 setattr(cls, "updateElementName", updateElementName) |
941 setattr(cls, "updateElementName", updateElementName) |
995 |
942 |
996 cls = PLCOpenClasses.get("contact", None) |
943 cls = PLCOpenClasses.get("ldObjects_contact", None) |
997 if cls: |
944 if cls: |
998 setattr(cls, "getX", getX) |
945 setattr(cls, "getx", getx) |
999 setattr(cls, "getY", getY) |
946 setattr(cls, "gety", gety) |
1000 setattr(cls, "setX", setX) |
947 setattr(cls, "setx", setx) |
1001 setattr(cls, "setY", setY) |
948 setattr(cls, "sety", sety) |
1002 |
|
1003 def setContactEdge(self, edge): |
|
1004 if not self.edge: |
|
1005 self.edge = PLCOpenClasses["edgeModifierType"]() |
|
1006 self.edge.setValue(edge) |
|
1007 setattr(cls, "setContactEdge", setContactEdge) |
|
1008 |
|
1009 def getContactEdge(self): |
|
1010 if self.edge: |
|
1011 return self.edge.getValue() |
|
1012 return None |
|
1013 setattr(cls, "getContactEdge", getContactEdge) |
|
1014 |
949 |
1015 def updateElementName(self, old_name, new_name): |
950 def updateElementName(self, old_name, new_name): |
1016 if self.variable == old_name: |
951 if self.variable == old_name: |
1017 self.variable = new_name |
952 self.variable = new_name |
1018 setattr(cls, "updateElementName", updateElementName) |
953 setattr(cls, "updateElementName", updateElementName) |
1019 |
954 |
1020 cls = PLCOpenClasses.get("coil", None) |
955 cls = PLCOpenClasses.get("ldObjects_coil", None) |
1021 if cls: |
956 if cls: |
1022 setattr(cls, "getX", getX) |
957 setattr(cls, "getx", getx) |
1023 setattr(cls, "getY", getY) |
958 setattr(cls, "gety", gety) |
1024 setattr(cls, "setX", setX) |
959 setattr(cls, "setx", setx) |
1025 setattr(cls, "setY", setY) |
960 setattr(cls, "sety", sety) |
1026 |
|
1027 def setCoilStorage(self, edge): |
|
1028 if not self.storage: |
|
1029 self.storage = PLCOpenClasses["storageModifierType"]() |
|
1030 self.storage.setValue(edge) |
|
1031 setattr(cls, "setCoilStorage", setCoilStorage) |
|
1032 |
|
1033 def getCoilStorage(self): |
|
1034 if self.storage: |
|
1035 return self.storage.getValue() |
|
1036 return None |
|
1037 setattr(cls, "getCoilStorage", getCoilStorage) |
|
1038 |
961 |
1039 def updateElementName(self, old_name, new_name): |
962 def updateElementName(self, old_name, new_name): |
1040 if self.variable == old_name: |
963 if self.variable == old_name: |
1041 self.variable = new_name |
964 self.variable = new_name |
1042 setattr(cls, "updateElementName", updateElementName) |
965 setattr(cls, "updateElementName", updateElementName) |
1043 |
966 |
1044 cls = PLCOpenClasses.get("step", None) |
967 cls = PLCOpenClasses.get("sfcObjects_step", None) |
1045 if cls: |
968 if cls: |
1046 setattr(cls, "getX", getX) |
969 setattr(cls, "getx", getx) |
1047 setattr(cls, "getY", getY) |
970 setattr(cls, "gety", gety) |
1048 setattr(cls, "setX", setX) |
971 setattr(cls, "setx", setx) |
1049 setattr(cls, "setY", setY) |
972 setattr(cls, "sety", sety) |
1050 |
973 |
1051 def updateElementName(self, old_name, new_name): |
974 def updateElementName(self, old_name, new_name): |
1052 pass |
975 pass |
1053 setattr(cls, "updateElementName", updateElementName) |
976 setattr(cls, "updateElementName", updateElementName) |
1054 |
977 |
1055 cls = PLCOpenClasses.get("transition", None) |
978 cls = PLCOpenClasses.get("sfcObjects_transition", None) |
1056 if cls: |
979 if cls: |
1057 setattr(cls, "getX", getX) |
980 setattr(cls, "getx", getx) |
1058 setattr(cls, "getY", getY) |
981 setattr(cls, "gety", gety) |
1059 setattr(cls, "setX", setX) |
982 setattr(cls, "setx", setx) |
1060 setattr(cls, "setY", setY) |
983 setattr(cls, "sety", sety) |
1061 |
984 |
1062 def setConditionContent(self, type, value): |
985 def setconditionContent(self, type, value): |
1063 if not self.condition: |
986 if not self.condition: |
1064 self.addCondition() |
987 self.addcondition() |
1065 if type == "reference": |
988 if type == "reference": |
1066 condition = PLCOpenClasses["condition_reference"]() |
989 condition = PLCOpenClasses["condition_reference"]() |
1067 condition.setName(value) |
990 condition.setname(value) |
1068 elif type == "inline": |
991 elif type == "inline": |
1069 condition = PLCOpenClasses["condition_inline"]() |
992 condition = PLCOpenClasses["condition_inline"]() |
1070 condition.setContent("ST", PLCOpenClasses["formattedText"]()) |
993 condition.setcontent({"name" : "ST", "value" : PLCOpenClasses["formattedText"]()}) |
1071 condition.setText(value) |
994 condition.settext(value) |
1072 elif type == "connection": |
995 elif type == "connection": |
1073 condition = [] |
996 condition = [] |
1074 self.condition.setContent(type, condition) |
997 self.condition.setcontent({"name" : type, "value" : condition}) |
1075 setattr(cls, "setConditionContent", setConditionContent) |
998 setattr(cls, "setconditionContent", setconditionContent) |
1076 |
999 |
1077 def getConditionContent(self): |
1000 def getconditionContent(self): |
1078 if self.condition: |
1001 if self.condition: |
1079 content = self.condition.getContent() |
1002 content = self.condition.getcontent() |
1080 values = {"type" : content["name"]} |
1003 values = {"type" : content["name"]} |
1081 if values["type"] == "reference": |
1004 if values["type"] == "reference": |
1082 values["value"] = content["value"].getName() |
1005 values["value"] = content["value"].getname() |
1083 elif values["type"] == "inline": |
1006 elif values["type"] == "inline": |
1084 values["value"] = content["value"].getText() |
1007 values["value"] = content["value"].gettext() |
1085 return values |
1008 return values |
1086 return "" |
1009 return "" |
1087 setattr(cls, "getConditionContent", getConditionContent) |
1010 setattr(cls, "getconditionContent", getconditionContent) |
1088 |
1011 |
1089 def updateElementName(self, old_name, new_name): |
1012 def updateElementName(self, old_name, new_name): |
1090 if self.condition: |
1013 if self.condition: |
1091 content = self.condition.getContent() |
1014 content = self.condition.getcontent() |
1092 if content["name"] == "reference": |
1015 if content["name"] == "reference": |
1093 if content["value"].getName() == old_name: |
1016 if content["value"].getname() == old_name: |
1094 content["value"].setName(new_name) |
1017 content["value"].setname(new_name) |
1095 elif content["name"] == "inline": |
1018 elif content["name"] == "inline": |
1096 content["value"].updateElementName(old_name, new_name) |
1019 content["value"].updateElementName(old_name, new_name) |
1097 setattr(cls, "updateElementName", updateElementName) |
1020 setattr(cls, "updateElementName", updateElementName) |
1098 |
1021 |
1099 def addConnection(self): |
1022 def addconnection(self): |
1100 if self.condition: |
1023 if self.condition: |
1101 content = self.condition.getContent() |
1024 content = self.condition.getcontent() |
1102 if content["name"] != "connection": |
1025 if content["name"] != "connection": |
1103 self.condition.setContent("connection", []) |
1026 self.condition.setcontent({"name" : "connection", "value" : []}) |
1104 content = self.condition.getContent() |
1027 content = self.condition.getcontent() |
1105 content["value"].append(PLCOpenClasses["connection"]()) |
1028 content["value"].append(PLCOpenClasses["connection"]()) |
1106 setattr(cls, "addConnection", addConnection) |
1029 setattr(cls, "addconnection", addconnection) |
1107 |
1030 |
1108 def removeConnection(self, idx): |
1031 def removeconnection(self, idx): |
1109 if self.condition: |
1032 if self.condition: |
1110 content = self.condition.getContent() |
1033 content = self.condition.getcontent() |
1111 if content["name"] == "connection": |
1034 if content["name"] == "connection": |
1112 content["value"].pop(idx) |
1035 content["value"].pop(idx) |
1113 setattr(cls, "removeConnection", removeConnection) |
1036 setattr(cls, "removeconnection", removeconnection) |
1114 |
1037 |
1115 def removeConnections(self): |
1038 def removeconnections(self): |
1116 if self.condition: |
1039 if self.condition: |
1117 content = self.condition.getContent() |
1040 content = self.condition.getcontent() |
1118 if content["name"] == "connection": |
1041 if content["name"] == "connection": |
1119 content["value"] = [] |
1042 content["value"] = [] |
1120 setattr(cls, "removeConnections", removeConnections) |
1043 setattr(cls, "removeconnections", removeconnections) |
1121 |
1044 |
1122 def getConnections(self): |
1045 def getconnections(self): |
1123 if self.condition: |
1046 if self.condition: |
1124 content = self.condition.getContent() |
1047 content = self.condition.getcontent() |
1125 if content["name"] == "connection": |
1048 if content["name"] == "connection": |
1126 return content["value"] |
1049 return content["value"] |
1127 setattr(cls, "getConnections", getConnections) |
1050 setattr(cls, "getconnections", getconnections) |
1128 |
1051 |
1129 def setConnectionId(self, idx, id): |
1052 def setconnectionId(self, idx, id): |
1130 if self.condition: |
1053 if self.condition: |
1131 content = self.condition.getContent() |
1054 content = self.condition.getcontent() |
1132 if content["name"] == "connection": |
1055 if content["name"] == "connection": |
1133 content["value"][idx].setRefLocalId(id) |
1056 content["value"][idx].setrefLocalId(id) |
1134 setattr(cls, "setConnectionId", setConnectionId) |
1057 setattr(cls, "setconnectionId", setconnectionId) |
1135 |
1058 |
1136 def getConnectionId(self, idx): |
1059 def getconnectionId(self, idx): |
1137 if self.condition: |
1060 if self.condition: |
1138 content = self.condition.getContent() |
1061 content = self.condition.getcontent() |
1139 if content["name"] == "connection": |
1062 if content["name"] == "connection": |
1140 return content["value"][idx].getRefLocalId() |
1063 return content["value"][idx].getrefLocalId() |
1141 return None |
1064 return None |
1142 setattr(cls, "getConnectionId", getConnectionId) |
1065 setattr(cls, "getconnectionId", getconnectionId) |
1143 |
1066 |
1144 def setConnectionPoints(self, idx, points): |
1067 def setconnectionPoints(self, idx, points): |
1145 if self.condition: |
1068 if self.condition: |
1146 content = self.condition.getContent() |
1069 content = self.condition.getcontent() |
1147 if content["name"] == "connection": |
1070 if content["name"] == "connection": |
1148 content["value"][idx].setPoints(points) |
1071 content["value"][idx].setpoints(points) |
1149 setattr(cls, "setConnectionPoints", setConnectionPoints) |
1072 setattr(cls, "setconnectionPoints", setconnectionPoints) |
1150 |
1073 |
1151 def getConnectionPoints(self, idx): |
1074 def getconnectionPoints(self, idx): |
1152 if self.condition: |
1075 if self.condition: |
1153 content = self.condition.getContent() |
1076 content = self.condition.getcontent() |
1154 if content["name"] == "connection": |
1077 if content["name"] == "connection": |
1155 return content["value"][idx].getPoints() |
1078 return content["value"][idx].getpoints() |
1156 return None |
1079 return None |
1157 setattr(cls, "getConnectionPoints", getConnectionPoints) |
1080 setattr(cls, "getconnectionPoints", getconnectionPoints) |
1158 |
1081 |
1159 def setConnectionParameter(self, idx, parameter): |
1082 def setconnectionParameter(self, idx, parameter): |
1160 if self.condition: |
1083 if self.condition: |
1161 content = self.condition.getContent() |
1084 content = self.condition.getcontent() |
1162 if content["name"] == "connection": |
1085 if content["name"] == "connection": |
1163 content["value"][idx].setFormalParameter(parameter) |
1086 content["value"][idx].setformalParameter(parameter) |
1164 setattr(cls, "setConnectionParameter", setConnectionParameter) |
1087 setattr(cls, "setconnectionParameter", setconnectionParameter) |
1165 |
1088 |
1166 def getConnectionParameter(self, idx): |
1089 def getconnectionParameter(self, idx): |
1167 if self.condition: |
1090 if self.condition: |
1168 content = self.condition.getContent() |
1091 content = self.condition.getcontent() |
1169 if content["name"] == "connection": |
1092 if content["name"] == "connection": |
1170 return content["value"][idx].getFormalParameter() |
1093 return content["value"][idx].getformalParameter() |
1171 return None |
1094 return None |
1172 setattr(cls, "getConnectionParameter", getConnectionParameter) |
1095 setattr(cls, "getconnectionParameter", getconnectionParameter) |
1173 |
1096 |
1174 setattr(cls, "addConnection", addConnection) |
1097 cls = PLCOpenClasses.get("sfcObjects_selectionDivergence", None) |
1175 |
1098 if cls: |
1176 cls = PLCOpenClasses.get("selectionDivergence", None) |
1099 setattr(cls, "getx", getx) |
1177 if cls: |
1100 setattr(cls, "gety", gety) |
1178 setattr(cls, "getX", getX) |
1101 setattr(cls, "setx", setx) |
1179 setattr(cls, "getY", getY) |
1102 setattr(cls, "sety", sety) |
1180 setattr(cls, "setX", setX) |
|
1181 setattr(cls, "setY", setY) |
|
1182 |
1103 |
1183 def updateElementName(self, old_name, new_name): |
1104 def updateElementName(self, old_name, new_name): |
1184 pass |
1105 pass |
1185 setattr(cls, "updateElementName", updateElementName) |
1106 setattr(cls, "updateElementName", updateElementName) |
1186 |
1107 |
1187 cls = PLCOpenClasses.get("selectionConvergence", None) |
1108 cls = PLCOpenClasses.get("sfcObjects_selectionConvergence", None) |
1188 if cls: |
1109 if cls: |
1189 setattr(cls, "getX", getX) |
1110 setattr(cls, "getx", getx) |
1190 setattr(cls, "getY", getY) |
1111 setattr(cls, "gety", gety) |
1191 setattr(cls, "setX", setX) |
1112 setattr(cls, "setx", setx) |
1192 setattr(cls, "setY", setY) |
1113 setattr(cls, "sety", sety) |
1193 |
1114 |
1194 def updateElementName(self, old_name, new_name): |
1115 def updateElementName(self, old_name, new_name): |
1195 pass |
1116 pass |
1196 setattr(cls, "updateElementName", updateElementName) |
1117 setattr(cls, "updateElementName", updateElementName) |
1197 |
1118 |
1198 cls = PLCOpenClasses.get("simultaneousDivergence", None) |
1119 cls = PLCOpenClasses.get("sfcObjects_simultaneousDivergence", None) |
1199 if cls: |
1120 if cls: |
1200 setattr(cls, "getX", getX) |
1121 setattr(cls, "getx", getx) |
1201 setattr(cls, "getY", getY) |
1122 setattr(cls, "gety", gety) |
1202 setattr(cls, "setX", setX) |
1123 setattr(cls, "setx", setx) |
1203 setattr(cls, "setY", setY) |
1124 setattr(cls, "sety", sety) |
1204 |
1125 |
1205 def updateElementName(self, old_name, new_name): |
1126 def updateElementName(self, old_name, new_name): |
1206 pass |
1127 pass |
1207 setattr(cls, "updateElementName", updateElementName) |
1128 setattr(cls, "updateElementName", updateElementName) |
1208 |
1129 |
1209 cls = PLCOpenClasses.get("simultaneousConvergence", None) |
1130 cls = PLCOpenClasses.get("sfcObjects_simultaneousConvergence", None) |
1210 if cls: |
1131 if cls: |
1211 setattr(cls, "getX", getX) |
1132 setattr(cls, "getx", getx) |
1212 setattr(cls, "getY", getY) |
1133 setattr(cls, "gety", gety) |
1213 setattr(cls, "setX", setX) |
1134 setattr(cls, "setx", setx) |
1214 setattr(cls, "setY", setY) |
1135 setattr(cls, "sety", sety) |
1215 |
1136 |
1216 def updateElementName(self, old_name, new_name): |
1137 def updateElementName(self, old_name, new_name): |
1217 pass |
1138 pass |
1218 setattr(cls, "updateElementName", updateElementName) |
1139 setattr(cls, "updateElementName", updateElementName) |
1219 |
1140 |
1220 cls = PLCOpenClasses.get("jumpStep", None) |
1141 cls = PLCOpenClasses.get("sfcObjects_jumpStep", None) |
1221 if cls: |
1142 if cls: |
1222 setattr(cls, "getX", getX) |
1143 setattr(cls, "getx", getx) |
1223 setattr(cls, "getY", getY) |
1144 setattr(cls, "gety", gety) |
1224 setattr(cls, "setX", setX) |
1145 setattr(cls, "setx", setx) |
1225 setattr(cls, "setY", setY) |
1146 setattr(cls, "sety", sety) |
1226 |
1147 |
1227 def updateElementName(self, old_name, new_name): |
1148 def updateElementName(self, old_name, new_name): |
1228 pass |
1149 pass |
1229 setattr(cls, "updateElementName", updateElementName) |
1150 setattr(cls, "updateElementName", updateElementName) |
1230 |
1151 |
1231 cls = PLCOpenClasses.get("actionBlock_action", None) |
1152 cls = PLCOpenClasses.get("actionBlock_action", None) |
1232 if cls: |
1153 if cls: |
1233 def setQualifierValue(self, value): |
1154 def setreferenceName(self, name): |
1234 if self.qualifier: |
1155 if self.reference: |
1235 self.qualifier.setValue(value) |
1156 self.reference.setname(name) |
1236 setattr(cls, "setQualifierValue", setQualifierValue) |
1157 setattr(cls, "setreferenceName", setreferenceName) |
1237 |
1158 |
1238 def getQualifierValue(self): |
1159 def getreferenceName(self): |
1239 if self.qualifier: |
1160 if self.reference: |
1240 return self.qualifier.getValue() |
1161 return self.reference.getname() |
1241 return None |
1162 return None |
1242 setattr(cls, "getQualifierValue", getQualifierValue) |
1163 setattr(cls, "getreferenceName", getreferenceName) |
1243 |
1164 |
1244 def setReferenceName(self, name): |
1165 def setinlineContent(self, content): |
1245 if self.reference: |
1166 if self.inline: |
1246 self.reference.setName(name) |
1167 self.inline.setcontent({"name" : "ST", "value" : PLCOpenClasses["formattedText"]()}) |
1247 setattr(cls, "setReferenceName", setReferenceName) |
1168 self.inline.settext(content) |
1248 |
1169 setattr(cls, "setinlineContent", setinlineContent) |
1249 def getReferenceName(self): |
1170 |
1250 if self.reference: |
1171 def getinlineContent(self): |
1251 return self.reference.getName() |
1172 if self.inline: |
|
1173 return self.inline.gettext() |
1252 return None |
1174 return None |
1253 setattr(cls, "getReferenceName", getReferenceName) |
1175 setattr(cls, "getinlineContent", getinlineContent) |
1254 |
1176 |
1255 def setInlineContent(self, content): |
1177 def updateElementName(self, old_name, new_name): |
1256 if self.inline: |
1178 if self.reference and self.reference.getname() == old_name: |
1257 self.inline.setContent("ST", PLCOpenClasses["formattedText"]()) |
1179 self.reference.setname(new_name) |
1258 self.inline.setText(content) |
|
1259 setattr(cls, "setInlineContent", setInlineContent) |
|
1260 |
|
1261 def getInlineContent(self): |
|
1262 if self.inline: |
|
1263 return self.inline.getText() |
|
1264 return None |
|
1265 setattr(cls, "getInlineContent", getInlineContent) |
|
1266 |
|
1267 def updateElementName(self, old_name, new_name): |
|
1268 if self.reference and self.reference.getName() == old_name: |
|
1269 self.reference.setName(new_name) |
|
1270 if self.inline: |
1180 if self.inline: |
1271 self.inline.updateElementName(old_name, new_name) |
1181 self.inline.updateElementName(old_name, new_name) |
1272 setattr(cls, "updateElementName", updateElementName) |
1182 setattr(cls, "updateElementName", updateElementName) |
1273 |
1183 |
1274 cls = PLCOpenClasses.get("actionBlock", None) |
1184 cls = PLCOpenClasses.get("commonObjects_actionBlock", None) |
1275 if cls: |
1185 if cls: |
1276 setattr(cls, "getX", getX) |
1186 setattr(cls, "getx", getx) |
1277 setattr(cls, "getY", getY) |
1187 setattr(cls, "gety", gety) |
1278 setattr(cls, "setX", setX) |
1188 setattr(cls, "setx", setx) |
1279 setattr(cls, "setY", setY) |
1189 setattr(cls, "sety", sety) |
1280 |
1190 |
1281 def setActions(self, actions): |
1191 def setactions(self, actions): |
1282 self.action = [] |
1192 self.action = [] |
1283 for params in actions: |
1193 for params in actions: |
1284 action = PLCOpenClasses["actionBlock_action"]() |
1194 action = PLCOpenClasses["actionBlock_action"]() |
1285 action.addQualifier() |
1195 action.setqualifier(params["qualifier"]) |
1286 action.setQualifierValue(params["qualifier"]) |
|
1287 if params["type"] == "reference": |
1196 if params["type"] == "reference": |
1288 action.addReference() |
1197 action.addreference() |
1289 action.setReferenceName(params["value"]) |
1198 action.setreferenceName(params["value"]) |
1290 else: |
1199 else: |
1291 action.addInline() |
1200 action.addinline() |
1292 action.setInlineContent(params["value"]) |
1201 action.setinlineContent(params["value"]) |
1293 if "duration" in params: |
1202 if "duration" in params: |
1294 action.setDuration(params["duration"]) |
1203 action.setduration(params["duration"]) |
1295 if "indicator" in params: |
1204 if "indicator" in params: |
1296 action.setIndicator(params["indicator"]) |
1205 action.setindicator(params["indicator"]) |
1297 self.action.append(action) |
1206 self.action.append(action) |
1298 setattr(cls, "setActions", setActions) |
1207 setattr(cls, "setactions", setactions) |
1299 |
1208 |
1300 def getActions(self): |
1209 def getactions(self): |
1301 actions = [] |
1210 actions = [] |
1302 for action in self.action: |
1211 for action in self.action: |
1303 params = {} |
1212 params = {} |
1304 params["qualifier"] = action.getQualifierValue() |
1213 params["qualifier"] = action.getqualifier() |
1305 if params["qualifier"] is None: |
1214 if params["qualifier"] is None: |
1306 params["qualifier"] = "N" |
1215 params["qualifier"] = "N" |
1307 if action.getReference(): |
1216 if action.getreference(): |
1308 params["type"] = "reference" |
1217 params["type"] = "reference" |
1309 params["value"] = action.getReferenceName() |
1218 params["value"] = action.getreferenceName() |
1310 elif action.getInline(): |
1219 elif action.getinline(): |
1311 params["type"] = "inline" |
1220 params["type"] = "inline" |
1312 params["value"] = action.getInlineContent() |
1221 params["value"] = action.getinlineContent() |
1313 duration = action.getDuration() |
1222 duration = action.getduration() |
1314 if duration: |
1223 if duration: |
1315 params["duration"] = duration |
1224 params["duration"] = duration |
1316 indicator = action.getIndicator() |
1225 indicator = action.getindicator() |
1317 if indicator: |
1226 if indicator: |
1318 params["indicator"] = indicator |
1227 params["indicator"] = indicator |
1319 actions.append(params) |
1228 actions.append(params) |
1320 return actions |
1229 return actions |
1321 setattr(cls, "getActions", getActions) |
1230 setattr(cls, "getactions", getactions) |
1322 |
1231 |
1323 def updateElementName(self, old_name, new_name): |
1232 def updateElementName(self, old_name, new_name): |
1324 for action in self.action: |
1233 for action in self.action: |
1325 action.updateElementName(old_name, new_name) |
1234 action.updateElementName(old_name, new_name) |
1326 setattr(cls, "updateElementName", updateElementName) |
1235 setattr(cls, "updateElementName", updateElementName) |
1327 |
1236 |
1328 cls = PLCOpenClasses.get("inVariable", None) |
1237 cls = PLCOpenClasses.get("fbdObjects_inVariable", None) |
1329 if cls: |
1238 if cls: |
1330 setattr(cls, "getX", getX) |
1239 setattr(cls, "getx", getx) |
1331 setattr(cls, "getY", getY) |
1240 setattr(cls, "gety", gety) |
1332 setattr(cls, "setX", setX) |
1241 setattr(cls, "setx", setx) |
1333 setattr(cls, "setY", setY) |
1242 setattr(cls, "sety", sety) |
1334 |
|
1335 def setConnectorEdge(self, edge): |
|
1336 if not self.edge: |
|
1337 self.edge = PLCOpenClasses["edgeModifierType"]() |
|
1338 self.edge.setValue(edge) |
|
1339 setattr(cls, "setConnectorEdge", setConnectorEdge) |
|
1340 |
|
1341 def getConnectorEdge(self): |
|
1342 if self.edge: |
|
1343 return self.edge.getValue() |
|
1344 return None |
|
1345 setattr(cls, "getConnectorEdge", getConnectorEdge) |
|
1346 |
1243 |
1347 def updateElementName(self, old_name, new_name): |
1244 def updateElementName(self, old_name, new_name): |
1348 if self.expression == old_name: |
1245 if self.expression == old_name: |
1349 self.expression = new_name |
1246 self.expression = new_name |
1350 setattr(cls, "updateElementName", updateElementName) |
1247 setattr(cls, "updateElementName", updateElementName) |
1351 |
1248 |
1352 cls = PLCOpenClasses.get("outVariable", None) |
1249 cls = PLCOpenClasses.get("fbdObjects_outVariable", None) |
1353 if cls: |
1250 if cls: |
1354 setattr(cls, "getX", getX) |
1251 setattr(cls, "getx", getx) |
1355 setattr(cls, "getY", getY) |
1252 setattr(cls, "gety", gety) |
1356 setattr(cls, "setX", setX) |
1253 setattr(cls, "setx", setx) |
1357 setattr(cls, "setY", setY) |
1254 setattr(cls, "sety", sety) |
1358 |
|
1359 def setConnectorEdge(self, edge): |
|
1360 if not self.edge: |
|
1361 self.edge = PLCOpenClasses["edgeModifierType"]() |
|
1362 self.edge.setValue(edge) |
|
1363 setattr(cls, "setConnectorEdge", setConnectorEdge) |
|
1364 |
|
1365 def getConnectorEdge(self): |
|
1366 if self.edge: |
|
1367 return self.edge.getValue() |
|
1368 return None |
|
1369 setattr(cls, "getConnectorEdge", getConnectorEdge) |
|
1370 |
1255 |
1371 def updateElementName(self, old_name, new_name): |
1256 def updateElementName(self, old_name, new_name): |
1372 if self.expression == old_name: |
1257 if self.expression == old_name: |
1373 self.expression = new_name |
1258 self.expression = new_name |
1374 setattr(cls, "updateElementName", updateElementName) |
1259 setattr(cls, "updateElementName", updateElementName) |
1375 |
1260 |
1376 cls = PLCOpenClasses.get("inOutVariable", None) |
1261 cls = PLCOpenClasses.get("fbdObjects_inOutVariable", None) |
1377 if cls: |
1262 if cls: |
1378 setattr(cls, "getX", getX) |
1263 setattr(cls, "getx", getx) |
1379 setattr(cls, "getY", getY) |
1264 setattr(cls, "gety", gety) |
1380 setattr(cls, "setX", setX) |
1265 setattr(cls, "setx", setx) |
1381 setattr(cls, "setY", setY) |
1266 setattr(cls, "sety", sety) |
1382 |
|
1383 def setInputEdge(self, edge): |
|
1384 if not self.edgeIn: |
|
1385 self.edgeIn = PLCOpenClasses["edgeModifierType"]() |
|
1386 self.edgeIn.setValue(edge) |
|
1387 setattr(cls, "setInputEdge", setInputEdge) |
|
1388 |
|
1389 def getInputEdge(self): |
|
1390 if self.edgeIn: |
|
1391 return self.edgeIn.getValue() |
|
1392 return None |
|
1393 setattr(cls, "getInputEdge", getInputEdge) |
|
1394 |
|
1395 def setOutputEdge(self, edge): |
|
1396 if not self.edgeOut: |
|
1397 self.edgeOut = PLCOpenClasses["edgeModifierType"]() |
|
1398 self.edgeOut.setValue(edge) |
|
1399 setattr(cls, "setInputEdge", setInputEdge) |
|
1400 |
|
1401 def getOutputEdge(self): |
|
1402 if self.edgeOut: |
|
1403 return self.edgeOut.getValue() |
|
1404 return None |
|
1405 setattr(cls, "getOutputEdge", getOutputEdge) |
|
1406 |
1267 |
1407 def updateElementName(self, old_name, new_name): |
1268 def updateElementName(self, old_name, new_name): |
1408 if self.expression == old_name: |
1269 if self.expression == old_name: |
1409 self.expression = new_name |
1270 self.expression = new_name |
1410 setattr(cls, "updateElementName", updateElementName) |
1271 setattr(cls, "updateElementName", updateElementName) |
1411 |
1272 |
1412 cls = PLCOpenClasses.get("continuation", None) |
1273 cls = PLCOpenClasses.get("commonObjects_continuation", None) |
1413 if cls: |
1274 if cls: |
1414 setattr(cls, "getX", getX) |
1275 setattr(cls, "getx", getx) |
1415 setattr(cls, "getY", getY) |
1276 setattr(cls, "gety", gety) |
1416 setattr(cls, "setX", setX) |
1277 setattr(cls, "setx", setx) |
1417 setattr(cls, "setY", setY) |
1278 setattr(cls, "sety", sety) |
1418 |
1279 |
1419 def updateElementName(self, old_name, new_name): |
1280 def updateElementName(self, old_name, new_name): |
1420 pass |
1281 pass |
1421 setattr(cls, "updateElementName", updateElementName) |
1282 setattr(cls, "updateElementName", updateElementName) |
1422 |
1283 |
1423 cls = PLCOpenClasses.get("connector", None) |
1284 cls = PLCOpenClasses.get("commonObjects_connector", None) |
1424 if cls: |
1285 if cls: |
1425 setattr(cls, "getX", getX) |
1286 setattr(cls, "getx", getx) |
1426 setattr(cls, "getY", getY) |
1287 setattr(cls, "gety", gety) |
1427 setattr(cls, "setX", setX) |
1288 setattr(cls, "setx", setx) |
1428 setattr(cls, "setY", setY) |
1289 setattr(cls, "sety", sety) |
1429 |
1290 |
1430 def updateElementName(self, old_name, new_name): |
1291 def updateElementName(self, old_name, new_name): |
1431 pass |
1292 pass |
1432 setattr(cls, "updateElementName", updateElementName) |
1293 setattr(cls, "updateElementName", updateElementName) |
1433 |
1294 |
1434 cls = PLCOpenClasses.get("connection", None) |
1295 cls = PLCOpenClasses.get("connection", None) |
1435 if cls: |
1296 if cls: |
1436 def setPoints(self, points): |
1297 def setpoints(self, points): |
1437 self.position = [] |
1298 self.position = [] |
1438 for point in points: |
1299 for point in points: |
1439 position = PLCOpenClasses["position"]() |
1300 position = PLCOpenClasses["position"]() |
1440 position.setX(point.x) |
1301 position.setx(point.x) |
1441 position.setY(point.y) |
1302 position.sety(point.y) |
1442 self.position.append(position) |
1303 self.position.append(position) |
1443 setattr(cls, "setPoints", setPoints) |
1304 setattr(cls, "setpoints", setpoints) |
1444 |
1305 |
1445 def getPoints(self): |
1306 def getpoints(self): |
1446 points = [] |
1307 points = [] |
1447 for position in self.position: |
1308 for position in self.position: |
1448 points.append((position.getX(),position.getY())) |
1309 points.append((position.getx(),position.gety())) |
1449 return points |
1310 return points |
1450 setattr(cls, "getPoints", getPoints) |
1311 setattr(cls, "getpoints", getpoints) |
1451 |
1312 |
1452 cls = PLCOpenClasses.get("connectionPointIn", None) |
1313 cls = PLCOpenClasses.get("connectionPointIn", None) |
1453 if cls: |
1314 if cls: |
1454 def setRelPosition(self, x, y): |
1315 def setrelPositionXY(self, x, y): |
1455 self.relPosition = PLCOpenClasses["position"]() |
1316 self.relPosition = PLCOpenClasses["position"]() |
1456 self.relPosition.setX(x) |
1317 self.relPosition.setx(x) |
1457 self.relPosition.setY(y) |
1318 self.relPosition.sety(y) |
1458 setattr(cls, "setRelPosition", setRelPosition) |
1319 setattr(cls, "setrelPositionXY", setrelPositionXY) |
1459 |
1320 |
1460 def getRelPosition(self): |
1321 def getrelPositionXY(self): |
1461 if self.relPosition: |
1322 if self.relPosition: |
1462 return self.relPosition.getX(), self.relPosition.getY() |
1323 return self.relPosition.getx(), self.relPosition.gety() |
1463 else: |
1324 else: |
1464 return self.relPosition |
1325 return self.relPosition |
1465 setattr(cls, "getRelPosition", getRelPosition) |
1326 setattr(cls, "getrelPositionXY", getrelPositionXY) |
1466 |
1327 |
1467 def addConnection(self): |
1328 def addconnection(self): |
1468 if not self.content: |
1329 if not self.content: |
1469 self.content = {"name":"connection","value":[PLCOpenClasses["connection"]()]} |
1330 self.content = {"name" : "connection", "value" : [PLCOpenClasses["connection"]()]} |
1470 else: |
1331 else: |
1471 self.content["value"].append(PLCOpenClasses["connection"]()) |
1332 self.content["value"].append(PLCOpenClasses["connection"]()) |
1472 setattr(cls, "addConnection", addConnection) |
1333 setattr(cls, "addconnection", addconnection) |
1473 |
1334 |
1474 def removeConnection(self, idx): |
1335 def removeconnection(self, idx): |
1475 if self.content: |
1336 if self.content: |
1476 self.content["value"].pop(idx) |
1337 self.content["value"].pop(idx) |
1477 if len(self.content["value"]) == 0: |
1338 if len(self.content["value"]) == 0: |
1478 self.content = None |
1339 self.content = None |
1479 setattr(cls, "removeConnection", removeConnection) |
1340 setattr(cls, "removeconnection", removeconnection) |
1480 |
1341 |
1481 def removeConnections(self): |
1342 def removeconnections(self): |
1482 if self.content: |
1343 if self.content: |
1483 self.content = None |
1344 self.content = None |
1484 setattr(cls, "removeConnections", removeConnections) |
1345 setattr(cls, "removeconnections", removeconnections) |
1485 |
1346 |
1486 def getConnections(self): |
1347 def getconnections(self): |
1487 if self.content: |
1348 if self.content: |
1488 return self.content["value"] |
1349 return self.content["value"] |
1489 setattr(cls, "getConnections", getConnections) |
1350 setattr(cls, "getconnections", getconnections) |
1490 |
1351 |
1491 def setConnectionId(self, idx, id): |
1352 def setconnectionId(self, idx, id): |
1492 if self.content: |
1353 if self.content: |
1493 self.content["value"][idx].setRefLocalId(id) |
1354 self.content["value"][idx].setrefLocalId(id) |
1494 setattr(cls, "setConnectionId", setConnectionId) |
1355 setattr(cls, "setconnectionId", setconnectionId) |
1495 |
1356 |
1496 def getConnectionId(self, idx): |
1357 def getconnectionId(self, idx): |
1497 if self.content: |
1358 if self.content: |
1498 return self.content["value"][idx].getRefLocalId() |
1359 return self.content["value"][idx].getrefLocalId() |
1499 return None |
1360 return None |
1500 setattr(cls, "getConnectionId", getConnectionId) |
1361 setattr(cls, "getconnectionId", getconnectionId) |
1501 |
1362 |
1502 def setConnectionPoints(self, idx, points): |
1363 def setconnectionPoints(self, idx, points): |
1503 if self.content: |
1364 if self.content: |
1504 self.content["value"][idx].setPoints(points) |
1365 self.content["value"][idx].setpoints(points) |
1505 setattr(cls, "setConnectionPoints", setConnectionPoints) |
1366 setattr(cls, "setconnectionPoints", setconnectionPoints) |
1506 |
1367 |
1507 def getConnectionPoints(self, idx): |
1368 def getconnectionPoints(self, idx): |
1508 if self.content: |
1369 if self.content: |
1509 return self.content["value"][idx].getPoints() |
1370 return self.content["value"][idx].getpoints() |
1510 return None |
1371 return None |
1511 setattr(cls, "getConnectionPoints", getConnectionPoints) |
1372 setattr(cls, "getconnectionPoints", getconnectionPoints) |
1512 |
1373 |
1513 def setConnectionParameter(self, idx, parameter): |
1374 def setconnectionParameter(self, idx, parameter): |
1514 if self.content: |
1375 if self.content: |
1515 self.content["value"][idx].setFormalParameter(parameter) |
1376 self.content["value"][idx].setformalParameter(parameter) |
1516 setattr(cls, "setConnectionParameter", setConnectionParameter) |
1377 setattr(cls, "setconnectionParameter", setconnectionParameter) |
1517 |
1378 |
1518 def getConnectionParameter(self, idx): |
1379 def getconnectionParameter(self, idx): |
1519 if self.content: |
1380 if self.content: |
1520 return self.content["value"][idx].getFormalParameter() |
1381 return self.content["value"][idx].getformalParameter() |
1521 return None |
1382 return None |
1522 setattr(cls, "getConnectionParameter", getConnectionParameter) |
1383 setattr(cls, "getconnectionParameter", getconnectionParameter) |
1523 |
1384 |
1524 cls = PLCOpenClasses.get("connectionPointOut", None) |
1385 cls = PLCOpenClasses.get("connectionPointOut", None) |
1525 if cls: |
1386 if cls: |
1526 def setRelPosition(self, x, y): |
1387 def setrelPositionXY(self, x, y): |
1527 self.relPosition = PLCOpenClasses["position"]() |
1388 self.relPosition = PLCOpenClasses["position"]() |
1528 self.relPosition.setX(x) |
1389 self.relPosition.setx(x) |
1529 self.relPosition.setY(y) |
1390 self.relPosition.sety(y) |
1530 setattr(cls, "setRelPosition", setRelPosition) |
1391 setattr(cls, "setrelPositionXY", setrelPositionXY) |
1531 |
1392 |
1532 def getRelPosition(self): |
1393 def getrelPositionXY(self): |
1533 if self.relPosition: |
1394 if self.relPosition: |
1534 return self.relPosition.getX(), self.relPosition.getY() |
1395 return self.relPosition.getx(), self.relPosition.gety() |
1535 return self.relPosition |
1396 return self.relPosition |
1536 setattr(cls, "getRelPosition", getRelPosition) |
1397 setattr(cls, "getrelPositionXY", getrelPositionXY) |
1537 |
1398 |
1538 cls = PLCOpenClasses.get("value", None) |
1399 cls = PLCOpenClasses.get("value", None) |
1539 if cls: |
1400 if cls: |
1540 def setValue(self, value): |
1401 def setvalue(self, value): |
1541 if value.startswith("[") and value.endswith("]"): |
1402 if value.startswith("[") and value.endswith("]"): |
1542 arrayValue = PLCOpenClasses["value_arrayValue"]() |
1403 arrayValue = PLCOpenClasses["value_arrayValue"]() |
1543 self.content = {"name":"arrayValue","value":arrayValue} |
1404 self.content = {"name" : "arrayValue", "value" : arrayValue} |
1544 elif value.startswith("(") and value.endswith(")"): |
1405 elif value.startswith("(") and value.endswith(")"): |
1545 structValue = PLCOpenClasses["value_structValue"]() |
1406 structValue = PLCOpenClasses["value_structValue"]() |
1546 self.content = {"name":"structValue","value":structValue} |
1407 self.content = {"name" : "structValue", "value" : structValue} |
1547 else: |
1408 else: |
1548 simpleValue = PLCOpenClasses["value_simpleValue"]() |
1409 simpleValue = PLCOpenClasses["value_simpleValue"]() |
1549 self.content = {"name":"simpleValue","value":simpleValue} |
1410 self.content = {"name" : "simpleValue", "value": simpleValue} |
1550 self.content["value"].setValue(value) |
1411 self.content["value"].setvalue(value) |
1551 setattr(cls, "setValue", setValue) |
1412 setattr(cls, "setvalue", setvalue) |
1552 |
1413 |
1553 def getValue(self): |
1414 def getvalue(self): |
1554 return self.content["value"].getValue() |
1415 return self.content["value"].getvalue() |
1555 setattr(cls, "getValue", getValue) |
1416 setattr(cls, "getvalue", getvalue) |
1556 |
1417 |
1557 def extractValues(values): |
1418 def extractValues(values): |
1558 items = values.split(",") |
1419 items = values.split(",") |
1559 i = 1 |
1420 i = 1 |
1560 while i < len(items): |
1421 while i < len(items): |