89 |
89 |
90 cls = PLCOpenClasses.get("project", None) |
90 cls = PLCOpenClasses.get("project", None) |
91 if cls: |
91 if cls: |
92 cls.singleLineAttributes = False |
92 cls.singleLineAttributes = False |
93 |
93 |
|
94 def setName(self, name): |
|
95 self.contentHeader.setName(name) |
|
96 setattr(cls, "setName", setName) |
|
97 |
|
98 def getName(self): |
|
99 return self.contentHeader.getName() |
|
100 setattr(cls, "getName", getName) |
|
101 |
94 def getFileHeader(self): |
102 def getFileHeader(self): |
95 fileheader = {} |
103 fileheader = {} |
96 fileheader["companyName"] = self.fileHeader.getCompanyName() |
104 fileheader["companyName"] = self.fileHeader.getCompanyName() |
97 if self.fileHeader.getCompanyURL(): |
105 if self.fileHeader.getCompanyURL(): |
98 fileheader["companyURL"] = self.fileHeader.getCompanyURL() |
106 fileheader["companyURL"] = self.fileHeader.getCompanyURL() |
117 self.fileHeader.setCreationDateTime(fileheader["creationDateTime"]) |
125 self.fileHeader.setCreationDateTime(fileheader["creationDateTime"]) |
118 if "contentDescription" in fileheader: |
126 if "contentDescription" in fileheader: |
119 self.fileHeader.setContentDescription(fileheader["contentDescription"]) |
127 self.fileHeader.setContentDescription(fileheader["contentDescription"]) |
120 setattr(cls, "setFileHeader", setFileHeader) |
128 setattr(cls, "setFileHeader", setFileHeader) |
121 |
129 |
122 def setName(self, name): |
130 def getContentHeader(self): |
123 self.contentHeader.setName(name) |
131 contentheader = {} |
124 setattr(cls, "setName", setName) |
132 contentheader["projectName"] = self.contentHeader.getName() |
125 |
133 if self.contentHeader.getVersion(): |
126 def getName(self): |
134 contentheader["projectVersion"] = self.contentHeader.getVersion() |
127 return self.contentHeader.getName() |
135 if self.contentHeader.getModificationDateTime(): |
128 setattr(cls, "getName", getName) |
136 contentheader["modificationDateTime"] = self.contentHeader.getModificationDateTime() |
129 |
137 if self.contentHeader.getOrganization(): |
|
138 contentheader["organization"] = self.contentHeader.getOrganization() |
|
139 if self.contentHeader.getAuthor(): |
|
140 contentheader["authorName"] = self.contentHeader.getAuthor() |
|
141 if self.contentHeader.getLanguage(): |
|
142 contentheader["language"] = self.contentHeader.getLanguage() |
|
143 contentheader["pageSize"] = self.contentHeader.getPageSize() |
|
144 contentheader["scaling"] = self.contentHeader.getScaling() |
|
145 return contentheader |
|
146 setattr(cls, "getContentHeader", getContentHeader) |
|
147 |
|
148 def setContentHeader(self, contentheader): |
|
149 self.contentHeader.setName(contentheader["projectName"]) |
|
150 if "projectVersion" in contentheader: |
|
151 self.contentHeader.setVersion(contentheader["projectVersion"]) |
|
152 if "modificationDateTime" in contentheader: |
|
153 self.contentHeader.setModificationDateTime(contentheader["modificationDateTime"]) |
|
154 if "organization" in contentheader: |
|
155 self.contentHeader.setOrganization(contentheader["organization"]) |
|
156 if "authorName" in contentheader: |
|
157 self.contentHeader.setAuthor(contentheader["authorName"]) |
|
158 if "language" in contentheader: |
|
159 self.contentHeader.setLanguage(contentheader["language"]) |
|
160 self.contentHeader.setPageSize(*contentheader["pageSize"]) |
|
161 self.contentHeader.setScaling(contentheader["scaling"]) |
|
162 setattr(cls, "setContentHeader", setContentHeader) |
|
163 |
130 def getDataTypes(self): |
164 def getDataTypes(self): |
131 return self.types.getDataTypeElements() |
165 return self.types.getDataTypeElements() |
132 setattr(cls, "getDataTypes", getDataTypes) |
166 setattr(cls, "getDataTypes", getDataTypes) |
133 |
167 |
134 def getDataType(self, name): |
168 def getDataType(self, name): |
217 if resource.getName() == name: |
251 if resource.getName() == name: |
218 raise ValueError, "\"%s\" resource already exists in \"%s\" configuration !!!"%(name, config_name) |
252 raise ValueError, "\"%s\" resource already exists in \"%s\" configuration !!!"%(name, config_name) |
219 new_resource = PLCOpenClasses["configuration_resource"]() |
253 new_resource = PLCOpenClasses["configuration_resource"]() |
220 new_resource.setName(name) |
254 new_resource.setName(name) |
221 configuration.appendResource(new_resource) |
255 configuration.appendResource(new_resource) |
222 setattr(cls, "addConfigurationResource", addConfigurationResource) |
256 setattr(cls, "addConfigurationResource", addConfigurationResource) |
223 |
257 |
224 def removeConfigurationResource(self, config_name, name): |
258 def removeConfigurationResource(self, config_name, name): |
225 configuration = self.getConfiguration(config_name) |
259 configuration = self.getConfiguration(config_name) |
226 if configuration: |
260 if configuration: |
227 found = False |
261 found = False |
242 setattr(cls, "updateElementName", updateElementName) |
276 setattr(cls, "updateElementName", updateElementName) |
243 |
277 |
244 cls = PLCOpenClasses.get("project_fileHeader", None) |
278 cls = PLCOpenClasses.get("project_fileHeader", None) |
245 if cls: |
279 if cls: |
246 cls.singleLineAttributes = False |
280 cls.singleLineAttributes = False |
|
281 |
|
282 cls = PLCOpenClasses.get("project_contentHeader", None) |
|
283 if cls: |
|
284 cls.singleLineAttributes = False |
|
285 |
|
286 def setPageSize(self, width, height): |
|
287 self.coordinateInfo.setPageSize(width, height) |
|
288 setattr(cls, "setPageSize", setPageSize) |
|
289 |
|
290 def getPageSize(self): |
|
291 return self.coordinateInfo.getPageSize() |
|
292 setattr(cls, "getPageSize", getPageSize) |
|
293 |
|
294 def setScaling(self, scaling): |
|
295 for language, (x, y) in scaling.items(): |
|
296 self.coordinateInfo.setScaling(language, x, y) |
|
297 setattr(cls, "setScaling", setScaling) |
|
298 |
|
299 def getScaling(self): |
|
300 scaling = {} |
|
301 scaling["FBD"] = self.coordinateInfo.getScaling("FBD") |
|
302 scaling["LD"] = self.coordinateInfo.getScaling("LD") |
|
303 scaling["SFC"] = self.coordinateInfo.getScaling("SFC") |
|
304 return scaling |
|
305 setattr(cls, "getScaling", getScaling) |
|
306 |
|
307 cls = PLCOpenClasses.get("contentHeader_coordinateInfo", None) |
|
308 if cls: |
|
309 def setPageSize(self, width, height): |
|
310 if width == 0 and height == 0: |
|
311 self.deletePageSize() |
|
312 else: |
|
313 if self.pageSize is None: |
|
314 self.addPageSize() |
|
315 self.pageSize.setX(width) |
|
316 self.pageSize.setY(height) |
|
317 setattr(cls, "setPageSize", setPageSize) |
|
318 |
|
319 def getPageSize(self): |
|
320 if self.pageSize is not None: |
|
321 return self.pageSize.getX(), self.pageSize.getY() |
|
322 return 0, 0 |
|
323 setattr(cls, "getPageSize", getPageSize) |
|
324 |
|
325 def setScaling(self, language, x, y): |
|
326 if language == "FBD": |
|
327 self.fbd.scaling.setX(x) |
|
328 self.fbd.scaling.setY(y) |
|
329 elif language == "LD": |
|
330 self.ld.scaling.setX(x) |
|
331 self.ld.scaling.setY(y) |
|
332 elif language == "SFC": |
|
333 self.sfc.scaling.setX(x) |
|
334 self.sfc.scaling.setY(y) |
|
335 setattr(cls, "setScaling", setScaling) |
|
336 |
|
337 def getScaling(self, language): |
|
338 if language == "FBD": |
|
339 return self.fbd.scaling.getX(), self.fbd.scaling.getY() |
|
340 elif language == "LD": |
|
341 return self.ld.scaling.getX(), self.ld.scaling.getY() |
|
342 elif language == "SFC": |
|
343 return self.sfc.scaling.getX(), self.sfc.scaling.getY() |
|
344 return 0, 0 |
|
345 setattr(cls, "getScaling", getScaling) |
247 |
346 |
248 cls = PLCOpenClasses.get("configurations_configuration", None) |
347 cls = PLCOpenClasses.get("configurations_configuration", None) |
249 if cls: |
348 if cls: |
250 def updateElementName(self, old_name, new_name): |
349 def updateElementName(self, old_name, new_name): |
251 for resource in self.getResource(): |
350 for resource in self.getResource(): |
1453 |
1552 |
1454 def getValue(self): |
1553 def getValue(self): |
1455 return self.content["value"].getValue() |
1554 return self.content["value"].getValue() |
1456 setattr(cls, "getValue", getValue) |
1555 setattr(cls, "getValue", getValue) |
1457 |
1556 |
|
1557 def extractValues(self, values): |
|
1558 items = values.split(",") |
|
1559 i = 1 |
|
1560 while i < len(items): |
|
1561 opened = items[i - 1].count("(") + items[i - 1].count("[") |
|
1562 closed = items[i - 1].count(")") + items[i - 1].count("]") |
|
1563 if opened > closed: |
|
1564 items[i - 1] = ','.join([items[i - 1], items.pop(i)]) |
|
1565 elif opened == closed: |
|
1566 i += 1 |
|
1567 else: |
|
1568 raise ValueError, "\"%s\" is an invalid value!"%value |
|
1569 return items |
|
1570 |
1458 cls = PLCOpenClasses.get("value_arrayValue", None) |
1571 cls = PLCOpenClasses.get("value_arrayValue", None) |
1459 if cls: |
1572 if cls: |
1460 arrayValue_model = re.compile("([0-9]*)\((.*)\)") |
1573 arrayValue_model = re.compile("([0-9]*)\((.*)\)$") |
1461 |
1574 |
1462 def setValue(self, value): |
1575 def setValue(self, value): |
1463 self.value = [] |
1576 self.value = [] |
1464 for item in value[1:-1].split(","): |
1577 for item in extractValues(value[1:-1]): |
1465 item = item.strip() |
1578 item = item.strip() |
1466 element = PLCOpenClasses["arrayValue_value"]() |
1579 element = PLCOpenClasses["arrayValue_value"]() |
1467 result = arrayValue_model.match(item) |
1580 result = arrayValue_model.match(item) |
1468 if result is not None: |
1581 if result is not None: |
1469 groups = result.groups() |
1582 groups = result.groups() |
1489 if cls: |
1602 if cls: |
1490 structValue_model = re.compile("(.*):=(.*)") |
1603 structValue_model = re.compile("(.*):=(.*)") |
1491 |
1604 |
1492 def setValue(self, value): |
1605 def setValue(self, value): |
1493 self.value = [] |
1606 self.value = [] |
1494 for item in value[1:-1].split(","): |
1607 for item in extractValues(value[1:-1]): |
1495 result = arrayValue_model.match(item) |
1608 result = arrayValue_model.match(item) |
1496 if result is not None: |
1609 if result is not None: |
1497 groups = result.groups() |
1610 groups = result.groups() |
1498 element = PLCOpenClasses["structValue_value"]() |
1611 element = PLCOpenClasses["structValue_value"]() |
1499 element.setMember(groups[0].strip()) |
1612 element.setMember(groups[0].strip()) |