plcopen/plcopen.py
changeset 625 b7062a7018ec
parent 617 1a80e0598045
child 630 9d7e38e271cb
equal deleted inserted replaced
624:efedc9d06a59 625:b7062a7018ec
   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":