plcopen/plcopen.py
changeset 594 41e62b3174dc
parent 590 b2442bb10c0b
child 608 b67536e93c11
equal deleted inserted replaced
593:34c3569042db 594:41e62b3174dc
   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         index = self.text.find(old_name)
   132         text = self.text.decode("utf-8")
       
   133         index = text.find(old_name)
   133         while index != -1:
   134         while index != -1:
   134             if index > 0 and (self.text[index - 1].isalnum() or self.text[index - 1] == "_"):
   135             if index > 0 and (text[index - 1].isalnum() or text[index - 1] == "_"):
   135                 index = self.text.find(old_name, index + len(old_name))
   136                 index = text.find(old_name, index + len(old_name))
   136             elif index < len(self.text) - len(old_name) and (self.text[index + len(old_name)].isalnum() or self.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)] == "_"):
   137                 index = self.text.find(old_name, index + len(old_name))
   138                 index = text.find(old_name, index + len(old_name))
   138             else:
   139             else:
   139                 self.text = self.text[:index] + new_name + self.text[index + len(old_name):]
   140                 text = text[:index] + new_name + text[index + len(old_name):]
   140                 index = self.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")
   141     setattr(cls, "updateElementName", updateElementName)
   143     setattr(cls, "updateElementName", updateElementName)
   142     
   144     
   143     def updateElementAddress(self, address_model, new_leading):
   145     def updateElementAddress(self, address_model, new_leading):
       
   146         text = self.text.decode("utf-8")
   144         startpos = 0
   147         startpos = 0
   145         result = address_model.search(self.text, startpos)
   148         result = address_model.search(text, startpos)
   146         while result is not None:
   149         while result is not None:
   147             groups = result.groups()
   150             groups = result.groups()
   148             new_address = groups[0] + new_leading + groups[2]
   151             new_address = groups[0] + new_leading + groups[2]
   149             self.text = self.text[:result.start()] + new_address + self.text[result.end():]
   152             text = text[:result.start()] + new_address + text[result.end():]
   150             startpos = result.start() + len(new_address)
   153             startpos = result.start() + len(new_address)
   151             result = address_model.search(self.text, startpos)
   154             result = address_model.search(self.text, startpos)
       
   155         self.text = text.encode("utf-8")
   152     setattr(cls, "updateElementAddress", updateElementAddress)
   156     setattr(cls, "updateElementAddress", updateElementAddress)
   153     
   157     
   154     def Search(self, criteria, parent_infos):
   158     def Search(self, criteria, parent_infos):
   155         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)]
   156     setattr(cls, "Search", Search)
   160     setattr(cls, "Search", Search)