530 |
530 |
531 def ProjectChangePouType(self, name, pou_type): |
531 def ProjectChangePouType(self, name, pou_type): |
532 if self.Project is not None: |
532 if self.Project is not None: |
533 pou = self.Project.getpou(name) |
533 pou = self.Project.getpou(name) |
534 if pou is not None: |
534 if pou is not None: |
535 pou.setpouType(pou_type) |
535 new_pou = self.Copy(pou) |
|
536 idx = 0 |
|
537 new_name = name + "_" + pou_type |
|
538 while self.Project.getpou(new_name) is not None: |
|
539 idx += 1 |
|
540 new_name = "%s%d" % (name, idx) |
|
541 new_pou.setname(new_name) |
|
542 |
|
543 orig_type = pou.getpouType() |
|
544 if orig_type == 'function' and pou_type in ['functionBlock', 'program']: |
|
545 # delete return type |
|
546 return_type_obj = new_pou.interface.getreturnType() |
|
547 new_pou.interface.remove(return_type_obj) |
|
548 # To be ultimately correct we could re-create an |
|
549 # output variable with same name+_out or so |
|
550 # but in any case user will have to connect/assign |
|
551 # this output, so better leave it as-is |
|
552 |
|
553 new_pou.setpouType(pou_type) |
|
554 self.Project.insertpou(0, new_pou) |
536 self.BufferProject() |
555 self.BufferProject() |
537 |
556 |
538 def GetPouXml(self, pou_name): |
557 def GetPouXml(self, pou_name): |
539 if self.Project is not None: |
558 if self.Project is not None: |
540 pou = self.Project.getpou(pou_name) |
559 pou = self.Project.getpou(pou_name) |