plcopen/plcopen.py
changeset 966 dc1318160073
parent 891 39f355a535d8
child 990 7f57b969caed
equal deleted inserted replaced
965:308e51832711 966:dc1318160073
   127 ElementNameToClass = {}
   127 ElementNameToClass = {}
   128 
   128 
   129 cls = PLCOpenClasses.get("formattedText", None)
   129 cls = PLCOpenClasses.get("formattedText", None)
   130 if cls:
   130 if cls:
   131     def updateElementName(self, old_name, new_name):
   131     def updateElementName(self, old_name, new_name):
   132         text = self.text.decode("utf-8")
   132         text = self.text
   133         index = text.find(old_name)
   133         index = text.find(old_name)
   134         while index != -1:
   134         while index != -1:
   135             if index > 0 and (text[index - 1].isalnum() or text[index - 1] == "_"):
   135             if index > 0 and (text[index - 1].isalnum() or text[index - 1] == "_"):
   136                 index = text.find(old_name, index + len(old_name))
   136                 index = text.find(old_name, index + len(old_name))
   137             elif index < len(text) - len(old_name) and (text[index + len(old_name)].isalnum() or text[index + len(old_name)] == "_"):
   137             elif index < len(text) - len(old_name) and (text[index + len(old_name)].isalnum() or text[index + len(old_name)] == "_"):
   138                 index = text.find(old_name, index + len(old_name))
   138                 index = text.find(old_name, index + len(old_name))
   139             else:
   139             else:
   140                 text = text[:index] + new_name + text[index + len(old_name):]
   140                 text = text[:index] + new_name + text[index + len(old_name):]
   141                 index = text.find(old_name, index + len(new_name))
   141                 index = text.find(old_name, index + len(new_name))
   142         self.text = text.encode("utf-8")
   142         self.text = text
   143     setattr(cls, "updateElementName", updateElementName)
   143     setattr(cls, "updateElementName", updateElementName)
   144     
   144     
   145     def updateElementAddress(self, address_model, new_leading):
   145     def updateElementAddress(self, address_model, new_leading):
   146         text = self.text.decode("utf-8")
   146         text = self.text
   147         startpos = 0
   147         startpos = 0
   148         result = address_model.search(text, startpos)
   148         result = address_model.search(text, startpos)
   149         while result is not None:
   149         while result is not None:
   150             groups = result.groups()
   150             groups = result.groups()
   151             new_address = groups[0] + new_leading + groups[2]
   151             new_address = groups[0] + new_leading + groups[2]
   152             text = text[:result.start()] + new_address + text[result.end():]
   152             text = text[:result.start()] + new_address + text[result.end():]
   153             startpos = result.start() + len(new_address)
   153             startpos = result.start() + len(new_address)
   154             result = address_model.search(self.text, startpos)
   154             result = address_model.search(self.text, startpos)
   155         self.text = text.encode("utf-8")
   155         self.text = text
   156     setattr(cls, "updateElementAddress", updateElementAddress)
   156     setattr(cls, "updateElementAddress", updateElementAddress)
   157     
   157     
   158     def Search(self, criteria, parent_infos):
   158     def Search(self, criteria, parent_infos):
   159         return [(tuple(parent_infos),) + result for result in TestTextElement(self.gettext(), criteria)]
   159         return [(tuple(parent_infos),) + result for result in TestTextElement(self.gettext(), criteria)]
   160     setattr(cls, "Search", Search)
   160     setattr(cls, "Search", Search)