controls/VariablePanel.py
changeset 1122 84de51ab40d2
parent 1083 40af794ecd4b
child 1128 86527a6f06fb
equal deleted inserted replaced
1121:d3838e8f1b90 1122:84de51ab40d2
    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()