87 "Global": lambda x: {"Constant": "Constant", "Retain": "Retain"}.get(x, ""), |
87 "Global": lambda x: {"Constant": "Constant", "Retain": "Retain"}.get(x, ""), |
88 "External": lambda x: {"Constant": "Constant"}.get(x, "") |
88 "External": lambda x: {"Constant": "Constant"}.get(x, "") |
89 } |
89 } |
90 |
90 |
91 LOCATION_MODEL = re.compile("((?:%[IQM](?:\*|(?:[XBWLD]?[0-9]+(?:\.[0-9]+)*)))?)$") |
91 LOCATION_MODEL = re.compile("((?:%[IQM](?:\*|(?:[XBWLD]?[0-9]+(?:\.[0-9]+)*)))?)$") |
|
92 VARIABLE_NAME_SUFFIX_MODEL = re.compile("([0-9]*)$") |
92 |
93 |
93 #------------------------------------------------------------------------------- |
94 #------------------------------------------------------------------------------- |
94 # Variables Panel Table |
95 # Variables Panel Table |
95 #------------------------------------------------------------------------------- |
96 #------------------------------------------------------------------------------- |
96 |
97 |
488 "Down": self.DownButton}) |
489 "Down": self.DownButton}) |
489 self.VariablesGrid.SetEditable(not self.Debug) |
490 self.VariablesGrid.SetEditable(not self.Debug) |
490 |
491 |
491 def _AddVariable(new_row): |
492 def _AddVariable(new_row): |
492 if not self.PouIsUsed or self.Filter not in ["Interface", "Input", "Output", "InOut"]: |
493 if not self.PouIsUsed or self.Filter not in ["Interface", "Input", "Output", "InOut"]: |
493 row_content = self.DefaultValue.copy() |
494 if new_row > 0: |
494 if self.Filter in self.DefaultTypes: |
495 row_content = self.Values[new_row - 1].copy() |
495 row_content["Class"] = self.DefaultTypes[self.Filter] |
496 result = VARIABLE_NAME_SUFFIX_MODEL.search(row_content["Name"]) |
|
497 if result is not None: |
|
498 name = row_content["Name"][:result.start(1)] |
|
499 suffix = result.group(1) |
|
500 if suffix != "": |
|
501 start_idx = int(suffix) |
|
502 else: |
|
503 start_idx = 0 |
|
504 else: |
|
505 name = row_content["Name"] |
|
506 start_idx = 0 |
|
507 row_content["Name"] = self.Controler.GenerateNewName( |
|
508 self.TagName, None, name + "%d", start_idx) |
496 else: |
509 else: |
497 row_content["Class"] = self.Filter |
510 row_content = self.DefaultValue.copy() |
|
511 if self.Filter in self.DefaultTypes: |
|
512 row_content["Class"] = self.DefaultTypes[self.Filter] |
|
513 else: |
|
514 row_content["Class"] = self.Filter |
498 if self.Filter == "All" and len(self.Values) > 0: |
515 if self.Filter == "All" and len(self.Values) > 0: |
499 self.Values.insert(new_row, row_content) |
516 self.Values.insert(new_row, row_content) |
500 else: |
517 else: |
501 self.Values.append(row_content) |
518 self.Values.append(row_content) |
502 new_row = self.Table.GetNumberRows() |
519 new_row = self.Table.GetNumberRows() |