controls/VariablePanel.py
branchrename_on_location_change
changeset 2573 071d10c7ab8f
parent 2554 45d4f9a84c60
child 2574 48a486000e84
equal deleted inserted replaced
2572:9622418ac28c 2573:071d10c7ab8f
   148             if colname in ["Class", "Option"]:
   148             if colname in ["Class", "Option"]:
   149                 return _(value)
   149                 return _(value)
   150             return value
   150             return value
   151 
   151 
   152     def SetValue(self, row, col, value):
   152     def SetValue(self, row, col, value):
       
   153         print("SetValue",row, col, value)
   153         if col < len(self.colnames):
   154         if col < len(self.colnames):
   154             colname = self.GetColLabelValue(col, False)
   155             colname = self.GetColLabelValue(col, False)
   155             if colname == "Name":
   156             if colname == "Name":
   156                 self.old_value = getattr(self.data[row], colname)
   157                 self.old_value = getattr(self.data[row], colname)
   157             elif colname == "Class":
   158             elif colname == "Class":
   786     def ShowErrorMessage(self, message):
   787     def ShowErrorMessage(self, message):
   787         dialog = wx.MessageDialog(self, message, _("Error"), wx.OK | wx.ICON_ERROR)
   788         dialog = wx.MessageDialog(self, message, _("Error"), wx.OK | wx.ICON_ERROR)
   788         dialog.ShowModal()
   789         dialog.ShowModal()
   789         dialog.Destroy()
   790         dialog.Destroy()
   790 
   791 
       
   792     def OnVariableNameChange(self, old_name, new_name):
       
   793         """ propagate renaming of variable to the rest of the project """
       
   794         if old_name != "":
       
   795             self.Controler.UpdateEditedElementUsedVariable(self.TagName, old_name, new_name)
       
   796         self.Controler.BufferProject()
       
   797         wx.CallAfter(self.ParentWindow.RefreshView, False)
       
   798         self.ParentWindow._Refresh(TITLE, FILEMENU, EDITMENU, PAGETITLES, POUINSTANCEVARIABLESPANEL, LIBRARYTREE)
       
   799 
   791     def OnVariablesGridCellChange(self, event):
   800     def OnVariablesGridCellChange(self, event):
   792         row, col = event.GetRow(), event.GetCol()
   801         row, col = event.GetRow(), event.GetCol()
   793         colname = self.Table.GetColLabelValue(col, False)
   802         colname = self.Table.GetColLabelValue(col, False)
   794         value = self.Table.GetValue(row, col)
   803         value = self.Table.GetValue(row, col)
   795         message = None
   804         message = None
   804             elif value.upper() in [var.Name.upper() for var in self.Values if var != self.Table.data[row]]:
   813             elif value.upper() in [var.Name.upper() for var in self.Values if var != self.Table.data[row]]:
   805                 message = _("A variable with \"%s\" as name already exists in this pou!") % value
   814                 message = _("A variable with \"%s\" as name already exists in this pou!") % value
   806             else:
   815             else:
   807                 self.SaveValues(False)
   816                 self.SaveValues(False)
   808                 old_value = self.Table.GetOldValue()
   817                 old_value = self.Table.GetOldValue()
   809                 if old_value != "":
   818                 self.OnVariableNameChange(old_value, value)
   810                     self.Controler.UpdateEditedElementUsedVariable(self.TagName, old_value, value)
       
   811                 self.Controler.BufferProject()
       
   812                 wx.CallAfter(self.ParentWindow.RefreshView, False)
       
   813                 self.ParentWindow._Refresh(TITLE, FILEMENU, EDITMENU, PAGETITLES, POUINSTANCEVARIABLESPANEL, LIBRARYTREE)
       
   814         else:
   819         else:
   815             self.SaveValues()
   820             self.SaveValues()
   816             if colname == "Class":
   821             if colname == "Class":
   817                 self.ClearLocation(row, col, value)
   822                 self.ClearLocation(row, col, value)
   818                 wx.CallAfter(self.ParentWindow.RefreshView)
   823                 wx.CallAfter(self.ParentWindow.RefreshView)