93 return fileheader |
93 return fileheader |
94 setattr(cls, "getfileHeader", getfileHeader) |
94 setattr(cls, "getfileHeader", getfileHeader) |
95 |
95 |
96 def setfileHeader(self, fileheader): |
96 def setfileHeader(self, fileheader): |
97 self.fileHeader.setcompanyName(fileheader["companyName"]) |
97 self.fileHeader.setcompanyName(fileheader["companyName"]) |
98 if "companyURL" in fileheader: |
98 if fileheader.has_key("companyURL"): |
99 self.fileHeader.setcompanyURL(fileheader["companyURL"]) |
99 self.fileHeader.setcompanyURL(fileheader["companyURL"]) |
100 self.fileHeader.setproductName(fileheader["productName"]) |
100 self.fileHeader.setproductName(fileheader["productName"]) |
101 self.fileHeader.setproductVersion(fileheader["productVersion"]) |
101 self.fileHeader.setproductVersion(fileheader["productVersion"]) |
102 if "productRelease" in fileheader: |
102 if fileheader.has_key("productRelease"): |
103 self.fileHeader.setproductRelease(fileheader["productRelease"]) |
103 self.fileHeader.setproductRelease(fileheader["productRelease"]) |
104 self.fileHeader.setcreationDateTime(fileheader["creationDateTime"]) |
104 self.fileHeader.setcreationDateTime(fileheader["creationDateTime"]) |
105 if "contentDescription" in fileheader: |
105 if fileheader.has_key("contentDescription"): |
106 self.fileHeader.setcontentDescription(fileheader["contentDescription"]) |
106 self.fileHeader.setcontentDescription(fileheader["contentDescription"]) |
107 setattr(cls, "setfileHeader", setfileHeader) |
107 setattr(cls, "setfileHeader", setfileHeader) |
108 |
108 |
109 def getcontentHeader(self): |
109 def getcontentHeader(self): |
110 contentheader = {} |
110 contentheader = {} |
124 return contentheader |
124 return contentheader |
125 setattr(cls, "getcontentHeader", getcontentHeader) |
125 setattr(cls, "getcontentHeader", getcontentHeader) |
126 |
126 |
127 def setcontentHeader(self, contentheader): |
127 def setcontentHeader(self, contentheader): |
128 self.contentHeader.setname(contentheader["projectName"]) |
128 self.contentHeader.setname(contentheader["projectName"]) |
129 if "projectVersion" in contentheader: |
129 if contentheader.has_key("projectVersion"): |
130 self.contentHeader.setversion(contentheader["projectVersion"]) |
130 self.contentHeader.setversion(contentheader["projectVersion"]) |
131 if "modificationDateTime" in contentheader: |
131 if contentheader.has_key("modificationDateTime"): |
132 self.contentHeader.setmodificationDateTime(contentheader["modificationDateTime"]) |
132 self.contentHeader.setmodificationDateTime(contentheader["modificationDateTime"]) |
133 if "organization" in contentheader: |
133 if contentheader.has_key("organization"): |
134 self.contentHeader.setorganization(contentheader["organization"]) |
134 self.contentHeader.setorganization(contentheader["organization"]) |
135 if "authorName" in contentheader: |
135 if contentheader.has_key("authorName"): |
136 self.contentHeader.setauthor(contentheader["authorName"]) |
136 self.contentHeader.setauthor(contentheader["authorName"]) |
137 if "language" in contentheader: |
137 if contentheader.has_key("language"): |
138 self.contentHeader.setlanguage(contentheader["language"]) |
138 self.contentHeader.setlanguage(contentheader["language"]) |
139 self.contentHeader.setpageSize(*contentheader["pageSize"]) |
139 self.contentHeader.setpageSize(*contentheader["pageSize"]) |
140 self.contentHeader.setscaling(contentheader["scaling"]) |
140 self.contentHeader.setscaling(contentheader["scaling"]) |
141 setattr(cls, "setcontentHeader", setcontentHeader) |
141 setattr(cls, "setcontentHeader", setcontentHeader) |
142 |
142 |
147 def getdataType(self, name): |
147 def getdataType(self, name): |
148 return self.types.getdataTypeElement(name) |
148 return self.types.getdataTypeElement(name) |
149 setattr(cls, "getdataType", getdataType) |
149 setattr(cls, "getdataType", getdataType) |
150 |
150 |
151 def appenddataType(self, name): |
151 def appenddataType(self, name): |
152 if name in self.CustomTypeHierarchy: |
152 if self.CustomTypeHierarchy.has_key(name): |
153 raise ValueError, "\"%s\" Data Type already exists !!!"%name |
153 raise ValueError, "\"%s\" Data Type already exists !!!"%name |
154 self.types.appenddataTypeElement(name) |
154 self.types.appenddataTypeElement(name) |
155 self.AddCustomDataType(self.getdataType(name)) |
155 self.AddCustomDataType(self.getdataType(name)) |
156 setattr(cls, "appenddataType", appenddataType) |
156 setattr(cls, "appenddataType", appenddataType) |
157 |
157 |
389 for datatype in datatypes: |
389 for datatype in datatypes: |
390 name = datatype.getname() |
390 name = datatype.getname() |
391 basetype_content = datatype.baseType.getcontent() |
391 basetype_content = datatype.baseType.getcontent() |
392 if basetype_content["name"] == "derived": |
392 if basetype_content["name"] == "derived": |
393 typename = basetype_content["value"].getname() |
393 typename = basetype_content["value"].getname() |
394 if typename in elementnames and name not in self.ElementUsingTree[typename]: |
394 if name in self.ElementUsingTree[typename]: |
395 self.ElementUsingTree[typename].append(name) |
395 self.ElementUsingTree[typename].append(name) |
396 elif basetype_content["name"] in ["subrangeSigned", "subrangeUnsigned", "array"]: |
396 elif basetype_content["name"] in ["subrangeSigned", "subrangeUnsigned", "array"]: |
397 base_type = basetype_content["value"].baseType.getcontent() |
397 base_type = basetype_content["value"].baseType.getcontent() |
398 if base_type["name"] == "derived": |
398 if base_type["name"] == "derived": |
399 typename = base_type["value"].getname() |
399 typename = base_type["value"].getname() |
400 if typename in elementnames and name not in self.ElementUsingTree[typename]: |
400 if self.ElementUsingTree.has_key(typename) and name not in self.ElementUsingTree[typename]: |
401 self.ElementUsingTree[typename].append(name) |
401 self.ElementUsingTree[typename].append(name) |
402 elif basetype_content["name"] == "struct": |
402 elif basetype_content["name"] == "struct": |
403 for element in basetype_content["value"].getvariable(): |
403 for element in basetype_content["value"].getvariable(): |
404 type_content = element.type.getcontent() |
404 type_content = element.type.getcontent() |
405 if type_content["name"] == "derived": |
405 if type_content["name"] == "derived": |
406 typename = type_content["value"].getname() |
406 typename = type_content["value"].getname() |
407 if typename in elementnames and name not in self.ElementUsingTree[typename]: |
407 if self.ElementUsingTree.has_key(typename) and name not in self.ElementUsingTree[typename]: |
408 self.ElementUsingTree[typename].append(name) |
408 self.ElementUsingTree[typename].append(name) |
409 # Analyze each pou |
409 # Analyze each pou |
410 for pou in pous: |
410 for pou in pous: |
411 name = pou.getname() |
411 name = pou.getname() |
412 if pou.interface: |
412 if pou.interface: |
414 for type, varlist in pou.getvars(): |
414 for type, varlist in pou.getvars(): |
415 for var in varlist.getvariable(): |
415 for var in varlist.getvariable(): |
416 vartype_content = var.gettype().getcontent() |
416 vartype_content = var.gettype().getcontent() |
417 if vartype_content["name"] == "derived": |
417 if vartype_content["name"] == "derived": |
418 typename = vartype_content["value"].getname() |
418 typename = vartype_content["value"].getname() |
419 if typename in elementnames and name not in self.ElementUsingTree[typename]: |
419 if self.ElementUsingTree.has_key(typename) and name not in self.ElementUsingTree[typename]: |
420 self.ElementUsingTree[typename].append(name) |
420 self.ElementUsingTree[typename].append(name) |
421 setattr(cls, "RefreshElementUsingTree", RefreshElementUsingTree) |
421 setattr(cls, "RefreshElementUsingTree", RefreshElementUsingTree) |
422 |
422 |
423 def GetParentType(self, type): |
423 def GetParentType(self, type): |
424 if type in self.CustomTypeHierarchy: |
424 if self.CustomTypeHierarchy.has_key(type): |
425 return self.CustomTypeHierarchy[type] |
425 return self.CustomTypeHierarchy[type] |
426 elif type in TypeHierarchy: |
426 elif TypeHierarchy.has_key(type): |
427 return TypeHierarchy[type] |
427 return TypeHierarchy[type] |
428 return None |
428 return None |
429 setattr(cls, "GetParentType", GetParentType) |
429 setattr(cls, "GetParentType", GetParentType) |
430 |
430 |
431 def GetBaseType(self, type): |
431 def GetBaseType(self, type): |
463 return False |
463 return False |
464 setattr(cls, "IsOfType", IsOfType) |
464 setattr(cls, "IsOfType", IsOfType) |
465 |
465 |
466 # Return if pou given by name is used by another pou |
466 # Return if pou given by name is used by another pou |
467 def ElementIsUsed(self, name): |
467 def ElementIsUsed(self, name): |
468 if name in self.ElementUsingTree: |
468 if self.ElementUsingTree.has_key(name): |
469 return len(self.ElementUsingTree[name]) > 0 |
469 return len(self.ElementUsingTree[name]) > 0 |
470 return False |
470 return False |
471 setattr(cls, "ElementIsUsed", ElementIsUsed) |
471 setattr(cls, "ElementIsUsed", ElementIsUsed) |
472 |
472 |
473 def DataTypeIsDerived(self, name): |
473 def DataTypeIsDerived(self, name): |
474 return name in self.CustomTypeHierarchy.values() |
474 return name in self.CustomTypeHierarchy.values() |
475 setattr(cls, "DataTypeIsDerived", DataTypeIsDerived) |
475 setattr(cls, "DataTypeIsDerived", DataTypeIsDerived) |
476 |
476 |
477 # Return if pou given by name is directly or undirectly used by the reference pou |
477 # Return if pou given by name is directly or undirectly used by the reference pou |
478 def ElementIsUsedBy(self, name, reference): |
478 def ElementIsUsedBy(self, name, reference): |
479 if name in self.ElementUsingTree: |
479 if self.ElementUsingTree.has_key(name): |
480 list = self.ElementUsingTree[name] |
480 list = self.ElementUsingTree[name] |
481 # Test if pou is directly used by reference |
481 # Test if pou is directly used by reference |
482 if reference in list: |
482 if reference in list: |
483 return True |
483 return True |
484 else: |
484 else: |
490 return used |
490 return used |
491 return False |
491 return False |
492 setattr(cls, "ElementIsUsedBy", ElementIsUsedBy) |
492 setattr(cls, "ElementIsUsedBy", ElementIsUsedBy) |
493 |
493 |
494 def GetDataTypeRange(self, type): |
494 def GetDataTypeRange(self, type): |
495 if type in self.CustomDataTypeRange: |
495 if self.CustomDataTypeRange.has_key(type): |
496 return self.CustomDataTypeRange[type] |
496 return self.CustomDataTypeRange[type] |
497 elif type in DataTypeRange: |
497 elif DataTypeRange.has_key(type): |
498 return DataTypeRange[type] |
498 return DataTypeRange[type] |
499 else: |
499 else: |
500 parent_type = self.GetParentType(type) |
500 parent_type = self.GetParentType(type) |
501 if parent_type is not None: |
501 if parent_type is not None: |
502 return self.GetDataTypeRange(parent_type) |
502 return self.GetDataTypeRange(parent_type) |
507 if type is None: |
507 if type is None: |
508 all_values = [] |
508 all_values = [] |
509 for values in self.EnumeratedDataTypeValues.values(): |
509 for values in self.EnumeratedDataTypeValues.values(): |
510 all_values.extend(values) |
510 all_values.extend(values) |
511 return all_values |
511 return all_values |
512 elif type in self.EnumeratedDataTypeValues: |
512 elif self.EnumeratedDataTypeValues.has_key(type): |
513 return self.EnumeratedDataTypeValues(type) |
513 return self.EnumeratedDataTypeValues[type] |
514 return [] |
514 return [] |
515 setattr(cls, "GetEnumeratedDataTypeValues", GetEnumeratedDataTypeValues) |
515 setattr(cls, "GetEnumeratedDataTypeValues", GetEnumeratedDataTypeValues) |
516 |
516 |
517 # Function that returns the block definition associated to the block type given |
517 # Function that returns the block definition associated to the block type given |
518 def GetCustomBlockType(self, type, inputs = None): |
518 def GetCustomBlockType(self, type, inputs = None): |
1534 action.addreference() |
1534 action.addreference() |
1535 action.setreferenceName(params["value"]) |
1535 action.setreferenceName(params["value"]) |
1536 else: |
1536 else: |
1537 action.addinline() |
1537 action.addinline() |
1538 action.setinlineContent(params["value"]) |
1538 action.setinlineContent(params["value"]) |
1539 if "duration" in params: |
1539 if params.has_key("duration"): |
1540 action.setduration(params["duration"]) |
1540 action.setduration(params["duration"]) |
1541 if "indicator" in params: |
1541 if params.has_key("indicator"): |
1542 action.setindicator(params["indicator"]) |
1542 action.setindicator(params["indicator"]) |
1543 self.action.append(action) |
1543 self.action.append(action) |
1544 setattr(cls, "setactions", setactions) |
1544 setattr(cls, "setactions", setactions) |
1545 |
1545 |
1546 def getactions(self): |
1546 def getactions(self): |