126 start = TextLenInRowColumn(text[:result.start()]) |
126 start = TextLenInRowColumn(text[:result.start()]) |
127 end = TextLenInRowColumn(text[:result.end() - 1]) |
127 end = TextLenInRowColumn(text[:result.end() - 1]) |
128 test_result.append((start, end, "\n".join(lines[start[0]:end[0] + 1]))) |
128 test_result.append((start, end, "\n".join(lines[start[0]:end[0] + 1]))) |
129 result = criteria["pattern"].search(text, result.end()) |
129 result = criteria["pattern"].search(text, result.end()) |
130 return test_result |
130 return test_result |
|
131 |
|
132 def TextMatched(str1, str2): |
|
133 return str1 and str2 and (str1.upper() == str2.upper()) |
131 |
134 |
132 PLCOpenParser = GenerateParserFromXSD(os.path.join(os.path.split(__file__)[0], "tc6_xml_v201.xsd")) |
135 PLCOpenParser = GenerateParserFromXSD(os.path.join(os.path.split(__file__)[0], "tc6_xml_v201.xsd")) |
133 PLCOpen_XPath = lambda xpath: etree.XPath(xpath, namespaces=PLCOpenParser.NSMAP) |
136 PLCOpen_XPath = lambda xpath: etree.XPath(xpath, namespaces=PLCOpenParser.NSMAP) |
134 |
137 |
135 LOAD_POU_PROJECT_TEMPLATE = """ |
138 LOAD_POU_PROJECT_TEMPLATE = """ |
288 |
291 |
289 cls = PLCOpenParser.GetElementClass("formattedText") |
292 cls = PLCOpenParser.GetElementClass("formattedText") |
290 if cls: |
293 if cls: |
291 def updateElementName(self, old_name, new_name): |
294 def updateElementName(self, old_name, new_name): |
292 text = self.getanyText() |
295 text = self.getanyText() |
293 index = text.find(old_name) |
296 pattern = re.compile('\\b' + old_name + '\\b', re.IGNORECASE) |
294 while index != -1: |
297 text = pattern.sub(new_name, text) |
295 if index > 0 and (text[index - 1].isalnum() or text[index - 1] == "_"): |
|
296 index = text.find(old_name, index + len(old_name)) |
|
297 elif index < len(text) - len(old_name) and (text[index + len(old_name)].isalnum() or text[index + len(old_name)] == "_"): |
|
298 index = text.find(old_name, index + len(old_name)) |
|
299 else: |
|
300 text = text[:index] + new_name + text[index + len(old_name):] |
|
301 index = text.find(old_name, index + len(new_name)) |
|
302 self.setanyText(text) |
298 self.setanyText(text) |
303 setattr(cls, "updateElementName", updateElementName) |
299 setattr(cls, "updateElementName", updateElementName) |
304 |
300 |
305 def updateElementAddress(self, address_model, new_leading): |
301 def updateElementAddress(self, address_model, new_leading): |
306 text = self.getanyText() |
302 text = self.getanyText() |
314 result = address_model.search(text, startpos) |
310 result = address_model.search(text, startpos) |
315 self.setanyText(text) |
311 self.setanyText(text) |
316 setattr(cls, "updateElementAddress", updateElementAddress) |
312 setattr(cls, "updateElementAddress", updateElementAddress) |
317 |
313 |
318 def hasblock(self, block_type): |
314 def hasblock(self, block_type): |
319 text = self.getanyText().upper() |
315 text = self.getanyText() |
320 index = text.find(block_type.upper()) |
316 pattern = re.compile('\\b' + block_type + '\\b', re.IGNORECASE) |
321 while index != -1: |
317 return pattern.search(text) is not None |
322 if (not (index > 0 and (text[index - 1].isalnum() or text[index - 1] == "_")) and |
|
323 not (index < len(text) - len(block_type) and text[index + len(block_type)] != "(")): |
|
324 return True |
|
325 index = text.find(block_type.upper(), index + len(block_type)) |
|
326 return False |
|
327 setattr(cls, "hasblock", hasblock) |
318 setattr(cls, "hasblock", hasblock) |
328 |
319 |
329 def Search(self, criteria, parent_infos): |
320 def Search(self, criteria, parent_infos): |
330 return [(tuple(parent_infos),) + result for result in TestTextElement(self.getanyText(), criteria)] |
321 return [(tuple(parent_infos),) + result for result in TestTextElement(self.getanyText(), criteria)] |
331 setattr(cls, "Search", Search) |
322 setattr(cls, "Search", Search) |
638 def _updateConfigurationResourceElementName(self, old_name, new_name): |
629 def _updateConfigurationResourceElementName(self, old_name, new_name): |
639 for varlist in self.getglobalVars(): |
630 for varlist in self.getglobalVars(): |
640 for var in varlist.getvariable(): |
631 for var in varlist.getvariable(): |
641 var_address = var.getaddress() |
632 var_address = var.getaddress() |
642 if var_address is not None: |
633 if var_address is not None: |
643 if var_address == old_name: |
634 if TextMatched(var_address, old_name): |
644 var.setaddress(new_name) |
635 var.setaddress(new_name) |
645 if var.getname() == old_name: |
636 if TextMatched(var.getname(), old_name): |
646 var.setname(new_name) |
637 var.setname(new_name) |
647 |
638 |
648 def _updateConfigurationResourceElementAddress(self, address_model, new_leading): |
639 def _updateConfigurationResourceElementAddress(self, address_model, new_leading): |
649 for varlist in self.getglobalVars(): |
640 for varlist in self.getglobalVars(): |
650 for var in varlist.getvariable(): |
641 for var in varlist.getvariable(): |
774 setattr(cls, "Search", Search) |
765 setattr(cls, "Search", Search) |
775 |
766 |
776 cls = PLCOpenParser.GetElementClass("task", "resource") |
767 cls = PLCOpenParser.GetElementClass("task", "resource") |
777 if cls: |
768 if cls: |
778 def updateElementName(self, old_name, new_name): |
769 def updateElementName(self, old_name, new_name): |
779 if self.single == old_name: |
770 if TextMatched(self.single, old_name): |
780 self.single = new_name |
771 self.single = new_name |
781 if self.interval == old_name: |
772 if TextMatched(self.interval, old_name): |
782 self.interval = new_name |
773 self.interval = new_name |
783 for instance in self.getpouInstance(): |
774 for instance in self.getpouInstance(): |
784 instance.updateElementName(old_name, new_name) |
775 instance.updateElementName(old_name, new_name) |
785 setattr(cls, "updateElementName", updateElementName) |
776 setattr(cls, "updateElementName", updateElementName) |
786 |
777 |
799 setattr(cls, "Search", Search) |
790 setattr(cls, "Search", Search) |
800 |
791 |
801 cls = PLCOpenParser.GetElementClass("pouInstance") |
792 cls = PLCOpenParser.GetElementClass("pouInstance") |
802 if cls: |
793 if cls: |
803 def updateElementName(self, old_name, new_name): |
794 def updateElementName(self, old_name, new_name): |
804 if self.typeName == old_name: |
795 if TextMatched(self.typeName, old_name): |
805 self.typeName = new_name |
796 self.typeName = new_name |
806 setattr(cls, "updateElementName", updateElementName) |
797 setattr(cls, "updateElementName", updateElementName) |
807 |
798 |
808 def Search(self, criteria, parent_infos=[]): |
799 def Search(self, criteria, parent_infos=[]): |
809 return _Search([("name", self.getname()), |
800 return _Search([("name", self.getname()), |
861 setattr(cls, "getdataTypeElements", getdataTypeElements) |
852 setattr(cls, "getdataTypeElements", getdataTypeElements) |
862 |
853 |
863 def getdataTypeElement(self, name): |
854 def getdataTypeElement(self, name): |
864 elements = self.dataTypes.getdataType() |
855 elements = self.dataTypes.getdataType() |
865 for element in elements: |
856 for element in elements: |
866 if element.getname() == name: |
857 if TextMatched(element.getname(), name): |
867 return element |
858 return element |
868 return None |
859 return None |
869 setattr(cls, "getdataTypeElement", getdataTypeElement) |
860 setattr(cls, "getdataTypeElement", getdataTypeElement) |
870 |
861 |
871 def appenddataTypeElement(self, name): |
862 def appenddataTypeElement(self, name): |
880 setattr(cls, "insertdataTypeElement", insertdataTypeElement) |
871 setattr(cls, "insertdataTypeElement", insertdataTypeElement) |
881 |
872 |
882 def removedataTypeElement(self, name): |
873 def removedataTypeElement(self, name): |
883 found = False |
874 found = False |
884 for element in self.dataTypes.getdataType(): |
875 for element in self.dataTypes.getdataType(): |
885 if element.getname() == name: |
876 if TextMatched(element.getname(), name): |
886 self.dataTypes.remove(element) |
877 self.dataTypes.remove(element) |
887 found = True |
878 found = True |
888 break |
879 break |
889 if not found: |
880 if not found: |
890 raise ValueError, _("\"%s\" Data Type doesn't exist !!!")%name |
881 raise ValueError, _("\"%s\" Data Type doesn't exist !!!")%name |
895 setattr(cls, "getpouElements", getpouElements) |
886 setattr(cls, "getpouElements", getpouElements) |
896 |
887 |
897 def getpouElement(self, name): |
888 def getpouElement(self, name): |
898 elements = self.pous.getpou() |
889 elements = self.pous.getpou() |
899 for element in elements: |
890 for element in elements: |
900 if element.getname() == name: |
891 if TextMatched(element.getname(), name): |
901 return element |
892 return element |
902 return None |
893 return None |
903 setattr(cls, "getpouElement", getpouElement) |
894 setattr(cls, "getpouElement", getpouElement) |
904 |
895 |
905 def appendpouElement(self, name, pou_type, body_type): |
896 def appendpouElement(self, name, pou_type, body_type): |
906 for element in self.pous.getpou(): |
897 for element in self.pous.getpou(): |
907 if element.getname() == name: |
898 if TextMatched(element.getname(), name): |
908 raise ValueError, _("\"%s\" POU already exists !!!")%name |
899 raise ValueError, _("\"%s\" POU already exists !!!")%name |
909 new_pou = PLCOpenParser.CreateElement("pou", "pous") |
900 new_pou = PLCOpenParser.CreateElement("pou", "pous") |
910 self.pous.appendpou(new_pou) |
901 self.pous.appendpou(new_pou) |
911 new_pou.setname(name) |
902 new_pou.setname(name) |
912 new_pou.setpouType(pou_type) |
903 new_pou.setpouType(pou_type) |
919 setattr(cls, "insertpouElement", insertpouElement) |
910 setattr(cls, "insertpouElement", insertpouElement) |
920 |
911 |
921 def removepouElement(self, name): |
912 def removepouElement(self, name): |
922 found = False |
913 found = False |
923 for element in self.pous.getpou(): |
914 for element in self.pous.getpou(): |
924 if element.getname() == name: |
915 if TextMatched(element.getname(), name): |
925 self.pous.remove(element) |
916 self.pous.remove(element) |
926 found = True |
917 found = True |
927 break |
918 break |
928 if not found: |
919 if not found: |
929 raise ValueError, _("\"%s\" POU doesn't exist !!!")%name |
920 raise ValueError, _("\"%s\" POU doesn't exist !!!")%name |
986 setattr(cls, "Search", Search) |
977 setattr(cls, "Search", Search) |
987 |
978 |
988 cls = PLCOpenParser.GetElementClass("derived", "dataType") |
979 cls = PLCOpenParser.GetElementClass("derived", "dataType") |
989 if cls: |
980 if cls: |
990 def updateElementName(self, old_name, new_name): |
981 def updateElementName(self, old_name, new_name): |
991 if self.name == old_name: |
982 if TextMatched(self.name, old_name): |
992 self.name = new_name |
983 self.name = new_name |
993 setattr(cls, "updateElementName", updateElementName) |
984 setattr(cls, "updateElementName", updateElementName) |
994 |
985 |
995 def Search(self, criteria, parent_infos=[]): |
986 def Search(self, criteria, parent_infos=[]): |
996 return [(tuple(parent_infos),) + result for result in TestTextElement(self.name, criteria)] |
987 return [(tuple(parent_infos),) + result for result in TestTextElement(self.name, criteria)] |
1231 if self.interface is not None: |
1222 if self.interface is not None: |
1232 content = self.interface.getcontent() |
1223 content = self.interface.getcontent() |
1233 for varlist in content: |
1224 for varlist in content: |
1234 variables = varlist.getvariable() |
1225 variables = varlist.getvariable() |
1235 for var in variables: |
1226 for var in variables: |
1236 if var.getname() == old_name: |
1227 if TextMatched(var.getname(), old_name): |
1237 vartype_content = var.gettype().getcontent() |
1228 vartype_content = var.gettype().getcontent() |
1238 if vartype_content.getLocalTag() == "derived" and vartype_content.getname() == old_type: |
1229 if vartype_content.getLocalTag() == "derived" and TextMatched(vartype_content.getname(), old_type): |
1239 var.setname(new_name) |
1230 var.setname(new_name) |
1240 vartype_content.setname(new_type) |
1231 vartype_content.setname(new_type) |
1241 return |
1232 return |
1242 setattr(cls, "changepouVar", changepouVar) |
1233 setattr(cls, "changepouVar", changepouVar) |
1243 |
1234 |
1244 def removepouVar(self, var_type, name): |
1235 def removepouVar(self, var_type, name): |
1245 if self.interface is not None: |
1236 if self.interface is not None: |
1246 content = self.interface.getcontent() |
1237 content = self.interface.getcontent() |
1247 for varlist in content: |
1238 for varlist in content: |
1248 for var in varlist.getvariable(): |
1239 for var in varlist.getvariable(): |
1249 if var.getname() == name: |
1240 if TextMatched(var.getname(), name): |
1250 vartype_content = var.gettype().getcontent() |
1241 vartype_content = var.gettype().getcontent() |
1251 if vartype_content.getLocalTag() == "derived" and vartype_content.getname() == var_type: |
1242 if vartype_content.getLocalTag() == "derived" and TextMatched(vartype_content.getname(), var_type): |
1252 varlist.remove(var) |
1243 varlist.remove(var) |
1253 if len(varlist.getvariable()) == 0: |
1244 if len(varlist.getvariable()) == 0: |
1254 self.interface.remove(varlist) |
1245 self.interface.remove(varlist) |
1255 break |
1246 break |
1256 setattr(cls, "removepouVar", removepouVar) |
1247 setattr(cls, "removepouVar", removepouVar) |
1257 |
1248 |
1258 def hasblock(self, name=None, block_type=None): |
1249 def hasblock(self, name=None, block_type=None): |
1259 if self.getbodyType() in ["FBD", "LD", "SFC"]: |
1250 if self.getbodyType() in ["FBD", "LD", "SFC"]: |
1260 for instance in self.getinstances(): |
1251 for instance in self.getinstances(): |
1261 if (isinstance(instance, PLCOpenParser.GetElementClass("block", "fbdObjects")) and |
1252 if (isinstance(instance, PLCOpenParser.GetElementClass("block", "fbdObjects")) and |
1262 (name and instance.getinstanceName() == name or |
1253 (TextMatched(instance.getinstanceName(), name) or TextMatched(instance.gettypeName(), block_type))): |
1263 block_type and instance.gettypeName() == block_type)): |
|
1264 return True |
1254 return True |
1265 if self.transitions: |
1255 if self.transitions: |
1266 for transition in self.transitions.gettransition(): |
1256 for transition in self.transitions.gettransition(): |
1267 result = transition.hasblock(name, block_type) |
1257 result = transition.hasblock(name, block_type) |
1268 if result: |
1258 if result: |
1292 setattr(cls, "addtransition", addtransition) |
1282 setattr(cls, "addtransition", addtransition) |
1293 |
1283 |
1294 def gettransition(self, name): |
1284 def gettransition(self, name): |
1295 if self.transitions is not None: |
1285 if self.transitions is not None: |
1296 for transition in self.transitions.gettransition(): |
1286 for transition in self.transitions.gettransition(): |
1297 if transition.getname() == name: |
1287 if TextMatched(transition.getname(), name): |
1298 return transition |
1288 return transition |
1299 return None |
1289 return None |
1300 setattr(cls, "gettransition", gettransition) |
1290 setattr(cls, "gettransition", gettransition) |
1301 |
1291 |
1302 def gettransitionList(self): |
1292 def gettransitionList(self): |
1307 |
1297 |
1308 def removetransition(self, name): |
1298 def removetransition(self, name): |
1309 if self.transitions is not None: |
1299 if self.transitions is not None: |
1310 removed = False |
1300 removed = False |
1311 for transition in self.transitions.gettransition(): |
1301 for transition in self.transitions.gettransition(): |
1312 if transition.getname() == name: |
1302 if TextMatched(transition.getname(), name): |
1313 if transition.getbodyType() in ["FBD", "LD", "SFC"]: |
1303 if transition.getbodyType() in ["FBD", "LD", "SFC"]: |
1314 for instance in transition.getinstances(): |
1304 for instance in transition.getinstances(): |
1315 if isinstance(instance, PLCOpenParser.GetElementClass("block", "fbdObjects")): |
1305 if isinstance(instance, PLCOpenParser.GetElementClass("block", "fbdObjects")): |
1316 self.removepouVar(instance.gettypeName(), |
1306 self.removepouVar(instance.gettypeName(), |
1317 instance.getinstanceName()) |
1307 instance.getinstanceName()) |
1333 setattr(cls, "addaction", addaction) |
1323 setattr(cls, "addaction", addaction) |
1334 |
1324 |
1335 def getaction(self, name): |
1325 def getaction(self, name): |
1336 if self.actions is not None: |
1326 if self.actions is not None: |
1337 for action in self.actions.getaction(): |
1327 for action in self.actions.getaction(): |
1338 if action.getname() == name: |
1328 if TextMatched(action.getname(), name): |
1339 return action |
1329 return action |
1340 return None |
1330 return None |
1341 setattr(cls, "getaction", getaction) |
1331 setattr(cls, "getaction", getaction) |
1342 |
1332 |
1343 def getactionList(self): |
1333 def getactionList(self): |
1348 |
1338 |
1349 def removeaction(self, name): |
1339 def removeaction(self, name): |
1350 if self.actions is not None: |
1340 if self.actions is not None: |
1351 removed = False |
1341 removed = False |
1352 for action in self.actions.getaction(): |
1342 for action in self.actions.getaction(): |
1353 if action.getname() == name: |
1343 if TextMatched(action.getname(), name): |
1354 if action.getbodyType() in ["FBD", "LD", "SFC"]: |
1344 if action.getbodyType() in ["FBD", "LD", "SFC"]: |
1355 for instance in action.getinstances(): |
1345 for instance in action.getinstances(): |
1356 if isinstance(instance, PLCOpenParser.GetElementClass("block", "fbdObjects")): |
1346 if isinstance(instance, PLCOpenParser.GetElementClass("block", "fbdObjects")): |
1357 self.removepouVar(instance.gettypeName(), |
1347 self.removepouVar(instance.gettypeName(), |
1358 instance.getinstanceName()) |
1348 instance.getinstanceName()) |
1367 if self.interface is not None: |
1357 if self.interface is not None: |
1368 for content in self.interface.getcontent(): |
1358 for content in self.interface.getcontent(): |
1369 for var in content.getvariable(): |
1359 for var in content.getvariable(): |
1370 var_address = var.getaddress() |
1360 var_address = var.getaddress() |
1371 if var_address is not None: |
1361 if var_address is not None: |
1372 if var_address == old_name: |
1362 if TextMatched(var_address, old_name): |
1373 var.setaddress(new_name) |
1363 var.setaddress(new_name) |
1374 if var.getname() == old_name: |
1364 if TextMatched(var.getname(), old_name): |
1375 var.setname(new_name) |
1365 var.setname(new_name) |
1376 var_type_content = var.gettype().getcontent() |
1366 var_type_content = var.gettype().getcontent() |
1377 if var_type_content.getLocalTag() == "derived": |
1367 if var_type_content.getLocalTag() == "derived": |
1378 if var_type_content.getname() == old_name: |
1368 if TextMatched(var_type_content.getname(), old_name): |
1379 var_type_content.setname(new_name) |
1369 var_type_content.setname(new_name) |
1380 self.body[0].updateElementName(old_name, new_name) |
1370 self.body[0].updateElementName(old_name, new_name) |
1381 for action in self.getactionList(): |
1371 for action in self.getactionList(): |
1382 action.updateElementName(old_name, new_name) |
1372 action.updateElementName(old_name, new_name) |
1383 for transition in self.gettransitionList(): |
1373 for transition in self.gettransitionList(): |
1400 |
1390 |
1401 def removeVariableByAddress(self, address): |
1391 def removeVariableByAddress(self, address): |
1402 if self.interface is not None: |
1392 if self.interface is not None: |
1403 for content in self.interface.getcontent(): |
1393 for content in self.interface.getcontent(): |
1404 for variable in content.getvariable(): |
1394 for variable in content.getvariable(): |
1405 if variable.getaddress() == address: |
1395 if TextMatched(variable.getaddress(), address): |
1406 content.remove(variable) |
1396 content.remove(variable) |
1407 setattr(cls, "removeVariableByAddress", removeVariableByAddress) |
1397 setattr(cls, "removeVariableByAddress", removeVariableByAddress) |
1408 |
1398 |
1409 def removeVariableByFilter(self, address_model): |
1399 def removeVariableByFilter(self, address_model): |
1410 if self.interface is not None: |
1400 if self.interface is not None: |
1491 |
1481 |
1492 def hasblock(self, name=None, block_type=None): |
1482 def hasblock(self, name=None, block_type=None): |
1493 if self.getbodyType() in ["FBD", "LD", "SFC"]: |
1483 if self.getbodyType() in ["FBD", "LD", "SFC"]: |
1494 for instance in self.getinstances(): |
1484 for instance in self.getinstances(): |
1495 if (isinstance(instance, PLCOpenParser.GetElementClass("block", "fbdObjects")) and |
1485 if (isinstance(instance, PLCOpenParser.GetElementClass("block", "fbdObjects")) and |
1496 (name and instance.getinstanceName() == name or |
1486 (TextMatched(instance.getinstanceName(), name) or TextMatched(instance.gettypeName(), block_type))): |
1497 block_type and instance.gettypeName() == block_type)): |
|
1498 return True |
1487 return True |
1499 elif block_type is not None: |
1488 elif block_type is not None: |
1500 return self.body.hasblock(block_type) |
1489 return self.body.hasblock(block_type) |
1501 return False |
1490 return False |
1502 |
1491 |
1614 if (checkedBlocksDict.has_key(connections[0].getrefLocalId()) == False): |
1603 if (checkedBlocksDict.has_key(connections[0].getrefLocalId()) == False): |
1615 self.compileelementExecutionOrder(connections[0]) |
1604 self.compileelementExecutionOrder(connections[0]) |
1616 if instance.getexecutionOrderId() == 0: |
1605 if instance.getexecutionOrderId() == 0: |
1617 instance.setexecutionOrderId(self.getnewExecutionOrderId()) |
1606 instance.setexecutionOrderId(self.getnewExecutionOrderId()) |
1618 elif isinstance(instance, PLCOpenParser.GetElementClass("continuation", "commonObjects")) and instance.getexecutionOrderId() == 0: |
1607 elif isinstance(instance, PLCOpenParser.GetElementClass("continuation", "commonObjects")) and instance.getexecutionOrderId() == 0: |
1619 name = instance.getname() |
|
1620 for tmp_instance in self.getcontentInstances(): |
1608 for tmp_instance in self.getcontentInstances(): |
1621 if isinstance(tmp_instance, PLCOpenParser.GetElementClass("connector", "commonObjects")) and tmp_instance.getname() == name and tmp_instance.getexecutionOrderId() == 0: |
1609 if (isinstance(tmp_instance, PLCOpenParser.GetElementClass("connector", "commonObjects")) and |
|
1610 TextMatched(tmp_instance.getname(), instance.getname()) and tmp_instance.getexecutionOrderId() == 0): |
1622 connections = tmp_instance.connectionPointIn.getconnections() |
1611 connections = tmp_instance.connectionPointIn.getconnections() |
1623 if connections and len(connections) == 1: |
1612 if connections and len(connections) == 1: |
1624 self.compileelementExecutionOrder(connections[0]) |
1613 self.compileelementExecutionOrder(connections[0]) |
1625 else: |
1614 else: |
1626 raise TypeError, _("Can only generate execution order on FBD networks!") |
1615 raise TypeError, _("Can only generate execution order on FBD networks!") |
1916 bbox.union(_getConnectionsBoundingBox(input.connectionPointIn)) |
1905 bbox.union(_getConnectionsBoundingBox(input.connectionPointIn)) |
1917 return bbox |
1906 return bbox |
1918 setattr(cls, "getBoundingBox", getBoundingBox) |
1907 setattr(cls, "getBoundingBox", getBoundingBox) |
1919 |
1908 |
1920 def updateElementName(self, old_name, new_name): |
1909 def updateElementName(self, old_name, new_name): |
1921 if self.typeName == old_name: |
1910 if TextMatched(self.typeName, old_name): |
1922 self.typeName = new_name |
1911 self.typeName = new_name |
1923 setattr(cls, "updateElementName", updateElementName) |
1912 setattr(cls, "updateElementName", updateElementName) |
1924 |
1913 |
1925 def filterConnections(self, connections): |
1914 def filterConnections(self, connections): |
1926 for input in self.inputVariables.getvariable(): |
1915 for input in self.inputVariables.getvariable(): |
1956 |
1945 |
1957 _initElementClass("leftPowerRail", "ldObjects") |
1946 _initElementClass("leftPowerRail", "ldObjects") |
1958 _initElementClass("rightPowerRail", "ldObjects", "multiple") |
1947 _initElementClass("rightPowerRail", "ldObjects", "multiple") |
1959 |
1948 |
1960 def _UpdateLDElementName(self, old_name, new_name): |
1949 def _UpdateLDElementName(self, old_name, new_name): |
1961 if self.variable == old_name: |
1950 if TextMatched(self.variable, old_name): |
1962 self.variable = new_name |
1951 self.variable = new_name |
1963 |
1952 |
1964 def _UpdateLDElementAddress(self, address_model, new_leading): |
1953 def _UpdateLDElementAddress(self, address_model, new_leading): |
1965 self.variable = update_address(self.variable, address_model, new_leading) |
1954 self.variable = update_address(self.variable, address_model, new_leading) |
1966 |
1955 |
2062 def updateElementName(self, old_name, new_name): |
2051 def updateElementName(self, old_name, new_name): |
2063 if self.condition is not None: |
2052 if self.condition is not None: |
2064 content = self.condition.getcontent() |
2053 content = self.condition.getcontent() |
2065 content_name = content.getLocalTag() |
2054 content_name = content.getLocalTag() |
2066 if content_name == "reference": |
2055 if content_name == "reference": |
2067 if content.getname() == old_name: |
2056 if TextMatched(content.getname(), old_name): |
2068 content.setname(new_name) |
2057 content.setname(new_name) |
2069 elif content_name == "inline": |
2058 elif content_name == "inline": |
2070 content.updateElementName(old_name, new_name) |
2059 content.updateElementName(old_name, new_name) |
2071 setattr(cls, "updateElementName", updateElementName) |
2060 setattr(cls, "updateElementName", updateElementName) |
2072 |
2061 |
2134 return self.inline.gettext() |
2123 return self.inline.gettext() |
2135 return None |
2124 return None |
2136 setattr(cls, "getinlineContent", getinlineContent) |
2125 setattr(cls, "getinlineContent", getinlineContent) |
2137 |
2126 |
2138 def updateElementName(self, old_name, new_name): |
2127 def updateElementName(self, old_name, new_name): |
2139 if self.reference is not None and self.reference.getname() == old_name: |
2128 if self.reference is not None and TextMatched(self.reference.getname(), old_name): |
2140 self.reference.setname(new_name) |
2129 self.reference.setname(new_name) |
2141 if self.inline is not None: |
2130 if self.inline is not None: |
2142 self.inline.updateElementName(old_name, new_name) |
2131 self.inline.updateElementName(old_name, new_name) |
2143 setattr(cls, "updateElementName", updateElementName) |
2132 setattr(cls, "updateElementName", updateElementName) |
2144 |
2133 |
2224 |
2213 |
2225 def _SearchInIOVariable(self, criteria, parent_infos=[]): |
2214 def _SearchInIOVariable(self, criteria, parent_infos=[]): |
2226 return _Search([("expression", self.expression)], criteria, parent_infos + ["io_variable", self.getlocalId()]) |
2215 return _Search([("expression", self.expression)], criteria, parent_infos + ["io_variable", self.getlocalId()]) |
2227 |
2216 |
2228 def _UpdateIOElementName(self, old_name, new_name): |
2217 def _UpdateIOElementName(self, old_name, new_name): |
2229 if self.expression == old_name: |
2218 if TextMatched(self.expression, old_name): |
2230 self.expression = new_name |
2219 self.expression = new_name |
2231 |
2220 |
2232 def _UpdateIOElementAddress(self, address_model, new_leading): |
2221 def _UpdateIOElementAddress(self, address_model, new_leading): |
2233 self.expression = update_address(self.expression, address_model, new_leading) |
2222 self.expression = update_address(self.expression, address_model, new_leading) |
2234 |
2223 |
2257 cls = _initElementClass("continuation", "commonObjects") |
2246 cls = _initElementClass("continuation", "commonObjects") |
2258 if cls: |
2247 if cls: |
2259 setattr(cls, "Search", _SearchInConnector) |
2248 setattr(cls, "Search", _SearchInConnector) |
2260 |
2249 |
2261 def updateElementName(self, old_name, new_name): |
2250 def updateElementName(self, old_name, new_name): |
2262 if self.name == old_name: |
2251 if TextMatched(self.name, old_name): |
2263 self.name = new_name |
2252 self.name = new_name |
2264 setattr(cls, "updateElementName", updateElementName) |
2253 setattr(cls, "updateElementName", updateElementName) |
2265 |
2254 |
2266 cls = _initElementClass("connector", "commonObjects", "single") |
2255 cls = _initElementClass("connector", "commonObjects", "single") |
2267 if cls: |
2256 if cls: |
2268 setattr(cls, "Search", _SearchInConnector) |
2257 setattr(cls, "Search", _SearchInConnector) |
2269 |
2258 |
2270 def updateElementName(self, old_name, new_name): |
2259 def updateElementName(self, old_name, new_name): |
2271 if self.name == old_name: |
2260 if TextMatched(self.name, old_name): |
2272 self.name = new_name |
2261 self.name = new_name |
2273 setattr(cls, "updateElementName", updateElementName) |
2262 setattr(cls, "updateElementName", updateElementName) |
2274 |
2263 |
2275 cls = PLCOpenParser.GetElementClass("connection") |
2264 cls = PLCOpenParser.GetElementClass("connection") |
2276 if cls: |
2265 if cls: |