40 from plcopen import * |
40 from plcopen import * |
41 from graphics.GraphicCommons import * |
41 from graphics.GraphicCommons import * |
42 from PLCGenerator import * |
42 from PLCGenerator import * |
43 |
43 |
44 duration_model = re.compile("(?:([0-9]{1,2})h)?(?:([0-9]{1,2})m(?!s))?(?:([0-9]{1,2})s)?(?:([0-9]{1,3}(?:\.[0-9]*)?)ms)?") |
44 duration_model = re.compile("(?:([0-9]{1,2})h)?(?:([0-9]{1,2})m(?!s))?(?:([0-9]{1,2})s)?(?:([0-9]{1,3}(?:\.[0-9]*)?)ms)?") |
|
45 VARIABLE_NAME_SUFFIX_MODEL = re.compile('(\d+)$') |
45 |
46 |
46 ITEMS_EDITABLE = [ |
47 ITEMS_EDITABLE = [ |
47 ITEM_PROJECT, |
48 ITEM_PROJECT, |
48 ITEM_POU, |
49 ITEM_POU, |
49 ITEM_VARIABLE, |
50 ITEM_VARIABLE, |
2330 text += instance_copy.tostring() |
2331 text += instance_copy.tostring() |
2331 element.remove(copy_body) |
2332 element.remove(copy_body) |
2332 return text |
2333 return text |
2333 |
2334 |
2334 def GenerateNewName(self, tagname, name, format, start_idx=0, exclude=None, debug=False): |
2335 def GenerateNewName(self, tagname, name, format, start_idx=0, exclude=None, debug=False): |
|
2336 if name is not None: |
|
2337 result = re.search(VARIABLE_NAME_SUFFIX_MODEL, name) |
|
2338 if result is not None: |
|
2339 format = name[:result.start(1)] + '%d' |
|
2340 start_idx = int(result.group(1)) |
|
2341 else: |
|
2342 format = name + '%d' |
|
2343 |
2335 names = {} if exclude is None else exclude.copy() |
2344 names = {} if exclude is None else exclude.copy() |
2336 if tagname is not None: |
2345 if tagname is not None: |
2337 names.update(dict([(varname.upper(), True) |
2346 names.update(dict([(varname.upper(), True) |
2338 for varname in self.GetEditedElementVariables(tagname, debug)])) |
2347 for varname in self.GetEditedElementVariables(tagname, debug)])) |
2339 words = tagname.split("::") |
2348 words = tagname.split("::") |
2345 instance, |
2354 instance, |
2346 (PLCOpenParser.GetElementClass("step", "sfcObjects"), |
2355 (PLCOpenParser.GetElementClass("step", "sfcObjects"), |
2347 PLCOpenParser.GetElementClass("connector", "commonObjects"), |
2356 PLCOpenParser.GetElementClass("connector", "commonObjects"), |
2348 PLCOpenParser.GetElementClass("continuation", "commonObjects"))): |
2357 PLCOpenParser.GetElementClass("continuation", "commonObjects"))): |
2349 names[instance.getname().upper()] = True |
2358 names[instance.getname().upper()] = True |
|
2359 elif words[0] == 'R': |
|
2360 element = self.GetEditedElement(tagname, debug) |
|
2361 for task in element.gettask(): |
|
2362 names[task.getname().upper()] = True |
|
2363 for instance in task.getpouInstance(): |
|
2364 names[instance.getname().upper()] = True |
|
2365 for instance in element.getpouInstance(): |
|
2366 names[instance.getname().upper()] = True |
2350 else: |
2367 else: |
2351 project = self.GetProject(debug) |
2368 project = self.GetProject(debug) |
2352 if project is not None: |
2369 if project is not None: |
2353 for datatype in project.getdataTypes(): |
2370 for datatype in project.getdataTypes(): |
2354 names[datatype.getname().upper()] = True |
2371 names[datatype.getname().upper()] = True |