controls/VariablePanel.py
changeset 1122 84de51ab40d2
parent 1083 40af794ecd4b
child 1128 86527a6f06fb
--- a/controls/VariablePanel.py	Fri May 10 15:17:33 2013 +0200
+++ b/controls/VariablePanel.py	Sun May 12 23:30:00 2013 +0200
@@ -89,6 +89,7 @@
                       }
 
 LOCATION_MODEL = re.compile("((?:%[IQM](?:\*|(?:[XBWLD]?[0-9]+(?:\.[0-9]+)*)))?)$")
+VARIABLE_NAME_SUFFIX_MODEL = re.compile("([0-9]*)$")
 
 #-------------------------------------------------------------------------------
 #                            Variables Panel Table
@@ -490,11 +491,27 @@
         
         def _AddVariable(new_row):
             if not self.PouIsUsed or self.Filter not in ["Interface", "Input", "Output", "InOut"]:
-                row_content = self.DefaultValue.copy()
-                if self.Filter in self.DefaultTypes:
-                    row_content["Class"] = self.DefaultTypes[self.Filter]
+                if new_row > 0:
+                    row_content = self.Values[new_row - 1].copy()
+                    result = VARIABLE_NAME_SUFFIX_MODEL.search(row_content["Name"])
+                    if result is not None:
+                        name = row_content["Name"][:result.start(1)]
+                        suffix = result.group(1)
+                        if suffix != "":
+                            start_idx = int(suffix)
+                        else:
+                            start_idx = 0
+                    else:
+                        name = row_content["Name"]
+                        start_idx = 0
+                    row_content["Name"] = self.Controler.GenerateNewName(
+                        self.TagName, None, name + "%d", start_idx)
                 else:
-                    row_content["Class"] = self.Filter
+                    row_content = self.DefaultValue.copy()
+                    if self.Filter in self.DefaultTypes:
+                        row_content["Class"] = self.DefaultTypes[self.Filter]
+                    else:
+                        row_content["Class"] = self.Filter
                 if self.Filter == "All" and len(self.Values) > 0:
                     self.Values.insert(new_row, row_content)
                 else: