431 setattr(cls, "RefreshCustomBlockTypes", RefreshCustomBlockTypes) |
431 setattr(cls, "RefreshCustomBlockTypes", RefreshCustomBlockTypes) |
432 |
432 |
433 def AddCustomBlockType(self, pou): |
433 def AddCustomBlockType(self, pou): |
434 pou_name = pou.getname() |
434 pou_name = pou.getname() |
435 pou_type = pou.getpouType() |
435 pou_type = pou.getpouType() |
|
436 pou_description = pou.getdescription() |
|
437 if pou_description != "": |
|
438 pou_comment = "%s\n%s" % (pou_name, pou_description) |
|
439 else: |
|
440 pou_comment = pou_name |
436 block_infos = {"name" : pou_name, "type" : pou_type, "extensible" : False, |
441 block_infos = {"name" : pou_name, "type" : pou_type, "extensible" : False, |
437 "inputs" : [], "outputs" : [], "comment" : "", |
442 "inputs" : [], "outputs" : [], "comment" : pou_comment, |
438 "generate" : generate_block, "initialise" : initialise_block} |
443 "generate" : generate_block, "initialise" : initialise_block} |
439 if pou.getinterface(): |
444 if pou.getinterface(): |
440 return_type = pou.interface.getreturnType() |
445 return_type = pou.interface.getreturnType() |
441 if return_type: |
446 if return_type: |
442 var_type = return_type.getcontent() |
447 var_type = return_type.getcontent() |
475 block_infos["outputs"].append((var.getname(), var_type["value"].getname(), "none")) |
480 block_infos["outputs"].append((var.getname(), var_type["value"].getname(), "none")) |
476 elif var_type["name"] in ["string", "wstring"]: |
481 elif var_type["name"] in ["string", "wstring"]: |
477 block_infos["outputs"].append((var.getname(), var_type["name"].upper(), "none")) |
482 block_infos["outputs"].append((var.getname(), var_type["name"].upper(), "none")) |
478 else: |
483 else: |
479 block_infos["outputs"].append((var.getname(), var_type["name"], "none")) |
484 block_infos["outputs"].append((var.getname(), var_type["name"], "none")) |
480 if pou.getbodyType() in ["FBD","LD","SFC"]: |
485 block_infos["usage"] = "\n (%s) => (%s)" % (", ".join(["%s:%s" % (input[1], input[0]) for input in block_infos["inputs"]]), |
481 for instance in pou.getinstances(): |
486 ", ".join(["%s:%s" % (output[1], output[0]) for output in block_infos["outputs"]])) |
482 if isinstance(instance, PLCOpenClasses.get("commonObjects_comment", None)): |
|
483 block_infos["comment"] = instance.getcontentText() |
|
484 self.CustomBlockTypes.append(block_infos) |
487 self.CustomBlockTypes.append(block_infos) |
485 setattr(cls, "AddCustomBlockType", AddCustomBlockType) |
488 setattr(cls, "AddCustomBlockType", AddCustomBlockType) |
486 |
489 |
487 def RefreshElementUsingTree(self): |
490 def RefreshElementUsingTree(self): |
488 # Reset the tree of user-defined element cross-use |
491 # Reset the tree of user-defined element cross-use |
1186 setattr(cls, "Search", Search) |
1189 setattr(cls, "Search", Search) |
1187 |
1190 |
1188 cls = PLCOpenClasses.get("pous_pou", None) |
1191 cls = PLCOpenClasses.get("pous_pou", None) |
1189 if cls: |
1192 if cls: |
1190 |
1193 |
|
1194 def setdescription(self, description): |
|
1195 doc = self.getdocumentation() |
|
1196 if doc is None: |
|
1197 doc = PLCOpenClasses["formattedText"]() |
|
1198 self.setdocumentation(doc) |
|
1199 doc.settext(description) |
|
1200 setattr(cls, "setdescription", setdescription) |
|
1201 |
|
1202 def getdescription(self): |
|
1203 doc = self.getdocumentation() |
|
1204 if doc is not None: |
|
1205 return doc.gettext() |
|
1206 return "" |
|
1207 setattr(cls, "getdescription", getdescription) |
|
1208 |
1191 def setbodyType(self, type): |
1209 def setbodyType(self, type): |
1192 if len(self.body) > 0: |
1210 if len(self.body) > 0: |
1193 if type == "IL": |
1211 if type == "IL": |
1194 self.body[0].setcontent({"name" : "IL", "value" : PLCOpenClasses["formattedText"]()}) |
1212 self.body[0].setcontent({"name" : "IL", "value" : PLCOpenClasses["formattedText"]()}) |
1195 elif type == "ST": |
1213 elif type == "ST": |