controls/VariablePanel.py
changeset 1973 cc7a46953471
parent 1953 5736d25bb393
parent 1969 0607c382d73f
child 2240 e684aed23407
equal deleted inserted replaced
1961:b4a1ba9dbaf3 1973:cc7a46953471
   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)