103 "Global": lambda x: {"Constant": "Constant", "Retain": "Retain"}.get(x, ""), |
103 "Global": lambda x: {"Constant": "Constant", "Retain": "Retain"}.get(x, ""), |
104 "External": lambda x: {"Constant": "Constant"}.get(x, "") |
104 "External": lambda x: {"Constant": "Constant"}.get(x, "") |
105 } |
105 } |
106 |
106 |
107 LOCATION_MODEL = re.compile("((?:%[IQM](?:\*|(?:[XBWLD]?[0-9]+(?:\.[0-9]+)*)))?)$") |
107 LOCATION_MODEL = re.compile("((?:%[IQM](?:\*|(?:[XBWLD]?[0-9]+(?:\.[0-9]+)*)))?)$") |
108 VARIABLE_NAME_SUFFIX_MODEL = re.compile("([0-9]*)$") |
|
109 |
108 |
110 |
109 |
111 # ------------------------------------------------------------------------------- |
110 # ------------------------------------------------------------------------------- |
112 # Variables Panel Table |
111 # Variables Panel Table |
113 # ------------------------------------------------------------------------------- |
112 # ------------------------------------------------------------------------------- |
512 |
511 |
513 self.Filter = "All" |
512 self.Filter = "All" |
514 self.FilterChoices = [] |
513 self.FilterChoices = [] |
515 self.FilterChoiceTransfer = GetFilterChoiceTransfer() |
514 self.FilterChoiceTransfer = GetFilterChoiceTransfer() |
516 |
515 |
517 self.DefaultValue = _VariableInfos("", "", "", "", "", True, "", DefaultType, ([], []), 0) |
516 self.DefaultValue = _VariableInfos("LocalVar0", "", "", "", "", True, "", DefaultType, ([], []), 0) |
518 |
517 |
519 if element_type in ["config", "resource"]: |
518 if element_type in ["config", "resource"]: |
520 self.DefaultTypes = {"All": "Global"} |
519 self.DefaultTypes = {"All": "Global"} |
521 else: |
520 else: |
522 self.DefaultTypes = {"All": "Local", "Interface": "Input", "Variables": "Local"} |
521 self.DefaultTypes = {"All": "Local", "Interface": "Input", "Variables": "Local"} |
588 "Up": self.UpButton, |
587 "Up": self.UpButton, |
589 "Down": self.DownButton}) |
588 "Down": self.DownButton}) |
590 self.VariablesGrid.SetEditable(not self.Debug) |
589 self.VariablesGrid.SetEditable(not self.Debug) |
591 |
590 |
592 def _AddVariable(new_row): |
591 def _AddVariable(new_row): |
|
592 row_content = self.DefaultValue.copy() |
593 if new_row > 0: |
593 if new_row > 0: |
594 row_content = self.Values[new_row - 1].copy() |
594 # doesn't copy values of previous var if it's non-editable (like a FB) |
595 |
595 if self.Values[new_row-1].Edit: |
596 result = VARIABLE_NAME_SUFFIX_MODEL.search(row_content.Name) |
596 row_content = self.Values[new_row-1].copy() |
597 if result is not None: |
597 old_name = self.Values[new_row-1].Name |
598 name = row_content.Name[:result.start(1)] |
598 row_content.Name = self.Controler.GenerateNewName( |
599 suffix = result.group(1) |
599 self.TagName, old_name, old_name+'%d') |
600 if suffix != "": |
600 if not row_content.Class: |
601 start_idx = int(suffix) |
601 row_content.Class = self.DefaultTypes.get(self.Filter, self.Filter) |
602 else: |
|
603 start_idx = 0 |
|
604 else: |
|
605 name = row_content.Name |
|
606 start_idx = 0 |
|
607 else: |
|
608 row_content = None |
|
609 start_idx = 0 |
|
610 name = "LocalVar" |
|
611 |
|
612 if row_content is not None and row_content.Edit: |
|
613 row_content = self.Values[new_row - 1].copy() |
|
614 else: |
|
615 row_content = self.DefaultValue.copy() |
|
616 if self.Filter in self.DefaultTypes: |
|
617 row_content.Class = self.DefaultTypes[self.Filter] |
|
618 else: |
|
619 row_content.Class = self.Filter |
|
620 |
|
621 row_content.Name = self.Controler.GenerateNewName( |
|
622 self.TagName, None, name + "%d", start_idx) |
|
623 |
602 |
624 if self.Filter == "All" and len(self.Values) > 0: |
603 if self.Filter == "All" and len(self.Values) > 0: |
625 self.Values.insert(new_row, row_content) |
604 self.Values.insert(new_row, row_content) |
626 else: |
605 else: |
627 self.Values.append(row_content) |
606 self.Values.append(row_content) |